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.