Группы Ускорителей
Группы Ускорителей — Группы глобальных клавишных ускорителей для всего GtkWindow
Функции
Свойства
| gboolean | is-locked | Чтение |
| GdkModifierType | modifier-mask | Чтение |
Сигналы
| gboolean | accel-activate | Содержит подробности |
| void | accel-changed | Содержит подробности |
Типы и Значения
| struct | GtkAccelGroup |
| struct | GtkAccelGroupClass |
| перечисление | GtkAccelFlags |
| struct | GtkAccelKey |
Иерархия Объектов
GObject
╰── GtkAccelGroup
Файлы
#include <gtk/gtk.h>
Описание
Класс GtkAccelGroup представляет собой группу клавиатурных акселератров, обычно прикреплённых к главному окну GtkWindow (с помощью gtk_window_add_accel_group()). Обычно вам не нужно создавать GtkAccelGroup напрямую; вместо этого, при использовании GtkUIManager, GTK+ автоматически настраивает акселераторы для ваших меню в GtkAccelGroup менеджера пользовательского интерфейса.
Обратите внимание, что «акселераторы» отличаются от «мнемоник». Акселераторы — это сочетания клавиш для активации пункта меню; они отображаются рядом с пунктом меню, для которого они являются сокращением. Например, «Ctrl+Q» может отображаться рядом с пунктом меню «Выход». Мнемоники — это сочетания клавиш для элементов пользовательского интерфейса, таких как текстовые поля или кнопки; они отображаются как подчеркнутые символы. См. gtk_label_new_with_mnemonic(). Пункты меню, конечно, могут иметь и акселераторы, и мнемоники.
Функции
gtk_accel_group_new ()
GtkAccelGroup *
gtk_accel_group_new (void); Создаёт новую GtkAccelGroup.
Возвращает
новый объект GtkAccelGroup
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_path будет сохранена в GQuark. Поэтому, если вы передаёте статическую строку, вы можете сэкономить память, предварительно интернировав её с помощью g_intern_static_string()
Параметры
accel_group | группа ускорителей, в которой нужно установить ускоритель | |
accel_path | путь, используемый для определения клавиши и модификаторов | |
closure | замыкатель, который будет выполнен при активации ускорителя |
GtkAccelGroupActivate ()
gboolean (*GtkAccelGroupActivate) (GtkAccelGroup *accel_group,GObject *acceleratable,guint keyval,GdkModifierType modifier);
GtkAccelGroupFindFunc ()
gboolean (*GtkAccelGroupFindFunc) (GtkAccelKey *key,GClosure *closure,gpointer data);
Параметры
data | . | [closure] |
С момента: 2.2
gtk_accel_group_disconnect ()
gboolean gtk_accel_group_disconnect (GtkAccelGroup *accel_group,GClosure *closure);
Удаляет ускоритель, установленный ранее с помощью gtk_accel_group_connect().
Начиная с 2.20, closure может быть NULL
Параметры
accel_group | группа ускорителей, из которой нужно удалить ускоритель | |
closure | замыкатель для удаления из этой группы ускорителей, или | [allow-none] |
Возвращает
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_activate ()
gboolean gtk_accel_group_activate (GtkAccelGroup *accel_group,GQuark accel_quark,GObject *acceleratable,guint accel_key,GdkModifierType accel_mods);
Ищет первый ускоритель в accel_group, который соответствует accel_key и accel_mods, и активирует его.
Параметры
accel_group | ||
accel_quark | квирк для имени ускорителя | |
acceleratable | объект GObject, обычно GtkWindow, на котором нужно активировать ускоритель | |
accel_key | значение клавиши ускорителя из события нажатия клавиши | |
accel_mods | маска состояния клавиатуры из события нажатия клавиши |
Возвращает
TRUE если ускоритель был активирован и обработал это нажатие клавиши
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 |
gtk_accel_group_unlock ()
void
gtk_accel_group_unlock (GtkAccelGroup *accel_group); Отменяет последний вызов gtk_accel_group_lock() для этого accel_group.
Параметры
accel_group |
gtk_accel_group_get_is_locked ()
gboolean
gtk_accel_group_get_is_locked (GtkAccelGroup *accel_group); Блокировки добавляются и удаляются с помощью gtk_accel_group_lock() и gtk_accel_group_unlock().
Параметры
accel_group |
Возвращает
TRUE если на accel_group есть одна или более блокировок, FALSE в противном случае.
Since: 2.14
gtk_accel_group_from_accel_closure ()
GtkAccelGroup *
gtk_accel_group_from_accel_closure (GClosure *closure); Находит GtkAccelGroup, к которому подключен closure; см. gtk_accel_group_connect().
Параметры
closure | a GClosure |
gtk_accel_group_get_modifier_mask ()
GdkModifierType
gtk_accel_group_get_modifier_mask (GtkAccelGroup *accel_group); Получает GdkModifierType, представляющий маску для этой accel_group . Например, GDK_CONTROL_MASK, GDK_SHIFT_MASK и т. д.
Параметры
accel_group |
Возвращает
маску модификаторов для этой группы ускорителей.
Since: 2.14
gtk_accel_groups_activate ()
gboolean gtk_accel_groups_activate (GObject *object,guint accel_key,GdkModifierType accel_mods);
Находит первый ускоритель в любой GtkAccelGroup, прикрепленной к object, который соответствует accel_key и accel_mods , и активирует этот ускоритель.
Параметры
object | the GObject, обычно GtkWindow, для активации ускорителя | |
accel_key | ключ ускорителя keyval из события нажатия клавиши | |
accel_mods | маска состояния клавиатуры из события нажатия клавиши |
Возвращает
TRUE если ускоритель был активирован и обработал это нажатие клавиши
gtk_accel_groups_from_object ()
GSList * gtk_accel_groups_from_object (GObject *object);
Получает список всех групп ускорителей, прикрепленных к object .
Параметры
object | a GObject, обычно GtkWindow |
Возвращает
список всех групп ускорителей, прикрепленных к object .
[element-type GtkAccelGroup][transfer none]
gtk_accel_group_find ()
GtkAccelKey * gtk_accel_group_find (GtkAccelGroup *accel_group,GtkAccelGroupFindFunc find_func,gpointer data);
Находит первую запись в группе ускорителей, для которой find_func возвращает TRUE и возвращает её GtkAccelKey.
Параметры
accel_group | ||
find_func | функция для фильтрации записей | [scope call] |
data | данные для передачи в |
Возвращает
ключ первой записи, удовлетворяющей find_func . Ключ принадлежит GTK+ и не должен освобождаться.
[transfer none]
gtk_accelerator_valid ()
gboolean gtk_accelerator_valid (guint keyval,GdkModifierType modifiers);
Определяет, является ли заданная keyval и маска модификаторов допустимым ускорителем клавиатуры. Например, keyval GDK_KEY_a и GDK_CONTROL_MASK допустимы — это ускоритель “Ctrl+a”. Но вы не можете, например, использовать GDK_KEY_Control_L в качестве ускорителя.
Параметры
keyval | a GDK keyval | |
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>”. Имена клавиш парсятся с помощью gdk_keyval_from_name(). Для символьных клавиш имя не является символом, а строчным именем, например, необходимо использовать “<Ctrl>minus” вместо “<Ctrl>-”.
Если разбор не удался, accelerator_key и accelerator_mods будут установлены в 0 (ноль).
Параметры
accelerator | строка, представляющая ускоритель | |
accelerator_key | место для возврата keyval ускорителя, или | [out][allow-none] |
accelerator_mods | место для возврата маски модификаторов ускорителя, | [out][allow-none] |
gtk_accelerator_name ()
gchar * gtk_accelerator_name (guint accelerator_key,GdkModifierType accelerator_mods);
Преобразует комбинацию клавиш (keyval) и модификаторов (modifier mask) в строку, парсируемую функцией gtk_accelerator_parse(). Например, если передать GDK_KEY_q и GDK_CONTROL_MASK, функция вернёт «<Control>q».
Если вам нужно отобразить комбинации клавиш в пользовательском интерфейсе, обратитесь к gtk_accelerator_get_label().
Параметры
accelerator_key | значение клавиши (keyval) | |
accelerator_mods | маска модификаторов |
Возвращаемое значение
новый динамически выделенный строковый объект с именем комбинации клавиш.
gtk_accelerator_get_label ()
gchar * gtk_accelerator_get_label (guint accelerator_key,GdkModifierType accelerator_mods);
Преобразует комбинацию клавиш (keyval) и модификаторы (modifier mask) в строку, которая может быть использована для представления комбинации клавиш пользователю.
Параметры
accelerator_key | значение клавиши (keyval) | |
accelerator_mods | маска модификаторов |
Возвращаемое значение
новый динамически выделенный строковый объект, представляющий комбинацию клавиш.
С: 2.6
gtk_accelerator_parse_with_keycode ()
void gtk_accelerator_parse_with_keycode (const gchar *accelerator,guint *accelerator_key,guint **accelerator_codes,GdkModifierType *accelerator_mods);
Парсит строку, представляющую комбинацию клавиш, подобно gtk_accelerator_parse(), но также обрабатывает коды клавиш. Эта функция полезна только для компонентов системного уровня, приложения должны использовать gtk_accelerator_parse().
Если accelerator_codes указан, и полученное в нём значение не NULL, то оно должно быть освобождено с помощью g_free().
Если в комбинации клавиш присутствует код клавиши, и accelerator_codes не указан, то парсинг завершится ошибкой.
Если парсинг завершился ошибкой, accelerator_key, accelerator_mods и accelerator_codes будут установлены в 0.
Параметры
accelerator | строка, представляющая комбинацию клавиш | |
accelerator_key | место для возврата значения клавиши (keyval), или | [out][allow-none] |
accelerator_codes | место для возврата кодов клавиш, или | [out][array нуль-терминированный=1][transfer full][allow-none] |
accelerator_mods | место для возврата маски модификаторов, | [out][allow-none] |
С: 3.4
gtk_accelerator_name_with_keycode ()
gchar * gtk_accelerator_name_with_keycode (GdkDisplay *display,guint accelerator_key,guint keycode,GdkModifierType accelerator_mods);
Преобразует комбинацию клавиш (keyval) и модификаторы (modifier mask) в строку, парсируемую gtk_accelerator_parse_with_keycode(), аналогично gtk_accelerator_name(), но обрабатывая коды клавиш. Эта функция полезна только для компонентов системного уровня, приложения должны использовать gtk_accelerator_parse().
Параметры
display | объект GdkDisplay или | [allow-none] |
accelerator_key | значение клавиши (keyval) | |
keycode | код клавиши | |
accelerator_mods | маска модификаторов |
Возвращаемое значение
новый динамически выделенный строковый объект с именем комбинации клавиш.
С: 3.4
gtk_accelerator_get_label_with_keycode ()
gchar * gtk_accelerator_get_label_with_keycode (GdkDisplay *display,guint accelerator_key,guint keycode,GdkModifierType accelerator_mods);
Преобразует комбинацию клавиш (keyval) и модификаторы (modifier mask) в (возможно, переведённую) строку, которая может быть отображена пользователю, аналогично gtk_accelerator_get_label(), но обрабатывая коды клавиш.
Эта функция полезна только для компонентов системного уровня, приложения должны использовать gtk_accelerator_parse().
Параметры
display | объект GdkDisplay или | [allow-none] |
accelerator_key | значение клавиши (keyval) | |
keycode | код клавиши | |
accelerator_mods | маска модификаторов |
Возвращаемое значение
новый динамически выделенный строковый объект, представляющий комбинацию клавиш.
С: 3.4
gtk_accelerator_set_default_mod_mask ()
void
gtk_accelerator_set_default_mod_mask (GdkModifierType default_mod_mask); Устанавливает модификаторы, которые будут рассматриваться как значимые для комбинаций клавиш. Маска модификаторов по умолчанию зависит от используемого бэкенда GDK, но обычно включает GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK. Другими словами, Control, Shift, Alt, Super, Hyper и Meta. Другие модификаторы по умолчанию будут игнорироваться GtkAccelGroup.
Вы должны включить как минимум три модификатора (Control, Shift и Alt) в любом значении, которое вы передаёте в эту функцию.
Маску модификаторов по умолчанию необходимо изменить при запуске приложения, перед использованием любых групп комбинаций клавиш.
Параметры
default_mod_mask | маска модификаторов |
gtk_accelerator_get_default_mod_mask ()
GdkModifierType
gtk_accelerator_get_default_mod_mask (void); Получение маски модификаторов.
Маска модификаторов определяет, какие модификаторы считаются значимыми для клавиатурных акселераторов. См. gtk_accelerator_set_default_mod_mask().
Возвращаемое значение
стандартная маска модификаторов акселератора
Типы и значения
struct GtkAccelGroup
struct GtkAccelGroup;
Объект, представляющий и управляющий группой акселераторов.
struct GtkAccelGroupClass
struct GtkAccelGroupClass {
GObjectClass parent_class;
void (*accel_changed) (GtkAccelGroup *accel_group,
guint keyval,
GdkModifierType modifier,
GClosure *accel_closure);
};
Члены
| Сигнал, генерируемый при добавлении или удалении записи из группы акселераторов. |
перечисление GtkAccelFlags
Флаги акселераторов, используемые с gtk_accel_group_connect().
Члены
GTK_ACCEL_VISIBLE | Акселератор виден | |
GTK_ACCEL_LOCKED | Акселератор не удаляемый | |
GTK_ACCEL_MASK | Маска |
struct GtkAccelKey
struct GtkAccelKey {
guint accel_key;
GdkModifierType accel_mods;
guint accel_flags : 16;
};
Члены
guint | Значение клавиши акселератора | |
GdkModifierType | Модификаторы акселератора | |
guint | Флаги акселератора |
Подробное описание свойств
Свойство “is-locked”
“is-locked” gboolean
Заблокирована ли группа акселераторов.
Владелец: GtkAccelGroup
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “modifier-mask”
“modifier-mask” GdkModifierType
Маска модификаторов.
Владелец: GtkAccelGroup
Флаги: Чтение
Подробное описание сигналов
Сигнал “accel-activate”
gboolean user_function (GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer user_data)
Сигнал 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)
Сигнал accel-changed генерируется при добавлении или удалении записи в группу акселераторов.
Виджеты, такие как GtkAccelLabel, которые отображают связанный акселератор, должны подключиться к этому сигналу и перестроить своё визуальное представление, если accel_closure принадлежит им.
Параметры
accel_group | группа GtkAccelGroup, получившая сигнал | |
keyval | значение клавиши акселератора | |
modifier | комбинация модификаторов акселератора | |
accel_closure | закрытие GClosure акселератора | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Содержит подробности
См. также
gtk_window_add_accel_group(), gtk_accel_map_change_entry(), gtk_label_new_with_mnemonic()
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/gtk3-Keyboard-Accelerators.html