Accelerator maps are used to define runtime configurable accelerators.
Functions for manipulating them are are usually used by higher level convenience mechanisms like
UIManager and are thus considered “low-level”. You’ll want to use them if you’re
manually creating menus that should have user-configurable accelerators.
An accelerator is uniquely defined by: - accelerator path - accelerator key - accelerator modifiers
The accelerator path must consist of “<WINDOWTYPE>/Category1/Category2/.../Action”, where WINDOWTYPE should be a unique
application-specific identifier that corresponds to the kind of window the accelerator is being used in, e.g. “Gimp-Image”,
“Abiword-Document” or “Gnumeric-Settings”. The “Category1/.../Action” portion is most appropriately chosen by the action the
accelerator triggers, i.e. for accelerators on menu items, choose the item’s menu path, e.g. “File/Save As”, “Image/View/Zoom”
or “Edit/Select All”. So a full valid accelerator path may look like: “<Gimp-Toolbox>/File/Dialogs/Tool Options...”.
All accelerators are stored inside one global AccelMap that can be obtained using
@get. See Monitoring changes for additional details.
Manipulating accelerators
New accelerators can be added using add_entry. To search for specific
accelerator, use lookup_entry. Modifications of existing accelerators
should be done using change_entry.
In order to avoid having some accelerators changed, they can be locked using
lock_path. Unlocking is done using unlock_path.
Saving and loading accelerator maps
Accelerator maps can be saved to and loaded from some external resource. For simple saving and loading from file,
save and load are
provided. Saving and loading can also be done by providing file descriptor to
save_fd and load_fd.
Monitoring changes
AccelMap object is only useful for monitoring changes of accelerators. By connecting to
changed signal, one can monitor changes of all accelerators. It is also possible to
monitor only single accelerator path by using it as a detail of the changed
signal.
Loops over the entries in the accelerator map whose accel path
doesn’t match any of the filters added with add_filter, and execute
foreach_func on each.