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 | ||
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 | ||
start_pos | место для хранения начальной позиции, или | [out][allow-none] |
end_pos | место для хранения конечной позиции, или | [out][allow-none] |
Возвращает
TRUE если область выделена, 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);
Устанавливает позицию курсора в редактируемом элементе до заданного значения.
Курсор отображается перед символом с заданным (в системе счисления по основанию 0) индексом в содержимом редактируемого элемента. Значение должно быть меньше или равно количеству символов в редактируемом элементе. Значение -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, int start_pos, int 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, char *new_text, int 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.24/GtkEditable.html