The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

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 :

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






Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру