Spec-Zone.ru › GTK 3.20

Карты ускорителей

Карты ускорителей — Загружаемые спецификации клавишных комбинаций ускорителей

Функции

void (*GtkAccelMapForeach) ()
void gtk_accel_map_add_entry ()
gboolean gtk_accel_map_lookup_entry ()
gboolean gtk_accel_map_change_entry ()
void gtk_accel_map_load ()
void gtk_accel_map_save ()
void gtk_accel_map_foreach ()
void gtk_accel_map_load_fd ()
void gtk_accel_map_save_fd ()
void gtk_accel_map_load_scanner ()
void gtk_accel_map_add_filter ()
void gtk_accel_map_foreach_unfiltered ()
GtkAccelMap * gtk_accel_map_get ()
void gtk_accel_map_lock_path ()
void gtk_accel_map_unlock_path ()

Сигналы

void changed Has Details

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

GtkAccelMap

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

    GObject
    ╰── GtkAccelMap

Файлы заголовков

#include <gtk/gtk.h>

Описание

Карты ускорителей используются для определения настраиваемых во время выполнения клавишных комбинаций ускорителей. Функции для их обработки обычно используются более удобными механизмами высокого уровня, такими как GtkUIManager, и поэтому считаются «низкоуровневыми». Вы захотите их использовать, если вы вручную создаете меню, у которых должны быть настраиваемые пользователем клавишные комбинации ускорителей.

Ускоритель определяется однозначно следующими параметрами:

  • путь к ускорителю

  • ключ ускорителя

  • модификаторы ускорителя

Путь к ускорителю должен иметь вид «<ТИП_ОКНА>/Категория1/Категория2/.../Действие», где ТИП_ОКНА — это уникальный идентификатор, специфичный для приложения, который соответствует типу окна, в котором используется ускоритель, например, «Gimp-Image», «Abiword-Document» или «Gnumeric-Settings». Часть «Категория1/.../Действие» наиболее подходящим образом выбирается по действию, которое вызывает ускоритель, т. е. для ускорителей на элементах меню выберите путь к пункту меню, например, «Файл/Сохранить как», «Изображение/Просмотр/Масштаб» или «Правка/Выделить всё». Таким образом, полный допустимый путь к ускорителю может выглядеть так: «<Gimp-Панель инструментов>/Файл/Диалоги/Параметры инструмента...».

Все ускорители хранятся в одной глобальной карте GtkAccelMap, которую можно получить с помощью gtk_accel_map_get(). Дополнительные сведения см. в разделе отслеживания изменений.

Обработка ускорителей

Новые ускорители можно добавить с помощью gtk_accel_map_add_entry(). Для поиска конкретного ускорителя используйте gtk_accel_map_lookup_entry(). Изменения существующих ускорителей должны выполняться с помощью gtk_accel_map_change_entry().

Для предотвращения изменения некоторых ускорителей их можно заблокировать с помощью gtk_accel_map_lock_path(). Разблокировка выполняется с помощью gtk_accel_map_unlock_path().

Сохранение и загрузка карт ускорителей

Карты ускорителей могут быть сохранены и загружены из внешнего ресурса. Для простого сохранения и загрузки из файла используются gtk_accel_map_save() и gtk_accel_map_load(). Сохранение и загрузка также могут выполняться путем предоставления дескриптора файла для gtk_accel_map_save_fd() и gtk_accel_map_load_fd().

Отслеживание изменений

Объект GtkAccelMap полезен только для отслеживания изменений ускорителей. Подключив к сигналу “changed”, можно отслеживать изменения всех ускорителей. Также можно отслеживать только отдельный путь к ускорителю, используя его как деталь сигнала “changed”.

Функции

GtkAccelMapForeach ()

void
(*GtkAccelMapForeach) (gpointer data,
                       const gchar *accel_path,
                       guint accel_key,
                       GdkModifierType accel_mods,
                       gboolean changed);

Параметры

данные

Передаваемые пользователем данные в gtk_accel_map_foreach() или gtk_accel_map_foreach_unfiltered()

путь_акцелератора

Путь акцелератора текущего ускорителя

ключ_акцелератора

Ключ текущего ускорителя

модификаторы_акцелератора

Модификаторы текущего ускорителя

изменён

Флаг изменения ускорителя (если TRUE, ускоритель изменился во время выполнения и должен быть сохранён во время сохранения ускорителей)

gtk_accel_map_add_entry ()

void
gtk_accel_map_add_entry (const gchar *accel_path,
                         guint accel_key,
                         GdkModifierType accel_mods);

Регистрирует новый ускоритель в глобальной карте ускорителей. Эта функция должна вызываться только один раз на accel_path с каноническими accel_key и accel_mods для этого пути. Чтобы изменить ускоритель во время выполнения программно, используйте gtk_accel_map_change_entry().

Установите accel_key и accel_mods в 0, чтобы запросить удаление ускорителя.

Обратите внимание, что строка accel_path будет храниться в GQuark. Поэтому, если вы передаёте статическую строку, вы можете сэкономить память, предварительно интернировав её с помощью g_intern_static_string().

Параметры

путь_акцелератора

действительный путь ускорителя

ключ_акцелератора

ключ ускорителя

модификаторы_акцелератора

модификаторы ускорителя

gtk_accel_map_lookup_entry ()

gboolean
gtk_accel_map_lookup_entry (const gchar *accel_path,
                            GtkAccelKey *key);

Ищет запись ускорителя для accel_path и заполняет key .

Параметры

путь_акцелератора

действительный путь ускорителя

ключ

ключ ускорителя для заполнения (необязательно).

[allow-none][out]

Возвращаемое значение

TRUE, если accel_path известен, FALSE в противном случае

gtk_accel_map_change_entry ()

gboolean
gtk_accel_map_change_entry (const gchar *accel_path,
                            guint accel_key,
                            GdkModifierType accel_mods,
                            gboolean replace);

Изменяет accel_key и accel_mods, связанные с accel_path. Из-за конфликтов с другими ускорителями изменение может быть не всегда возможным, replace указывает, могут ли быть удалены другие ускорители для разрешения таких конфликтов. Изменение произойдёт только в случае, если все конфликты могут быть разрешены (что может не произойти, если конфликтующие ускорители заблокированы). Успешные изменения указываются возвращаемым значением TRUE.

Обратите внимание, что строка accel_path будет храниться в GQuark. Поэтому, если вы передаёте статическую строку, вы можете сэкономить память, предварительно интернировав её с помощью g_intern_static_string().

Параметры

путь_акцелератора

действительный путь ускорителя

ключ_акцелератора

новый ключ ускорителя

модификаторы_акцелератора

новые модификаторы ускорителя

замена

TRUE, если при конфликтах могут быть удалены другие ускорители

Возвращаемое значение

TRUE если ускоритель можно изменить, FALSE в противном случае

gtk_accel_map_load ()

void
gtk_accel_map_load (const gchar *file_name);

Парсит файл, ранее сохранённый с помощью gtk_accel_map_save(), для спецификаций ускорителей и соответствующим образом их распространяет.

Параметры

имя_файла

файл, содержащий спецификации ускорителей, в кодировке имён файлов GLib.

[type filename]

gtk_accel_map_save ()

void
gtk_accel_map_save (const gchar *file_name);

Сохраняет текущие спецификации ускорителей (путь, ключ и модификаторы) в file_name. Файл записывается в формате, пригодном для повторного чтения с помощью gtk_accel_map_load().

Параметры

имя_файла

имя файла, содержащего спецификации ускорителей, в кодировке имён файлов GLib.

[type filename]

gtk_accel_map_foreach ()

void
gtk_accel_map_foreach (gpointer data,
                       GtkAccelMapForeach foreach_func);

Проходит по записям в карте ускорителей, путь акцелератора которых не соответствует ни одному из фильтров, добавленных с помощью gtk_accel_map_add_filter(), и выполняет foreach_func для каждой. Подпись foreach_func такая же, как у GtkAccelMapForeach, параметр changed указывает, был ли этот ускоритель изменён во время выполнения (следовательно, должен быть сохранён при сохранении карты ускорителей).

Параметры

данные

данные, которые нужно передать в foreach_func .

[allow-none]

foreach_func

