Las etiquetas de texto TextTags especifican atributos
que se pueden aplicar a un rango de texto en un buffer de texto. Cada buffer de texto
TextBuffer tiene una tabla
de etiquetas de texto TextTagTable que contiene las
etiquetas de texto TextTags que se pueden aplicar
dentro del buffer TextBuffer. Las tablas de etiquetas de texto
TextTagTable se pueden usar en más de
un buffer de texto para ofrecer estilos de texto consistentes.
Las TextTags (Etiquetas de Texto) pueden
tener nombre o ser anónimas. Una TextTag se crea usando
la función:
tag = gtk.TextTag(name=None)
Si el name (nombre) no se especifica o si es
None la tag (etiqueta) será anónima. Las
TextTags también se pueden crear usando el método de
TextBuffer
create_tag() que también te permite especificar los
atributos y añade la etiqueta a la tabla de etiquetas del buffer (veáse la
subsección
TextBuffer).
Los atributos que pueden aparecer en una
TextTag son:
| name | Lectura / Escritura | Nombre de la etiqueta de texto. None si es anónima. |
| background | Escritura | Color de fondo como una cadena de texto |
| foreground | Escritura | Color de frente como una cadena de texto |
| background-gdk | Lectura / Escritura | Color de fondo como un GdkColor |
| foreground-gdk | Lectura / Escritura | Color de frente como un GdkColor |
| background-stipple | Lectura / Escritura | Bitmap a usar como una máscara cuando se dibuje el texto de fondo |
| foreground-stipple | Lectura / Escritura | Bitmap a usar como una máscara cuando se dibuje el texto de frente |
| font | Lectura / Escritura | Descripción de la fuente como una cadena de texto, por ejemplo, "Sans Italic 12" |
| font-desc | Lectura / Escritura | Descripción de la feunte como un objeto PangoFontDescription |
| family | Lectura / Escritura | Nombre de la familia de la fuente, por ejemplo, Sans, Helvetica, Times, Monospace |
| style | Lectura / Escritura | Estilo de la fuente como un PangoStyle, por ejemplo, pango.STYLE_ITALIC. |
| variant | Lectura / Escritura | Variante de la fuente como un PangoVariant, por ejemplo, pango.VARIANT_SMALL_CAPS. |
| weight | Lectura / Escritura | Peso de la fuente como un entero, mira los valores predefinidos en PangoWeight; por ejemplo, pango.WEIGHT_BOLD. |
| stretch | Lectura / Escritura | Estrechamiento de la fuente como un PangoStretch, por ejemplo, pango.STRETCH_CONDENSED. |
| size | Lectura / Escritura | Tamaño de fuente en unidades Pango. |
| size-points | Lectura / Escritura | Tamaño de fuente en puntos |
| scale | Lectura / Escritura | Tamaño de fuente como un factor de escala relativo al tamaño de fuente predeterminado. Esta propiedad se adapta a los cambios en el tema, etc, por tanto se recomienda su uso. Pango tiene algunos valores predefinidos tales como pango.SCALE_X_LARGE. |
| pixels-above-lines | Lectura / Escritura | Píxeles de espacio blanco por encima de los párrafos |
| pixels-below-lines | Lectura / Escritura | Píxeles de espacio blanco por debajo de los párrafos |
| pixels-inside-wrap | Lectura / Escritura | Píxeles de espacio blanco entre las líneas de un párrafo |
| editable | Lectura / Escritura | Si el texto puede modificarse por el usuario |
| wrap-mode | Lectura / Escritura | Si las líneas no se ajustan, se ajustan en limites de palabra o se ajustan en limites de caracteres |
| justification | Lectura / Escritura | Justificación izquierda, derecha o central |
| direction | Lectura / Escritura | Dirección del Texto, por ejemplo, derecha a izquierda o izquierda a derecha |
| left-margin | Lectura / Escritura | Ancho del márgen izquierdo en píxeles |
| indent | Lectura / Escritura | Cantidad de indentado para los párrafos, en píxeles |
| strikethrough | Lectura / Escritura | Si hay que tachar el texto |
| right-margin | Lectura / Escritura | Ancho del márgen derecho en píxeles |
| underline | Lectura / Escritura | Estilo de subrayado para este texto |
| rise | Lectura / Escritura | Desplazamiento del texto por encima de la línea base (por debajo de la línea base si es negativo) en píxeles |
| background-full-height | Lectura / Escritura | Si el color de fondo rellena la altura completa de la línea o sólo la altura de los caracteres marcados |
| language | Lectura / Escritura | El idioma en el que está el texto, como un código ISO. Pango puede usar esto como una ayuda para visualizar el texto. Si no entiendes este parámetro, probablemente no lo necesitas. |
| tabs | Lectura / Escritura | Tabulaciones personalizadas para el texto |
| invisible | Lectura / Escritura | Si el texto está oculto. No implementado en GTK 2.0 |
Se pueden establecer los atributos con este método:
tag.set_property(name, value)
Donde name es una cadena de texto que contiene
el nombre de la propiedad y value es el valor que se le va
a poner.
De la misma forma, el valor de un atributo se puede recuperar con el método:
value = tag.get_property(name)
Ya que la etiqueta no tiene un valor para cada atributo hay una serie de propiedades booleanas que indican si el atributo ha sido establecido:
| background-set | Lectura / Escritura |
| foreground-set | Lectura / Escritura |
| background-stipple-set | Lectura / Escritura |
| foreground-stipple-set | Lectura / Escritura |
| family-set | Lectura / Escritura |
| style-set | Lectura / Escritura |
| variant-set | Lectura / Escritura |
| weight-set | Lectura / Escritura |
| stretch-set | Lectura / Escritura |
| size-set | Lectura / Escritura |
| scale-set | Lectura / Escritura |
| pixels-above-lines-set | Lectura / Escritura |
| pixels-below-lines-set | Lectura / Escritura |
| pixels-inside-wrap-set | Lectura / Escritura |
| editable-set | Lectura / Escritura |
| wrap-mode-set | Lectura / Escritura |
| justification-set | Lectura / Escritura |
| direction-set | Lectura / Escritura |
| left-margin-set | Lectura / Escritura |
| indent-set | Lectura / Escritura |
| strikethrough-set | Lectura / Escritura |
| right-margin-set | Lectura / Escritura |
| underline-set | Lectura / Escritura |
| rise-set | Lectura / Escritura |
| background-full-height-set | Lectura / Escritura |
| language-set | Lectura / Escritura |
| tabs-set | Lectura / Escritura |
| invisible-set | Lectura / Escritura |
Por tanto, para obtener el atributo de una etiqueta, primero tienes que comprobar si el atributo ha sido establecido en la etiqueta. Por ejemplo, para obtener un valor correcto de justificación tienes que hacer algo así como:
if tag.get_property("justification-set"):
justification = tag.get_property("justification")
La prioridad predeterminada de una etiqueta es el orden en el que
se añade a la TextTagTable. Las
etiquetas con prioridad más alta tienen preferencia si hay múltiples etiquetas
para establecer el mismo atributo para un rango de texto. La prioridad se
puede obtener y fijar con los métodos:
priority = tag.get_priority()
tag.set_priority(priority)
La prioridad de una etiqueta debe estar entre 0 y uno menos del tamaño
de la TextTagTable.
Una TextTagTable (Tabla de Etiquetas de
Texto) se crea al crear un TextBuffer . También se puede crear una TextTagTable con la función:
table = TextTagTable()
Se puede añadir una TextTag (Etiqueta de
Texto) a una TextTagTable usando el método:
table.add(tag)
La etiqueta tag no puede estar ya en la tabla
y no puede tener el mismo nombre que otra etiqueta en la tabla.
Es posible buscar una etiqueta en una tabla con el método:
tag = table.lookup(name)
Este método devuelve la etiqueta tag en la tabla
que tenga el nombre name o None si no hay
ninguna etiqueta con ese nombre.
Se puede borrar una TextTag de una
TextTagTable con el método:
table.remove(tag)
El tamaño de la TextTagTable se puede
consultar con el método:
size = table.get_size()