Spec-Zone.ru › GTK 3.22

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

Типы и значения

GtkEditable

Иерархия объектов

    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

объект GtkEditable

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

объект GtkEditable

start_pos

место для хранения начальной позиции или NULL.

[out][allow-none]

end_pos

место для хранения конечной позиции или NULL.

[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

объект GtkEditable

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

объект 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

конец текста

Возвращает

указатель на содержимое виджета в виде строки. Эта строка выделяется реализацией GtkEditable и должна быть освобождена вызывающим объектом.

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

Устанавливает позицию курсора в редактируемом элементе до заданного значения.

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

Параметры

editable

элемент GtkEditable

position

позиция курсора

gtk_editable_get_position ()

gint
gtk_editable_get_position (GtkEditable *editable);

Возвращает текущую позицию курсора относительно начала содержимого редактируемого элемента.

Обратите внимание, что эта позиция указана в символах, а не в байтах.

Параметры

editable

элемент GtkEditable

Возвращает

позицию курсора

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 редактируется.

Типы и значения

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.22/GtkEditable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API