| Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte | 
|---|---|
| License | LGPL-2.1 | 
| Maintainer | Iñaki García Etxebarria | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
GI.Gtk.Objects.AccelMap
Description
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 accelMapGet. See
 [Monitoring changes][monitoring-changes] for additional
 details.
Manipulating accelerators
New accelerators can be added using accelMapAddEntry.
 To search for specific accelerator, use accelMapLookupEntry.
 Modifications of existing accelerators should be done using
 accelMapChangeEntry.
In order to avoid having some accelerators changed, they can be
 locked using accelMapLockPath. Unlocking is done using
 accelMapUnlockPath.
Saving and loading accelerator maps
Accelerator maps can be saved to and loaded from some external
 resource. For simple saving and loading from file,
 accelMapSave and accelMapLoad are provided.
 Saving and loading can also be done by providing file descriptor
 to accelMapSaveFd and accelMapLoadFd.
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.
Synopsis
- newtype AccelMap = AccelMap (ManagedPtr AccelMap)
 - class (GObject o, IsDescendantOf AccelMap o) => IsAccelMap o
 - toAccelMap :: (MonadIO m, IsAccelMap o) => o -> m AccelMap
 - accelMapAddEntry :: (HasCallStack, MonadIO m) => Text -> Word32 -> [ModifierType] -> m ()
 - accelMapAddFilter :: (HasCallStack, MonadIO m) => Text -> m ()
 - accelMapChangeEntry :: (HasCallStack, MonadIO m) => Text -> Word32 -> [ModifierType] -> Bool -> m Bool
 - accelMapForeach :: (HasCallStack, MonadIO m) => Ptr () -> AccelMapForeach -> m ()
 - accelMapForeachUnfiltered :: (HasCallStack, MonadIO m) => Ptr () -> AccelMapForeach -> m ()
 - accelMapGet :: (HasCallStack, MonadIO m) => m AccelMap
 - accelMapLoad :: (HasCallStack, MonadIO m) => [Char] -> m ()
 - accelMapLoadFd :: (HasCallStack, MonadIO m) => Int32 -> m ()
 - accelMapLoadScanner :: (HasCallStack, MonadIO m) => Scanner -> m ()
 - accelMapLockPath :: (HasCallStack, MonadIO m) => Text -> m ()
 - accelMapLookupEntry :: (HasCallStack, MonadIO m) => Text -> m (Bool, AccelKey)
 - accelMapSave :: (HasCallStack, MonadIO m) => [Char] -> m ()
 - accelMapSaveFd :: (HasCallStack, MonadIO m) => Int32 -> m ()
 - accelMapUnlockPath :: (HasCallStack, MonadIO m) => Text -> m ()
 - type AccelMapChangedCallback = Text -> Word32 -> [ModifierType] -> IO ()
 - type C_AccelMapChangedCallback = Ptr () -> CString -> Word32 -> CUInt -> Ptr () -> IO ()
 - afterAccelMapChanged :: (IsAccelMap a, MonadIO m) => a -> Maybe Text -> AccelMapChangedCallback -> m SignalHandlerId
 - genClosure_AccelMapChanged :: MonadIO m => AccelMapChangedCallback -> m (GClosure C_AccelMapChangedCallback)
 - mk_AccelMapChangedCallback :: C_AccelMapChangedCallback -> IO (FunPtr C_AccelMapChangedCallback)
 - noAccelMapChangedCallback :: Maybe AccelMapChangedCallback
 - onAccelMapChanged :: (IsAccelMap a, MonadIO m) => a -> Maybe Text -> AccelMapChangedCallback -> m SignalHandlerId
 - wrap_AccelMapChangedCallback :: AccelMapChangedCallback -> C_AccelMapChangedCallback
 
Exported types
Memory-managed wrapper type.
Constructors
| AccelMap (ManagedPtr AccelMap) | 
Instances
| Eq AccelMap Source # | |
| IsGValue AccelMap Source # | Convert   | 
| GObject AccelMap Source # | |
Defined in GI.Gtk.Objects.AccelMap Methods gobjectType :: IO GType #  | |
| HasParentTypes AccelMap Source # | |
Defined in GI.Gtk.Objects.AccelMap  | |
| type ParentTypes AccelMap Source # | |
Defined in GI.Gtk.Objects.AccelMap  | |
class (GObject o, IsDescendantOf AccelMap o) => IsAccelMap o Source #
Type class for types which can be safely cast to AccelMap, for instance with toAccelMap.
Instances
| (GObject o, IsDescendantOf AccelMap o) => IsAccelMap o Source # | |
Defined in GI.Gtk.Objects.AccelMap  | |
toAccelMap :: (MonadIO m, IsAccelMap o) => o -> m AccelMap Source #
Methods
Overloaded methods
addEntry
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text | 
  | 
| -> Word32 | 
  | 
| -> [ModifierType] | 
  | 
| -> m () | 
Registers a new accelerator with the global accelerator map.
 This function should only be called once per accelPath
 with the canonical accelKey and accelMods for this path.
 To change the accelerator during runtime programatically, use
 accelMapChangeEntry.
Set accelKey and accelMods to 0 to request a removal of
 the accelerator.
Note that accelPath string will be stored in a GQuark. Therefore, if you
 pass a static string, you can save some memory by interning it first with
 internStaticString.
addFilter
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text | 
  | 
| -> m () | 
Adds a filter to the global list of accel path filters.
Accel map entries whose accel path matches one of the filters
 are skipped by accelMapForeach.
