GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Known Implementations | Signals |
GtkEditableGtkEditable Интерфейс для виджетов редактирования текста |
#include <gtk/gtk.h>
GtkEditable;
void gtk_editable_select_region (GtkEditable *editable,
gint start,
gint end);
gboolean gtk_editable_get_selection_bounds
(GtkEditable *editable,
gint *start,
gint *end);
void gtk_editable_insert_text (GtkEditable *editable,
const gchar *new_text,
gint new_text_length,
gint *position);
void gtk_editable_delete_text (GtkEditable *editable,
gint start_pos,
gint end_pos);
gchar* gtk_editable_get_chars (GtkEditable *editable,
gint start_pos,
gint end_pos);
void gtk_editable_cut_clipboard (GtkEditable *editable);
void gtk_editable_copy_clipboard (GtkEditable *editable);
void gtk_editable_paste_clipboard (GtkEditable *editable);
void gtk_editable_delete_selection (GtkEditable *editable);
void gtk_editable_set_position (GtkEditable *editable,
gint position);
gint gtk_editable_get_position (GtkEditable *editable);
void gtk_editable_set_editable (GtkEditable *editable,
gboolean is_editable);
gboolean gtk_editable_get_editable (GtkEditable *editable);
GInterface
+----GtkEditable
GtkEditable реализуется GtkEntry, GtkOldEditable, GtkSpinButton и GtkText.
"changed" void user_function (GtkEditable *editable,
gpointer user_data) : Run last
"delete-text"
void user_function (GtkEditable *editable,
gint start_pos,
gint end_pos,
gpointer user_data) : Run last
"insert-text"
void user_function (GtkEditable *editable,
gchar *new_text,
gint new_text_length,
gint *position,
gpointer user_data) : Run last
GtkEditable интерфейс это интерфейс реализуемый виджетами редактирования текста, такими как GtkEntry и GtkText. Он содержит функции для основных манипуляций редактируемых виджетов, большое число сигналов действий используемых для привязок клавиш и несколько сигналов которые приложение может подключать к виджетам редактирования.
Как пример последнего, подключая нижеследующий обработчик к "insert_text", приложение может преобразовать весь ввод в виджет в верхний регистр.
Пример 3. Преобразование ввода в верхний регистр.
include <ctype.h>
void
insert_text_handler (GtkEditable *editable,
const gchar *text,
gint length,
gint *position,
gpointer data)
{
int i;
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);
}
typedef struct _GtkEditable GtkEditable;Структура GtkEditable содержит нижеследующие поля. (Эти поля должны рассматриваться только для чтения. Они никогда не должны устанавливаться приложением.)
guint selection_start; |
Начальная позиция выделения символов в виджете. |
guint selection_end; |
Конечная позиция выделения символов в виджете. |
guint editable; |
Флажок указывающий редактируемый или нет виджет. |
void gtk_editable_select_region (GtkEditable *editable,
gint start,
gint end);
Выделяет область текста. Выделяются
символы из позиции start_pos
,
но не включая позицию end_pos
.
Если end_pos
отрицательное,
то когда символы выделяются из позиции
start_pos
до конца текста.
|
GtkEditable виджет. |
|
Начальная позиция. |
|
Конечная позиция. |
gboolean gtk_editable_get_selection_bounds
(GtkEditable *editable,
gint *start,
gint *end);
Определяет границы текущемго выделения, если оно существует.
|
GtkEditable виджет. |
|
Начальная позиция, или |
|
Конечная позиция, или |
Возвращает : |
|
void gtk_editable_insert_text (GtkEditable *editable,
const gchar *new_text,
gint new_text_length,
gint *position);
Вставляет текст в данную позицию.
|
GtkEditable виджет. |
|
Вставляемый текст. |
|
Длина вставляемого текста, в байтах |
|
Параметр ввода вывода. Вызывающая программа инициализирует его в позицию для вставки текста. После вызова он указывает на позицию после вставленного текста. |
void gtk_editable_delete_text (GtkEditable *editable,
gint start_pos,
gint end_pos);
Удаляет участок символов. Символы
удаляются начиная с позиции start_pos
,
но не включая позицию end_pos
.
Если end_pos
отрицательное,
то когда символы удаляются начиная с
позиции start_pos
и до конца
текста.
|
GtkEditable виджет. |
|
начальная позиция. |
|
конечная позиция. |
gchar* gtk_editable_get_chars (GtkEditable *editable,
gint start_pos,
gint end_pos);
Определяет последовательность символов.
Символы получаются из позиции start_pos
,
но не включая end_pos
. Если
end_pos
отрицательное, то когда
символы получаются из позиции start_pos
до конца текста.
|
GtkEditable виджет. |
|
начальная позиция. |
|
конечная позиция. |
Возвращает : |
Символы в указанной области. Результат
должен быть освобожден с помощью
|
void gtk_editable_cut_clipboard (GtkEditable *editable);Копирует символы текущемго выделения в буфер и удаляет их из виджета.
|
GtkEditable виджет. |
void gtk_editable_copy_clipboard (GtkEditable *editable);Копирует символы текущемго выделения в буфер.
|
GtkEditable виджет. |
void gtk_editable_paste_clipboard (GtkEditable *editable);Вставляет содержимое буфера в данный виджет в текущую позицию курсора.
|
GtkEditable виджет. |
void gtk_editable_delete_selection (GtkEditable *editable);Удаляет текущеме выделение виджета и отменяет выделение.
|
GtkEditable виджет. |
void gtk_editable_set_position (GtkEditable *editable,
gint position);
Устанавливает позицию курсора.
|
GtkEditable виджет. |
|
Позиция курсора. Курсор отображается после данного символа (начиная 0) в виджете. Значение должно быть меньше или эквивалентно числу символов в виджете. Значение -1 указывает позицию после последнего символа ввода. Помните, это позиция в символах а не в байтах. |
gint gtk_editable_get_position (GtkEditable *editable);Определяет текущую позицию курсора.
|
GtkEditable виджет. |
Возвращает : |
Позиция курсора. Курсор отображается после данного символа (начиная 0) в виджете. Значение должно быть меньше или эквивалентно числу символов в виджете. Значение -1 указывает позицию после последнего символа ввода. Помните, это позиция в символах а не в байтах. |
void gtk_editable_set_editable (GtkEditable *editable,
gboolean is_editable);
Определяет может ли пользователь редактировать текст в редактируемом виджете.
|
GtkEditable виджет. |
|
|
gboolean gtk_editable_get_editable (GtkEditable *editable);Определяет редактируем ли
editable
. Смотритеgtk_editable_set_editable()
.
|
|
Возвращает : |
|
void user_function (GtkEditable *editable,
gpointer user_data) : Run last
Указывает что пользователь изменил содержимое виджета.
|
объект получающий сигнал. |
|
пользовательские данные помещаемые при подключении обработчика сигнала. |
void user_function (GtkEditable *editable,
gint start_pos,
gint end_pos,
gpointer user_data) : Run last
Этот сигнал издаётся когда пользователь
удаляет текст из виджета. Обработчик
сигнала по умолчанию обычно будет
отвечать за вставку текста, таким образом
подключая этот сигнал и останавливая
его с помощью gtk_signal_emit_stop()
,
это нужно для изменения вставляемого
текста, или препятствовать вставке
полностью. Параметры start_pos
и end_pos
интерпретируются как
для gtk_editable_delete_text()
|
объект получающий сигнал. |
|
начальная позиция. |
|
конечная позиция. |
|
пользовательские данные помещаемые при подключении обработчика сигнала. |
void user_function (GtkEditable *editable,
gchar *new_text,
gint new_text_length,
gint *position,
gpointer user_data) : Run last
Этот сигнал издаётся когда пользователь
вставляет текст в виджет. Обработчик
сигнала по умолчанию обычно будет
отвечать за вставку текста, таким образом
подключая этот сигнал и останавливая
его с помощью gtk_signal_emit_stop()
,
это нужно для изменения вставляемого
текста, или запрещению полной вставки.
|
Объект получающий сигнал. |
|
Новый текст для вставки. |
|
Длина нового текста в байтах, или -1 если новый текст не nul-terminated |
|
Позиция в символах, в которую вставляется новый текст. Это параметр ввода вывода(in-out). После окончания эмиссии сигнала, она должна находиться после вновь вставленного текста. |
|
пользовательские данные помещаемые при подключении обработчика сигнала. |