Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Known Implementations  |  Signals

GtkEditable

GtkEditable Интерфейс для виджетов редактирования текста

Краткое описание

#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); }

Детали

GtkEditable

typedef struct _GtkEditable GtkEditable;

Структура GtkEditable содержит нижеследующие поля. (Эти поля должны рассматриваться только для чтения. Они никогда не должны устанавливаться приложением.)

guint selection_start;

Начальная позиция выделения символов в виджете.

guint selection_end;

Конечная позиция выделения символов в виджете.

guint editable;

Флажок указывающий редактируемый или нет виджет.


gtk_editable_select_region ()

void gtk_editable_select_region (GtkEditable *editable, gint start, gint end);

Выделяет область текста. Выделяются символы из позиции start_pos, но не включая позицию end_pos. Если end_pos отрицательное, то когда символы выделяются из позиции start_pos до конца текста.

editable :

GtkEditable виджет.

start :

Начальная позиция.

end :

Конечная позиция.


gtk_editable_get_selection_bounds ()

gboolean gtk_editable_get_selection_bounds (GtkEditable *editable, gint *start, gint *end);

Определяет границы текущемго выделения, если оно существует.

editable :

GtkEditable виджет.

start :

Начальная позиция, или NULL.

end :

Конечная позиция, или NULL.

Возвращает :

TRUE если выделение существует.


gtk_editable_insert_text ()

void gtk_editable_insert_text (GtkEditable *editable, const gchar *new_text, gint new_text_length, gint *position);

Вставляет текст в данную позицию.

editable :

GtkEditable виджет.

new_text :

Вставляемый текст.

new_text_length :

Длина вставляемого текста, в байтах

position :

Параметр ввода вывода. Вызывающая программа инициализирует его в позицию для вставки текста. После вызова он указывает на позицию после вставленного текста.


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 и до конца текста.

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 :

конечная позиция.

Возвращает :

Символы в указанной области. Результат должен быть освобожден с помощью g_free() когда приложение закончит с ним.


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);

Устанавливает позицию курсора.

editable :

GtkEditable виджет.

position :

Позиция курсора. Курсор отображается после данного символа (начиная 0) в виджете. Значение должно быть меньше или эквивалентно числу символов в виджете. Значение -1 указывает позицию после последнего символа ввода. Помните, это позиция в символах а не в байтах.


gtk_editable_get_position ()

gint        gtk_editable_get_position       (GtkEditable *editable);

Определяет текущую позицию курсора.

editable :

GtkEditable виджет.

Возвращает :

Позиция курсора. Курсор отображается после данного символа (начиная 0) в виджете. Значение должно быть меньше или эквивалентно числу символов в виджете. Значение -1 указывает позицию после последнего символа ввода. Помните, это позиция в символах а не в байтах.


gtk_editable_set_editable ()

void gtk_editable_set_editable (GtkEditable *editable, gboolean is_editable);

Определяет может ли пользователь редактировать текст в редактируемом виджете.

editable :

GtkEditable виджет.

is_editable :

TRUE если пользователю позволено редактировать текст в виджете.


gtk_editable_get_editable ()

gboolean    gtk_editable_get_editable       (GtkEditable *editable);

Определяет редактируем ли editable. Смотрите gtk_editable_set_editable().

editable :

GtkEditable

Возвращает :

TRUE если editable редактируем.

Детали сигналов

Сигнал "changed"

void user_function (GtkEditable *editable, gpointer user_data) : Run last

Указывает что пользователь изменил содержимое виджета.

editable :

объект получающий сигнал.

user_data :

пользовательские данные помещаемые при подключении обработчика сигнала.


Сигнал "delete-text"

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()

editable :

объект получающий сигнал.

start_pos :

начальная позиция.

end_pos :

конечная позиция.

user_data :

пользовательские данные помещаемые при подключении обработчика сигнала.


Сигнал "insert-text"

void user_function (GtkEditable *editable, gchar *new_text, gint new_text_length, gint *position, gpointer user_data) : Run last

Этот сигнал издаётся когда пользователь вставляет текст в виджет. Обработчик сигнала по умолчанию обычно будет отвечать за вставку текста, таким образом подключая этот сигнал и останавливая его с помощью gtk_signal_emit_stop(), это нужно для изменения вставляемого текста, или запрещению полной вставки.

editable :

Объект получающий сигнал.

new_text :

Новый текст для вставки.

new_text_length :

Длина нового текста в байтах, или -1 если новый текст не nul-terminated

position :

Позиция в символах, в которую вставляется новый текст. Это параметр ввода вывода(in-out). После окончания эмиссии сигнала, она должна находиться после вновь вставленного текста.

user_data :

пользовательские данные помещаемые при подключении обработчика сигнала.