Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Signals

Группа акселераторов

Accelerator Groups Группа глобальных акселераторов клавиатуры для всего GtkWindow

Краткий обзор

#include <gtk/gtk.h> GtkAccelGroup; GtkAccelGroup* gtk_accel_group_new (void); #define gtk_accel_group_ref #define gtk_accel_group_unref void gtk_accel_group_connect (GtkAccelGroup *accel_group, guint accel_key, GdkModifierType accel_mods, GtkAccelFlags accel_flags, GClosure *closure); void gtk_accel_group_connect_by_path (GtkAccelGroup *accel_group, const gchar *accel_path, GClosure *closure); gboolean (*GtkAccelGroupActivate) (GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier); gboolean (*GtkAccelGroupFindFunc) (GtkAccelKey *key, GClosure *closure, gpointer data); gboolean gtk_accel_group_disconnect (GtkAccelGroup *accel_group, GClosure *closure); gboolean gtk_accel_group_disconnect_key (GtkAccelGroup *accel_group, guint accel_key, GdkModifierType accel_mods); GtkAccelGroupEntry* gtk_accel_group_query (GtkAccelGroup *accel_group, guint accel_key, GdkModifierType accel_mods, guint *n_entries); gboolean gtk_accel_group_activate (GtkAccelGroup *accel_group, GQuark accel_quark, GObject *acceleratable, guint accel_key, GdkModifierType accel_mods); void gtk_accel_group_lock (GtkAccelGroup *accel_group); void gtk_accel_group_unlock (GtkAccelGroup *accel_group); GtkAccelGroup* gtk_accel_group_from_accel_closure (GClosure *closure); gboolean gtk_accel_groups_activate (GObject *object, guint accel_key, GdkModifierType accel_mods); GSList* gtk_accel_groups_from_object (GObject *object); GtkAccelKey* gtk_accel_group_find (GtkAccelGroup *accel_group, GtkAccelGroupFindFunc find_func, gpointer data); GtkAccelKey; gboolean gtk_accelerator_valid (guint keyval, GdkModifierType modifiers); void gtk_accelerator_parse (const gchar *accelerator, guint *accelerator_key, GdkModifierType *accelerator_mods); gchar* gtk_accelerator_name (guint accelerator_key, GdkModifierType accelerator_mods); gchar* gtk_accelerator_get_label (guint accelerator_key, GdkModifierType accelerator_mods); void gtk_accelerator_set_default_mod_mask (GdkModifierType default_mod_mask); guint gtk_accelerator_get_default_mod_mask (void);

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

GObject +----GtkAccelGroup

Сигналы

"accel-activate" gboolean user_function (GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer user_data) : Has details "accel-changed" void user_function (GtkAccelGroup *accel_group, guint keyval, GdkModifierType modifier, GClosure *accel_closure, gpointer user_data) : Run first / Has details

Описание

GtkAccelGroup представляет группу акселераторов клавиатуры, обычно прикреплённых к высшему уровню GtkWindow (с помощью gtk_window_add_accel_group()). Обычно вам не потребуется непосредственное создание GtkAccelGroup; вместо этого используйте GtkItemFactory, GTK+ автоматически установит акселераторы для ваших меню используя производство пунктов в GtkAccelGroup.

Помните, эти акселераторы (accelerators) отличаются от мнемоников (mnemonics). Акселераторы имеют комбинации клавиш для активации пунктов меню; они появляются рядом с пунктом меню для которого предназначены. Например "Ctrl+Q" может появиться рядом с пунктом меню "Quit". Мнемоники имеют комбинации клавиш для элементов GUI таких как ввод текста или кнопка; они появляются как подчеркнутые знаки. Смотрите gtk_label_new_with_mnemonic(). Пункты меню могут иметь и акселераторы и мнемоники.

Детали

GtkAccelGroup

typedef struct _GtkAccelGroup GtkAccelGroup;

Представление объекта и поддержка группы акселераторов.


gtk_accel_group_new ()

GtkAccelGroup* gtk_accel_group_new          (void);

Создаёт новый GtkAccelGroup.

Возвращает :

Новый объект GtkAccelGroup


gtk_accel_group_ref

#define gtk_accel_group_ref     g_object_ref

Внимание

gtk_accel_group_ref устарел, поэтому не нужно его использовать во вновь создаваемом коде.

Используйте эквивалент g_object_ref().

Возвращает :

Группу акселераторов в которую помещён


gtk_accel_group_unref

#define gtk_accel_group_unref   g_object_unref

Внимание

gtk_accel_group_unref устарел, поэтому не нужно его использовать во вновь создаваемом коде.

Используйте эквивалент g_object_unref().


gtk_accel_group_connect ()

void gtk_accel_group_connect (GtkAccelGroup *accel_group, guint accel_key, GdkModifierType accel_mods, GtkAccelFlags accel_flags, GClosure *closure);

Устанавливает акселератор в группу. Когда accel_group активизируется в ответ на вызов gtk_accel_groups_activate(), closure будет вызван если accel_key и accel_mods из gtk_accel_groups_activate() соответствуют таковым в этом соединении.

Подпись используемая для closure - это GtkAccelGroupActivate.

Отметьте, что, из-за деталей выполнения, единственное закрытие может быть соединено только с одной группой акселераторов.

accel_group :

Устанавливает акселератор в группу акселераторов

accel_key :

Ключевое значение акселератора

accel_mods :

Модифицирующая комбинация акселератора

accel_flags :

Маска флага для конфигурирования акселератора

closure :

Закрытие, которое будет выполнено после активации акселератора


gtk_accel_group_connect_by_path ()

void gtk_accel_group_connect_by_path (GtkAccelGroup *accel_group, const gchar *accel_path, GClosure *closure);

Устанавливает акселератор в эту группу, используя путь акселератора для просмотра соответствующего ключа и модификаторов (смотрите gtk_accel_map_add_entry()). Когда accel_group активизируется в ответ на вызов gtk_accel_groups_activate(), closure будет вызван если accel_key и accel_mods из gtk_accel_groups_activate() будут соответствовать ключу и модификатору в пути.

Подпись используемая для closure - это GtkAccelGroupActivate.

accel_group :

Устанавливает акселератор в группу акселераторов

accel_path :

Путь используемый для определения ключа и модификаторов.

closure :

Закрытие, которое будет выполнено после активации акселератора


GtkAccelGroupActivate ()

gboolean (*GtkAccelGroupActivate) (GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier);

accel_group :

acceleratable :

keyval :

modifier :

Возвращает :


GtkAccelGroupFindFunc ()

gboolean (*GtkAccelGroupFindFunc) (GtkAccelKey *key, GClosure *closure, gpointer data);

key :

closure :

data :

Возвращает :

Начиная с версии 2.2


gtk_accel_group_disconnect ()

gboolean gtk_accel_group_disconnect (GtkAccelGroup *accel_group, GClosure *closure);

Удаляет акселератор предварительно установленный через gtk_accel_group_connect().

accel_group :

Группа акселераторов из которой удаляется акселератор.

closure :

Закрытие, чтобы удалить из этой группы акселератор

Возвращает :

TRUE если закрытие было найдено и отсоединено


gtk_accel_group_disconnect_key ()

gboolean gtk_accel_group_disconnect_key (GtkAccelGroup *accel_group, guint accel_key, GdkModifierType accel_mods);

Удаляет акселератор предварительно установленный через gtk_accel_group_connect().

accel_group :

Группа акселераторов в которой установлен акселератор

accel_key :

Ключевое значение акселератора

accel_mods :

Модифицирующая комбинация акселератора

Возвращает :

TRUE если акселератор был удален, иначе FALSE


gtk_accel_group_query ()

GtkAccelGroupEntry* gtk_accel_group_query (GtkAccelGroup *accel_group, guint accel_key, GdkModifierType accel_mods, guint *n_entries);

Запрашивает группу акселераторов для всех соответствующих accel_key и accel_mods.

accel_group :

Запрашиваемая группа акселераторов

accel_key :

ключевое значение акселератора

accel_mods :

Модифицирующая комбинация акселератора

n_entries :

Число найденных записей, или NULL

Возвращает :

массив n_entries GtkAccelGroupEntry элементов, или NULL. Массив принадлежит GTK+ и не может быть освобождён.


gtk_accel_group_activate ()

gboolean gtk_accel_group_activate (GtkAccelGroup *accel_group, GQuark accel_quark, GObject *acceleratable, guint accel_key, GdkModifierType accel_mods);

accel_group :

accel_quark :

acceleratable :

accel_key :

accel_mods :

Возвращает :


gtk_accel_group_lock ()

void        gtk_accel_group_lock            (GtkAccelGroup *accel_group);

Замыкает полученную группу акселераторов.

Замыкает группу акселераторов предотвращая изменение включённых акселераторов во время выполнения. Используйте gtk_accel_map_change_entry() для изменения акселераторов во время выполнения.

Если вызвана больше одного раза, accel_group останется замкнутым пока gtk_accel_group_unlock() не будет вызвана соответствующее количество раз.

accel_group :

GtkAccelGroup


gtk_accel_group_unlock ()

void        gtk_accel_group_unlock          (GtkAccelGroup *accel_group);

Уничтожает последний вызов gtk_accel_group_lock() для accel_group.

accel_group :

GtkAccelGroup


gtk_accel_group_from_accel_closure ()

GtkAccelGroup* gtk_accel_group_from_accel_closure (GClosure *closure);

Находит GtkAccelGroup с которым связан closure; смотрите gtk_accel_group_connect().

closure :

GClosure

Возвращает :

GtkAccelGroup связанный с closure , или NULL.


gtk_accel_groups_activate ()

gboolean gtk_accel_groups_activate (GObject *object, guint accel_key, GdkModifierType accel_mods);

Находит первый акселератор в любом присоединённом GtkAccelGroup, с соответствующими object, accel_key и accel_mods, и активизирует этот акселератор. Если акселератор активирован и соответствующее нажатие обработано, возвращается TRUE.

object :

GObject, обычно GtkWindow, чтобы активизировать акселератор.

accel_key :

Ключевое значение акселератора из ключевого события

accel_mods :

Маска состояния клавиатуры из ключевого события

Возвращает :

TRUE если акселератор обработан, иначе FALSE


gtk_accel_groups_from_object ()

GSList*     gtk_accel_groups_from_object    (GObject *object);

Получить список всех групп акселераторов прикреплённых к object.

object :

GObject, обычно GtkWindow

Возвращает :

список всех групп акселераторов прикреплённых к object


gtk_accel_group_find ()

GtkAccelKey* gtk_accel_group_find (GtkAccelGroup *accel_group, GtkAccelGroupFindFunc find_func, gpointer data);

Находит первый вход в группе акселераторов, для которого find_func возвращает TRUE и возвращает его GtkAccelKey.

accel_group :

GtkAccelGroup

find_func :

Функция фильтрации записей в accel_group

data :

Данные посылаемые find_func

Возвращает :

Ключ первой записи помещенной find_func. Ключ принадлежит GTK+ и неможет быть освобождён.


GtkAccelKey

typedef struct { guint accel_key; GdkModifierType accel_mods; guint accel_flags : 16; } GtkAccelKey;

gtk_accelerator_valid ()

gboolean gtk_accelerator_valid (guint keyval, GdkModifierType modifiers);

Определяет, составляют ли данное ключевое значение (keyval) и маска модификатора (modifiers) действительный модификатор клавиатуры. Например, ключевое значение GDK_a плюс GDK_CONTROL_MASK, действителен это акселератор "Ctrl+a". Но вы не можете, для ссылки, использовать ключевое значение GDK_Control_L как акселератор.

keyval :

Ключевое значение GDK

modifiers :

Маска модификатора

Возвращает :

TRUE, если акселератор действителен


gtk_accelerator_parse ()

