Содержание
Виджеты TextView и связанные с ними объекты (TextBuffer, TextMark, TextIter, TextTag и TextTagTable) представляют мощный фреймворк для многострочного редактирования текста.
TextBuffer (см. Раздел 13.3, “Текстовый буфер”) содержит текст, отображаемый одним или несколькими виджетами TextView.
В GTK+ 2.0, текст всегда кодируется в UTF-8, это означает, что один символ может быть закодирован несколькими байтами. Поэтому используя TextBuffer, нужно понимать разницу между числом символов и числом байт.
TextIter (канал) предоставляет позицию между двумя символами в TextBuffer. TextIter действителен, пока набор символов в TextBuffer не изменяется, т.е. всегда, когда символы вставляются или удаляются из TextBuffer, то все TextIter становятся недействительными. TextIter это основной способ указывать позицию в при работе с текстом в TextBuffer.
TextMark (метка) предоставляет сохранение позиции в TextBuffer, несмотря на изменения буфера. Такие метки похожи на TextIter (см. Раздел 13.4, “Текстовые каналы”) в том, что они отображают позицию между двумя символами из TextBuffer, но если текст, окружающий метку удаляется, то она остаётся там где был текст. Таким же образом при вставке текста на метку, метка будет находиться слева или справа от вставляемого текста, в зависимости от притяжения метки – правое притяжение заставит метку быть справа от вводимого текста, а левое слева. TextMark‘и (см Раздел 13.5, “Метки в тексте”) могут быть именованными или анонимными. Каждый TextBuffer имеет две предустановленные метки, названные insert и selection_bound. Они указывают на точку ввода символов и границу выделения (выделенный текст находится между метками insert и selection_bound).
TextTag (см Раздел 13.6.1, “Текстовые признаки”) это объекты, которые определяют набор атрибутов, применяемых к тексту в TextBuffer. Каждый TextBuffer имеет TextTagTable (см. Раздел 13.6.2, “Таблицы текстовых признаков”), который содержит признаки, применимые к этому буферу. TextTagTable может быть разделен с TextBuffer. TextTag обычно используются для того чтобы изменить внешний вид отрезка текста, но также может быть использован для защиты этого отрезка от редактирования.
Предыдущая страница | На уровень выше | Следующая страница |
12.2. Методы рисования | Оглавление | 13.2. Представление текста |