GtkEntryCompletion
GtkEntryCompletion — Функциональность автодополнения для GtkEntry
Функции
Свойства
| GtkCellArea * | cell-area | Чтение / Запись / Только для создания |
| gboolean | inline-completion | Чтение / Запись |
| gboolean | inline-selection | Чтение / Запись |
| int | minimum-key-length | Чтение / Запись |
| GtkTreeModel * | model | Чтение / Запись |
| gboolean | popup-completion | Чтение / Запись |
| gboolean | popup-set-width | Чтение / Запись |
| gboolean | popup-single-match | Чтение / Запись |
| int | text-column | Чтение / Запись |
Сигналы
| gboolean | cursor-on-match | Выполнить последним |
| gboolean | insert-prefix | Выполнить последним |
| gboolean | match-selected | Выполнить последним |
| void | no-matches | Выполнить последним |
Типы и значения
Иерархия объектов
GObject
╰── GtkEntryCompletion
Реализованные интерфейсы
GtkEntryCompletion реализует GtkCellLayout и GtkBuildable.
Файлы заголовков
#include <gtk/gtk.h>
Описание
GtkEntryCompletion — это вспомогательный объект, используемый совместно с GtkEntry для обеспечения функциональности автозаполнения. Он реализует интерфейс GtkCellLayout, позволяя пользователю добавлять дополнительные ячейки в GtkTreeView с совпадающими результатами автозаполнения.
«Функциональность автозаполнения» означает, что при изменении текста в поле ввода GtkEntryCompletion проверяет, какие строки в модели соответствуют текущему содержимому поля ввода и отображает список совпадений. По умолчанию соответствие осуществляется путем сравнения текста в поле ввода (регистронезависимо) с текстовым столбцом модели (см. gtk_entry_completion_set_text_column()), но это можно переопределить с помощью пользовательской функции сопоставления (см. gtk_entry_completion_set_match_func()).
При выборе элемента автозаполнения содержимое поля ввода обновляется. По умолчанию содержимое поля ввода заменяется текстовым столбцом модели, но это можно переопределить, подключившись к сигналу «match-selected» и обновив поле ввода в обработчике сигнала. Обратите внимание, что вы должны вернуть TRUE из обработчика сигнала, чтобы подавить стандартное поведение.
Для добавления функциональности автозаполнения в поле ввода используйте gtk_entry_set_completion().
GtkEntryCompletion использует модель GtkTreeModelFilter для представления подмножества всей модели, которое в настоящее время соответствует условиям. В то время как сигналы GtkEntryCompletion «match-selected» и «cursor-on-match» принимают исходную модель и итератор, указывающий на эту модель, в качестве аргументов, другие обратные вызовы и сигналы (например, GtkCellLayoutDataFuncs или «apply-attributes») обычно принимают фильтрованную модель в качестве аргумента. До тех пор, пока вы только вызываете gtk_tree_model_get(), это не повлияет на вас. Если по какой-либо причине вам нужна исходная модель, используйте gtk_tree_model_filter_get_model(). Не забудьте использовать gtk_tree_model_filter_convert_iter_to_child_iter() для получения соответствующего итератора.
Функции
GtkEntryCompletionMatchFunc ()
gboolean (*GtkEntryCompletionMatchFunc) (GtkEntryCompletion *completion,const char *key,GtkTreeIter *iter,gpointer user_data);
Функция, определяющая, соответствует ли строка, указанная в iter, заданному key и должна ли отображаться как возможный вариант дополнения для key. Обратите внимание, что key нормализована и приведена к нижнему регистру (см. g_utf8_normalize() и g_utf8_casefold()). Если это не подходит, функции сопоставления имеют доступ к исходному ключу через gtk_editable_get_text (GTK_EDITABLE (. gtk_entry_completion_get_entry()))
Параметры
completion | объект GtkEntryCompletion | |
key | строка для сопоставления, нормализованная и приведённая к нижнему регистру | |
iter | объект GtkTreeIter, указывающий на строку для сопоставления | |
user_data | пользовательские данные, заданные в |
Возвращаемое значение
TRUE, если iter следует отобразить как возможный вариант дополнения для key
gtk_entry_completion_new ()
GtkEntryCompletion *
gtk_entry_completion_new (void); Создаёт новый объект GtkEntryCompletion.
Возвращаемое значение
Новый созданный объект GtkEntryCompletion
gtk_entry_completion_new_with_area ()
GtkEntryCompletion *
gtk_entry_completion_new_with_area (GtkCellArea *area); Создаёт новый объект GtkEntryCompletion используя указанную area для вывода ячеек в базовом GtkTreeViewColumn выпадающего меню.
Параметры
area | объект GtkCellArea, используемый для вывода ячеек |
Возвращаемое значение
Новый созданный объект GtkEntryCompletion
gtk_entry_completion_get_entry ()
GtkWidget *
gtk_entry_completion_get_entry (GtkEntryCompletion *completion); Возвращает поле ввода, к которому был прикреплён completion.
Параметры
completion | объект GtkEntryCompletion |
Возвращаемое значение
Поле ввода, к которому был прикреплён completion.
[transfer none]
gtk_entry_completion_set_model ()
void gtk_entry_completion_set_model (GtkEntryCompletion *completion,GtkTreeModel *model);
Устанавливает модель для GtkEntryCompletion. Если у completion уже установлена модель, она будет удалена перед установкой новой. Если модель NULL, то модель будет удалена.
Параметры
completion | объект GtkEntryCompletion | |
model | объект GtkTreeModel. | [allow-none] |
gtk_entry_completion_get_model ()
GtkTreeModel *
gtk_entry_completion_get_model (GtkEntryCompletion *completion); Возвращает модель, используемую GtkEntryCompletion в качестве источника данных. Возвращает NULL, если модель не установлена.
Параметры
completion | объект GtkEntryCompletion |
Возвращаемое значение
Объект GtkTreeModel, или NULL если ни одна не используется в данный момент.
[nullable][transfer none]
gtk_entry_completion_set_match_func ()
void gtk_entry_completion_set_match_func (GtkEntryCompletion *completion,GtkEntryCompletionMatchFunc func,gpointer func_data,GDestroyNotify func_notify);
Устанавливает функцию сопоставления для completion на func. Функция сопоставления используется для определения, должна ли строка быть в списке дополнений.
Параметры
completion | объект GtkEntryCompletion | |
func | функция GtkEntryCompletionMatchFunc для использования | |
func_data | пользовательские данные для | |
func_notify | уведомление о удалении для |
gtk_entry_completion_set_minimum_key_length ()
void gtk_entry_completion_set_minimum_key_length (GtkEntryCompletion *completion,int length);
Требует длины ключа поиска для completion быть не менее length. Это полезно для длинных списков, где завершение с коротким ключом занимает много времени и даст бессмысленные результаты (т.е., слишком большой набор данных).
Параметры
completion | объект GtkEntryCompletion | |
length | минимальная длина ключа для начала завершения |
gtk_entry_completion_get_minimum_key_length ()
int
gtk_entry_completion_get_minimum_key_length
(GtkEntryCompletion *completion); Возвращает минимальную длину ключа, установленную для completion.
Параметры
completion | объект GtkEntryCompletion |
Возвращаемое значение
Текущая минимальная длина ключа
gtk_entry_completion_compute_prefix ()
char * gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion,const char *key);
Вычисляет общий префикс, который является общим для всех строк в completion, начинающихся с key. Если ни одна строка не соответствует key, будет возвращено NULL. Обратите внимание, что для работы этой функции необходимо установить текстовый столбец, см. gtk_entry_completion_set_text_column() для получения подробной информации.
Параметры
completion | автодополнение entry | |
key | Текст для автодополнения |
Возвращаемые значения
Общий префикс всех строк, начинающихся с key или NULL если ни одна строка не соответствует key.
[nullable][transfer full]
gtk_entry_completion_complete ()
void
gtk_entry_completion_complete (GtkEntryCompletion *completion); Запрашивает операцию автодополнения, или, другими словами, повторную фильтрацию текущего списка с вариантами автодополнения, используя текущий ключ. Представление списка автодополнения будет обновлено соответствующим образом.
Параметры
completion |
gtk_entry_completion_get_completion_prefix ()
const char *
gtk_entry_completion_get_completion_prefix
(GtkEntryCompletion *completion); Получает исходный текст, введенный пользователем, который запустил автодополнение, или NULL если автодополнение не выполняется.
Параметры
completion |
Возвращаемые значения
префикс для текущего автодополнения.
[nullable]
gtk_entry_completion_insert_prefix ()
void
gtk_entry_completion_insert_prefix (GtkEntryCompletion *completion); Запрашивает вставку префикса.
Параметры
completion |
gtk_entry_completion_set_text_column ()
void gtk_entry_completion_set_text_column (GtkEntryCompletion *completion,int column);
Вспомогательная функция для настройки наиболее часто используемого случая этого кода: список автодополнения только со строками. Эта функция настроит completion для отображения всех (и только) строк в списке автодополнения и получения этих строк из column в модели completion.
Эта функция создает и добавляет GtkCellRendererText для выбранного столбца. Если вам нужно установить текстовый столбец, но не нужен рендерер ячеек, используйте g_object_set() для установки свойства “text-column” напрямую.
Параметры
completion | ||
column | столбец в модели |
gtk_entry_completion_get_text_column ()
int
gtk_entry_completion_get_text_column (GtkEntryCompletion *completion); Возвращает столбец в модели completion для получения строк.
Параметры
completion |
Возвращаемые значения
столбец, содержащий строки
gtk_entry_completion_set_inline_completion ()
void gtk_entry_completion_set_inline_completion (GtkEntryCompletion *completion,gboolean inline_completion);
Устанавливает, следует ли автоматически вставлять общий префикс возможных вариантов автодополнения в поле ввода.
Параметры
completion | ||
inline_completion |
|
gtk_entry_completion_get_inline_completion ()
gboolean
gtk_entry_completion_get_inline_completion
(GtkEntryCompletion *completion); Возвращает, следует ли автоматически вставлять общий префикс возможных вариантов автодополнения в поле ввода.
Параметры
completion |
Возвращаемые значения
TRUE если включено встроенное автодополнение
gtk_entry_completion_set_inline_selection ()
void gtk_entry_completion_set_inline_selection (GtkEntryCompletion *completion,gboolean inline_selection);
Устанавливает, можно ли переключаться между возможными вариантами автодополнения внутри поля ввода.
Параметры
completion | ||
inline_selection |
|
gtk_entry_completion_get_inline_selection ()
gboolean
gtk_entry_completion_get_inline_selection
(GtkEntryCompletion *completion); Возвращает TRUE если режим встроенного выбора включен.
Параметры
completion |
Возвращаемые значения
TRUE если режим встроенного выбора включен
gtk_entry_completion_set_popup_completion ()
void gtk_entry_completion_set_popup_completion (GtkEntryCompletion *completion,gboolean popup_completion);
Устанавливает, следует ли представлять варианты автодополнения во всплывающем окне.
Параметры
completion | ||
popup_completion |
|
gtk_entry_completion_get_popup_completion ()
gboolean
gtk_entry_completion_get_popup_completion
(GtkEntryCompletion *completion); Возвращает, следует ли представлять варианты автодополнения во всплывающем окне.
Параметры
completion |
Возвращаемые значения
TRUE если включено автодополнение во всплывающем окне
gtk_entry_completion_set_popup_set_width ()
void gtk_entry_completion_set_popup_set_width (GtkEntryCompletion *completion,gboolean popup_set_width);
Устанавливает, будет ли изменено всплывающее окно автодополнения до того же размера, что и поле ввода.
Параметры
completion | ||
popup_set_width |
|
gtk_entry_completion_get_popup_set_width ()
gboolean
gtk_entry_completion_get_popup_set_width
(GtkEntryCompletion *completion); Возвращает, будет ли окно всплывающего списка завершений изменять свой размер на ширину поля ввода.
Параметры
completion |
Возвращаемое значение
TRUE если окно всплывающего списка будет изменять размер на ширину поля ввода
gtk_entry_completion_set_popup_single_match ()
void gtk_entry_completion_set_popup_single_match (GtkEntryCompletion *completion,gboolean popup_single_match);
Устанавливает, будет ли появляться всплывающее окно завершений даже если есть только один совпадающий результат. Возможно, вам следует установить это значение в FALSE, если вы используете встроенное завершение.
Параметры
completion | ||
popup_single_match |
|
gtk_entry_completion_get_popup_single_match ()
gboolean
gtk_entry_completion_get_popup_single_match
(GtkEntryCompletion *completion); Возвращает, будет ли всплывающее окно завершений появляться даже если есть только один совпадающий результат.
Параметры
completion |
Возвращаемое значение
TRUE если окно всплывающего списка будет отображаться независимо от количества совпадений
Типы и значения
GtkEntryCompletion
typedef struct _GtkEntryCompletion GtkEntryCompletion;
Подробности свойств
Свойство “cell-area”
“cell-area” GtkCellArea *
Объект GtkCellArea, используемый для расположения элементов отображения ячеек в столбце дерева.
Если при создании завершения поля ввода с помощью gtk_entry_completion_new_with_area() не указана область, будет использоваться горизонтальная GtkCellAreaBox.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись / Только для построения
Свойство “inline-completion”
“inline-completion” gboolean
Определяет, должен ли общий префикс возможных завершений автоматически вставляться в поле ввода. Обратите внимание, что это требует установки столбца текста, даже если вы используете пользовательскую функцию сопоставления.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “inline-selection”
“inline-selection” gboolean
Определяет, будут ли возможные завершения в всплывающем списке отображаться в поле ввода при перемещении по ним.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “minimum-key-length”
“minimum-key-length” int
Минимальная длина ключа поиска для поиска совпадений.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Допустимые значения: >= 0
Значение по умолчанию: 1
Свойство “model”
“model” GtkTreeModel *
Модель для поиска совпадений.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Свойство “popup-completion”
“popup-completion” gboolean
Определяет, должны ли возможные завершения отображаться во всплывающем окне.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “popup-set-width”
“popup-set-width” gboolean
Определяет, будет ли всплывающее окно завершений изменять свой размер на ширину поля ввода.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “popup-single-match”
“popup-single-match” gboolean
Определяет, будет ли всплывающее окно завершений отображаться при наличии одного возможного завершения. Скорее всего, вы захотите установить это значение в FALSE, если используете встроенное завершение.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “text-column”
“text-column” int
Столбец модели, содержащий строки. Обратите внимание, что строки должны быть в формате UTF-8.
Владелец: GtkEntryCompletion
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Подробные сведения о сигналах
Сигнал “cursor-on-match”
gboolean user_function (GtkEntryCompletion *widget, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
Выдается, когда совпадение из курсора находится на совпадении в списке. По умолчанию содержимое поля ввода заменяется содержимым текстовой колонки в строке, на которую указывает iter.
Обратите внимание, что model — это модель, которая была передана в gtk_entry_completion_set_model().
Параметры
widget | объект, получивший сигнал | |
model | GtkTreeModel, содержащий совпадения | |
iter | GtkTreeIter, установленный на выбранное совпадение | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE , если сигнал был обработан
Флаги: Run Last
Сигнал “insert-prefix”
gboolean user_function (GtkEntryCompletion *widget, char *prefix, gpointer user_data)
Выдается при срабатывании автодополнения в строке. По умолчанию отображается весь префикс, а новая вставленная часть выделяется.
Приложения могут подключиться к этому сигналу, чтобы вставить в поле ввода только часть prefix — например, поле ввода в GtkFileChooser вставляет только часть префикса до следующего '/'.
Параметры
widget | объект, получивший сигнал | |
prefix | общий префикс всех возможных дополнений | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE , если сигнал был обработан
Флаги: Run Last
Сигнал “match-selected”
gboolean user_function (GtkEntryCompletion *widget, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
Выдается при выборе совпадения из списка. По умолчанию содержимое поля ввода заменяется содержимым текстовой колонки в строке, на которую указывает iter.
Обратите внимание, что model — это модель, которая была передана в gtk_entry_completion_set_model().
Параметры
widget | объект, получивший сигнал | |
model | GtkTreeModel, содержащий совпадения | |
iter | GtkTreeIter, установленный на выбранное совпадение | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE , если сигнал был обработан
Флаги: Run Last
Сигнал “no-matches”
void user_function (GtkEntryCompletion *widget, gpointer user_data)
Выдается, когда модель фильтрации имеет ноль строк в методе completion_complete. (Другими словами, когда GtkEntryCompletion не имеет предложений)
Параметры
widget | объект, получивший сигнал | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Run Last
© 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/GtkEntryCompletion.html