| |
GTK+ Reference Manual |
||||
---|---|---|---|---|
GtkTextIterGtkTextIter Итератор текстового буфера |
#include <gtk/gtk.h> GtkTextIter; GtkTextBuffer* gtk_text_iter_get_buffer (const GtkTextIter *iter); GtkTextIter* gtk_text_iter_copy (const GtkTextIter *iter); void gtk_text_iter_free (GtkTextIter *iter); gint gtk_text_iter_get_offset (const GtkTextIter *iter); gint gtk_text_iter_get_line (const GtkTextIter *iter); gint gtk_text_iter_get_line_offset (const GtkTextIter *iter); gint gtk_text_iter_get_line_index (const GtkTextIter *iter); gint gtk_text_iter_get_visible_line_index (const GtkTextIter *iter); gint gtk_text_iter_get_visible_line_offset (const GtkTextIter *iter); gunichar gtk_text_iter_get_char (const GtkTextIter *iter); gchar* gtk_text_iter_get_slice (const GtkTextIter *start, const GtkTextIter *end); gchar* gtk_text_iter_get_text (const GtkTextIter *start, const GtkTextIter *end); gchar* gtk_text_iter_get_visible_slice (const GtkTextIter *start, const GtkTextIter *end); gchar* gtk_text_iter_get_visible_text (const GtkTextIter *start, const GtkTextIter *end); GdkPixbuf* gtk_text_iter_get_pixbuf (const GtkTextIter *iter); GSList* gtk_text_iter_get_marks (const GtkTextIter *iter); GSList* gtk_text_iter_get_toggled_tags (const GtkTextIter *iter, gboolean toggled_on); GtkTextChildAnchor* gtk_text_iter_get_child_anchor (const GtkTextIter *iter); gboolean gtk_text_iter_begins_tag (const GtkTextIter *iter, GtkTextTag *tag); gboolean gtk_text_iter_ends_tag (const GtkTextIter *iter, GtkTextTag *tag); gboolean gtk_text_iter_toggles_tag (const GtkTextIter *iter, GtkTextTag *tag); gboolean gtk_text_iter_has_tag (const GtkTextIter *iter, GtkTextTag *tag); GSList* gtk_text_iter_get_tags (const GtkTextIter *iter); gboolean gtk_text_iter_editable (const GtkTextIter *iter, gboolean default_setting); gboolean gtk_text_iter_can_insert (const GtkTextIter *iter, gboolean default_editability); gboolean gtk_text_iter_starts_word (const GtkTextIter *iter); gboolean gtk_text_iter_ends_word (const GtkTextIter *iter); gboolean gtk_text_iter_inside_word (const GtkTextIter *iter); gboolean gtk_text_iter_starts_line (const GtkTextIter *iter); gboolean gtk_text_iter_ends_line (const GtkTextIter *iter); gboolean gtk_text_iter_starts_sentence (const GtkTextIter *iter); gboolean gtk_text_iter_ends_sentence (const GtkTextIter *iter); gboolean gtk_text_iter_inside_sentence (const GtkTextIter *iter); gboolean gtk_text_iter_is_cursor_position (const GtkTextIter *iter); gint gtk_text_iter_get_chars_in_line (const GtkTextIter *iter); gint gtk_text_iter_get_bytes_in_line (const GtkTextIter *iter); gboolean gtk_text_iter_get_attributes (const GtkTextIter *iter, GtkTextAttributes *values); PangoLanguage* gtk_text_iter_get_language (const GtkTextIter *iter); gboolean gtk_text_iter_is_end (const GtkTextIter *iter); gboolean gtk_text_iter_is_start (const GtkTextIter *iter); gboolean gtk_text_iter_forward_char (GtkTextIter *iter); gboolean gtk_text_iter_backward_char (GtkTextIter *iter); gboolean gtk_text_iter_forward_chars (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_chars (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_line (GtkTextIter *iter); gboolean gtk_text_iter_backward_line (GtkTextIter *iter); gboolean gtk_text_iter_forward_lines (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_lines (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_word_ends (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_word_starts (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_word_end (GtkTextIter *iter); gboolean gtk_text_iter_backward_word_start (GtkTextIter *iter); gboolean gtk_text_iter_forward_cursor_position (GtkTextIter *iter); gboolean gtk_text_iter_backward_cursor_position (GtkTextIter *iter); gboolean gtk_text_iter_forward_cursor_positions (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_cursor_positions (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_sentence_start (GtkTextIter *iter); gboolean gtk_text_iter_backward_sentence_starts (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_sentence_end (GtkTextIter *iter); gboolean gtk_text_iter_forward_sentence_ends (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_visible_word_ends (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_visible_word_starts (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_visible_word_end (GtkTextIter *iter); gboolean gtk_text_iter_backward_visible_word_start (GtkTextIter *iter); gboolean gtk_text_iter_forward_visible_cursor_position (GtkTextIter *iter); gboolean gtk_text_iter_backward_visible_cursor_position (GtkTextIter *iter); gboolean gtk_text_iter_forward_visible_cursor_positions (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_visible_cursor_positions (GtkTextIter *iter, gint count); gboolean gtk_text_iter_forward_visible_line (GtkTextIter *iter); gboolean gtk_text_iter_backward_visible_line (GtkTextIter *iter); gboolean gtk_text_iter_forward_visible_lines (GtkTextIter *iter, gint count); gboolean gtk_text_iter_backward_visible_lines (GtkTextIter *iter, gint count); void gtk_text_iter_set_offset (GtkTextIter *iter, gint char_offset); void gtk_text_iter_set_line (GtkTextIter *iter, gint line_number); void gtk_text_iter_set_line_offset (GtkTextIter *iter, gint char_on_line); void gtk_text_iter_set_line_index (GtkTextIter *iter, gint byte_on_line); void gtk_text_iter_set_visible_line_index (GtkTextIter *iter, gint byte_on_line); void gtk_text_iter_set_visible_line_offset (GtkTextIter *iter, gint char_on_line); void gtk_text_iter_forward_to_end (GtkTextIter *iter); gboolean gtk_text_iter_forward_to_line_end (GtkTextIter *iter); gboolean gtk_text_iter_forward_to_tag_toggle (GtkTextIter *iter, GtkTextTag *tag); gboolean gtk_text_iter_backward_to_tag_toggle (GtkTextIter *iter, GtkTextTag *tag); gboolean (*GtkTextCharPredicate) (gunichar ch, gpointer user_data); gboolean gtk_text_iter_forward_find_char (GtkTextIter *iter, GtkTextCharPredicate pred, gpointer user_data, const GtkTextIter *limit); gboolean gtk_text_iter_backward_find_char (GtkTextIter *iter, GtkTextCharPredicate pred, gpointer user_data, const GtkTextIter *limit); enum GtkTextSearchFlags; gboolean gtk_text_iter_forward_search (const GtkTextIter *iter, const gchar *str, GtkTextSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit); gboolean gtk_text_iter_backward_search (const GtkTextIter *iter, const gchar *str, GtkTextSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit); gboolean gtk_text_iter_equal (const GtkTextIter *lhs, const GtkTextIter *rhs); gint gtk_text_iter_compare (const GtkTextIter *lhs, const GtkTextIter *rhs); gboolean gtk_text_iter_in_range (const GtkTextIter *iter, const GtkTextIter *start, const GtkTextIter *end); void gtk_text_iter_order (GtkTextIter *first, GtkTextIter *second);
Для начала вы можете прочесть text widget conceptual overview который даёт краткий обзор обо всех объектах и типах данных связанных с текстовыми виджетами и как они взаимодействуют.
typedef struct {
/* GtkTextIter это непрозрачный datatype; все эти поля игнорируются.
* Инициализируется итер с помощью gtk_text_buffer_get_iter_*
* функции
*/
} GtkTextIter;
GtkTextBuffer* gtk_text_iter_get_buffer (const GtkTextIter *iter);
Возвращает GtkTextBuffer с которым связан итератор.
|
итератор |
Возвращает : |
буфер |
GtkTextIter* gtk_text_iter_copy (const GtkTextIter *iter);
Создаёт динамически размещаемую копию
итератора. Эта функция бесполезна для
приложений, потому что итераторы могут
быть скопированы простым присвоением
(GtkTextIter i = j;
). Эту функцию используют
языковые привязки.
|
итератор |
Возвращает : |
копия |
void gtk_text_iter_free (GtkTextIter *iter);
Свободный итератор размещается в множестве. Эта функция предназначена для использования в языковых привязках, и бесполезна для приложений, потому что итераторы могут быть размещены в стеке.
|
динамически размещаемый итератор |
gint gtk_text_iter_get_offset (const GtkTextIter *iter);
Возвращает символ смещения итератора.
Каждый символ в GtkTextBuffer
имеет смещение, начиная с 0 для первого
символа в буфере. Используйте
gtk_text_buffer_get_iter_at_offset()
для преобразования смещения обратно в
итератор.
|
итератор |
Возвращает : |
Символ смещения |
gint gtk_text_iter_get_line (const GtkTextIter *iter);
Возвращает номер строки содержащей итератор. Строки в GtkTextBuffer нумеруются начиная с 0 для первой строки в буфере.
|
итератор |
Возвращает : |
номер строки |
gint gtk_text_iter_get_line_offset (const GtkTextIter *iter);
Возвращает символ смещения итератора, подсчитывается с начала строки заканчивающейся символом новой строки. Первый символ в строке имеет 0 смещение.
|
итератор |
Возвращает : |
смещение с начала строки |
gint gtk_text_iter_get_line_index (const GtkTextIter *iter);
Возвращает указатель байта итератора, подсчитывается с начала строки заканчивающейся символом новой строки. Помните GtkTextBuffer кодирует текст в UTF-8, а символы могут потребовать для представления переменное число байт.
|
итератор |
Возвращает : |
Растояние от начала строки в байтах |
gint gtk_text_iter_get_visible_line_index (const GtkTextIter *iter);
Возвращает число байт с начала строки
до данного iter
, не считая
байт являющиеся невидимыми из-за тэгов
с включенным флажком "invisible".
|
|
Возвращает : |
Указатель байта |
gint gtk_text_iter_get_visible_line_offset (const GtkTextIter *iter);
Возвращает смещение в символах с начала
строки до данного iter
, не
считая символы являющиеся невидимыми
из-за тэгов с включенным флажком
"invisible".
|
|
Возвращает : |
Смещение в видимых символах с начала строки |
gunichar gtk_text_iter_get_char (const GtkTextIter *iter);
Возвращает Unicode символ данного итератора.
(Эквивалент для оператора * в C++ итераторе.)
Если элемент этого итератора не символьный
элемент, такой как встроенное в буфер
изображение, возвращается Unicode "unknown"
символ 0xFFFC. Если вызвать в конце итератор,
вернётся ноль; ноль недопустимый символ
Unicode. Таким образом вы можете написать
цикл который заканчивается когда
gtk_text_iter_get_char()
возвращает 0.
|
итератор |
Возвращает : |
Unicode символ, или 0 если |
gchar* gtk_text_iter_get_slice (const GtkTextIter *start, const GtkTextIter *end);
Возвращает текст из данного диапазона. "slice" это массив символов в кодировке UTF-8, включая Unicode "unknown" символ 0xFFFC для элемента итератора в буфере без символа, такой как изображение. Поскольку изображение закодировано в буфере, байты и символы смещения в возвращаемом массиве будут соответствовать байтам смещения в текстовом буфере. Помните, 0xFFFC может находиться также в обычном тексте, поэтому это не надёжный индикатор изображения или виджета в буфере.
|
итератор начала диапазона |
|
итератор конца диапазона |
Возвращает : |
часть текста из буфера |
gchar* gtk_text_iter_get_text (const GtkTextIter *start, const GtkTextIter *end);
Возвращает текст text в данном
диапазоне. Если диапазон содержит не
текстовые элементы такие как изображения,
символы и байты смещения в возвращённой
строке не будут соответствовать символам
и байтам смещения в буфере. Если вам
нужно соответствующее смещение, смотрите
gtk_text_iter_get_slice()
.
|
итератор начала диапазона |
|
итератор конца диапазона |
Возвращает : |
Массив символов из буфера |
gchar* gtk_text_iter_get_visible_slice (const GtkTextIter *start, const GtkTextIter *end);
Как и gtk_text_iter_get_slice()
,
но невидимый текст не включается.
Невидимый текст обычно не видим, потому
что к нему применён GtkTextTag
с включенным атрибутом "invisible".
|
итератор начала диапазона |
|
итератор конца диапазона |
Возвращает : |
часть текста из буфера |
gchar* gtk_text_iter_get_visible_text (const GtkTextIter *start, const GtkTextIter *end);
Как и gtk_text_iter_get_text()
,
но невидимый текст не включён. Невидимый
текст обычно не видим, потому что к нему
применён GtkTextTag с
включенным атрибутом "invisible".
|
итератор начала диапазона |
|
итератор конца диапазона |
Возвращает : |
Строка содержащая видимый текст в диапазоне |
GdkPixbuf* gtk_text_iter_get_pixbuf (const GtkTextIter *iter);
Если элемент итератора iter
изображение, возвращается изображение
(без добавления новой ссылки). Иначе
возвращается NULL
.
|
итератор |
Возвращает : |
изображение |
GSList* gtk_text_iter_get_marks (const GtkTextIter *iter);
Возвращает список всех GtkTextMark в этом расположении. Поскольку маркеры неповторимы (они не занимают "space" в буфере, они просто маркеры между повторяющимися расположениями), множество маркеров может существовать в одном месте. Возвращаемый список не находится ни в каком значимом порядке.
|
итератор |
Возвращает : |
список GtkTextMark |
GSList* gtk_text_iter_get_toggled_tags (const GtkTextIter *iter, gboolean toggled_on);
Возвращает список GtkTextTag
который включается или выключается
данным указателем. (Если toggled_on
равен TRUE
,
список содержит тэги которые являются
включенными.) Если тэг включен в iter
,
то он применяется к некоторому не пустому
диапазону символов следующих за iter
.
Если тэг выключен, он не применяется к
некоторому не пустому диапазону символов
следующих за iter
.
|
итератор |
|
|
Возвращает : |
Тэги включаемые этим указателем |
GtkTextChildAnchor* gtk_text_iter_get_child_anchor (const GtkTextIter *iter);
Если размещение iter
содержит
дочерний якорь, возвращается якорь (без
добавления ссылок). Иначе возвращается
NULL
.
|
итератор |
Возвращает : |
Якорь итератора |
gboolean gtk_text_iter_begins_tag (const GtkTextIter *iter, GtkTextTag *tag);
Возвращает TRUE
если tag
включен в этой точке.
Если tag
равен NULL
,
возвращается TRUE
если любой тэг включен в данном указателе.
Помните что gtk_text_iter_begins_tag()
возвращает TRUE
если iter
это начало диапазона
тэгов; gtk_text_iter_has_tag()
укажет вам входит ли итератор в диапазон
тэгов.
|
итератор |
|
GtkTextTag, или |
Возвращает : |
Начинает ли |
gboolean gtk_text_iter_ends_tag (const GtkTextIter *iter, GtkTextTag *tag);
Возвращает TRUE
если tag
выключен в данной
точке. Если tag
это NULL
,
возвращается TRUE
если любой тэг выключен в данной точке.
Помните что gtk_text_iter_ends_tag()
возвращает TRUE
если iter
это конец диапазона
тэгов; gtk_text_iter_has_tag()
укажет вам входит ли итератор в диапазон
тэгов.
|
итератор |
|
GtkTextTag, или |
Возвращает : |
Заканчивает ли |
gboolean gtk_text_iter_toggles_tag (const GtkTextIter *iter, GtkTextTag *tag);
Это эквивалент (gtk_text_iter_begins_tag()
|| gtk_text_iter_ends_tag()
),
то есть она сообщает вам применяется
ли iter
к диапазону с tag
с начала или с конца.
|
итератор |
|
GtkTextTag, или |
Возвращает : |
Включен или выключен |
gboolean gtk_text_iter_has_tag (const GtkTextIter *iter, GtkTextTag *tag);
Возвращает TRUE
если iter
внутри диапазона
tag
.
|
итератор |
|
|
Возвращает : |
Скреплен ли |
GSList* gtk_text_iter_get_tags (const GtkTextIter *iter);
Возвращает список тэгов которые
применяются к iter
, в порядке
возрастающего приоритета (тэг с высшим
приоритетом последний). GtkTextTag
в списке не имеет добавленных ссылок,
но вы можете освободить список
самостоятельно.
|
|
Возвращает : |
список GtkTextTag |
gboolean gtk_text_iter_editable (const GtkTextIter *iter, gboolean default_setting);
Возвращает является ли символ в iter
в пределах редактируемой области текста.
Не редактируемый текст "заблокирован"
и не может изменяться пользователем
через GtkTextView. Эта функция
просто удобная оболочка для
gtk_text_iter_get_attributes()
.
Если нет тэгов применяемых к этому
редактируемому тексту, будет возвращен
default_setting
.
Вы не должны использовать эту функцию
для определения будет ли текст вставлен
в iter
, так как вы не знаете
является ли вставляемый символ в iter
в доступном для редактирования диапазоне.
Используйте gtk_text_iter_can_insert()
для обработки этой ситуации.
|
итератор |
|
|
Возвращает : |
Находится ли |
gboolean gtk_text_iter_can_insert (const GtkTextIter *iter, gboolean default_editability);
Рассматривает буфер доступным для
редактирования по умолчанию и тэги
которые затрагивают редактирование,
определяет был ли текст вставленный в
iter
доступным для редактирования.
Если текст вставленный в iter
был редактируемым то когда пользователю
должно быть позволено вставить текст
в iter
. gtk_text_buffer_insert_interactive()
используется чтобы решить позволяется
ли вставка в данную позицию.
|
итератор |
|
|
Возвращает : |
Редактируем ли текст вставляемый в
|
gboolean gtk_text_iter_starts_word (const GtkTextIter *iter);
Определяет начинает ли iter
слово естественного языка. Прерывания
слов определены в Pango и должны быть
правильны почти для всех языков (если
нет, исправления должны быть зафиксированы
в алгоритме прерывания слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_ends_word (const GtkTextIter *iter);
Определяет заканчивает ли iter
слово нормального языка. Прерывания
слов определены в Pango и должны быть
правильны почти для всех языков (если
нет, исправления должны быть зафиксированы
в алгоритме прерывания слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_inside_word (const GtkTextIter *iter);
Определяет находится ли iter
внутри слова нормального языка (в
противоположность сказанного о размещении
его внутри некоторого пробела). Прерывания
слов определены в Pango и должны быть
правильны почти для всех языков (если
нет, исправления должны быть зафиксированы
в алгоритме прерывания слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_starts_line (const GtkTextIter *iter);
Возвращает TRUE
если iter
начинает параграф,
то есть если gtk_text_iter_get_line_offset()
вернёт 0. Однако эта функция потенциально
более эффективна чем
gtk_text_iter_get_line_offset()
потому что она не вычисляет смещение,
она просто смотрит является ли итератор
0.
|
итератор |
Возвращает : |
Является ли |
gboolean gtk_text_iter_ends_line (const GtkTextIter *iter);
Возвращает TRUE
если iter
указывает на начало
параграфа разделяющими символами для
строки (разделителями будут каждый
символ новой строки, перевод каретки,
перевод каретки следующий за символом
новой строки, или Unicode символ разделителя
параграфов). Помните что итератор
указывающий на \n в паре \r\n не будет
считаться концом строки, конец строки
перед \r. Конечным итератором считается
конец строки, даже если там нет символов
завершения параграфа.
|
итератор |
Возвращает : |
Является ли |
gboolean gtk_text_iter_starts_sentence (const GtkTextIter *iter);
Определяет начинается ли с iter
предложение. Границы предложения
определены в Pango и должны быть корректны
почти для всех языков (если нет, исправления
должны быть зафиксированы в алгоритме
текстовых границ Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_ends_sentence (const GtkTextIter *iter);
Определяет является ли iter
концом предложения. Границы предложения
определены в Pango и должны быть корректны
почти для всех языков (если нет, исправления
должны быть зафиксированы в алгоритме
текстовых границ Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_inside_sentence (const GtkTextIter *iter);
Определяет находится ли iter
внутри предложения (в противоположность
между двух предложений, например после
точки и перед первым символом следующего
предложения). Границы предложения
определены в Pango и должны быть корректны
почти для всех языков (если нет, исправления
должны быть зафиксированы в алгоритме
текстовых границ Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_is_cursor_position (const GtkTextIter *iter);
Смотрите gtk_text_iter_forward_cursor_position()
или PangoLogAttr
или pango_break()
для деталей относительно позиции
курсора.
|
|
Возвращает : |
|
gint gtk_text_iter_get_chars_in_line (const GtkTextIter *iter);
Возвращает число символов в строке
содержащей iter
, включая
разделители параграфа.
|
итератор |
Возвращает : |
Число символов в строке |
gint gtk_text_iter_get_bytes_in_line (const GtkTextIter *iter);
Возвращает количество байт в строке
содержащей iter
, включая
разделители параграфа.
|
итератор |
Возвращает : |
Количество байт в строке |
gboolean gtk_text_iter_get_attributes (const GtkTextIter *iter, GtkTextAttributes *values);
Вычисляет эффект от тэгов примененных
к этому месту в тексте. Параметр values
должен быть инициализирован значением
установок по умолчанию используемых
вами, если нет эффективных тэгов. Обычно
значения по умолчанию определяются с
помощью gtk_text_view_get_default_attributes()
.
gtk_text_iter_get_attributes()
изменит values
, применяя эффект
к любым тэгам представленных в iter
.
Если какие нибудь тэги касаются values
,
функция вернет TRUE
.
|
итератор |
|
GtkTextAttributes заполняющие поле |
Возвращает : |
|
PangoLanguage* gtk_text_iter_get_language (const GtkTextIter *iter);
Удобная оболочка для
gtk_text_iter_get_attributes()
,
которая возвращает действительный язык
в iter
. Если нет тэгов касающихся
языка применённого к iter
,
значение идентично возвращаемому из
gtk_get_default_language()
.
|
итератор |
Возвращает : |
Действительный язык в |
gboolean gtk_text_iter_is_end (const GtkTextIter *iter);
Возвращает TRUE
если iter
конец итератора,
то есть последний определенный в буфере.
gtk_text_iter_is_end()
самый эффективный способ проверить
является ли итератор последним.
|
итератор |
Возвращает : |
Является ли |
gboolean gtk_text_iter_is_start (const GtkTextIter *iter);
Возвращает TRUE
если iter
первый итератор в
буфере, то есть если iter
имеет
символ смещения 0.
|
итератор |
Возвращает : |
Является ли |
gboolean gtk_text_iter_forward_char (GtkTextIter *iter);
Продвигает iter
вперед смещая
на один символ. Помните что изображения
включённые в буфер занимают 1 символьный
слот, поэтому gtk_text_iter_forward_char()
может фактически передвинуть на
изображение а не символ, если в вашем
буфере есть изображения. Если iter
конечный итератор или перед ним только
один символ, iter
после
выполнения будет указывать на конечный
итератор, а gtk_text_iter_forward_char()
вернёт FALSE
для удобства написания циклов.
|
итератор |
Возвращает : |
Является ли |
gboolean gtk_text_iter_backward_char (GtkTextIter *iter);
Перемещает назад на один символ смещения.
Возвращает TRUE
если перемещение возможно; если iter
был первым в буфере (символ смещения
0), gtk_text_iter_backward_char()
вернёт FALSE
для удобства написания циклов.
|
итератор |
Возвращает : |
Возможно ли перемещение |
gboolean gtk_text_iter_forward_chars (GtkTextIter *iter, gint count);
Перемещает count
символов
если возможно(если count
проходит через начало или конец буфера,
то перемещается соответственно или в
начало или в конец буфера). Возвращаемое
значение указывает отличается ли новая
позиция iter
от оригинальной
позиции, и возможность переноса(последний
итератор в буфере не переносим). Если
count
равен 0, функция ничего
не делает и возвращает FALSE
.
|
итератор |
|
Число символов перемещения, может быть отрицательным |
Возвращает : |
Перемещаем и перенесен ли |
gboolean gtk_text_iter_backward_chars (GtkTextIter *iter, gint count);
Перемещает count
символов
назад, если возможно (если count
проходит через начало или конец буфера,
то перемещается соответственно или в
начало или в конец буфера). Возвращаемое
значение указывает перемещается ли
итератор на позицию переноса; если
итератор не перемещаем, или перемещаемый
итератор является конечным, то когда
возвращается FALSE
.
Если count
равен 0, функция
ничего не делает и возвращает FALSE
.
|
итератор |
|
Число символов для перемещения |
Возвращает : |
Перемещаем и перенесен ли |
gboolean gtk_text_iter_forward_line (GtkTextIter *iter);
Перемещает iter
в начало
следующей строки. Возвращает TRUE
если перемещение выполнено и FALSE
если iter
был просто перемещен
в конец буфера и он не переносим, или
iter
уже находится в конце
буфера.
|
итератор |
Возвращает : |
Может ли |
gboolean gtk_text_iter_backward_line (GtkTextIter *iter);
Перемещает iter
в начало
предыдущей строки. Возвращает TRUE
если iter
может быть перемещен;
то есть если iter
символ
смещения 0, эта функция вернет FALSE
.
Однако если iter
уже является
0, но не началом строки, iter
прикрепляется к началу строки и функция
возвращает TRUE
.
(Помните, это подразумевает что в цикле
вызвавшем эту функцию, номер строки
возможно не измениться на каждую
итерацию, если ваша первая итерация на
строке 0.)
|
итератор |
Возвращает : |
Перемещаем ли |
gboolean gtk_text_iter_forward_lines (GtkTextIter *iter, gint count);
Перемещает на count
строк
вперед, если возможно (если count
проходит через начало или конец буфера,
то перемещается соответственно или в
начало или в конец буфера). Возвращаемое
значение указывает перемещается ли
итератор на позицию переноса; если
итератор не перемещаем, или перемещаемый
итератор является конечным, то когда
возвращается FALSE
.
Если count равен 0, функция ничего не делает
и возвращает FALSE
.
Если count
отрицательное,
перемещение назад на 0 - count
строк.
|
|
|
число строк для перемещения вперёд |
Возвращает : |
Перемещаем и перемещен ли |
gboolean gtk_text_iter_backward_lines (GtkTextIter *iter, gint count);
Перемещение count
строк назад,
если возможно (если count
проходит через начало или конец буфера,
то перемещается соответственно или в
начало или в конец буфера). Возвращаемое
значение указывает перемещается ли
итератор на позицию переноса; если
итератор не перемещаем, или перемещаемый
итератор является конечным, то когда
возвращается FALSE
.
Если count равен 0, функция ничего не делает
и возвращает FALSE
.
Если count
отрицательное,
перемещается вперед на 0 - count
строк.
|
|
|
число строк для перемещения назад |
Возвращает : |
Перемещаем и перемещен ли iter |
gboolean gtk_text_iter_forward_word_ends (GtkTextIter *iter, gint count);
Вызывает gtk_text_iter_forward_word_end()
count
раз.
|
|
|
количество перемещений |
Возвращает : |
|
gboolean gtk_text_iter_backward_word_starts (GtkTextIter *iter, gint count);
Вызывает gtk_text_iter_backward_word_start()
count
раз.
|
|
|
количество перемещений |
Возвращает : |
|
gboolean gtk_text_iter_forward_word_end (GtkTextIter *iter);
Перемещение вперёд в конец следующего
слова. (если iter
текущий конец
слова, перемещается вперёд к следующему
после этого.) Прерывания слов определены
в Pango и должны быть правильны почти для
всех языков (если нет, исправления должны
быть зафиксированы в алгоритме прерывания
слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_backward_word_start (GtkTextIter *iter);
Перемещение назад to the previous word start. (если
iter
текущеме начало слова,
перемещается к следующему после него.)
Прерывания слов определены в Pango и должны
быть правильны почти для всех языков
(если нет, исправления должны быть
зафиксированы в алгоритме прерывания
слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_forward_cursor_position (GtkTextIter *iter);
Перемещает iter
вперёд на
одну позицию курсора. Возможно странно,
но не может быть позицией курсора между
любыми символами. Самым обычным примером
для Европейских языков был бы перевод
каретки/символ новой строки предложения.
Для некоторых символов Unicode, эквивалент
скажем строчной "a" с отметкой
ударения будет представлен как два
символа, сначала прописная потом
"combining mark" которая представляет
ударение; таким образом курсор не может
находится между двумя этими символами.
Смотрите также структуру PangoLogAttr
и pango_break()
функцию.
|
|
Возвращает : |
|
gboolean gtk_text_iter_backward_cursor_position (GtkTextIter *iter);
Как gtk_text_iter_forward_cursor_position()
,
но перемещение назад.
|
|
Возвращает : |
|
gboolean gtk_text_iter_forward_cursor_positions (GtkTextIter *iter, gint count);
Перемещение на count
позиций
курсора. Смотрите
gtk_text_iter_forward_cursor_position()
.
|
|
|
количество позиций для перемещения |
Возвращает : |
|
gboolean gtk_text_iter_backward_cursor_positions (GtkTextIter *iter, gint count);
Перемещение на count
позиций
курсора. Смотрите
gtk_text_iter_forward_cursor_position()
.
|
|
|
количество позиций для перемещения |
Возвращает : |
|
gboolean gtk_text_iter_backward_sentence_start (GtkTextIter *iter);
Перемещение назад к предыдущему началу
предложения; если iter
уже в
начале предложения, перемещение назад
к следующему. Прерывания слов определены
в Pango и должны быть правильны почти для
всех языков (если нет, исправления должны
быть зафиксированы в алгоритме прерывания
слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_backward_sentence_starts (GtkTextIter *iter, gint count);
Вызывает gtk_text_iter_backward_sentence_start()
count
раз, или пока не вернётся
FALSE
.
Если count
отрицательное,
перемещение вперёд а не назад.
|
|
|
количество предложений для перемещения |
Возвращает : |
|
gboolean gtk_text_iter_forward_sentence_end (GtkTextIter *iter);
Перемещение вперёд в конец следующего
предложения. (если iter
уже
конец предложения, перемещение к
следующему концу предложения.) Прерывания
слов определены в Pango и должны быть
правильны почти для всех языков (если
нет, исправления должны быть зафиксированы
в алгоритме прерывания слов в Pango).
|
|
Возвращает : |
|
gboolean gtk_text_iter_forward_sentence_ends (GtkTextIter *iter, gint count);
Вызывает gtk_text_iter_forward_sentence_end()
count
раз (или пока
gtk_text_iter_forward_sentence_end()
не вернет FALSE
).
Если count
отрицательное,
перемещение назад а не вперёд.
|
|
|
количество предложений для перемещения |
Возвращает : |
|
gboolean gtk_text_iter_forward_visible_word_ends (GtkTextIter *iter, gint count);
Вызывает gtk_text_iter_forward_visible_word_end()
count
раз.
|
|
|
количество перемещений |
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_backward_visible_word_starts (GtkTextIter *iter, gint count);
Вызывает gtk_text_iter_backward_visible_word_start()
count
раз.
|
|
|
количество перемещений |
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_forward_visible_word_end (GtkTextIter *iter);
Перемещение вперёд к следующему видимому
концу слова. (если iter
текущий
конец слова, перемещается вперёд к
следующему после этого.) Прерывания
слов определены в Pango и должны быть
правильны почти для всех языков (если
нет, исправления должны быть зафиксированы
в алгоритме прерывания слов в Pango).
|
|
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_backward_visible_word_start (GtkTextIter *iter);
Перемещение назад к следующему видимому
началу слова. (если iter
текущеме
начало слова, перемещается к следующему
после него.) Прерывания слов определены
в Pango и должны быть правильны почти для
всех языков (если нет, исправления должны
быть зафиксированы в алгоритме прерывания
слов в Pango).
|
|
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_forward_visible_cursor_position (GtkTextIter *iter);
Перемещение iter
вперёд к
следующей видимой позиции курсора.
Смотрите gtk_text_iter_forward_cursor_position()
.
|
|
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_backward_visible_cursor_position (GtkTextIter *iter);
Перемещение iter
вперёд к
предыдущей видимой позиции курсора.
Смотрите gtk_text_iter_backward_cursor_position()
.
|
|
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_forward_visible_cursor_positions (GtkTextIter *iter, gint count);
Перемещение на count
видимых
позиций курсора. Смотрите
gtk_text_iter_forward_cursor_position()
.
|
|
|
количество позиций для перемещения |
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_backward_visible_cursor_positions (GtkTextIter *iter, gint count);
Перемещение на count
видимых
позиций курсора. Смотрите
gtk_text_iter_backward_cursor_position()
.
|
|
|
количество позиций для перемещения |
Возвращает : |
|
Начиная с версии 2.4
gboolean gtk_text_iter_forward_visible_line (GtkTextIter *iter);
Перемещение iter
к началу
следующего видимой строки. Возвращает
TRUE
если это была следующая строка для
перемещения и FALSE
если iter
был перемещен просто
в конец буфера и больше непереносим,
или если iter
был уже в конце
буфера.
|
итератор |
Возвращает : |
Переносим ли |
Начиная с версии 2.8
gboolean gtk_text_iter_backward_visible_line (GtkTextIter *iter);
Перемещение iter
в начало
предыдущей видимой строки. Возвращает
TRUE
если iter
мог быть перемещён;
так как если iter
был символом
смещения 0, эта функция вернет FALSE
.
Однако, если iter
был уже на
строке 0, но не в начале строки, iter
прикрепляется к началу строки и функция
возвращает TRUE
.
(Помните, это означает что в цикле
вызывающем эту функцию, номер строки
может не измениться на каждую итерацию,
если ваша первая итерация это строка
0.)
|
итератор |
Возвращает : |
Перемещаем ли |
Начиная с версии 2.8
gboolean gtk_text_iter_forward_visible_lines (GtkTextIter *iter, gint count);
Перемещение count
видимых
строк вперёд, если возможно (если count
проходит через начало или конец буфера,
то перемещается соответственно или в
начало или в конец буфера). Возвращаемое
значение указывает перемещается ли
итератор на позицию переноса; если
итератор не перемещаем, или перемещаемый
итератор является конечным, то когда
возвращается FALSE
.
Если count равен 0, функция ничего не делает
и возвращает FALSE
.
Если count
отрицательное,
перемещение назад на 0 - count
строк.
|
|
|
число строк для перемещения вперёд |
Возвращает : |
Перемещаем и перемещен ли |
Начиная с версии 2.8
gboolean gtk_text_iter_backward_visible_lines (GtkTextIter *iter, gint count);
Перемещение count
видимых
строк назад, если возможно (если count
проходит через начало или конец буфера,
то перемещается соответственно или в
начало или в конец буфера). Возвращаемое
значение указывает перемещается ли
итератор на позицию переноса; если
итератор не перемещаем, или перемещаемый
итератор является конечным, то когда
возвращается FALSE
.
Если count равен 0, функция ничего не делает
и возвращает FALSE
.
Если count
отрицательное,
перемещается вперед на 0 - count
строк.
|
|
|
число строк для перемещения назад |
Возвращает : |
Перемещаем и перемещен ли |
Начиная с версии 2.8
void gtk_text_iter_set_offset (GtkTextIter *iter, gint char_offset);
Устанавливает iter
указателем
на char_offset
. char_offset
расчитывается с начала введенного
текстового буфера, начиная с 0.
|
|
|
число символов |
void gtk_text_iter_set_line (GtkTextIter *iter, gint line_number);
Перемещение итератора iter
в начало строки line_number
. Если
line_number
отрицательное или
меньше числа строк в буфере, перемещает
iter
в начало последней строки
буфера.
|
|
|
Число строк (начиная с 0) |
void gtk_text_iter_set_line_offset (GtkTextIter *iter, gint char_on_line);
Перемещение iter
внутри
строки, на новое смещение символов (не
байт). Данное число символов должно
быть больше или равно числу символов в
строке; если равно, iter
перемещается в начало следующей строки.
Смотрите gtk_text_iter_set_line_index()
если вам нужно смещение на количество
байт, а не символьное смещение.
|
|
|
Символьное смещение относительно
начала текущемй строки |
void gtk_text_iter_set_line_index (GtkTextIter *iter, gint byte_on_line);
Тоже самое как gtk_text_iter_set_line_offset()
,
но работа с байтами. Начало данного
индекса байт должно быть символом, оно
не может быть в середине символа UTF-8.
|
|
|
Индекс байт относительно начала
текущемй строки |
void gtk_text_iter_set_visible_line_index (GtkTextIter *iter, gint byte_on_line);
Как gtk_text_iter_set_line_index()
,
но индекс видимых байт, то есть текст с
тэгами невидимости не попадает в индекс.
|
|
|
Индекс байт |
void gtk_text_iter_set_visible_line_offset (GtkTextIter *iter, gint char_on_line);
Как gtk_text_iter_set_line_offset()
,
но смещение в видимых символах, то есть
текст с тэгами невидимости не попадает
в смещение.
|
|
|
Смещение символов |
void gtk_text_iter_forward_to_end (GtkTextIter *iter);
Перемещение iter
вперёд к
"end iterator", который указывает последний
допустимый символ буфера.
gtk_text_iter_get_char()
вызывает конечный итератор возвращая
0, это удобно для написания циклов.
|
gboolean gtk_text_iter_forward_to_line_end (GtkTextIter *iter);
Перемещение итератора в точку символа
разделителя параграфов, который будет
или символом новой строки, возвратом
каретки, последовательность возврат
каретки/символ новой строки, или Unicode
символ разделитель параграфов. Если
итератор уже символ разделитель
параграфов, перемещение в символ
разделитель следующей строки. Если iter
это последняя строка в буфере, которая
заканчивается не разделителем параграфов,
перемещает в конечный итератор (конец
последней строки) и возвращает FALSE
.
|
|
Возвращает : |
|
gboolean gtk_text_iter_forward_to_tag_toggle (GtkTextIter *iter, GtkTextTag *tag);
Перемещение вперёд к следующему флагу
(on или off) GtkTextTag tag
,
или следующему флагу любого тэга если
tag
это NULL
.
Если нет найденных флажков тэгов,
возвращает FALSE
,
иначе TRUE
.
Не возвращает флаги расположенные в
iter
, только после iter
.
Устанавливает iter
в расположение
флага, или в конец буфера если нет
найденного флага.
|
|
|
GtkTextTag, или |
Возвращает : |
Найден ли флаг тэга после |
gboolean gtk_text_iter_backward_to_tag_toggle (GtkTextIter *iter, GtkTextTag *tag);
Перемещение назад к следующему флагу
(on или off) GtkTextTag tag
,
или следующему флагу любого тэга если
tag
это NULL
.
Если нет найденных флажков тэгов,
возвращает FALSE
,
иначе TRUE
.
Не возвращает флаги расположенные в
iter
, только перед iter
.
Устанавливает iter
в расположение
флага, или в начало буфера если нет
найденного флага.
|
|
|
GtkTextTag, or |
Возвращает : |
Найден ли флаг тэга перед |
gboolean (*GtkTextCharPredicate) (gunichar ch, gpointer user_data);
|
|
|
|
Возвращает : |
gboolean gtk_text_iter_forward_find_char (GtkTextIter *iter, GtkTextCharPredicate pred, gpointer user_data, const GtkTextIter *limit);
Продвигает iter
, вызывая pred
на каждом символе. Если pred
возвращает TRUE
,
возвращает TRUE
и останавливает сканирование. Если pred
не вернет TRUE
,
iter
устанавливается в limit
если limit
не-NULL
,
иначе в конечный итератор.
|
|
|
Функция вызываемая для каждого символа |
|
Пользовательские данные для |
|
Лимит поиска, или |
Возвращает : |
Найдено ли соответствие |
gboolean gtk_text_iter_backward_find_char (GtkTextIter *iter, GtkTextCharPredicate pred, gpointer user_data, const GtkTextIter *limit);
Тоже самое как gtk_text_iter_forward_find_char()
,
но идёт назад от iter
.
|
|
|
Функция вызываемая для каждого символа |
|
Пользовательские данные для |
|
Лимит поиска, или |
Возвращает : |
Найдено ли соответствие |
typedef enum {
GTK_TEXT_SEARCH_VISIBLE_ONLY = 1 << 0,
GTK_TEXT_SEARCH_TEXT_ONLY = 1 << 1
/* Возможные планы на будущее: SEARCH_CASE_INSENSITIVE, SEARCH_REGEXP */
} GtkTextSearchFlags;
gboolean gtk_text_iter_forward_search (const GtkTextIter *iter, const gchar *str, GtkTextSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit);
Поиск вперёд для str
. Любое
соответствие избранное параметром
match_start
для первого символа
соответствия и match_end
для
первого символа после соответствия.
Поиск прекращается после limit
.
Помните что это линейный поиск или O(n)
операций, поэтому вы можете использовать
limit
чтобы избежать блокировки
вашего UI на больших буферах.
Если GTK_TEXT_SEARCH_VISIBLE_ONLY флаг установлен,
соответствие может вставить невидимый
текст в промежутки str
. То есть
str
будет подпоследовательностью
возможно не смежных соответствий
диапазона. Точно так же, если вы определите
GTK_TEXT_SEARCH_TEXT_ONLY, соответствие может
перемешаться с изображениями или
дочерними виджетами внутри диапазона
соответствий. Если эти флаги не получены,
соответствие должно быть точным;
специальный символ 0xFFFC в str
будет соответствовать включению
изображения или дочерних виджетов.
|
начало поиска |
|
строка поиска |
|
Флаг влияющий на выполнение поиска |
|
Место для хранения возвращаемого
значения начала соответствия, или
|
|
Место для хранения возвращаемого
значения конца соответствия, или |
|
Граница поиска, или |
Возвращает : |
Найдены ли соответствия |
gboolean gtk_text_iter_backward_search (const GtkTextIter *iter, const gchar *str, GtkTextSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit);
Также как gtk_text_iter_forward_search()
,
но перемещение назад.
|
GtkTextIter где начинается поиск |
|
строка поиска |
|
Битовая маска флажков влияющих на поиск |
|
Место для хранения возвращаемого
значения начала соответствия, или
|
|
Место для хранения возвращаемого
значения конца соответствия, или |
|
Последнее возможное |
Возвращает : |
Найдены ли соответствия |
gboolean gtk_text_iter_equal (const GtkTextIter *lhs, const GtkTextIter *rhs);
Проверяет эквивалентность двух
итераторов, используя самый быстрый
механизм. Эта функция очень быстрая;
она быстрее чем получение символов
смещения для каждого итератора и
самостоятельное их сравнение. Кроме
того, она намного быстрее
gtk_text_iter_compare()
.
|
|
|
другой GtkTextIter |
Возвращает : |
|
gint gtk_text_iter_compare (const GtkTextIter *lhs, const GtkTextIter *rhs);
qsort()
-стиль функция возвращающая
отрицательное если lhs
меньше
rhs
, положительное если lhs
больше rhs
, а 0 если они
эквивалентны. Сортирует символы смещения
по порядку, то есть первый символ в буфере
меньше второго.
|
|
|
другой GtkTextIter |
Возвращает : |
-1 если |
gboolean gtk_text_iter_in_range (const GtkTextIter *iter, const GtkTextIter *start, const GtkTextIter *end);
Проверяет попадает ли iter
в
диапазон [start
, end
).
start
и end
должны
быть в порядке возрастания.
|
|
|
начало диапазона |
|
конец диапазона |
Возвращает : |
|
void gtk_text_iter_order (GtkTextIter *first, GtkTextIter *second);
Обменивает значения first
и
second
если second
приходит перед first
в буфер.
Это гарантирует очередность first
и second
. Большинство функций
текстовых буферов вызывают эту функцию
автоматически от вашего имени, поэтому
нет необходимости вызывать её
самостоятельно. За некоторыми исключениями,
таких как gtk_text_iter_in_range()
,
которые требуют предварительно
отсортированный диапазон.
|
|
|
другой GtkTextIter |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |