GtkEditable
GtkEditable — Интерфейс для виджетов редактирования текста
Функции
| void | gtk_editable_select_region () |
| gboolean | gtk_editable_get_selection_bounds () |
| void | gtk_editable_insert_text () |
| void | gtk_editable_delete_text () |
| gchar * | gtk_editable_get_chars () |
| void | gtk_editable_cut_clipboard () |
| void | gtk_editable_copy_clipboard () |
| void | gtk_editable_paste_clipboard () |
| void | gtk_editable_delete_selection () |
| void | gtk_editable_set_position () |
| gint | gtk_editable_get_position () |
| void | gtk_editable_set_editable () |
| gboolean | gtk_editable_get_editable () |
Сигналы
| void | changed | Run Last |
| void | delete-text | Run Last |
| void | insert-text | Run Last |
Типы и значения
Иерархия объектов
GInterface ╰── GtkEditable
Известные реализации
GtkEditable реализуется GtkEntry, GtkSearchEntry и GtkSpinButton.
Файлы заголовочных файлов
#include <gtk/gtk.h>
Описание
Интерфейс GtkEditable — это интерфейс, который должны реализовывать виджеты редактирования текста, такие как GtkEntry и GtkSpinButton. Он содержит функции для универсальной обработки редактируемого виджета, большое количество сигналов действий, используемых для привязки клавиш, и несколько сигналов, которые приложение может подключить, чтобы изменить поведение виджета.
Например, подключив обработчик к сигналу «insert-text», приложение может преобразовать все вводимые в виджет символы в верхний регистр.
Принудительное преобразование ввода в верхний регистр.
#include <ctype.h>; void insert_text_handler (GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data) { gchar *result = g_utf8_strup (text, length); g_signal_handlers_block_by_func (editable, (gpointer) insert_text_handler, data); gtk_editable_insert_text (editable, result, length, position); g_signal_handlers_unblock_by_func (editable, (gpointer) insert_text_handler, data); g_signal_stop_emission_by_name (editable, "insert_text"); g_free (result); }
Функции
gtk_editable_select_region ()
void gtk_editable_select_region (GtkEditable *editable,gint start_pos,gint end_pos);
Выделяет область текста. Символы, которые выделяются, — это символы с позициями от start_pos до, но не включая end_pos . Если end_pos отрицательно, то выделяются символы от start_pos до конца текста.
Обратите внимание, что позиции указаны в символах, а не в байтах.
[virtual set_selection_bounds]
Параметры
editable | объект GtkEditable | |
start_pos | начало области | |
end_pos | конец области |
gtk_editable_get_selection_bounds ()
gboolean gtk_editable_get_selection_bounds (GtkEditable *editable,gint *start_pos,gint *end_pos);
Возвращает границы выделения редактируемого объекта. start_pos будет заполнен началом выделения, а end_pos — концом. Если текст не выделен, оба значения будут идентичны, и будет возвращено FALSE.
Обратите внимание, что позиции указаны в символах, а не в байтах.
Параметры
editable | объект GtkEditable | |
start_pos | место для хранения начальной позиции или | [out][allow-none] |
end_pos | место для хранения конечной позиции или | [out][allow-none] |
gtk_editable_insert_text ()
void gtk_editable_insert_text (GtkEditable *editable,const gchar *new_text,gint new_text_length,gint *position);
Вставляет new_text_length байтов new_text в содержимое виджета по позиции position.
Обратите внимание, что позиция указана в символах, а не в байтах. Функция обновляет position, чтобы он указывал на позицию после вставленного текста.
[virtual do_insert_text]
Параметры
editable | объект GtkEditable | |
new_text | текст для добавления | |
new_text_length | длина текста в байтах или -1 | |
position | позиция, куда будет вставлен текст | [inout] |
gtk_editable_delete_text ()
void gtk_editable_delete_text (GtkEditable *editable,gint start_pos,gint end_pos);
Удаляет последовательность символов. Символы, которые удаляются, — это символы с позициями от start_pos до, но не включая end_pos . Если end_pos отрицательно, то удаляются символы от start_pos до конца текста.
Обратите внимание, что позиции указаны в символах, а не в байтах.
[virtual do_delete_text]
Параметры
editable | объект GtkEditable | |
start_pos | начальная позиция | |
end_pos | конечная позиция |
gtk_editable_get_chars ()
gchar * gtk_editable_get_chars (GtkEditable *editable,gint start_pos,gint end_pos);
Возвращает последовательность символов. Символы, которые извлекаются, — это символы с позициями от start_pos до, но не включая end_pos . Если end_pos отрицательно, то извлекаются символы от start_pos до конца текста.
Обратите внимание, что позиции указаны в символах, а не в байтах.
Параметры
editable | объект GtkEditable | |
start_pos | начало текста | |
end_pos | конец текста |
Возвращает
указатель на содержимое виджета в виде строки. Эта строка выделяется реализацией GtkEditable и должна быть освобождена вызывающим объектом.
gtk_editable_cut_clipboard ()
void
gtk_editable_cut_clipboard (GtkEditable *editable); Удаляет содержимое текущего выделенного фрагмента в редактируемом объекте и помещает его в буфер обмена.
Параметры
editable | объект GtkEditable |
gtk_editable_copy_clipboard ()
void
gtk_editable_copy_clipboard (GtkEditable *editable); Копирует содержимое текущего выделенного фрагмента в редактируемом объекте и помещает его в буфер обмена.
Параметры
editable | объект GtkEditable |
gtk_editable_paste_clipboard ()
void
gtk_editable_paste_clipboard (GtkEditable *editable); Вставляет содержимое буфера обмена в текущую позицию курсора в редактируемом объекте.
Параметры
editable | объект GtkEditable |
gtk_editable_delete_selection ()
void
gtk_editable_delete_selection (GtkEditable *editable); Удаляет текущий выделенный текст из редактируемого объекта. Этот вызов ничего не делает, если текст не выделен.
Параметры
editable | объект GtkEditable |
gtk_editable_set_position ()
void gtk_editable_set_position (GtkEditable *editable,gint position);
Устанавливает позицию курсора в редактируемом элементе до заданного значения.
Курсор отображается перед символом с заданным (с основанием 0) индексом в содержимом редактируемого элемента. Значение должно быть меньше или равно количеству символов в редактируемом элементе. Значение -1 указывает, что позиция должна быть установлена после последнего символа редактируемого элемента. Обратите внимание, что position указано в символах, а не в байтах.
Параметры
editable | элемент GtkEditable | |
position | позиция курсора |
gtk_editable_get_position ()
gint
gtk_editable_get_position (GtkEditable *editable); Возвращает текущую позицию курсора относительно начала содержимого редактируемого элемента.
Обратите внимание, что эта позиция указана в символах, а не в байтах.
Параметры
editable | элемент GtkEditable |
Возвращает
позицию курсора
gtk_editable_set_editable ()
void gtk_editable_set_editable (GtkEditable *editable,gboolean is_editable);
Определяет, может ли пользователь редактировать текст в виджете редактирования.
Параметры
editable | элемент GtkEditable | |
is_editable |
|
gtk_editable_get_editable ()
gboolean
gtk_editable_get_editable (GtkEditable *editable); Возвращает, редактируется ли editable. См. gtk_editable_set_editable().
Параметры
editable | элемент GtkEditable |
Возвращает
TRUE, если editable редактируется.
Типы и значения
GtkEditable
typedef struct _GtkEditable GtkEditable;
Подробности сигналов
Сигнал “changed”
void user_function (GtkEditable *editable, gpointer user_data)
Сигнал ::changed генерируется в конце одиночной видимой пользователю операции над содержимым GtkEditable.
Например, операция вставки, замещающая содержимое выделения, вызовет только одно событие сигнала (хотя оно реализуется путём сначала удаления выделения, затем вставки нового содержимого и может вызвать несколько сигналов ::notify::text).
Параметры
editable | объект, получивший сигнал | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
Сигнал “delete-text”
void user_function (GtkEditable *editable, gint start_pos, gint end_pos, gpointer user_data)
Этот сигнал генерируется при удалении текста из виджета пользователем. По умолчанию обработчик этого сигнала обычно отвечает за удаление текста. Подключив к этому сигналу и остановив его с помощью g_signal_stop_emission(), можно изменить диапазон удаляемого текста или полностью предотвратить его удаление. Параметры start_pos и end_pos интерпретируются так же, как и в gtk_editable_delete_text().
Параметры
editable | объект, получивший сигнал | |
start_pos | начальная позиция | |
end_pos | конечная позиция | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
Сигнал “insert-text”
void user_function (GtkEditable *editable, gchar *new_text, gint new_text_length, gpointer position, gpointer user_data)
Этот сигнал генерируется при вставке текста в виджет пользователем. По умолчанию обработчик этого сигнала обычно отвечает за вставку текста. Подключив к этому сигналу и остановив его с помощью g_signal_stop_emission(), можно изменить вставляемый текст или полностью предотвратить его вставку.
Параметры
editable | объект, получивший сигнал | |
new_text | новый текст для вставки | |
new_text_length | длина нового текста в байтах или -1, если new_text имеет нуль-терминатор | |
position | позиция, в символах, в которую нужно вставить новый текст. Это параметр ввода/вывода. После завершения генерации сигнала он должен указывать на позицию после только что вставленного текста. | [inout][type int] |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/GtkEditable.html