This function is intended for GTK+ modules that create their own menus, but don’t want them to be saved into the applications accelerator map dump.
changeEntry
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text | 
  | 
| -> Word32 | 
  | 
| -> [ModifierType] | 
  | 
| -> Bool | 
  | 
| -> m Bool | Returns:   | 
Changes the accelKey and accelMods currently associated with accelPath.
 Due to conflicts with other accelerators, a change may not always be possible,
 replace indicates whether other accelerators may be deleted to resolve such
 conflicts. A change will only occur if all conflicts could be resolved (which
 might not be the case if conflicting accelerators are locked). Successful
 changes are indicated by a True return value.
Note that accelPath string will be stored in a GQuark. Therefore, if you
 pass a static string, you can save some memory by interning it first with
 internStaticString.
foreach
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () | 
  | 
| -> AccelMapForeach | 
  | 
| -> m () | 
Loops over the entries in the accelerator map whose accel path
 doesn’t match any of the filters added with accelMapAddFilter,
 and execute foreachFunc on each. The signature of foreachFunc is
 that of AccelMapForeach, the changed parameter indicates whether
 this accelerator was changed during runtime (thus, would need
 saving during an accelerator map dump).
foreachUnfiltered
accelMapForeachUnfiltered Source #
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () | 
  | 
| -> AccelMapForeach | 
  | 
| -> m () | 
Loops over all entries in the accelerator map, and execute
 foreachFunc on each. The signature of foreachFunc is that of
 AccelMapForeach, the changed parameter indicates whether
 this accelerator was changed during runtime (thus, would need
 saving during an accelerator map dump).
get
Arguments
| :: (HasCallStack, MonadIO m) | |
| => m AccelMap | Returns: the global   | 
load
Arguments
| :: (HasCallStack, MonadIO m) | |
| => [Char] | 
  | 
| -> m () | 
Parses a file previously saved with accelMapSave for
 accelerator specifications, and propagates them accordingly.
loadFd
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Int32 | 
  | 
| -> m () | 
Filedescriptor variant of accelMapLoad.
Note that the file descriptor will not be closed by this function.
loadScanner
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Scanner | 
  | 
| -> m () | 
Scanner variant of accelMapLoad.
lockPath
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text | 
  | 
| -> m () | 
Locks the given accelerator path. If the accelerator map doesn’t yet contain
 an entry for accelPath, a new one is created.
Locking an accelerator path prevents its accelerator from being changed
 during runtime. A locked accelerator path can be unlocked by
 accelMapUnlockPath. Refer to accelMapChangeEntry
 for information about runtime accelerator changes.
If called more than once, accelPath remains locked until
 accelMapUnlockPath has been called an equivalent number
 of times.
Note that locking of individual accelerator paths is independent from
 locking the AccelGroup containing them. For runtime accelerator
 changes to be possible, both the accelerator path and its AccelGroup
 have to be unlocked.
Since: 2.4
lookupEntry
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text | 
  | 
| -> m (Bool, AccelKey) | Returns:   | 
Looks up the accelerator entry for accelPath and fills in key.
save
Arguments
| :: (HasCallStack, MonadIO m) | |
| => [Char] | 
  | 
| -> m () | 
Saves current accelerator specifications (accelerator path, key
 and modifiers) to fileName.
 The file is written in a format suitable to be read back in by
 accelMapLoad.
saveFd
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Int32 | 
  | 
| -> m () | 
Filedescriptor variant of accelMapSave.
Note that the file descriptor will not be closed by this function.
unlockPath
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text | 
  | 
| -> m () | 
Undoes the last call to accelMapLockPath on this accelPath.
 Refer to accelMapLockPath for information about accelerator path locking.
Since: 2.4
Signals
changed
type AccelMapChangedCallback Source #
Arguments
| = Text | 
  | 
| -> Word32 | 
  | 
| -> [ModifierType] | 
  | 
| -> IO () | 
Notifies of a change in the global accelerator map.
 The path is also used as the detail for the signal,
 so it is possible to connect to
 changed::accel_path.
Since: 2.4
type C_AccelMapChangedCallback = Ptr () -> CString -> Word32 -> CUInt -> Ptr () -> IO () Source #
Type for the callback on the (unwrapped) C side.
afterAccelMapChanged :: (IsAccelMap a, MonadIO m) => a -> Maybe Text -> AccelMapChangedCallback -> m SignalHandlerId Source #
Connect a signal handler for the changed signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after accelMap #changed callback
This signal admits a optional parameter detail.
 If it's not Nothing, we will connect to “changed::detail” instead.
genClosure_AccelMapChanged :: MonadIO m => AccelMapChangedCallback -> m (GClosure C_AccelMapChangedCallback) Source #
Wrap the callback into a GClosure.
mk_AccelMapChangedCallback :: C_AccelMapChangedCallback -> IO (FunPtr C_AccelMapChangedCallback) Source #
Generate a function pointer callable from C code, from a C_AccelMapChangedCallback.
noAccelMapChangedCallback :: Maybe AccelMapChangedCallback Source #
A convenience synonym for .Nothing :: Maybe AccelMapChangedCallback
onAccelMapChanged :: (IsAccelMap a, MonadIO m) => a -> Maybe Text -> AccelMapChangedCallback -> m SignalHandlerId Source #
Connect a signal handler for the changed signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on accelMap #changed callback
This signal admits a optional parameter detail.
 If it's not Nothing, we will connect to “changed::detail” instead.