TextTag определяют атрибуты которые применяются к отрывкам текста в текстовом буфере. Каждый TextBuffer имеет TextTagTable, которая содержит TextTag‘и, которые, в свою очередь, могут быть применены в буфере. TextTagTable может быть использована с более чем одним TextBuffer для того, чтобы представить однородные текстовые стили.
TextTag могут иметь имя или быть анонимными. TextTag создаётся с помощью функции:
tag = gtk.TextTag(name=None) |
Если name не указано или None, то tag будет анонимным. Также TextTag может быть создан с помощью метода TextBuffer.create_tag(), который также позволяет указывать атрибуты для tag, и добавлять их в таблицу (см. Раздел 13.3, “Текстовый буфер”).
Атрибуты, которые могут содержаться в TextTag:
name | Чтение / Запись | Имя признака. None если анонимный |
background | Запись | Цвет фона как строка |
foreground | Запись | Цвет переднего плана как строка |
background-gdk | Чтение / Запись | Цвет фона как GdkColor |
foreground-gdk | Чтение / Запись | Цвет переднего плана как GdkColor |
background-stipple | Чтение / Запись | Bitmap для использования маской для фона |
foreground-stipple | Чтение / Запись | Bitmap для использования маской для переднего плана |
font | Чтение / Запись | Шрифт в формате строки, например “Sans Italic 12″ |
font-desc | Чтение / Запись | Шрифт в формате PangoFontDescription |
family | Чтение / Запись | Семья шрифта (например Sans, Helvetica, Times, Monospace) |
style | Чтение / Запись | Стиль шрифта в формате PangoStyle, например pango.STYLE_ITALIC |
variant | Чтение / Запись | Модификация шрифта как PangoVariant, например pango.VARIANT_SMALL_CAPS |
weight | Чтение / Запись | Начертание шрифта как целое, см. предустановленные значения в PangoWeight. Например, pango.WEIGHT_BOLD |
stretch | Чтение / Запись | Ширина шрифта как PangoStretch. Например, pango.STRETCH_CONDENSED |
size | Чтение / Запись | Размер шрифта в Pango Unit |
size-points | Чтение / Запись | Размер шрифта в пунктах |
scale | Чтение / Запись | Размер шрифта, как масштабирование относительно стандартного размера. Это свойство приспосабливается к изменениям темы, поэтому рекомендуется. Pango предустанавливает несколько таких, как, например, pango.SCALE_X_LARGE |
pixels-above-lines | Чтение / Запись | Отступ над абзацем |
pixels-below-lines | Чтение / Запись | Отступ под абзацем |
pixels-inside-wrap | Чтение / Запись | Отступ между перенесёнными строками внутри абзаца |
editable | Чтение / Запись | Редактируемость текста пользователем |
wrap-mode | Чтение / Запись | Не переносить строки, переносить по словам, или по символам |
justification | Чтение / Запись | Выравнивание по левому, правому краю или по центру |
direction | Чтение / Запись | Направление текста. Т.е. справа-налево или слева-направо |
left-margin | Чтение / Запись | Ширина левого поля в пикселях |
indent | Чтение / Запись | Размер красной строки в пикселях |
strikethrough | Чтение / Запись | Перечёркивание текста |
right-margin | Чтение / Запись | Ширина правого поля в пикселях |
underline | Чтение / Запись | Стиль подчёркивания текста |
rise | Чтение / Запись | Сдвиг текста относительно базовой линии в пикселях |
background-full-height | Чтение / Запись | Выбирает, заполняет ли фон всю высоту строки, или только высоту символов |
language | Чтение / Запись | Язык текста по ISO. Pango может использовать это при отображении текста. Если вам не понятен тот параметр, то вероятно он вам не нужен. |
tabs | Чтение / Запись | Определение табуляции. |
invisible | Чтение / Запись | Позволяет прятать текст. Не реализовано в GTK+ 2.0 |
Атрибуты могут быть изменены с помощью метода:
tag.set_property(name, value) |
Где name это строка содержащая имя свойства, а value это значение свойства.
Похожим образом, атрибуты могут быть получены с помощью метода:
value = tag.get_property(name) |
Пока признаку не присвоено значение, то используется его значение по умолчанию. Существует набор логических свойств, которые показывают, был ли изменён признак:
background-set | Чтение / Запись |
foreground-set | Чтение / Запись |
background-stipple-set | Чтение / Запись |
foreground-stipple-set | Чтение / Запись |
family-set | Чтение / Запись |
style-set | Чтение / Запись |
variant-set | Чтение / Запись |
weight-set | Чтение / Запись |
stretch-set | Чтение / Запись |
size-set | Чтение / Запись |
scale-set | Чтение / Запись |
pixels-above-lines-set | Чтение / Запись |
pixels-below-lines-set | Чтение / Запись |
pixels-inside-wrap-set | Чтение / Запись |
editable-set | Чтение / Запись |
wrap-mode-set | Чтение / Запись |
justification-set | Чтение / Запись |
direction-set | Чтение / Запись |
left-margin-set | Чтение / Запись |
indent-set | Чтение / Запись |
strikethrough-set | Чтение / Запись |
right-margin-set | Чтение / Запись |
underline-set | Чтение / Запись |
rise-set | Чтение / Запись |
background-full-height-set | Чтение / Запись |
language-set | Чтение / Запись |
tabs-set | Чтение / Запись |
invisible-set | Чтение / Запись |
Для получения атрибута из признака, сначала проверьте, изменялся ли он. Например, для получения правильного значения выравнивания, можно сделать что-то вроде этого:
if tag.get_property("justification-set"): justification = tag.get_property("justification") |
Приоритет признаков по умолчанию зависит от порядка добавления признаков в таблицу. Приоритет может быть получен с помощью метода:
priority = tag.get_priority() tag.set_priority(priority) |
Приоритет признака может быть между 0 и размером таблицы признаков – 1.
TextTagTable по умолчанию создаётся вместе с TextBuffer. TextTagTable также может быть создана с помощью функции:
table = gtk.TextTagTable() |
TextTag может быть добавлен на TextTagTable с помощью метода:
table.add(tag) |
tag должен отсутствовать в таблице и его имя не должно совпадать с именем другого признака таблицы.
Вы можете найти TextTag в TextTagTable используя метод:
tag = table.lookup(name) |
Этот метод возвращает tag с заданным именем из таблицы или None, если признак с именем name не найден .
TextTag может быть удалён из TextTagTable с помощью метода:
table.remove(tag) |
Размер TextTagTable может быть получен с помощью метода:
size = table.get_size() |
Предыдущая страница | На уровень выше | Следующая страница |
13.5. Маркировка текста (gtk.TextMark) | Оглавление | 13.7. Пример TextView |