функция, которая должна быть выполнена для каждой записи карты ускорителей, которая не отфильтрована.

[scope call]

gtk_accel_map_load_fd ()

void
gtk_accel_map_load_fd (gint fd);

Вариант с дескриптором файла для gtk_accel_map_load().

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

Параметры

fd

действительный открытый для чтения дескриптор файла

gtk_accel_map_save_fd ()

void
gtk_accel_map_save_fd (gint fd);

Вариант с файловым дескриптором для gtk_accel_map_save().

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

Параметры

fd

действительный дескриптор записи файла

gtk_accel_map_load_scanner ()

void
gtk_accel_map_load_scanner (GScanner *scanner);

Вариант GScanner для gtk_accel_map_load().

Параметры

scanner

объект GScanner, которому уже предоставлен входной файл

gtk_accel_map_add_filter ()

void
gtk_accel_map_add_filter (const gchar *filter_pattern);

Добавляет фильтр в глобальный список фильтров путей акселераторов.

Записи карты акселераторов, путь акселератора которых соответствует одному из фильтров, пропускаются функцией gtk_accel_map_foreach().

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

Параметры

filter_pattern

шаблон (см. GPatternSpec)

gtk_accel_map_foreach_unfiltered ()

void
gtk_accel_map_foreach_unfiltered (gpointer data,
                                  GtkAccelMapForeach foreach_func);

Перебирает все записи в карте акселераторов и выполняет foreach_func для каждой. Подпись foreach_func соответствует GtkAccelMapForeach, параметр changed указывает, был ли данный акселератор изменён во время выполнения (поэтому он потребует сохранения при дампе карты акселераторов).

Параметры

data

данные, передаваемые в foreach_func

foreach_func

функция, выполняемая для каждой записи карты акселераторов.

[scope call]

gtk_accel_map_get ()

GtkAccelMap *
gtk_accel_map_get (void);

Возвращает объект глобальной карты акселераторов GtkAccelMap. Этот объект полезен только для уведомления об изменениях в карте акселераторов через сигнал ::changed; он не является параметром для других функций карты акселераторов.

Возвращает

глобальный объект GtkAccelMap.

[transfer none]

С: 2.4

gtk_accel_map_lock_path ()

void
gtk_accel_map_lock_path (const gchar *accel_path);

Заблокировать указанный путь акселератора. Если в карте акселераторов ещё нет записи для accel_path, создаётся новая.

Блокировка пути акселератора предотвращает изменение его акселератора во время выполнения. Разблокировать заблокированный путь акселератора можно с помощью gtk_accel_map_unlock_path(). Для получения информации об изменениях акселератора во время выполнения обратитесь к gtk_accel_map_change_entry().

Если вызов осуществляется более одного раза, accel_path остаётся заблокированным до тех пор, пока gtk_accel_map_unlock_path() не будет вызван эквивалентное количество раз.

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

Параметры

accel_path

действительный путь акселератора

С: 2.4

gtk_accel_map_unlock_path ()

void
gtk_accel_map_unlock_path (const gchar *accel_path);

Отменяет последний вызов gtk_accel_map_lock_path() для данного accel_path . Обратитесь к gtk_accel_map_lock_path() за информацией о блокировке путей акселераторов.

Параметры

accel_path

действительный путь акселератора

С: 2.4

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

GtkAccelMap

typedef struct _GtkAccelMap GtkAccelMap;

Подробности сигналов

Сигнал “changed”

void
user_function (GtkAccelMap    *object,
               gchar          *accel_path,
               guint           accel_key,
               GdkModifierType accel_mods,
               gpointer        user_data)

Уведомляет об изменении глобальной карты акселераторов. Путь также используется в качестве детали сигнала, поэтому можно подключиться к changed::accel_path.

Параметры

object

объект глобальной карты акселераторов

accel_path

путь изменённого акселератора

accel_key

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

accel_mods

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

user_data

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

Флаги: имеет детали

С: 2.4

См. также

GtkAccelGroup, GtkAccelKey, GtkUIManager, gtk_widget_set_accel_path(), gtk_menu_item_set_accel_path()

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/gtk3-Accelerator-Maps.html

Spec-Zone.ru

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