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() |