Tabla de contenidos
El control TextView y sus objetos asociados (TextBuffers, TextMarks, TextIters, TextTags y TextTagTables) proporcionan un potente marco para la edición de textos multilínea.
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 de modo que la codificación de un caracter puede estar compuesta por varios bytes. Dentro de un TextBuffer es necesario diferenciar entre contadores de carácteres (llamados desplazamientos) y contadores de bytes (llamados índices).
Los TextIters (Iteradores de Texto) proporcionan una representación efímera de la posición entre dos carácteres dentro de un TextBuffer . Los TextIters son válidos hasta que el número de caracteres 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 estaba el texto borrado. De la misma forma, si se inseta texto en la marca, la marca acaba bien a la izquierda o bien 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.