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, constgchar*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 | ||
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.
Обратите внимание, что позиции указываются в символах, а не байтах.
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 | ||
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 | ||
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 | ||
start_pos | начало текста | |
end_pos | конец текста |
Возвращаемое значение
указатель на содержимое виджета в виде строки. Эта строка выделяется реализацией GtkEditable и должна быть освобождена вызывающей стороной.
gtk_editable_cut_clipboard ()
void
gtk_editable_cut_clipboard (GtkEditable *editable); Удаляет содержимое текущего выделенного фрагмента в редактируемом элементе и помещает его в буфер обмена.
Параметры
editable |
gtk_editable_copy_clipboard ()
void
gtk_editable_copy_clipboard (GtkEditable *editable); Копирует содержимое текущего выделенного фрагмента в редактируемом элементе и помещает его в буфер обмена.
Параметры
editable |
gtk_editable_paste_clipboard ()
void
gtk_editable_paste_clipboard (GtkEditable *editable); Вставляет содержимое буфера обмена в текущую позицию курсора в редактируемом элементе.
Параметры
editable |
gtk_editable_delete_selection ()
void
gtk_editable_delete_selection (GtkEditable *editable); Удаляет текущий выделенный текст в редактируемом элементе. Этот вызов ничего не делает, если текст не выделен.
Параметры
editable |
gtk_editable_set_position ()
void gtk_editable_set_position (GtkEditable *editable,gint position);
Устанавливает позицию курсора в редактируемом поле в указанное значение.
Курсор отображается перед символом с заданным индексом (в нулевой основе) в содержимом редактируемого поля. Значение должно быть меньше или равно количеству символов в редактируемом поле. Значение -1 указывает, что позиция должна быть установлена после последнего символа редактируемого поля. Обратите внимание, что position указано в символах, а не в байтах.
Параметры
editable | ||
position | позиция курсора |
gtk_editable_get_position ()
gint
gtk_editable_get_position (GtkEditable *editable); Возвращает текущую позицию курсора относительно начала содержимого редактируемого поля.
Обратите внимание, что эта позиция указана в символах, а не в байтах.
Параметры
editable |
Возвращает
позицию курсора
gtk_editable_set_editable ()
void gtk_editable_set_editable (GtkEditable *editable,gboolean is_editable);
Определяет, может ли пользователь редактировать текст в редактируемом виджете.
Параметры
editable | ||
is_editable |
|
gtk_editable_get_editable ()
gboolean
gtk_editable_get_editable (GtkEditable *editable); Возвращает, является ли editable редактируемым. См. gtk_editable_set_editable().
Параметры
editable |
Возвращает
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.20/GtkEditable.html