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 | другой GtkTextIter |
С момента: 3.2
gtk_text_iter_free ()
void
gtk_text_iter_free (GtkTextIter *iter); Освобождает итератор, выделенный в куче. Эта функция предназначена для использования в языковых библиотеках и не особенно полезна для приложений, так как итераторы можно просто выделить на стеке.
Параметры
iter | динамически выделенный итератор |
gtk_text_iter_get_offset ()
gint
gtk_text_iter_get_offset (const GtkTextIter *iter); Возвращает смещение символа итератора. Каждый символ в GtkTextBuffer имеет смещение, начиная с 0 для первого символа в буфере. Используйте gtk_text_buffer_get_iter_at_offset(), чтобы преобразовать смещение обратно в итератор.
Параметры
iter | итератор |
Возвращаемое значение
смещение символа
gtk_text_iter_get_line ()
gint
gtk_text_iter_get_line (const GtkTextIter *iter); Возвращает номер строки, содержащей итератор. Номера строк в GtkTextBuffer нумеруются, начиная с 0 для первой строки в буфере.
Параметры
iter | итератор |
Возвращаемое значение
номер строки
gtk_text_iter_get_line_offset ()
gint
gtk_text_iter_get_line_offset (const GtkTextIter *iter); Возвращает смещение символа итератора, считая от начала строки, завершающейся символом новой строки. У первого символа в строке смещение 0.
Параметры
iter | итератор |
Возвращаемое значение
смещение от начала строки
gtk_text_iter_get_line_index ()
gint
gtk_text_iter_get_line_index (const GtkTextIter *iter); Возвращает индекс байта итератора, считая от начала строки, завершающейся символом новой строки. Помните, что GtkTextBuffer кодирует текст в UTF-8, и символы могут требовать переменного числа байтов для представления.
Параметры
iter | итератор |
Возвращаемое значение
расстояние от начала строки в байтах
gtk_text_iter_get_visible_line_index ()
gint
gtk_text_iter_get_visible_line_index (const GtkTextIter *iter); Возвращает число байтов от начала строки до данного iter, не считая байтов, которые невидимы из-за тегов со включённым флагом «невидимый».
Параметры
iter |
Возвращаемое значение
индекс байта iter относительно начала строки
gtk_text_iter_get_visible_line_offset ()
gint
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); Возвращается Unicode-символ в этом итераторе. (Эквивалентно оператору * в C++ итераторе.) Если элемент в этом итераторе является элементом, не являющимся символом, например, изображением, вставленным в буфер, возвращается Unicode-символ «неизвестно» 0xFFFC. Если вызывается на конечном итераторе, возвращается ноль; ноль не является допустимым Unicode-символом. Таким образом, вы можете написать цикл, который завершается, когда gtk_text_iter_get_char() возвращает 0.
Параметры
iter | итератор |
Возвращаемое значение
Unicode-символ или 0, если iter не доступен для разыменования
gtk_text_iter_get_slice ()
gchar * gtk_text_iter_get_slice (const GtkTextIter *start,const GtkTextIter *end);
Возвращает текст в заданном диапазоне. «Срез» — это массив символов, закодированных в формате UTF-8, включая Unicode-символ «неизвестно» 0xFFFC для элементов, не являющихся символами, доступных для перебора в буфере, например, изображений. Поскольку изображения закодированы в срезе, смещения байтов и символов в возвращаемом массиве будут соответствовать смещениям байтов в буфере текста. Обратите внимание, что 0xFFFC может встречаться и в обычном тексте, поэтому это не надёжный индикатор наличия pixbuf или виджета в буфере.
Параметры
start | итератор в начале диапазона | |
end | итератор в конце диапазона |
Возвращаемое значение
срез текста из буфера.
[transfer full]
gtk_text_iter_get_text ()
gchar * 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 ()
gchar * 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 ()
gchar * 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_pixbuf ()
GdkPixbuf *
gtk_text_iter_get_pixbuf (const GtkTextIter *iter); Если элемент в iter является pixbuf, возвращается pixbuf (без добавления новой ссылки). В противном случае возвращается NULL.
Параметры
iter | итератор |
Возвращает
pixbuf в 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 | GtkTextTag, или | [nullable] |
Возвращает
является ли iter началом диапазона, помеченного tag
С: 3.20
gtk_text_iter_begins_tag ()
gboolean gtk_text_iter_begins_tag (const GtkTextIter *iter,GtkTextTag *tag);
gtk_text_iter_begins_tag устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте gtk_text_iter_starts_tag() вместо этого.
Возвращает TRUE, если tag включён ровно в этой точке. Если tag равен NULL, возвращает TRUE, если любой тег включён в этой точке.
Обратите внимание, что если gtk_text_iter_begins_tag() возвращает TRUE, это означает, что iter находится в начале отмеченного диапазона, и что символ в iter находится внутри отмеченного диапазона. Другими словами, в отличие от gtk_text_iter_ends_tag(), если gtk_text_iter_begins_tag() возвращает TRUE, gtk_text_iter_has_tag() также вернёт TRUE для тех же параметров.
Параметры
iter | итератор | |
tag | 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 | 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 | 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. Данная функция — это просто удобная обёртка вокруг gtk_text_iter_get_attributes(). Если никакие теги, применённые к этому тексту, не влияют на редактируемость, возвращается значение default_setting.
Не следует использовать эту функцию для определения возможности вставки текста в позицию 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 указывает на начало разделителей абзацев строки (разделители будут либо новой строкой, либо возвратом каретки, либо возвратом каретки, за которым следует новая строка, либо символом разделителя абзаца Unicode). Обратите внимание, что итератор, указывающий на \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 ()
gint
gtk_text_iter_get_chars_in_line (const GtkTextIter *iter); Возвращает количество символов в строке, содержащей iter, включая разделители абзацев.
Параметры
iter | итератор |
Возвращает
количество символов в строке
gtk_text_iter_get_bytes_in_line ()
gint
gtk_text_iter_get_bytes_in_line (const GtkTextIter *iter); Возвращает количество байтов в строке, содержащей iter, включая разделители абзацев.
Параметры
iter | итератор |
Возвращает
количество байтов в строке
gtk_text_iter_get_attributes ()
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.
Параметры
iter | итератор | |
values | a GtkTextAttributes для заполнения. | [out] |
Возвращает
TRUE, если values был изменён
gtk_text_iter_get_language ()
PangoLanguage *
gtk_text_iter_get_language (const GtkTextIter *iter); Удобная оболочка вокруг gtk_text_iter_get_attributes(), которая возвращает язык, действующий в 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,gint count);
Перемещает count символов, если возможно (если count будет перемещать за начало или конец буфера, перемещает к началу или концу буфера). Значение возврата указывает, отличается ли новое положение iter от исходного положения и доступно ли для доступа (последний итератор в буфере недоступен для доступа). Если count равно 0, функция ничего не делает и возвращает FALSE.
Параметры
iter | итератор | |
count | количество символов для перемещения, может быть отрицательным |
Возвращает
перемещено ли iter и доступно ли для доступа
gtk_text_iter_backward_chars ()
gboolean gtk_text_iter_backward_chars (GtkTextIter *iter,gint 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,gint 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,gint 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,gint 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,gint 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,gint 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,gint 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 уже находится в начале предложения, перемещается назад к следующему.
Параметры
iter |
Возвращаемое значение
TRUE, если iter был перемещён и не является итератором конца
gtk_text_iter_backward_sentence_starts ()
gboolean gtk_text_iter_backward_sentence_starts (GtkTextIter *iter,gint 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,gint 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,gint count);
Вызывает gtk_text_iter_forward_visible_word_end() до count раз.
Параметры
iter | ||
count | количество раз для перемещения |
Возвращает
TRUE если iter перемещён и не является итератором конца
Since: 2.4
gtk_text_iter_backward_visible_word_starts ()
gboolean gtk_text_iter_backward_visible_word_starts (GtkTextIter *iter,gint count);
Вызывает gtk_text_iter_backward_visible_word_start() до count раз.
Параметры
iter | ||
count | количество раз для перемещения |
Возвращает
TRUE если iter перемещён и не является итератором конца
Since: 2.4
gtk_text_iter_forward_visible_word_end ()
gboolean
gtk_text_iter_forward_visible_word_end
(GtkTextIter *iter); Перемещает вперёд к следующему видимому концу слова. (Если iter в данный момент находится на конце слова, перемещается вперёд к следующему после него.) Разбиение на слова определяется Pango и должно быть правильным для практически любого языка (если нет, то правильное исправление должно быть в алгоритмах разбиения слов Pango).
Параметры
iter |
Возвращает
TRUE если iter перемещён и не является итератором конца
Since: 2.4
gtk_text_iter_backward_visible_word_start ()
gboolean
gtk_text_iter_backward_visible_word_start
(GtkTextIter *iter); Перемещает назад к предыдущему видимому началу слова. (Если iter в данный момент находится на начале слова, перемещается назад к следующему после него.) Разбиение на слова определяется Pango и должно быть правильным для практически любого языка (если нет, то правильное исправление должно быть в алгоритмах разбиения слов Pango).
Параметры
iter |
Возвращает
TRUE если iter перемещён и не является итератором конца
Since: 2.4
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 если мы переместились и новая позиция доступна для обращения
Since: 2.4
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 если мы переместились и новая позиция доступна для обращения
Since: 2.4
gtk_text_iter_forward_visible_cursor_positions ()
gboolean gtk_text_iter_forward_visible_cursor_positions (GtkTextIter *iter,gint count);
Перемещает до count видимых позиций курсора. См. gtk_text_iter_forward_cursor_position() для подробностей.
Параметры
iter | ||
count | количество позиций для перемещения |
Возвращает
TRUE если мы переместились и новая позиция доступна для обращения
Since: 2.4
gtk_text_iter_backward_visible_cursor_positions ()
gboolean gtk_text_iter_backward_visible_cursor_positions (GtkTextIter *iter,gint count);
Перемещает до count видимых позиций курсора. См. gtk_text_iter_backward_cursor_position() для подробностей.
Параметры
iter | ||
count | количество позиций для перемещения |
Возвращает
TRUE если мы переместились и новая позиция доступна для обращения
Since: 2.4
gtk_text_iter_forward_visible_line ()
gboolean
gtk_text_iter_forward_visible_line (GtkTextIter *iter); Перемещает iter к началу следующей видимой строки. Возвращает TRUE, если следующая строка существует, и FALSE, если iter была просто перемещена в конец буфера и теперь не может быть обработана, или если iter уже находится в конце буфера.
Параметры
iter | итератор |
Возвращаемое значение
указывающее, можно ли обработать iter
С версии: 2.8
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
С версии: 2.8
gtk_text_iter_forward_visible_lines ()
gboolean gtk_text_iter_forward_visible_lines (GtkTextIter *iter,gint count);
Перемещает count на вперёд на указанное число видимых строк, если возможно (если count переместит итератор за пределы буфера, перемещается к началу или концу буфера). Значение возврата указывает, был ли итератор перемещён в позицию, которую можно обработать; если итератор не был перемещен или перемещён в конечную позицию, то возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE. Если count отрицательно, перемещается назад на 0 - count строк.
Параметры
iter | ||
count | количество строк для перемещения вперёд |
Возвращаемое значение
указывающее, был ли перемещён iter и доступен ли он для обработки
С версии: 2.8
gtk_text_iter_backward_visible_lines ()
gboolean gtk_text_iter_backward_visible_lines (GtkTextIter *iter,gint count);
Перемещает count на назад на указанное число видимых строк, если возможно (если count переместит итератор за пределы буфера, перемещается к началу или концу буфера). Значение возврата указывает, был ли итератор перемещён в позицию, которую можно обработать; если итератор не был перемещен или перемещён в конечную позицию, то возвращается FALSE. Если count равно 0, функция ничего не делает и возвращает FALSE. Если count отрицательно, перемещается вперёд на 0 - count строк.
Параметры
iter | ||
count | количество строк для перемещения назад |
Возвращаемое значение
указывающее, был ли перемещён iter и доступен ли он для обработки
С версии: 2.8
gtk_text_iter_set_offset ()
void gtk_text_iter_set_offset (GtkTextIter *iter,gint char_offset);
Устанавливает iter на указанную позицию char_offset . char_offset отсчитывается от начала всего буфера текста, начиная с 0.
Параметры
iter | ||
char_offset | номер символа |
gtk_text_iter_set_line ()
void gtk_text_iter_set_line (GtkTextIter *iter,gint 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,gint 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,gint 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,gint 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,gint 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
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 | ||
pred | функция, вызываемая для каждого символа. | [scope call] |
user_data | данные пользователя для | |
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 | ||
pred | функция, вызываемая для каждого символа. | [scope call] |
user_data | пользовательские данные для | |
limit | предел поиска или | [allow-none] |
Возвращает
результат поиска (соответствие найдено)
gtk_text_iter_forward_search ()
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, чтобы избежать блокировки вашего пользовательского интерфейса при больших буферах.
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 gchar *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 | a 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 ()
gint gtk_text_iter_compare (const GtkTextIter *lhs,const GtkTextIter *rhs);
Функция в стиле qsort(), возвращающая отрицательное значение, если lhs меньше rhs, положительное значение, если lhs больше rhs, и 0, если они равны. Порядок сортировки — по порядку смещения символов, т. е. первый символ в буфере меньше второго символа в буфере.
Параметры
lhs | ||
rhs | другой 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 будет соответствовать встроенным pixbufs или дочерним виджетам.
Элементы
GTK_TEXT_SEARCH_VISIBLE_ONLY | Производить поиск только в видимых данных. Совпадение поиска может содержать скрытый текст. | |
GTK_TEXT_SEARCH_TEXT_ONLY | Производить поиск только в тексте. Совпадение может содержать pixbufs или дочерние виджеты внутри сопоставленного диапазона. | |
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.gnome.org/gtk3/3.20/GtkTextIter.html