Tabla de contenidos
El control TextView y sus objetos asociados (TextBuffers, TextMarks, TextIters, TextTags y TextTagTables) proporcionan un potente marco para edición multilinea de textos.
Un TextBuffer (Buffer de Texto) contiene el texto que se visualizará en uno o más controles TextView (Vista de Texto)
En GTK+ 2.0 el texto se codifica en UTF-8 lo cual significa que un caracter puede codificarse con varios bytes. Dentro de un TextBuffer es necesario diferenciar entre índices de carácteres (llamados desplazamientos) e índices de bytes (llamados índices).
Los TextIters (Iteradores de Texto) proporcionan una representación volátil de la posición entre dos carácteres en un TextBuffer . Los TextIters son válidos hasta que el número de carácteres en el TextBuffer cambia; Por ejemplo, siempre que se inserten o se borren carácteres en el TextBuffer todos los TextIters se invalidan. Los TextIters son la principal forma de especificar localizaciones en un TextBuffer para manipular texto.
Los TextMarks (Marcas de Texto) se proporcionan para permitir almacenar posiciones en un TextBuffer que se mantienen entre modificaciones del buffer. Una marca es cómo un TextIter (representa una posición entre dos carácteres en un TextBuffer) pero si el texto alrededor de la marca se borra, la marca permanece donde el texto borrado estuvo. De la misma forma, si se inseta texto en la marca, la marca acaba bien a la izquierda o a la derecha del texto insertado, dependiendo de la gravedad de la marca - gravedad a la derecha deja la marca a la derecha del texto insertado mientras que gravedad a la izquierda deja la marca a la izquierda. Las TextMarks se pueden asociar a un nombre o dejarlas anónimas si no se les da un nombre. Cada TextBuffer tiene dos marcas predefinidas llamadas insert (insertar) y selection_bound (límite de selección). Estas marcas se refieren al punto de inserción y al límite de la selección (la selección está entre las marcas insert y selection_bound).
Las TextTags (Etiquetas de Texto) son objetos que especifican un conjunto de atributos que se pueden aplicar a un rango de texto en un TextBuffer. Cada TextBuffer tiene una TextTagTable (Tabla de Etiquetas de Texto) que contiene las etiquetas disponibles en ese buffer. Las TextTagTables se pueden compartir entre TextBuffers para ofrecer consistencia. Los TextTags normalmente se usan para cambiar la apariencia de un rango de texto pero también pueden usarse para evitar que un rango de texto sea editado.