Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Signals

Карта акселераторов

Accelerator Maps спецификация загружаемых акселераторов клавиатуры

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

#include <gtk/gtk.h> GtkAccelMap; void (*GtkAccelMapForeach) (gpointer data, const gchar *accel_path, guint accel_key, GdkModifierType accel_mods, gboolean changed); void gtk_accel_map_add_entry (const gchar *accel_path, guint accel_key, GdkModifierType accel_mods); gboolean gtk_accel_map_lookup_entry (const gchar *accel_path, GtkAccelKey *key); gboolean gtk_accel_map_change_entry (const gchar *accel_path, guint accel_key, GdkModifierType accel_mods, gboolean replace); void gtk_accel_map_load (const gchar *file_name); void gtk_accel_map_save (const gchar *file_name); void gtk_accel_map_foreach (gpointer data, GtkAccelMapForeach foreach_func); void gtk_accel_map_load_fd (gint fd); void gtk_accel_map_save_fd (gint fd); void gtk_accel_map_load_scanner (GScanner *scanner); void gtk_accel_map_add_filter (const gchar *filter_pattern); void gtk_accel_map_foreach_unfiltered (gpointer data, GtkAccelMapForeach foreach_func); GtkAccelMap* gtk_accel_map_get (void); void gtk_accel_map_lock_path (const gchar *accel_path); void gtk_accel_map_unlock_path (const gchar *accel_path);

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

GObject +----GtkAccelMap

Сигналы

"changed" void user_function (GtkAccelMap *object, gchar *accel_path, guint accel_key, GdkModifierType accel_mods, gpointer user_data) : Run last / Has details

Описание

Детали

GtkAccelMap

typedef struct _GtkAccelMap GtkAccelMap;

GtkAccelMapForeach ()

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

data :

accel_path :

accel_key :

accel_mods :

changed :


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(). Путь акселератора должен состоять из "<WINDOWTYPE>/Category1/Category2/.../Action", где <WINDOWTYPE> должен быть уникальным, определённым приложением, идентификатором, который соответствует виду окна использующего акселератор, например "Gimp-Image", "Abiword-Document" или "Gnumeric-Settings". Часть Category1/.../Action наиболее соответствует действию выбранному акселератору, то есть акселераторам пунктов меню, например "File/Save As", "Image/View/Zoom" или "Edit/Select All". Таким образом, действительный полный путь акселератора может выглядеть так: "<Gimp-Toolbox>/File/Dialogs/Tool Options...".

accel_path :

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

accel_key :

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

accel_mods :

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


gtk_accel_map_lookup_entry ()

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

Просматривает введенный акселератор для accel_path и заполняет key.

accel_path :

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

key :

Заполняемый клавиатурный акселератор (выборочно)

Возвращает :

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 :

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

accel_key :

Новый ключевой акселератор

accel_mods :

Новый модификатор акселератора

replace :

TRUE если конфликтующий акселератор может быть удалён

Возвращает :

TRUE если акселератор был изменён, иначе FALSE


gtk_accel_map_load ()

void        gtk_accel_map_load              (const gchar *file_name);

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

file_name :

Файл содержащий спецификацию акселераторов, имя файла закодировано в Glib


gtk_accel_map_save ()

void        gtk_accel_map_save              (const gchar *file_name);

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

file_name :

Имя файла содержащего спецификацию акселераторов, имя файла закодировано в GLib


gtk_accel_map_foreach ()

void gtk_accel_map_foreach (gpointer data, GtkAccelMapForeach foreach_func);

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

data :

Данные помещаемые в foreach_func

foreach_func :

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


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 :

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


gtk_accel_map_get ()

GtkAccelMap* gtk_accel_map_get              (void);

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

Возвращает :

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

Начиная с версии 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

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

Сигнал "changed"

void user_function (GtkAccelMap *object, gchar *accel_path, guint accel_key, GdkModifierType accel_mods, gpointer user_data) : Run last / Has details

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

object :

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

accel_path :

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

accel_key :

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

accel_mods :

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

user_data :

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

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