68 lines
2.2 KiB
C
68 lines
2.2 KiB
C
![]() |
#import "MASShortcutMonitor.h"
|
|||
|
|
|||
|
/**
|
|||
|
Binds actions to user defaults keys.
|
|||
|
|
|||
|
If you store shortcuts in user defaults (for example by binding
|
|||
|
a `MASShortcutView` to user defaults), you can use this class to
|
|||
|
connect an action directly to a user defaults key. If the shortcut
|
|||
|
stored under the key changes, the action will get automatically
|
|||
|
updated to the new one.
|
|||
|
|
|||
|
This class is mostly a wrapper around a `MASShortcutMonitor`. It
|
|||
|
watches the changes in user defaults and updates the shortcut monitor
|
|||
|
accordingly with the new shortcuts.
|
|||
|
*/
|
|||
|
@interface MASShortcutBinder : NSObject
|
|||
|
|
|||
|
/**
|
|||
|
A convenience shared instance.
|
|||
|
|
|||
|
You may use it so that you don’t have to manage an instance by hand,
|
|||
|
but it’s perfectly fine to allocate and use a separate instance instead.
|
|||
|
*/
|
|||
|
+ (instancetype) sharedBinder;
|
|||
|
|
|||
|
/**
|
|||
|
The underlying shortcut monitor.
|
|||
|
*/
|
|||
|
@property(strong) MASShortcutMonitor *shortcutMonitor;
|
|||
|
|
|||
|
/**
|
|||
|
Binding options customizing the access to user defaults.
|
|||
|
|
|||
|
As an example, you can use `NSValueTransformerNameBindingOption` to customize
|
|||
|
the storage format used for the shortcuts. By default the shortcuts are converted
|
|||
|
from `NSData` (`NSKeyedUnarchiveFromDataTransformerName`). Note that if the
|
|||
|
binder is to work with `MASShortcutView`, both object have to use the same storage
|
|||
|
format.
|
|||
|
*/
|
|||
|
@property(copy) NSDictionary *bindingOptions;
|
|||
|
|
|||
|
/**
|
|||
|
Binds given action to a shortcut stored under the given defaults key.
|
|||
|
|
|||
|
In other words, no matter what shortcut you store under the given key,
|
|||
|
pressing it will always trigger the given action.
|
|||
|
*/
|
|||
|
- (void) bindShortcutWithDefaultsKey: (NSString*) defaultsKeyName toAction: (dispatch_block_t) action;
|
|||
|
|
|||
|
/**
|
|||
|
Disconnect the binding between user defaults and action.
|
|||
|
|
|||
|
In other words, the shortcut stored under the given key will no longer trigger an action.
|
|||
|
*/
|
|||
|
- (void) breakBindingWithDefaultsKey: (NSString*) defaultsKeyName;
|
|||
|
|
|||
|
/**
|
|||
|
Register default shortcuts in user defaults.
|
|||
|
|
|||
|
This is a convenience frontent to `[NSUserDefaults registerDefaults]`.
|
|||
|
The dictionary should contain a map of user defaults’ keys to appropriate
|
|||
|
keyboard shortcuts. The shortcuts will be transformed according to
|
|||
|
`bindingOptions` and registered using `registerDefaults`.
|
|||
|
*/
|
|||
|
- (void) registerDefaultShortcuts: (NSDictionary*) defaultShortcuts;
|
|||
|
|
|||
|
@end
|