void gtk_accelerator_parse (const gchar *accelerator, guint *accelerator_key, GdkModifierType *accelerator_mods);

Анализирует строку, представляющую акселератор. Формат примерно такой "<Control>a", или "<Shift><Alt>F1", или "<Release>z" (последний для ключевого высвобождения). Анализатор достаточно либерален и позволяет нижний или верхний регистр, или сокращения такие как "<Ctl>" и "<Ctrl>".

Если анализ не удался, accelerator_key и accelerator_mods будут установлены в значение 0 (zero).

accelerator :

Строка представляющая акселератор

accelerator_key :

Размещение возвращаемого ключевого значения акселератора

accelerator_mods :

Размещение возвращаемого маски модификатора акселератора


gtk_accelerator_name ()

gchar* gtk_accelerator_name (guint accelerator_key, GdkModifierType accelerator_mods);

Преобразует ключевое значение и маску модификатора в строку анализируемую gtk_accelerator_parse(). Например, если вы поместили GDK_q и GDK_CONTROL_MASK, эта функция вернёт "<Control>q".

Если вам нужно отобразить акселераторы на интерфейсе пользователя, смотрите gtk_accelerator_get_label().

accelerator_key :

Ключевое значение акселератора

accelerator_mods :

Маска модификатора акселератора

Возвращает :

Вновь-размещённое имя акселератора


gtk_accelerator_get_label ()

gchar* gtk_accelerator_get_label (guint accelerator_key, GdkModifierType accelerator_mods);

Преобразует ключевое значение акселератора и маску модификатора в строку которая может использоваться для отображения акселератора на пользовательском интерфейсе.

accelerator_key :

Ключевое значение акселератора

accelerator_mods :

Маска модификатора акселератора

Возвращает :

Вновь-размещённая строка для отображения акселератора.

Начиная с версии 2.6


gtk_accelerator_set_default_mod_mask ()

void gtk_accelerator_set_default_mod_mask (GdkModifierType default_mod_mask);

Устанавливает модификаторы которые будут существенно продуманны для акселераторов клавиатуры. По умолчанию модифицирующая маска GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK, это, Control, Shift и Alt. Другие модификаторы по умолчанию игнорируются GtkAccelGroup. Вы должны включить по крайней мере три модификатора по умолчанию в любое значение переданное этой функции.

По умолчанию модифицирующая маска должна быть изменена при запуске приложения, перед использованием любых групп акселераторов.

default_mod_mask :

Маска модификации акселератора


gtk_accelerator_get_default_mod_mask ()

guint gtk_accelerator_get_default_mod_mask (void);

Устанавливает значение gtk_accelerator_set_default_mod_mask().

Возвращает :

Маска модификатора по умолчанию

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

Сигнал "accel-activate"

gboolean user_function (GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer user_data) : Has details

Сигнал accel-activate реализует детали GtkAccelGroup и не предполагает использование приложением.

accel_group :

GtkAccelGroup который получил сигнал

acceleratable :

Объект который активизировал акселератор

keyval :

Ключевое значение акселератора

modifier :

Модифицирующая комбинация для акселератора

user_data :

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

Возвращает :

TRUE если акселератор активизирован


Сигнал "accel-changed"

void user_function (GtkAccelGroup *accel_group, guint keyval, GdkModifierType modifier, GClosure *accel_closure, gpointer user_data) : Run first / Has details

Сигнал accel-changed создаётся когда GtkAccelGroupEntry добавляется или удаляется из группы акселераторов.

Виджеты, такие как GtkAccelLabel, которые отображают ассоциированные акселераторы должны подключаться к этому сигналу и восстанавливать их визуальное представление, если accel_closure им соответствует.

accel_group :

GtkAccelGroup который получил сигнал

keyval :

Ключевое значение акселератора

modifier :

Модифицирующая комбинация акселератора

accel_closure :

Объект GClosure акселератора

user_data :

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

Смотрите также

gtk_window_add_accel_group(), gtk_accel_map_change_entry(), gtk_item_factory_new(), gtk_label_new_with_mnemonic()