GtkTextIter
GtkTextIter — Итератор буфера текста
Функции
Типы и значения
| GtkTextIter | |
| перечисление | GtkTextSearchFlags |
Иерархия объектов
GBoxed ╰── GtkTextIter
Включаемые файлы
#include <gtk/gtk.h>
Описание
Возможно, вам следует начать с прочтения обзорной концепции виджета текста, которая даёт общее представление обо всех объектах и типах данных, связанных с виджетом текста, и о том, как они взаимодействуют.
Функции
gtk_text_iter_get_buffer ()
GtkTextBuffer *
gtk_text_iter_get_buffer (const GtkTextIter *iter); Возвращает GtkTextBuffer, с которым связан этот итератор.
Параметры
iter | итератор |
Возвращает
буфер.
[transfer none]
gtk_text_iter_copy ()
GtkTextIter *
gtk_text_iter_copy (const GtkTextIter *iter); Создаёт динамически выделенную копию итератора. Эта функция бесполезна в приложениях, так как итераторы можно копировать простым присваиванием (GtkTextIter i = j;). Функция используется языковыми бинд ингами.
Параметры
iter | итератор |
Возвращает
копию iter, освобождаемую с помощью gtk_text_iter_free()
gtk_text_iter_assign ()
void gtk_text_iter_assign (GtkTextIter *iter,const GtkTextIter *other);
Присваивает значение other переменной iter. Эта функция бесполезна в приложениях, так как итераторы можно присваивать с помощью GtkTextIter i = j;. Функция используется языковыми бинд ингами.
Параметры
iter | ||
other | another GtkTextIter |
gtk_text_iter_free ()
void
gtk_text_iter_free (GtkTextIter *iter); Освобождает итератор, выделенный в куче. Эта функция предназначена для использования языковыми бинд ингами и не особенно полезна для приложений, так как итераторы можно просто выделить на стеке.
Параметры
iter | динамически выделенный итератор |
gtk_text_iter_get_offset ()
int
gtk_text_iter_get_offset (const GtkTextIter *iter); Возвращает смещение символа итератора. Каждый символ в GtkTextBuffer имеет смещение, начиная с 0 для первого символа в буфере. Используйте gtk_text_buffer_get_iter_at_offset(), чтобы преобразовать смещение обратно в итератор.
Параметры
iter | итератор |
Возвращает
смещение символа
gtk_text_iter_get_line ()
int
gtk_text_iter_get_line (const GtkTextIter *iter); Возвращает номер строки, содержащей итератор. Строки в GtkTextBuffer нумеруются, начиная с 0 для первой строки в буфере.
Параметры
iter | итератор |
Возвращает
номер строки
gtk_text_iter_get_line_offset ()
int
gtk_text_iter_get_line_offset (const GtkTextIter *iter); Возвращает смещение символа итератора, считая от начала строки, завершающейся символом новой строки. Первый символ в строке имеет смещение 0.
Параметры
iter | итератор |
Возвращает
смещение от начала строки
gtk_text_iter_get_line_index ()
int
gtk_text_iter_get_line_index (const GtkTextIter *iter); Возвращает индекс байта итератора, считая от начала строки, завершающейся символом новой строки. Помните, что GtkTextBuffer кодирует текст в UTF-8, и что символы могут потребовать разное количество байтов для представления.
Параметры
iter | итератор |
Возвращает
расстояние от начала строки в байтах
gtk_text_iter_get_visible_line_index ()
int
gtk_text_iter_get_visible_line_index (const GtkTextIter *iter); Возвращает количество байтов от начала строки до указанного iter, не считая байтов, невидимых из-за тегов с установленным флагом «невидимый».
Параметры
iter |
Возвращает
индекс байта iter относительно начала строки
gtk_text_iter_get_visible_line_offset ()
int
gtk_text_iter_get_visible_line_offset (const GtkTextIter *iter); Возвращает смещение в символах от начала строки до данного iter, не считая символов, которые невидимы из-за тегов с включённым флагом «невидимый».
Параметры
iter |
Возвращает
смещение в видимых символах от начала строки
gtk_text_iter_get_char ()
gunichar
gtk_text_iter_get_char (const GtkTextIter *iter); Возвращает символ Юникод в данной точке итератора. (Эквивалентно оператору * для C++ итератора.) Если элемент в данной точке итератора является элементом, не являющимся символом, например, изображение, встроенное в буфер, возвращается символ Юникод «неизвестный» 0xFFFC. Если вызывается на конечном итераторе, возвращается ноль; ноль не является допустимым символом Юникод. Таким образом, вы можете написать цикл, который завершается, когда gtk_text_iter_get_char() возвращает 0.
Параметры
iter | итератор |
Возвращает
символ Юникод или 0, если iter нельзя разыменовать
gtk_text_iter_get_slice ()
char * gtk_text_iter_get_slice (const GtkTextIter *start,const GtkTextIter *end);
Возвращает текст в заданном диапазоне. «Срез» — это массив символов, закодированных в формате UTF-8, включая символ Юникод «неизвестный» 0xFFFC для элементов, не являющихся символами, которые можно итерировать в буфере, таких как изображения. Поскольку изображения закодированы в срезе, байтовые и символьные смещения в возвращаемом массиве будут соответствовать байтовым смещениям в текстовом буфере. Обратите внимание, что 0xFFFC может встречаться и в обычном тексте, поэтому это не надёжный индикатор того, что в буфере находится изображение или виджет.
Параметры
start | итератор в начале диапазона | |
end | итератор в конце диапазона |
Возвращает
срез текста из буфера.
[transfer full]
gtk_text_iter_get_text ()
char * gtk_text_iter_get_text (const GtkTextIter *start,const GtkTextIter *end);
Возвращает текст в заданном диапазоне. Если диапазон содержит элементы, не являющиеся текстом, такие как изображения, смещения символов и байтов в возвращаемой строке не будут соответствовать смещениям символов и байтов в буфере. Если вам нужны смещения, которые соответствуют, см. gtk_text_iter_get_slice().
Параметры
start | итератор в начале диапазона | |
end | итератор в конце диапазона |
Возвращает
массив символов из буфера.
[transfer full]
gtk_text_iter_get_visible_slice ()
char * gtk_text_iter_get_visible_slice (const GtkTextIter *start,const GtkTextIter *end);
Аналогично gtk_text_iter_get_slice(), но невидимый текст не включается. Невидимый текст обычно невидим, потому что к нему применён тег GtkTextTag с включённым атрибутом “invisible”.
Параметры
start | итератор в начале диапазона | |
end | итератор в конце диапазона |
Возвращаемое значение
фрагмент текста из буфера.
[transfer full]
gtk_text_iter_get_visible_text ()
char * gtk_text_iter_get_visible_text (const GtkTextIter *start,const GtkTextIter *end);
Аналогично gtk_text_iter_get_text(), но невидимый текст не включается. Невидимый текст обычно невидим, потому что к нему применён тег GtkTextTag с включённым атрибутом “invisible”.
Параметры
start | итератор в начале диапазона | |
end | итератор в конце диапазона |
Возвращаемое значение
строка, содержащая видимый текст в диапазоне.
[transfer full]
gtk_text_iter_get_paintable ()
GdkPaintable *
gtk_text_iter_get_paintable (const GtkTextIter *iter); Если элемент в iter является paintable, возвращается paintable (без добавления нового счётчика ссылок). В противном случае возвращается NULL.
Параметры
iter | итератор |
Возвращаемое значение
paintable в iter .
[transfer none]
gtk_text_iter_get_marks ()
GSList *
gtk_text_iter_get_marks (const GtkTextIter *iter); Возвращает список всех GtkTextMark в этом месте. Поскольку метки не являются итерируемыми (они не занимают никакого "пространства" в буфере, это просто метки между итерируемыми местоположениями), несколько меток могут существовать в одном и том же месте. Возвращаемый список не имеет какого-либо осмысленного порядка.
Параметры
iter | итератор |
gtk_text_iter_get_toggled_tags ()
GSList * gtk_text_iter_get_toggled_tags (const GtkTextIter *iter,gboolean toggled_on);
Возвращает список GtkTextTag, которые включены или выключены в этой точке. (Если toggled_on равно TRUE, список содержит теги, которые включены.) Если тег включен в iter, то некоторый непустой диапазон символов после iter имеет этот тег. Если тег выключен, то некоторый непустой диапазон после iter не имеет этого тега.
Параметры
iter | итератор | |
toggled_on |
|
Возвращаемое значение
теги, переключаемые в этой точке.
[element-type GtkTextTag][transfer container]
gtk_text_iter_get_child_anchor ()
GtkTextChildAnchor *
gtk_text_iter_get_child_anchor (const GtkTextIter *iter); Если местоположение в iter содержит дочерний якорь, возвращается якорь (без добавления нового счётчика ссылок). В противном случае возвращается NULL.
Параметры
iter | итератор |
Возвращаемое значение
якорь в iter .
[transfer none]
gtk_text_iter_starts_tag ()
gboolean gtk_text_iter_starts_tag (const GtkTextIter *iter,GtkTextTag *tag);
Возвращает TRUE, если tag включен именно в этой точке. Если tag равно NULL, возвращает TRUE, если какой-либо тег включен в этой точке.
Обратите внимание, что если gtk_text_iter_starts_tag() возвращает TRUE, это означает, что iter находится в начале помеченного диапазона, и что символ в iter находится внутри помеченного диапазона. Другими словами, в отличие от gtk_text_iter_ends_tag(), если gtk_text_iter_starts_tag() возвращает TRUE, gtk_text_iter_has_tag() также вернёт TRUE для тех же параметров.
Параметры
iter | итератор | |
tag | a GtkTextTag, или | [nullable] |
Возвращаемое значение
является ли iter началом диапазона, помеченного tag
gtk_text_iter_ends_tag ()
gboolean gtk_text_iter_ends_tag (const GtkTextIter *iter,GtkTextTag *tag);
Возвращает TRUE, если tag выключен именно в этой точке. Если tag равно NULL, возвращает TRUE, если какой-либо тег выключен в этой точке.
Обратите внимание, что если gtk_text_iter_ends_tag() возвращает TRUE, это означает, что iter находится в конце помеченного диапазона, но что символ в iter находится вне помеченного диапазона. Другими словами, в отличие от gtk_text_iter_starts_tag(), если gtk_text_iter_ends_tag() возвращает TRUE, gtk_text_iter_has_tag() вернёт FALSE для тех же параметров.
Параметры
iter | итератор | |
tag | a GtkTextTag, или | [allow-none] |
Возвращаемое значение
является ли iter концом диапазона, помеченного tag
gtk_text_iter_toggles_tag ()
gboolean gtk_text_iter_toggles_tag (const GtkTextIter *iter,GtkTextTag *tag);
Это эквивалентно (gtk_text_iter_starts_tag() || gtk_text_iter_ends_tag()), то есть, это говорит вам, начинается или заканчивается диапазон с примененным к нему tag в iter.
Параметры
iter | итератор | |
tag | a GtkTextTag, или | [allow-none] |
Возвращаемое значение
является ли tag включенным или выключенным в iter
gtk_text_iter_has_tag ()
gboolean gtk_text_iter_has_tag (const GtkTextIter *iter,GtkTextTag *tag);
Возвращает TRUE, если iter указывает на символ, который является частью диапазона, помеченного tag. См. также gtk_text_iter_starts_tag() и gtk_text_iter_ends_tag().
Параметры
iter | итератор | |
tag |
Возвращаемое значение
помечен ли iter с помощью tag
gtk_text_iter_get_tags ()
GSList *
gtk_text_iter_get_tags (const GtkTextIter *iter); Возвращает список тегов, которые применяются к iter, в порядке возрастания приоритета (теги с наивысшим приоритетом находятся в конце). К GtkTextTag в списке не добавляется ссылка, но сам список нужно освободить.
Параметры
iter |
gtk_text_iter_editable ()
gboolean gtk_text_iter_editable (const GtkTextIter *iter,gboolean default_setting);
Возвращает, находится ли символ в iter внутри редактируемой области текста.
Неизменяемый текст «заблокирован» и не может быть изменен пользователем через GtkTextView. Если ни один из тегов, примененных к этому тексту, не влияет на редактируемость, будет возвращено default_setting.
Не следует использовать эту функцию для определения того, можно ли вставить текст в iter, поскольку для вставки вам не нужно знать, находится ли символ в iter внутри редактируемого диапазона, вам нужно знать, будет ли новый символ, вставленный в iter, внутри редактируемого диапазона. Используйте gtk_text_iter_can_insert() для обработки этого случая.
Параметры
iter | итератор | |
default_setting |
|
Возвращаемое значение
находится ли 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() использует эту функцию, чтобы определить, разрешены ли вставки в заданной позиции.
Параметры
iter | итератор | |
default_editability |
|
Возвращаемое значение
будет ли текст, вставленный в iter, редактируемым
gtk_text_iter_starts_word ()
gboolean
gtk_text_iter_starts_word (const GtkTextIter *iter); Определяет, начинается ли iter со слова на естественном языке. Разрывы слов определяются Pango и должны быть корректными практически для любого языка (если нет, правильное исправление будет заключаться в алгоритмах разрыва слов Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter находится в начале слова
gtk_text_iter_ends_word ()
gboolean
gtk_text_iter_ends_word (const GtkTextIter *iter); Определяет, заканчивается ли iter словом на естественном языке. Разрывы слов определяются Pango и должны быть корректными практически для любого языка (если нет, правильное исправление будет заключаться в алгоритмах разрыва слов Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter находится в конце слова
gtk_text_iter_inside_word ()
gboolean
gtk_text_iter_inside_word (const GtkTextIter *iter); Определяет, является ли символ, на который указывает iter, частью слова на естественном языке (в отличие, например, от пробела). Разрывы слов определяются Pango и должны быть корректными практически для любого языка (если нет, правильное исправление будет заключаться в алгоритмах разрыва слов Pango).
Обратите внимание, что если gtk_text_iter_starts_word() возвращает TRUE, то эта функция также возвращает TRUE, так как iter указывает на первый символ слова.
Параметры
iter |
Возвращаемое значение
TRUE если iter находится внутри слова
gtk_text_iter_starts_line ()
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.
Параметры
iter | итератор |
Возвращаемое значение
начинается ли iter со строки
gtk_text_iter_ends_line ()
gboolean
gtk_text_iter_ends_line (const GtkTextIter *iter); Возвращает TRUE, если iter указывает на начало разделителей абзаца для строки (разделители — это перевод строки, возврат каретки, возврат каретки, за которым следует перевод строки, или символ разделителя абзаца Юникода). Обратите внимание, что итератор, указывающий на \n пары \r\n, не будет считаться концом строки, конец строки находится перед \r. Конечный итератор считается находящимся в конце строки, даже если там нет символов разделителя абзаца.
Параметры
iter | итератор |
Возвращает
является ли iter концом строки
gtk_text_iter_starts_sentence ()
gboolean
gtk_text_iter_starts_sentence (const GtkTextIter *iter); Определяет, начинается ли iter предложение. Границы предложений определяются Pango и должны быть корректными для почти любого языка (если нет, то правильное исправление будет в алгоритмах разграничения текста Pango).
Параметры
iter |
Возвращает
TRUE, если iter находится в начале предложения.
gtk_text-iter_ends_sentence ()
gboolean
gtk_text_iter_ends_sentence (const GtkTextIter *iter); Определяет, заканчивается ли iter предложение. Границы предложений определяются Pango и должны быть корректными для почти любого языка (если нет, то правильное исправление будет в алгоритмах разграничения текста Pango).
Параметры
iter |
Возвращает
TRUE, если iter находится в конце предложения.
gtk_text_iter_inside_sentence ()
gboolean
gtk_text_iter_inside_sentence (const GtkTextIter *iter); Определяет, находится ли iter внутри предложения (в отличие от пространства между двумя предложениями, например, после точки и перед первой буквой следующего предложения). Границы предложений определяются Pango и должны быть корректными для почти любого языка (если нет, то правильное исправление будет в алгоритмах разграничения текста Pango).
Параметры
iter |
Возвращает
TRUE, если iter находится внутри предложения.
gtk_text_iter_is_cursor_position ()
gboolean
gtk_text_iter_is_cursor_position (const GtkTextIter *iter); См. gtk_text_iter_forward_cursor_position() или PangoLogAttr или pango_break() для получения подробной информации о том, что такое позиция курсора.
Параметры
iter |
Возвращает
TRUE, если курсор можно разместить в позиции iter
gtk_text_iter_get_chars_in_line ()
int
gtk_text_iter_get_chars_in_line (const GtkTextIter *iter); Возвращает количество символов в строке, содержащей iter, включая разделители абзаца.
Параметры
iter | итератор |
Возвращает
количество символов в строке
gtk_text_iter_get_bytes_in_line ()
int
gtk_text_iter_get_bytes_in_line (const GtkTextIter *iter); Возвращает количество байтов в строке, содержащей iter, включая разделители абзаца.
Параметры
iter | итератор |
Возвращает
количество байтов в строке
gtk_text_iter_get_language ()
PangoLanguage *
gtk_text_iter_get_language (const GtkTextIter *iter); Возвращает язык, действующий в позиции iter.
Если к iter не применяются теги, влияющие на язык, возвращаемое значение идентично значению gtk_get_default_language().
Параметры
iter | итератор |
Возвращает
язык, действующий в позиции iter.
[transfer full]
gtk_text_iter_is_end ()
gboolean
gtk_text_iter_is_end (const GtkTextIter *iter); Возвращает TRUE, если iter является конечным итератором, т. е. итератором, следующим за последним обработаемым итератором в буфере. gtk_text_iter_is_end() — это наиболее эффективный способ проверки того, является ли итератор конечным.
Параметры
iter | итератор |
Возвращает
является ли iter конечным итератором
gtk_text_iter_is_start ()
gboolean
gtk_text_iter_is_start (const GtkTextIter *iter); Возвращает TRUE, если iter — первый итератор в буфере, то есть если у iter смещение символа равно 0.
Параметры
iter | итератор |
Возвращает
является ли iter первым в буфере
gtk_text_iter_forward_char ()
gboolean
gtk_text_iter_forward_char (GtkTextIter *iter); Перемещает iter вперёд на одно смещение символа. Обратите внимание, что изображения, встроенные в буфер, занимают 1 слот символа, поэтому gtk_text_iter_forward_char() может фактически переместиться на изображение вместо символа, если в вашем буфере есть изображения. Если iter является конечным итератором или символом перед ним, iter теперь указывает на конечный итератор, и gtk_text_iter_forward_char() возвращает FALSE для удобства при написании циклов.
Параметры
iter | итератор |
Возвращает
был ли iter перемещён и доступен для обращения
gtk_text_iter_backward_char ()
gboolean
gtk_text_iter_backward_char (GtkTextIter *iter); Перемещает назад на одно смещение символа. Возвращает TRUE, если перемещение было возможным; если iter был первым в буфере (смещение символа 0), gtk_text_iter_backward_char() возвращает FALSE для удобства при написании циклов.
Параметры
iter | итератор |
Возвращает
возможно ли было перемещение
gtk_text_iter_forward_chars ()
gboolean gtk_text_iter_forward_chars (GtkTextIter *iter,int count);
Перемещает count символов, если возможно (если count переместит итератор за начало или конец буфера, перемещается к началу или концу буфера). Значение возврата указывает, отличается ли новое положение iter от его исходного положения и доступно ли для обращений (последняя итератор в буфере недоступна для обращений). Если count равно 0, функция ничего не делает и возвращает FALSE.
Параметры
iter | итератор | |
count | количество символов для перемещения, может быть отрицательным |
Возвращает
перемещен ли iter и доступен ли для обращений
gtk_text_iter_backward_chars ()
gboolean gtk_text_iter_backward_chars (GtkTextIter *iter,int count);
Перемещает count символов назад, если возможно (если count переместит итератор за начало или конец буфера, перемещается к началу или концу буфера). Значение возврата указывает, переместился ли итератор в позицию, доступную для обращений; если итератор не переместился или переместился к конечному итератору, возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE.
Параметры
iter | итератор | |
count | количество символов для перемещения |
Возвращает
переместился ли iter и доступен ли для обращений
gtk_text_iter_forward_line ()
gboolean
gtk_text_iter_forward_line (GtkTextIter *iter); Перемещает iter к началу следующей строки. Если итератор уже находится на последней строке буфера, перемещает итератор к концу текущей строки. Если после операции итератор находится в конце буфера и не доступен для обращений, возвращает FALSE. В противном случае возвращает TRUE.
Параметры
iter | итератор |
Возвращает
доступен ли iter для обращений
gtk_text_iter_backward_line ()
gboolean
gtk_text_iter_backward_line (GtkTextIter *iter); Перемещает iter к началу предыдущей строки. Возвращает TRUE если iter можно было переместить; т.е. если iter был в позиции символа 0, эта функция возвращает FALSE. Поэтому, если iter уже находился на строке 0, но не в начале строки, iter перемещается в начало строки, и функция возвращает TRUE. (Обратите внимание, что это означает, что в цикле, вызывающем эту функцию, номер строки может не меняться на каждой итерации, если ваша первая итерация находится на строке 0.)
Параметры
iter | итератор |
Возвращает
переместился ли iter
gtk_text_iter_forward_lines ()
gboolean gtk_text_iter_forward_lines (GtkTextIter *iter,int count);
Перемещает count строк вперед, если возможно (если count переместит итератор за начало или конец буфера, перемещается к началу или концу буфера). Значение возврата указывает, переместился ли итератор в позицию, доступную для обращений; если итератор не переместился или переместился к конечному итератору, возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE. Если count отрицательное, перемещается назад на 0 - count строк.
Параметры
iter | ||
count | количество строк для перемещения вперед |
Возвращает
переместился ли iter и доступен ли для обращений
gtk_text_iter_backward_lines ()
gboolean gtk_text_iter_backward_lines (GtkTextIter *iter,int count);
Перемещает count строк назад, если возможно (если count переместит итератор за начало или конец буфера, перемещается к началу или концу буфера). Значение возврата указывает, переместился ли итератор в позицию, доступную для обращений; если итератор не переместился или переместился к конечному итератору, возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE. Если count отрицательное, перемещается вперед на 0 - count строк.
Параметры
iter | ||
count | количество строк для перемещения назад |
Возвращает
переместился ли iter и доступен ли для обращений
gtk_text_iter_forward_word_ends ()
gboolean gtk_text_iter_forward_word_ends (GtkTextIter *iter,int count);
Вызывает gtk_text_iter_forward_word_end() до count раз.
Параметры
iter | ||
count | количество перемещений |
Возвращает
TRUE если iter переместился и не является конечным итератором
gtk_text_iter_backward_word_starts ()
gboolean gtk_text_iter_backward_word_starts (GtkTextIter *iter,int count);
Вызывает gtk_text_iter_backward_word_start() до count раз.
Параметры
iter | ||
count | количество перемещений |
Возвращает
TRUE если iter переместился и не является конечным итератором
gtk_text_iter_forward_word_end ()
gboolean
gtk_text_iter_forward_word_end (GtkTextIter *iter); Перемещает вперед к следующему концу слова. (Если iter находится в настоящее время на конце слова, перемещает вперед к следующему за ним.) Разрывы слов определяются Pango и должны быть корректны для почти всех языков (если нет, корректировка должна быть внесена в алгоритмы разбиения слов Pango).
Параметры
iter |
Возвращает
TRUE если iter переместился и не является конечным итератором
gtk_text_iter_backward_word_start ()
gboolean
gtk_text_iter_backward_word_start (GtkTextIter *iter); Перемещает указатель назад к началу предыдущего слова. (Если iter находится в начале слова, перемещает его назад к следующему началу слова после него.) Разделители слов определяются Pango и должны быть корректными для почти любого языка (если нет, то исправление необходимо в алгоритмах разбиения слов Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_forward_cursor_position ()
gboolean
gtk_text_iter_forward_cursor_position (GtkTextIter *iter); Перемещает iter вперёд на одну позицию курсора. Позиции курсора — это, ожидаемо, позиции, где может находиться курсор. Возможно, неожиданно, что между всеми символами может не быть позиции курсора. Наиболее распространённый пример для европейских языков — последовательность возврата каретки/перевода строки. Для некоторых символов Юникода, например, буквы «a» с диакритическим знаком, будет представлена как два символа: сначала буква, а затем «комбинирующий знак», который отображает диакритический знак; поэтому курсор не может находиться между этими двумя символами. См. также PangoLogAttr и pango_break() функцию.
Параметры
iter |
Возвращаемое значение
TRUE если мы переместились и новая позиция доступна для чтения
gtk_text_iter_backward_cursor_position ()
gboolean
gtk_text_iter_backward_cursor_position
(GtkTextIter *iter); Аналогично gtk_text_iter_forward_cursor_position(), но перемещает назад.
Параметры
iter |
Возвращаемое значение
TRUE если мы переместились
gtk_text_iter_forward_cursor_positions ()
gboolean gtk_text_iter_forward_cursor_positions (GtkTextIter *iter,int count);
Перемещает до count позиций курсора. См. gtk_text_iter_forward_cursor_position() для подробностей.
Параметры
iter | ||
count | количество позиций для перемещения |
Возвращаемое значение
TRUE если мы переместились и новая позиция доступна для чтения
gtk_text_iter_backward_cursor_positions ()
gboolean gtk_text_iter_backward_cursor_positions (GtkTextIter *iter,int count);
Перемещает до count позиций курсора. См. gtk_text_iter_forward_cursor_position() для подробностей.
Параметры
iter | ||
count | количество позиций для перемещения |
Возвращаемое значение
TRUE если мы переместились и новая позиция доступна для чтения
gtk_text_iter_backward_sentence_start ()
gboolean
gtk_text_iter_backward_sentence_start (GtkTextIter *iter); Перемещает указатель назад к началу предыдущего предложения; если iter уже находится в начале предложения, перемещает его назад к следующему началу предложения. Границы предложений определяются Pango и должны быть корректными для почти любого языка (если нет, то исправление необходимо в алгоритмах определения границ предложений Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_backward_sentence_starts ()
gboolean gtk_text_iter_backward_sentence_starts (GtkTextIter *iter,int count);
Вызывает gtk_text_iter_backward_sentence_start() до count раз или до возврата FALSE. Если count отрицательно, перемещается вперёд вместо назад.
Параметры
iter | ||
count | количество предложений для перемещения |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_forward_sentence_end ()
gboolean
gtk_text_iter_forward_sentence_end (GtkTextIter *iter); Перемещает указатель вперёд к концу следующего предложения. (Если iter находится в конце предложения, перемещает его к следующему концу предложения.) Границы предложений определяются Pango и должны быть корректными для почти любого языка (если нет, то исправление необходимо в алгоритмах определения границ предложений Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_forward_sentence_ends ()
gboolean gtk_text_iter_forward_sentence_ends (GtkTextIter *iter,int count);
Вызывает gtk_text_iter_forward_sentence_end() count раз (или до возврата gtk_text_iter_forward_sentence_end() значения FALSE). Если count отрицательно, перемещается назад вместо вперёд.
Параметры
iter | ||
count | количество предложений для перемещения |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_forward_visible_word_ends ()
gboolean gtk_text_iter_forward_visible_word_ends (GtkTextIter *iter,int count);
Вызывает gtk_text_iter_forward_visible_word_end() до count раз.
Параметры
iter | ||
count | количество раз для перемещения |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_backward_visible_word_starts ()
gboolean gtk_text_iter_backward_visible_word_starts (GtkTextIter *iter,int count);
Вызывает gtk_text_iter_backward_visible_word_start() до count раз.
Параметры
iter | ||
count | количество раз для перемещения |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_forward_visible_word_end ()
gboolean
gtk_text_iter_forward_visible_word_end
(GtkTextIter *iter); Перемещает итератор вперёд до следующего видимого конца слова. (Если iter в данный момент находится на конце слова, перемещается вперёд к следующему после него.) Разбивка слов определяется Pango и должна быть корректной для почти всех языков (если нет, то нужно исправить алгоритмы разбиения слов Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_backward_visible_word_start ()
gboolean
gtk_text_iter_backward_visible_word_start
(GtkTextIter *iter); Перемещает итератор назад к началу предыдущего видимого слова. (Если iter в данный момент находится на начале слова, перемещается назад к следующему после него.) Разбивка слов определяется Pango и должна быть корректной для почти всех языков (если нет, то нужно исправить алгоритмы разбиения слов Pango).
Параметры
iter |
Возвращаемое значение
TRUE если iter был перемещён и не является итератором конца
gtk_text_iter_forward_visible_cursor_position ()
gboolean
gtk_text_iter_forward_visible_cursor_position
(GtkTextIter *iter); Перемещает iter вперёд к следующей видимой позиции курсора. Подробности см. в gtk_text_iter_forward_cursor_position().
Параметры
iter |
Возвращаемое значение
TRUE если мы переместились, и новая позиция доступна для обращения
gtk_text_iter_backward_visible_cursor_position ()
gboolean
gtk_text_iter_backward_visible_cursor_position
(GtkTextIter *iter); Перемещает iter назад к предыдущей видимой позиции курсора. Подробности см. в gtk_text_iter_backward_cursor_position().
Параметры
iter |
Возвращаемое значение
TRUE если мы переместились, и новая позиция доступна для обращения
gtk_text_iter_forward_visible_cursor_positions ()
gboolean gtk_text_iter_forward_visible_cursor_positions (GtkTextIter *iter,int count);
Перемещает итератор вперёд на count видимых позиций курсора. Подробности см. в gtk_text_iter_forward_cursor_position().
Параметры
iter | ||
count | количество позиций для перемещения |
Возвращаемое значение
TRUE если мы переместились, и новая позиция доступна для обращения
gtk_text_iter_backward_visible_cursor_positions ()
gboolean gtk_text_iter_backward_visible_cursor_positions (GtkTextIter *iter,int count);
Перемещает итератор назад на count видимых позиций курсора. Подробности см. в gtk_text_iter_backward_cursor_position().
Параметры
iter | ||
count | количество позиций для перемещения |
Возвращаемое значение
TRUE если мы переместились, и новая позиция доступна для обращения
gtk_text_iter_forward_visible_line ()
gboolean
gtk_text_iter_forward_visible_line (GtkTextIter *iter); Перемещает iter к началу следующей видимой строки. Возвращает TRUE если следующая строка существует, и FALSE если iter просто перемещён в конец буфера и теперь недоступен для обращения, или если iter уже находился в конце буфера.
Параметры
iter | итератор |
Возвращаемое значение
можно ли обратиться к iter
gtk_text_iter_backward_visible_line ()
gboolean
gtk_text_iter_backward_visible_line (GtkTextIter *iter); Перемещает iter к началу предыдущей видимой строки. Возвращает TRUE если iter был перемещён; т.е. если iter был в начале символа 0, эта функция возвращает FALSE. Поэтому, если iter уже был на строке 0, но не в начале строки, iter устанавливается в начало строки, и функция возвращает TRUE. (Обратите внимание, что это подразумевает, что в цикле, вызывающем эту функцию, номер строки может не измениться на каждой итерации, если ваша первая итерация находится на строке 0.)
Параметры
iter | итератор |
Возвращаемое значение
был ли перемещён iter
gtk_text_iter_forward_visible_lines ()
gboolean gtk_text_iter_forward_visible_lines (GtkTextIter *iter,int count);
Перемещает count видимых строк вперёд, если возможно (если count переместится за пределы буфера, перемещается к началу или концу буфера). Значение возврата указывает, перемещён ли итератор на позицию, доступную для обращения; если итератор не перемещён или перемещён на конец итератора, возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE. Если count отрицательно, перемещается назад на 0 - count строк.
Параметры
iter | ||
count | количество строк для перемещения вперёд |
Возвращаемое значение
был ли перемещён iter и доступен для обращения
gtk_text_iter_backward_visible_lines ()
gboolean gtk_text_iter_backward_visible_lines (GtkTextIter *iter,int count);
Перемещает count видимых строк назад, если возможно (если count переместится за пределы буфера, перемещается к началу или концу буфера). Значение возврата указывает, перемещён ли итератор на позицию, доступную для обращения; если итератор не перемещён или перемещён на конец итератора, возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE. Если count отрицательно, перемещается вперёд на 0 - count строк.
Параметры
iter | ||
count | количество строк для перемещения назад |
Возвращаемое значение
был ли перемещён iter и доступен для обращения
gtk_text_iter_set_offset ()
void gtk_text_iter_set_offset (GtkTextIter *iter,int char_offset);
Устанавливает iter для указания позиции char_offset . char_offset считает от начала всего буфера текста, начиная с 0.
Параметры
iter | ||
char_offset | номер символа |
gtk_text_iter_set_line ()
void gtk_text_iter_set_line (GtkTextIter *iter,int line_number);
Перемещает итератор iter к началу строки line_number . Если line_number отрицательное или больше, чем количество строк в буфере, перемещает iter к началу последней строки в буфере.
Параметры
iter | ||
line_number | номер строки (считается с 0) |
gtk_text-iter-set-line-offset ()
void gtk_text_iter_set_line_offset (GtkTextIter *iter,int char_on_line);
Перемещает iter внутри строки на новое смещение символа (а не байта). Указанное смещение символа должно быть меньше или равно количеству символов в строке; если оно равно, iter перемещается к началу следующей строки. См. gtk_text_iter_set_line_index(), если у вас есть индекс байта вместо смещения символа.
Параметры
iter | ||
char_on_line | смещение символов относительно начала текущей строки |
gtk_text-iter-set-line-index ()
void gtk_text_iter_set_line_index (GtkTextIter *iter,int byte_on_line);
Аналогично gtk_text_iter_set_line_offset(), но работает с индексом байта. Указанный индекс байта должен находиться в начале символа, он не может быть посередине кодированного UTF-8 символа.
Параметры
iter | ||
byte_on_line | индекс байта, относительный к началу текущей строки |
gtk_text_iter_set_visible_line_index ()
void gtk_text_iter_set_visible_line_index (GtkTextIter *iter,int byte_on_line);
Как gtk_text_iter_set_line_index(), но индекс находится в видимых байтах, т.е. текст со скрывающим тегом не учитывается в индексе.
Параметры
iter | ||
byte_on_line | индекс байта |
gtk_text_iter_set_visible-line-offset ()
void gtk_text_iter_set_visible_line_offset (GtkTextIter *iter,int char_on_line);
Как gtk_text_iter_set_line_offset(), но смещение находится в видимых символах, т.е. текст со скрывающим тегом не учитывается в смещении.
Параметры
iter | ||
char_on_line | смещение символов |
gtk_text_iter_forward_to_end ()
void
gtk_text_iter_forward_to_end (GtkTextIter *iter); Перемещает iter вперёд до «итератора конца», который указывает на позицию после последнего допустимого символа в буфере. gtk_text_iter_get_char(), вызываемый на итераторе конца, возвращает 0, что удобно для написания циклов.
Параметры
iter |
gtk_text_iter_forward-to-line-end ()
gboolean
gtk_text_iter_forward_to_line_end (GtkTextIter *iter); Перемещает итератор для указания символов разделителя абзаца, которые будут либо символом новой строки, символом возврата каретки, последовательностью возврата каретки/новой строки или символом разделителя абзацев Юникода. Если итератор уже находится на символах разделителя абзаца, перемещает к символам разделителя абзаца следующей строки. Если iter находится на последней строке в буфере, которая не заканчивается символами разделителя абзаца, перемещается к итератору конца (концу последней строки) и возвращает FALSE.
Параметры
iter |
Возвращаемое значение
TRUE если мы переместились и новое расположение не является итератором конца
gtk_text_iter_forward-to-tag-toggle ()
gboolean gtk_text_iter_forward_to_tag_toggle (GtkTextIter *iter,GtkTextTag *tag);
Перемещает вперёд к следующему переключению (включению или выключению) тега GtkTextTag tag или к следующему переключению любого тега, если tag равно NULL. Если сопоставляющие переключения тегов не найдены, возвращает FALSE, в противном случае TRUE. Не возвращает переключения, расположенные в iter, а только переключения после iter. Устанавливает iter в местоположение переключения или в конец буфера, если переключение не найдено.
Параметры
iter | ||
tag | a GtkTextTag, или | [allow-none] |
Возвращаемое значение
было ли найдено переключение тега после iter
gtk_text_iter_backward-to-tag-toggle ()
gboolean gtk_text_iter_backward_to_tag_toggle (GtkTextIter *iter,GtkTextTag *tag);
Перемещает назад к следующему переключению (включению или выключению) тега GtkTextTag tag или к следующему переключению любого тега, если tag равно NULL. Если сопоставляющие переключения тегов не найдены, возвращает FALSE, в противном случае TRUE. Не возвращает переключения, расположенные в iter, а только переключения до iter. Устанавливает iter в местоположение переключения или в начало буфера, если переключение не найдено.
Параметры
iter | ||
tag | a GtkTextTag, или | [allow-none] |
Возвращаемое значение
было ли найдено переключение тега до iter
GtkTextCharPredicate ()
gboolean
(*GtkTextCharPredicate) (gunichar ch,
gpointer user_data); Функция-предикат, используемая gtk_text_iter_forward_find_char() и gtk_text_iter_backward_find_char().
Параметры
ch | кодовое значение Юникода | |
user_data | данные, передаваемые в обратный вызов |
Возвращаемое значение
TRUE , если предикат удовлетворён и итерация должна быть остановлена, и FALSE в противном случае
gtk_text_iter_forward_find_char ()
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, иначе в итератор конца.
Параметры
iter | объект GtkTextIter | |
pred | функция, вызываемая для каждого символа. | [scope call] |
user_data | данные пользователя для | [closure] |
limit | предел поиска, или | [allow-none] |
Возвращаемое значение
было ли найдено совпадение
gtk_text_iter_backward_find_char ()
gboolean gtk_text_iter_backward_find_char (GtkTextIter *iter,GtkTextCharPredicate pred,gpointer user_data,const GtkTextIter *limit);
Аналогично gtk_text_iter_forward_find_char(), но идёт назад от iter.
Параметры
iter | объект GtkTextIter | |
pred | функция, вызываемая для каждого символа. | [scope call] |
user_data | данные пользователя для | [closure] |
limit | предел поиска, или | [allow-none] |
Возвращаемое значение
было ли найдено совпадение
gtk_text_iter_forward_search ()
gboolean gtk_text_iter_forward_search (const GtkTextIter *iter,const char *str,GtkTextSearchFlags flags,GtkTextIter *match_start,GtkTextIter *match_end,const GtkTextIter *limit);
Ищет вперёд str. Любое совпадение возвращается, установив match_start на первый символ совпадения и match_end на первый символ после совпадения. Поиск не будет продолжаться после limit. Обратите внимание, что поиск — линейная операция O(n), поэтому, возможно, вам следует использовать limit, чтобы избежать блокировки пользовательского интерфейса при работе с большими буферами.
match_start никогда не будет установлена на GtkTextIter расположенную перед iter, даже если есть возможное match_end после или на iter.
Параметры
iter | начало поиска | |
str | строка поиска | |
flags | флаги, влияющие на то, как выполняется поиск | |
match_start | место возврата для начала совпадения, или | [out caller-allocates][allow-none] |
match_end | место возврата для конца совпадения, или | [out caller-allocates][allow-none] |
limit | место последнего возможного | [allow-none] |
Возвращаемое значение
было ли найдено совпадение
gtk_text_iter_backward_search ()
gboolean gtk_text_iter_backward_search (const GtkTextIter *iter,const char *str,GtkTextSearchFlags flags,GtkTextIter *match_start,GtkTextIter *match_end,const GtkTextIter *limit);
Аналогично gtk_text_iter_forward_search(), но перемещается назад.
match_end никогда не будет установлена на GtkTextIter расположенную после iter, даже если есть возможное match_start перед или на iter.
Параметры
iter | объект GtkTextIter, с которого начинается поиск | |
str | строка поиска | |
flags | битовая маска флагов, влияющих на поиск | |
match_start | место возврата для начала совпадения, или | [out caller-allocates][allow-none] |
match_end | место возврата для конца совпадения, или | [out caller-allocates][allow-none] |
limit | место последнего возможного | [allow-none] |
Возвращаемое значение
было ли найдено совпадение
gtk_text_iter_equal ()
gboolean gtk_text_iter_equal (const GtkTextIter *lhs,const GtkTextIter *rhs);
Проверяет, равны ли два итератора, используя максимально быстрый механизм. Эта функция очень быстрая; ожидается, что она будет работать лучше, чем, например, получение смещения символа для каждого итератора и сравнение самих смещений. Кроме того, она немного быстрее, чем gtk_text_iter_compare().
Параметры
lhs | ||
rhs | другой GtkTextIter |
Возвращает
TRUE если итераторы указывают на одно и то же место в буфере
gtk_text_iter_compare ()
int gtk_text_iter_compare (const GtkTextIter *lhs,const GtkTextIter *rhs);
Функция в стиле qsort(), возвращающая отрицательное значение, если lhs меньше rhs, положительное, если lhs больше rhs, и 0, если они равны. Порядок сортировки — по смещению символа, то есть первый символ в буфере меньше, чем второй символ в буфере.
Параметры
lhs | ||
rhs | another GtkTextIter |
Возвращает
-1, если lhs меньше rhs, 1, если lhs больше, 0, если они равны
gtk_text_iter_in_range ()
gboolean gtk_text_iter_in_range (const GtkTextIter *iter,const GtkTextIter *start,const GtkTextIter *end);
Проверяет, попадает ли iter в диапазон [start, end). start и end должны быть в порядке возрастания.
Параметры
iter | ||
start | начало диапазона | |
end | конец диапазона |
Возвращает
TRUE если iter находится в диапазоне
gtk_text_iter_order ()
void gtk_text_iter_order (GtkTextIter *first,GtkTextIter *second);
Меняет значения first и second, если second предшествует first в буфере. То есть гарантирует, что first и second находятся в последовательности. Большинство функций буфера текста, принимающих диапазон, автоматически вызывают это за вас, поэтому нет реальной причины вызывать его самим в этих случаях. Есть некоторые исключения, такие как gtk_text_iter_in_range(), которые ожидают предварительно отсортированный диапазон.
Параметры
first | ||
second | another GtkTextIter |
Типы и значения
GtkTextIter
typedef struct {
/* GtkTextIter is an opaque datatype; ignore all these fields.
* Initialize the iter with gtk_text_buffer_get_iter_*
* functions
*/
} GtkTextIter;
перечисление GtkTextSearchFlags
Флаги, влияющие на то, как выполняется поиск.
Если ни GTK_TEXT_SEARCH_VISIBLE_ONLY, ни GTK_TEXT_SEARCH_TEXT_ONLY не включены, соответствие должно быть точным; специальный символ 0xFFFC будет соответствовать встроенным paintables или дочерним виджетам.
Элементы
GTK_TEXT_SEARCH_VISIBLE_ONLY | Производить поиск только в видимых данных. Совпадение поиска может содержать скрытый текст. | |
GTK_TEXT_SEARCH_TEXT_ONLY | Производить поиск только по тексту. Совпадение может содержать paintables или дочерние виджеты, смешанные внутри сопоставленного диапазона. | |
GTK_TEXT_SEARCH_CASE_INSENSITIVE | Текст будет соответствовать независимо от регистра. |
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkTextIter.html