aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2016-11-22 00:14:08 -0500
committerTeddy Wing2016-11-22 00:14:08 -0500
commit135cc2889ee7878a58ed2e1e5be7d5bc4f154137 (patch)
treebaad8b33e122af6dacad8451b3c57589832ac6f6
parent7677b59543a8d2edc9a28f77f26ebb02492e2b5c (diff)
parentab43ce8f30cd6b286e002ee734344e50ba816c18 (diff)
downloadLow-Battery-Yup-135cc2889ee7878a58ed2e1e5be7d5bc4f154137.tar.bz2
Merge branch 'register-global-hotkey'
-rw-r--r--DDHotKey/DDHotKeyCenter.h93
-rw-r--r--DDHotKey/DDHotKeyCenter.m284
-rw-r--r--DDHotKey/DDHotKeyTextField.h20
-rw-r--r--DDHotKey/DDHotKeyTextField.m138
-rw-r--r--DDHotKey/DDHotKeyUtilities.h14
-rw-r--r--DDHotKey/DDHotKeyUtilities.m144
-rw-r--r--Low Battery Yup d/AppDelegate.h7
-rw-r--r--Low Battery Yup d/AppDelegate.m24
-rw-r--r--Low Battery Yup d/main.m6
-rw-r--r--Low Battery Yup.d.xcodeproj/project.pbxproj36
-rw-r--r--Low Battery Yup/AppDelegate.m5
-rw-r--r--Low Battery Yup/en.lproj/MainMenu.xib1571
12 files changed, 862 insertions, 1480 deletions
diff --git a/DDHotKey/DDHotKeyCenter.h b/DDHotKey/DDHotKeyCenter.h
new file mode 100644
index 0000000..6f79bbb
--- /dev/null
+++ b/DDHotKey/DDHotKeyCenter.h
@@ -0,0 +1,93 @@
+/*
+ DDHotKey -- DDHotKeyCenter.h
+
+ Copyright (c) Dave DeLong <http://www.davedelong.com>
+
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+ The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+//a convenient typedef for the required signature of a hotkey block callback
+typedef void (^DDHotKeyTask)(NSEvent*);
+
+@interface DDHotKey : NSObject
+
+// creates a new hotkey but does not register it
++ (instancetype)hotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task;
+
+@property (nonatomic, assign, readonly) id target;
+@property (nonatomic, readonly) SEL action;
+@property (nonatomic, strong, readonly) id object;
+@property (nonatomic, copy, readonly) DDHotKeyTask task;
+
+@property (nonatomic, readonly) unsigned short keyCode;
+@property (nonatomic, readonly) NSUInteger modifierFlags;
+
+@end
+
+#pragma mark -
+
+@interface DDHotKeyCenter : NSObject
+
++ (instancetype)sharedHotKeyCenter;
+
+/**
+ Register a hotkey.
+ */
+- (DDHotKey *)registerHotKey:(DDHotKey *)hotKey;
+
+/**
+ Register a target/action hotkey.
+ The modifierFlags must be a bitwise OR of NSCommandKeyMask, NSAlternateKeyMask, NSControlKeyMask, or NSShiftKeyMask;
+ Returns the hotkey registered. If registration failed, returns nil.
+ */
+- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags target:(id)target action:(SEL)action object:(id)object;
+
+/**
+ Register a block callback hotkey.
+ The modifierFlags must be a bitwise OR of NSCommandKeyMask, NSAlternateKeyMask, NSControlKeyMask, or NSShiftKeyMask;
+ Returns the hotkey registered. If registration failed, returns nil.
+ */
+- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task;
+
+/**
+ See if a hotkey exists with the specified keycode and modifier flags.
+ NOTE: this will only check among hotkeys you have explicitly registered with DDHotKeyCenter. This does not check all globally registered hotkeys.
+ */
+- (BOOL)hasRegisteredHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags;
+
+/**
+ Unregister a specific hotkey
+ */
+- (void)unregisterHotKey:(DDHotKey *)hotKey;
+
+/**
+ Unregister all hotkeys
+ */
+- (void)unregisterAllHotKeys;
+
+/**
+ Unregister all hotkeys with a specific target
+ */
+- (void)unregisterHotKeysWithTarget:(id)target;
+
+/**
+ Unregister all hotkeys with a specific target and action
+ */
+- (void)unregisterHotKeysWithTarget:(id)target action:(SEL)action;
+
+/**
+ Unregister a hotkey with a specific keycode and modifier flags
+ */
+- (void)unregisterHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags;
+
+/**
+ Returns a set of currently registered hotkeys
+ **/
+- (NSSet *)registeredHotKeys;
+
+@end
+
diff --git a/DDHotKey/DDHotKeyCenter.m b/DDHotKey/DDHotKeyCenter.m
new file mode 100644
index 0000000..e2d5997
--- /dev/null
+++ b/DDHotKey/DDHotKeyCenter.m
@@ -0,0 +1,284 @@
+/*
+ DDHotKey -- DDHotKeyCenter.m
+
+ Copyright (c) Dave DeLong <http://www.davedelong.com>
+
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+ The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
+ */
+
+#import <Carbon/Carbon.h>
+#import <objc/runtime.h>
+
+#import "DDHotKeyCenter.h"
+#import "DDHotKeyUtilities.h"
+
+#pragma mark Private Global Declarations
+
+OSStatus dd_hotKeyHandler(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData);
+
+#pragma mark DDHotKey
+
+@interface DDHotKey ()
+
+@property (nonatomic, retain) NSValue *hotKeyRef;
+@property (nonatomic) UInt32 hotKeyID;
+
+
+@property (nonatomic, assign, setter = _setTarget:) id target;
+@property (nonatomic, setter = _setAction:) SEL action;
+@property (nonatomic, strong, setter = _setObject:) id object;
+@property (nonatomic, copy, setter = _setTask:) DDHotKeyTask task;
+
+@property (nonatomic, setter = _setKeyCode:) unsigned short keyCode;
+@property (nonatomic, setter = _setModifierFlags:) NSUInteger modifierFlags;
+
+@end
+
+@implementation DDHotKey
+
++ (instancetype)hotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task {
+ DDHotKey *newHotKey = [[self alloc] init];
+ [newHotKey _setTask:task];
+ [newHotKey _setKeyCode:keyCode];
+ [newHotKey _setModifierFlags:flags];
+ return newHotKey;
+}
+
+- (void) dealloc {
+ [[DDHotKeyCenter sharedHotKeyCenter] unregisterHotKey:self];
+}
+
+- (NSUInteger)hash {
+ return [self keyCode] ^ [self modifierFlags];
+}
+
+- (BOOL)isEqual:(id)object {
+ BOOL equal = NO;
+ if ([object isKindOfClass:[DDHotKey class]]) {
+ equal = ([object keyCode] == [self keyCode]);
+ equal &= ([object modifierFlags] == [self modifierFlags]);
+ }
+ return equal;
+}
+
+- (NSString *)description {
+ NSMutableArray *bits = [NSMutableArray array];
+ if ((_modifierFlags & NSControlKeyMask) > 0) { [bits addObject:@"NSControlKeyMask"]; }
+ if ((_modifierFlags & NSCommandKeyMask) > 0) { [bits addObject:@"NSCommandKeyMask"]; }
+ if ((_modifierFlags & NSShiftKeyMask) > 0) { [bits addObject:@"NSShiftKeyMask"]; }
+ if ((_modifierFlags & NSAlternateKeyMask) > 0) { [bits addObject:@"NSAlternateKeyMask"]; }
+
+ NSString *flags = [NSString stringWithFormat:@"(%@)", [bits componentsJoinedByString:@" | "]];
+ NSString *invokes = @"(block)";
+ if ([self target] != nil && [self action] != nil) {
+ invokes = [NSString stringWithFormat:@"[%@ %@]", [self target], NSStringFromSelector([self action])];
+ }
+ return [NSString stringWithFormat:@"%@\n\t(key: %hu\n\tflags: %@\n\tinvokes: %@)", [super description], [self keyCode], flags, invokes];
+}
+
+- (void)invokeWithEvent:(NSEvent *)event {
+ if (_target != nil && _action != nil && [_target respondsToSelector:_action]) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+ [_target performSelector:_action withObject:event withObject:_object];
+#pragma clang diagnostic pop
+ } else if (_task != nil) {
+ _task(event);
+ }
+}
+
+@end
+
+#pragma mark DDHotKeyCenter
+
+static DDHotKeyCenter *sharedHotKeyCenter = nil;
+
+@implementation DDHotKeyCenter {
+ NSMutableSet *_registeredHotKeys;
+ UInt32 _nextHotKeyID;
+}
+
++ (instancetype)sharedHotKeyCenter {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ sharedHotKeyCenter = [super allocWithZone:nil];
+ sharedHotKeyCenter = [sharedHotKeyCenter init];
+
+ EventTypeSpec eventSpec;
+ eventSpec.eventClass = kEventClassKeyboard;
+ eventSpec.eventKind = kEventHotKeyReleased;
+ InstallApplicationEventHandler(&dd_hotKeyHandler, 1, &eventSpec, NULL, NULL);
+ });
+ return sharedHotKeyCenter;
+}
+
++ (id)allocWithZone:(NSZone *)zone {
+ return sharedHotKeyCenter;
+}
+
+- (id)init {
+ if (self != sharedHotKeyCenter) { return sharedHotKeyCenter; }
+
+ self = [super init];
+ if (self) {
+ _registeredHotKeys = [[NSMutableSet alloc] init];
+ _nextHotKeyID = 1;
+ }
+ return self;
+}
+
+- (NSSet *)hotKeysMatching:(BOOL(^)(DDHotKey *hotkey))matcher {
+ NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
+ return matcher(evaluatedObject);
+ }];
+ return [_registeredHotKeys filteredSetUsingPredicate:predicate];
+}
+
+- (BOOL)hasRegisteredHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags {
+ return [self hotKeysMatching:^BOOL(DDHotKey *hotkey) {
+ return hotkey.keyCode == keyCode && hotkey.modifierFlags == flags;
+ }].count > 0;
+}
+
+- (DDHotKey *)_registerHotKey:(DDHotKey *)hotKey {
+ if ([_registeredHotKeys containsObject:hotKey]) {
+ return hotKey;
+ }
+
+ EventHotKeyID keyID;
+ keyID.signature = 'htk1';
+ keyID.id = _nextHotKeyID;
+
+ EventHotKeyRef carbonHotKey;
+ UInt32 flags = DDCarbonModifierFlagsFromCocoaModifiers([hotKey modifierFlags]);
+ OSStatus err = RegisterEventHotKey([hotKey keyCode], flags, keyID, GetEventDispatcherTarget(), 0, &carbonHotKey);
+
+ //error registering hot key
+ if (err != 0) { return nil; }
+
+ NSValue *refValue = [NSValue valueWithPointer:carbonHotKey];
+ [hotKey setHotKeyRef:refValue];
+ [hotKey setHotKeyID:_nextHotKeyID];
+
+ _nextHotKeyID++;
+ [_registeredHotKeys addObject:hotKey];
+
+ return hotKey;
+}
+
+- (DDHotKey *)registerHotKey:(DDHotKey *)hotKey {
+ return [self _registerHotKey:hotKey];
+}
+
+- (void)unregisterHotKey:(DDHotKey *)hotKey {
+ NSValue *hotKeyRef = [hotKey hotKeyRef];
+ if (hotKeyRef) {
+ EventHotKeyRef carbonHotKey = (EventHotKeyRef)[hotKeyRef pointerValue];
+ UnregisterEventHotKey(carbonHotKey);
+ [hotKey setHotKeyRef:nil];
+ }
+
+ [_registeredHotKeys removeObject:hotKey];
+}
+
+- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task {
+ //we can't add a new hotkey if something already has this combo
+ if ([self hasRegisteredHotKeyWithKeyCode:keyCode modifierFlags:flags]) { return NO; }
+
+ DDHotKey *newHotKey = [[DDHotKey alloc] init];
+ [newHotKey _setTask:task];
+ [newHotKey _setKeyCode:keyCode];
+ [newHotKey _setModifierFlags:flags];
+
+ return [self _registerHotKey:newHotKey];
+}
+
+- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags target:(id)target action:(SEL)action object:(id)object {
+ //we can't add a new hotkey if something already has this combo
+ if ([self hasRegisteredHotKeyWithKeyCode:keyCode modifierFlags:flags]) { return NO; }
+
+ //build the hotkey object:
+ DDHotKey *newHotKey = [[DDHotKey alloc] init];
+ [newHotKey _setTarget:target];
+ [newHotKey _setAction:action];
+ [newHotKey _setObject:object];
+ [newHotKey _setKeyCode:keyCode];
+ [newHotKey _setModifierFlags:flags];
+ return [self _registerHotKey:newHotKey];
+}
+
+- (void)unregisterHotKeysMatching:(BOOL(^)(DDHotKey *hotkey))matcher {
+ //explicitly unregister the hotkey, since relying on the unregistration in -dealloc can be problematic
+ @autoreleasepool {
+ NSSet *matches = [self hotKeysMatching:matcher];
+ for (DDHotKey *hotKey in matches) {
+ [self unregisterHotKey:hotKey];
+ }
+ }
+}
+
+- (void)unregisterHotKeysWithTarget:(id)target {
+ [self unregisterHotKeysMatching:^BOOL(DDHotKey *hotkey) {
+ return hotkey.target == target;
+ }];
+}
+
+- (void)unregisterHotKeysWithTarget:(id)target action:(SEL)action {
+ [self unregisterHotKeysMatching:^BOOL(DDHotKey *hotkey) {
+ return hotkey.target == target && sel_isEqual(hotkey.action, action);
+ }];
+}
+
+- (void)unregisterHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags {
+ [self unregisterHotKeysMatching:^BOOL(DDHotKey *hotkey) {
+ return hotkey.keyCode == keyCode && hotkey.modifierFlags == flags;
+ }];
+}
+
+- (void)unregisterAllHotKeys {
+ NSSet *keys = [_registeredHotKeys copy];
+ for (DDHotKey *key in keys) {
+ [self unregisterHotKey:key];
+ }
+}
+
+- (NSSet *)registeredHotKeys {
+ return [self hotKeysMatching:^BOOL(DDHotKey *hotkey) {
+ return hotkey.hotKeyRef != NULL;
+ }];
+}
+
+@end
+
+OSStatus dd_hotKeyHandler(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData) {
+ @autoreleasepool {
+ EventHotKeyID hotKeyID;
+ GetEventParameter(theEvent, kEventParamDirectObject, typeEventHotKeyID, NULL, sizeof(hotKeyID), NULL, &hotKeyID);
+
+ UInt32 keyID = hotKeyID.id;
+
+ NSSet *matchingHotKeys = [[DDHotKeyCenter sharedHotKeyCenter] hotKeysMatching:^BOOL(DDHotKey *hotkey) {
+ return hotkey.hotKeyID == keyID;
+ }];
+ if ([matchingHotKeys count] > 1) { NSLog(@"ERROR!"); }
+ DDHotKey *matchingHotKey = [matchingHotKeys anyObject];
+
+ NSEvent *event = [NSEvent eventWithEventRef:theEvent];
+ NSEvent *keyEvent = [NSEvent keyEventWithType:NSKeyUp
+ location:[event locationInWindow]
+ modifierFlags:[event modifierFlags]
+ timestamp:[event timestamp]
+ windowNumber:-1
+ context:nil
+ characters:@""
+ charactersIgnoringModifiers:@""
+ isARepeat:NO
+ keyCode:[matchingHotKey keyCode]];
+
+ [matchingHotKey invokeWithEvent:keyEvent];
+ }
+
+ return noErr;
+}
diff --git a/DDHotKey/DDHotKeyTextField.h b/DDHotKey/DDHotKeyTextField.h
new file mode 100644
index 0000000..c399d62
--- /dev/null
+++ b/DDHotKey/DDHotKeyTextField.h
@@ -0,0 +1,20 @@
+/*
+ DDHotKey -- DDHotKeyTextField.h
+
+ Copyright (c) Dave DeLong <http://www.davedelong.com>
+
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+ The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
+ */
+
+#import <Foundation/Foundation.h>
+#import "DDHotKeyCenter.h"
+
+@interface DDHotKeyTextField : NSTextField
+
+@property (nonatomic, strong) DDHotKey *hotKey;
+
+@end
+
+@interface DDHotKeyTextFieldCell : NSTextFieldCell @end \ No newline at end of file
diff --git a/DDHotKey/DDHotKeyTextField.m b/DDHotKey/DDHotKeyTextField.m
new file mode 100644
index 0000000..4f3da2b
--- /dev/null
+++ b/DDHotKey/DDHotKeyTextField.m
@@ -0,0 +1,138 @@
+/*
+ DDHotKey -- DDHotKeyTextField.m
+
+ Copyright (c) Dave DeLong <http://www.davedelong.com>
+
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+ The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
+ */
+
+#import <Carbon/Carbon.h>
+
+#import "DDHotKeyTextField.h"
+#import "DDHotKeyUtilities.h"
+
+@interface DDHotKeyTextFieldEditor : NSTextView
+
+@property (nonatomic, weak) DDHotKeyTextField *hotKeyField;
+
+@end
+
+static DDHotKeyTextFieldEditor *DDFieldEditor(void);
+static DDHotKeyTextFieldEditor *DDFieldEditor(void) {
+ static DDHotKeyTextFieldEditor *editor;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ editor = [[DDHotKeyTextFieldEditor alloc] initWithFrame:NSMakeRect(0, 0, 100, 32)];
+ [editor setFieldEditor:YES];
+ });
+ return editor;
+}
+
+@implementation DDHotKeyTextFieldCell
+
+- (NSTextView *)fieldEditorForView:(NSView *)view {
+ if ([view isKindOfClass:[DDHotKeyTextField class]]) {
+ DDHotKeyTextFieldEditor *editor = DDFieldEditor();
+ editor.insertionPointColor = editor.backgroundColor;
+ editor.hotKeyField = (DDHotKeyTextField *)view;
+ return editor;
+ }
+ return nil;
+}
+
+@end
+
+@implementation DDHotKeyTextField
+
++ (Class)cellClass {
+ return [DDHotKeyTextFieldCell class];
+}
+
+- (void)setHotKey:(DDHotKey *)hotKey {
+ if (_hotKey != hotKey) {
+ _hotKey = hotKey;
+ [super setStringValue:[DDStringFromKeyCode(hotKey.keyCode, hotKey.modifierFlags) uppercaseString]];
+ }
+}
+
+- (void)setStringValue:(NSString *)aString {
+ NSLog(@"-[DDHotKeyTextField setStringValue:] is not what you want. Use -[DDHotKeyTextField setHotKey:] instead.");
+ [super setStringValue:aString];
+}
+
+- (NSString *)stringValue {
+ NSLog(@"-[DDHotKeyTextField stringValue] is not what you want. Use -[DDHotKeyTextField hotKey] instead.");
+ return [super stringValue];
+}
+
+@end
+
+@implementation DDHotKeyTextFieldEditor {
+ BOOL _hasSeenKeyDown;
+ id _globalMonitor;
+ DDHotKey *_originalHotKey;
+}
+
+- (void)setHotKeyField:(DDHotKeyTextField *)hotKeyField {
+ _hotKeyField = hotKeyField;
+ _originalHotKey = _hotKeyField.hotKey;
+}
+
+- (void)processHotkeyEvent:(NSEvent *)event {
+ NSUInteger flags = event.modifierFlags;
+ BOOL hasModifier = (flags & (NSCommandKeyMask | NSAlternateKeyMask | NSControlKeyMask | NSShiftKeyMask | NSFunctionKeyMask)) > 0;
+
+ if (event.type == NSKeyDown) {
+ _hasSeenKeyDown = YES;
+ unichar character = [event.charactersIgnoringModifiers characterAtIndex:0];
+
+
+ if (hasModifier == NO && ([[NSCharacterSet newlineCharacterSet] characterIsMember:character] || event.keyCode == kVK_Escape)) {
+ if (event.keyCode == kVK_Escape) {
+ self.hotKeyField.hotKey = _originalHotKey;
+
+ NSString *str = DDStringFromKeyCode(_originalHotKey.keyCode, _originalHotKey.modifierFlags);
+ self.textStorage.mutableString.string = [str uppercaseString];
+ }
+ [self.hotKeyField sendAction:self.hotKeyField.action to:self.hotKeyField.target];
+ [self.window makeFirstResponder:nil];
+ return;
+ }
+ }
+
+ if ((event.type == NSKeyDown || (event.type == NSFlagsChanged && _hasSeenKeyDown == NO)) && hasModifier) {
+ self.hotKeyField.hotKey = [DDHotKey hotKeyWithKeyCode:event.keyCode modifierFlags:flags task:_originalHotKey.task];
+ NSString *str = DDStringFromKeyCode(event.keyCode, flags);
+ [self.textStorage.mutableString setString:[str uppercaseString]];
+ [self.hotKeyField sendAction:self.hotKeyField.action to:self.hotKeyField.target];
+ }
+}
+
+- (BOOL)becomeFirstResponder {
+ BOOL ok = [super becomeFirstResponder];
+ if (ok) {
+ _hasSeenKeyDown = NO;
+ _globalMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:(NSKeyDownMask | NSFlagsChangedMask) handler:^NSEvent*(NSEvent *event){
+ [self processHotkeyEvent:event];
+ return nil;
+ }];
+ }
+ return ok;
+}
+
+- (BOOL)resignFirstResponder {
+ BOOL ok = [super resignFirstResponder];
+ if (ok) {
+ self.hotKeyField = nil;
+ if (_globalMonitor) {
+ [NSEvent removeMonitor:_globalMonitor];
+ _globalMonitor = nil;
+ }
+ }
+
+ return ok;
+}
+
+@end
diff --git a/DDHotKey/DDHotKeyUtilities.h b/DDHotKey/DDHotKeyUtilities.h
new file mode 100644
index 0000000..54b25a4
--- /dev/null
+++ b/DDHotKey/DDHotKeyUtilities.h
@@ -0,0 +1,14 @@
+/*
+ DDHotKey -- DDHotKeyUtilities.h
+
+ Copyright (c) Dave DeLong <http://www.davedelong.com>
+
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+ The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
+ */
+
+#import <Foundation/Foundation.h>
+
+extern NSString *DDStringFromKeyCode(unsigned short keyCode, NSUInteger modifiers);
+extern UInt32 DDCarbonModifierFlagsFromCocoaModifiers(NSUInteger flags);
diff --git a/DDHotKey/DDHotKeyUtilities.m b/DDHotKey/DDHotKeyUtilities.m
new file mode 100644
index 0000000..f298a43
--- /dev/null
+++ b/DDHotKey/DDHotKeyUtilities.m
@@ -0,0 +1,144 @@
+/*
+ DDHotKey -- DDHotKeyUtilities.m
+
+ Copyright (c) Dave DeLong <http://www.davedelong.com>
+
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+ The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
+ */
+
+#import "DDHotKeyUtilities.h"
+#import <Carbon/Carbon.h>
+
+static NSDictionary *_DDKeyCodeToCharacterMap(void);
+static NSDictionary *_DDKeyCodeToCharacterMap(void) {
+ static NSDictionary *keyCodeMap = nil;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ keyCodeMap = @{
+ @(kVK_Return) : @"↩",
+ @(kVK_Tab) : @"⇥",
+ @(kVK_Space) : @"⎵",
+ @(kVK_Delete) : @"⌫",
+ @(kVK_Escape) : @"⎋",
+ @(kVK_Command) : @"⌘",
+ @(kVK_Shift) : @"⇧",
+ @(kVK_CapsLock) : @"⇪",
+ @(kVK_Option) : @"⌥",
+ @(kVK_Control) : @"⌃",
+ @(kVK_RightShift) : @"⇧",
+ @(kVK_RightOption) : @"⌥",
+ @(kVK_RightControl) : @"⌃",
+ @(kVK_VolumeUp) : @"🔊",
+ @(kVK_VolumeDown) : @"🔈",
+ @(kVK_Mute) : @"🔇",
+ @(kVK_Function) : @"\u2318",
+ @(kVK_F1) : @"F1",
+ @(kVK_F2) : @"F2",
+ @(kVK_F3) : @"F3",
+ @(kVK_F4) : @"F4",
+ @(kVK_F5) : @"F5",
+ @(kVK_F6) : @"F6",
+ @(kVK_F7) : @"F7",
+ @(kVK_F8) : @"F8",
+ @(kVK_F9) : @"F9",
+ @(kVK_F10) : @"F10",
+ @(kVK_F11) : @"F11",
+ @(kVK_F12) : @"F12",
+ @(kVK_F13) : @"F13",
+ @(kVK_F14) : @"F14",
+ @(kVK_F15) : @"F15",
+ @(kVK_F16) : @"F16",
+ @(kVK_F17) : @"F17",
+ @(kVK_F18) : @"F18",
+ @(kVK_F19) : @"F19",
+ @(kVK_F20) : @"F20",
+ // @(kVK_Help) : @"",
+ @(kVK_ForwardDelete) : @"⌦",
+ @(kVK_Home) : @"↖",
+ @(kVK_End) : @"↘",
+ @(kVK_PageUp) : @"⇞",
+ @(kVK_PageDown) : @"⇟",
+ @(kVK_LeftArrow) : @"←",
+ @(kVK_RightArrow) : @"→",
+ @(kVK_DownArrow) : @"↓",
+ @(kVK_UpArrow) : @"↑",
+ };
+ });
+ return keyCodeMap;
+}
+
+NSString *DDStringFromKeyCode(unsigned short keyCode, NSUInteger modifiers) {
+ NSMutableString *final = [NSMutableString stringWithString:@""];
+ NSDictionary *characterMap = _DDKeyCodeToCharacterMap();
+
+ if (modifiers & NSControlKeyMask) {
+ [final appendString:[characterMap objectForKey:@(kVK_Control)]];
+ }
+ if (modifiers & NSAlternateKeyMask) {
+ [final appendString:[characterMap objectForKey:@(kVK_Option)]];
+ }
+ if (modifiers & NSShiftKeyMask) {
+ [final appendString:[characterMap objectForKey:@(kVK_Shift)]];
+ }
+ if (modifiers & NSCommandKeyMask) {
+ [final appendString:[characterMap objectForKey:@(kVK_Command)]];
+ }
+
+ if (keyCode == kVK_Control || keyCode == kVK_Option || keyCode == kVK_Shift || keyCode == kVK_Command) {
+ return final;
+ }
+
+ NSString *mapped = [characterMap objectForKey:@(keyCode)];
+ if (mapped != nil) {
+ [final appendString:mapped];
+ } else {
+
+ TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource();
+ CFDataRef uchr = (CFDataRef)TISGetInputSourceProperty(currentKeyboard, kTISPropertyUnicodeKeyLayoutData);
+
+ // Fix crash using non-unicode layouts, such as Chinese or Japanese.
+ if (!uchr) {
+ CFRelease(currentKeyboard);
+ currentKeyboard = TISCopyCurrentASCIICapableKeyboardLayoutInputSource();
+ uchr = (CFDataRef)TISGetInputSourceProperty(currentKeyboard, kTISPropertyUnicodeKeyLayoutData);
+ }
+
+ const UCKeyboardLayout *keyboardLayout = (const UCKeyboardLayout*)CFDataGetBytePtr(uchr);
+
+ if (keyboardLayout) {
+ UInt32 deadKeyState = 0;
+ UniCharCount maxStringLength = 255;
+ UniCharCount actualStringLength = 0;
+ UniChar unicodeString[maxStringLength];
+
+ UInt32 keyModifiers = DDCarbonModifierFlagsFromCocoaModifiers(modifiers);
+
+ OSStatus status = UCKeyTranslate(keyboardLayout,
+ keyCode, kUCKeyActionDown, keyModifiers,
+ LMGetKbdType(), 0,
+ &deadKeyState,
+ maxStringLength,
+ &actualStringLength, unicodeString);
+
+ if (actualStringLength > 0 && status == noErr) {
+ NSString *characterString = [NSString stringWithCharacters:unicodeString length:(NSUInteger)actualStringLength];
+
+ [final appendString:characterString];
+ }
+ }
+ }
+
+ return final;
+}
+
+UInt32 DDCarbonModifierFlagsFromCocoaModifiers(NSUInteger flags) {
+ UInt32 newFlags = 0;
+ if ((flags & NSControlKeyMask) > 0) { newFlags |= controlKey; }
+ if ((flags & NSCommandKeyMask) > 0) { newFlags |= cmdKey; }
+ if ((flags & NSShiftKeyMask) > 0) { newFlags |= shiftKey; }
+ if ((flags & NSAlternateKeyMask) > 0) { newFlags |= optionKey; }
+ if ((flags & NSAlphaShiftKeyMask) > 0) { newFlags |= alphaLock; }
+ return newFlags;
+}
diff --git a/Low Battery Yup d/AppDelegate.h b/Low Battery Yup d/AppDelegate.h
index ab9467b..700c26b 100644
--- a/Low Battery Yup d/AppDelegate.h
+++ b/Low Battery Yup d/AppDelegate.h
@@ -7,9 +7,12 @@
//
#import <Cocoa/Cocoa.h>
+#import "Mouse.h"
-@interface AppDelegate : NSObject <NSApplicationDelegate>
+@interface AppDelegate : NSObject <NSApplicationDelegate> {
+ Mouse *_mouse;
+}
-@property (assign) IBOutlet NSWindow *window;
+- (void)dismissLowBatteryWarning:(NSEvent *)hotKeyEvent;
@end
diff --git a/Low Battery Yup d/AppDelegate.m b/Low Battery Yup d/AppDelegate.m
index 0a7d2a3..7aa29fe 100644
--- a/Low Battery Yup d/AppDelegate.m
+++ b/Low Battery Yup d/AppDelegate.m
@@ -7,21 +7,33 @@
//
#import "AppDelegate.h"
-#import "Mouse.h"
+#import "DDHotKeyCenter.h"
+#import <Carbon/Carbon.h>
@implementation AppDelegate
- (void)dealloc
{
- [super dealloc];
+ [_mouse release];
+ [super dealloc];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
- Mouse *m = [[Mouse alloc] init];
- [m moveToLowBatteryOK];
- [m click];
- [m release];
+ _mouse = [[Mouse alloc] init];
+
+ DDHotKeyCenter *hotkey_center = [DDHotKeyCenter sharedHotKeyCenter];
+ [hotkey_center registerHotKeyWithKeyCode:kVK_ANSI_0
+ modifierFlags:(NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask)
+ target:self
+ action:@selector(dismissLowBatteryWarning:)
+ object:nil];
+}
+
+- (void)dismissLowBatteryWarning:(NSEvent *)hotKeyEvent
+{
+ [_mouse moveToLowBatteryOK];
+ [_mouse click];
}
@end
diff --git a/Low Battery Yup d/main.m b/Low Battery Yup d/main.m
index a58a570..dbd48d9 100644
--- a/Low Battery Yup d/main.m
+++ b/Low Battery Yup d/main.m
@@ -7,8 +7,12 @@
//
#import <Cocoa/Cocoa.h>
+#import "AppDelegate.h"
int main(int argc, char *argv[])
{
- return NSApplicationMain(argc, (const char **)argv);
+ AppDelegate *delegate = [[AppDelegate alloc] init];
+ [[NSApplication sharedApplication] setDelegate:delegate];
+ [NSApp run];
+ return EXIT_SUCCESS;
}
diff --git a/Low Battery Yup.d.xcodeproj/project.pbxproj b/Low Battery Yup.d.xcodeproj/project.pbxproj
index 89d2710..ac058e8 100644
--- a/Low Battery Yup.d.xcodeproj/project.pbxproj
+++ b/Low Battery Yup.d.xcodeproj/project.pbxproj
@@ -7,6 +7,11 @@
objects = {
/* Begin PBXBuildFile section */
+ D123F5A81DDF9D2400A27B7A /* DDHotKeyCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = D123F5A71DDF9D2400A27B7A /* DDHotKeyCenter.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D1871D071DE094AB00B8030D /* DDHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D1871D061DE094AB00B8030D /* DDHotKeyTextField.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D1871D081DE094C200B8030D /* DDHotKeyUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D1A37AF01DE001770022434D /* DDHotKeyUtilities.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D1871D091DE0955E00B8030D /* DDHotKeyCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = D123F5A71DDF9D2400A27B7A /* DDHotKeyCenter.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D1871D0A1DE0957C00B8030D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1A37AED1DE0012C0022434D /* Carbon.framework */; };
D18C94A31DDC33CF00E03F87 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D18C94A21DDC33CF00E03F87 /* Cocoa.framework */; };
D18C94AD1DDC33CF00E03F87 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D18C94AB1DDC33CF00E03F87 /* InfoPlist.strings */; };
D18C94AF1DDC33CF00E03F87 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D18C94AE1DDC33CF00E03F87 /* main.m */; };
@@ -15,6 +20,8 @@
D18C94C51DDC355400E03F87 /* Mouse.m in Sources */ = {isa = PBXBuildFile; fileRef = D18C94C41DDC355400E03F87 /* Mouse.m */; };
D195AE5F1DDC776000A53A18 /* MASShortcut.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D195AE5A1DDC774300A53A18 /* MASShortcut.framework */; };
D195AE601DDC776F00A53A18 /* MASShortcut.framework in Resources */ = {isa = PBXBuildFile; fileRef = D195AE5A1DDC774300A53A18 /* MASShortcut.framework */; };
+ D1A37AEE1DE0012C0022434D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1A37AED1DE0012C0022434D /* Carbon.framework */; };
+ D1A37AF11DE001770022434D /* DDHotKeyUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D1A37AF01DE001770022434D /* DDHotKeyUtilities.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
D1F809E11DDC6AA0001671E9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D18C94A21DDC33CF00E03F87 /* Cocoa.framework */; };
D1F809E71DDC6AA0001671E9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D1F809E51DDC6AA0001671E9 /* InfoPlist.strings */; };
D1F809E91DDC6AA0001671E9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D1F809E81DDC6AA0001671E9 /* main.m */; };
@@ -48,6 +55,10 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ D123F5A61DDF9D2400A27B7A /* DDHotKeyCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyCenter.h; path = DDHotKey/DDHotKeyCenter.h; sourceTree = "<group>"; };
+ D123F5A71DDF9D2400A27B7A /* DDHotKeyCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyCenter.m; path = DDHotKey/DDHotKeyCenter.m; sourceTree = "<group>"; };
+ D1871D051DE094AB00B8030D /* DDHotKeyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyTextField.h; path = DDHotKey/DDHotKeyTextField.h; sourceTree = "<group>"; };
+ D1871D061DE094AB00B8030D /* DDHotKeyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyTextField.m; path = DDHotKey/DDHotKeyTextField.m; sourceTree = "<group>"; };
D18C949E1DDC33CF00E03F87 /* Low Battery Yup.d.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Low Battery Yup.d.app"; sourceTree = BUILT_PRODUCTS_DIR; };
D18C94A21DDC33CF00E03F87 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
D18C94A51DDC33CF00E03F87 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@@ -63,6 +74,9 @@
D18C94C31DDC355400E03F87 /* Mouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mouse.h; sourceTree = "<group>"; };
D18C94C41DDC355400E03F87 /* Mouse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Mouse.m; sourceTree = "<group>"; };
D195AE4F1DDC774200A53A18 /* MASShortcut.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MASShortcut.xcodeproj; path = MASShortcut/MASShortcut.xcodeproj; sourceTree = "<group>"; };
+ D1A37AED1DE0012C0022434D /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
+ D1A37AEF1DE001770022434D /* DDHotKeyUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyUtilities.h; path = DDHotKey/DDHotKeyUtilities.h; sourceTree = "<group>"; };
+ D1A37AF01DE001770022434D /* DDHotKeyUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyUtilities.m; path = DDHotKey/DDHotKeyUtilities.m; sourceTree = "<group>"; };
D1F809DF1DDC6AA0001671E9 /* Low Battery Yup.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Low Battery Yup.app"; sourceTree = BUILT_PRODUCTS_DIR; };
D1F809E41DDC6AA0001671E9 /* Low Battery Yup-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Low Battery Yup-Info.plist"; sourceTree = "<group>"; };
D1F809E61DDC6AA0001671E9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -79,6 +93,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D1A37AEE1DE0012C0022434D /* Carbon.framework in Frameworks */,
D18C94A31DDC33CF00E03F87 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -87,6 +102,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D1871D0A1DE0957C00B8030D /* Carbon.framework in Frameworks */,
D195AE5F1DDC776000A53A18 /* MASShortcut.framework in Frameworks */,
D1F809E11DDC6AA0001671E9 /* Cocoa.framework in Frameworks */,
);
@@ -95,9 +111,23 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ D123F5A91DDF9D2B00A27B7A /* DDHotKey */ = {
+ isa = PBXGroup;
+ children = (
+ D123F5A61DDF9D2400A27B7A /* DDHotKeyCenter.h */,
+ D123F5A71DDF9D2400A27B7A /* DDHotKeyCenter.m */,
+ D1871D051DE094AB00B8030D /* DDHotKeyTextField.h */,
+ D1871D061DE094AB00B8030D /* DDHotKeyTextField.m */,
+ D1A37AEF1DE001770022434D /* DDHotKeyUtilities.h */,
+ D1A37AF01DE001770022434D /* DDHotKeyUtilities.m */,
+ );
+ name = DDHotKey;
+ sourceTree = "<group>";
+ };
D18C94931DDC33CE00E03F87 = {
isa = PBXGroup;
children = (
+ D123F5A91DDF9D2B00A27B7A /* DDHotKey */,
D18C94A81DDC33CF00E03F87 /* Low Battery Yup d */,
D1F809E21DDC6AA0001671E9 /* Low Battery Yup */,
D18C94A11DDC33CF00E03F87 /* Frameworks */,
@@ -118,6 +148,7 @@
isa = PBXGroup;
children = (
D18C94A21DDC33CF00E03F87 /* Cocoa.framework */,
+ D1A37AED1DE0012C0022434D /* Carbon.framework */,
D18C94A41DDC33CF00E03F87 /* Other Frameworks */,
);
name = Frameworks;
@@ -321,6 +352,8 @@
D18C94AF1DDC33CF00E03F87 /* main.m in Sources */,
D18C94B61DDC33CF00E03F87 /* AppDelegate.m in Sources */,
D18C94C51DDC355400E03F87 /* Mouse.m in Sources */,
+ D123F5A81DDF9D2400A27B7A /* DDHotKeyCenter.m in Sources */,
+ D1A37AF11DE001770022434D /* DDHotKeyUtilities.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -330,6 +363,9 @@
files = (
D1F809E91DDC6AA0001671E9 /* main.m in Sources */,
D1F809F01DDC6AA0001671E9 /* AppDelegate.m in Sources */,
+ D1871D071DE094AB00B8030D /* DDHotKeyTextField.m in Sources */,
+ D1871D081DE094C200B8030D /* DDHotKeyUtilities.m in Sources */,
+ D1871D091DE0955E00B8030D /* DDHotKeyCenter.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/Low Battery Yup/AppDelegate.m b/Low Battery Yup/AppDelegate.m
index 0c9bbdc..e5b9d90 100644
--- a/Low Battery Yup/AppDelegate.m
+++ b/Low Battery Yup/AppDelegate.m
@@ -20,4 +20,9 @@
// Insert code here to initialize your application
}
+- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
+{
+ return YES;
+}
+
@end
diff --git a/Low Battery Yup/en.lproj/MainMenu.xib b/Low Battery Yup/en.lproj/MainMenu.xib
index be0c5a4..1d99a3a 100644
--- a/Low Battery Yup/en.lproj/MainMenu.xib
+++ b/Low Battery Yup/en.lproj/MainMenu.xib
@@ -2,20 +2,22 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1080</int>
- <string key="IBDocument.SystemVersion">11D50</string>
- <string key="IBDocument.InterfaceBuilderVersion">2457</string>
- <string key="IBDocument.AppKitVersion">1138.32</string>
- <string key="IBDocument.HIToolboxVersion">568.00</string>
+ <string key="IBDocument.SystemVersion">12F45</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+ <string key="IBDocument.AppKitVersion">1187.40</string>
+ <string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">2457</string>
+ <string key="NS.object.0">2844</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
- <string>NSWindowTemplate</string>
- <string>NSView</string>
+ <string>NSCustomObject</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
- <string>NSCustomObject</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1292,18 +1294,64 @@
<object class="NSWindowTemplate" id="972006081">
<int key="NSWindowStyleMask">15</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{335, 390}, {480, 360}}</string>
+ <string key="NSWindowRect">{{335, 390}, {480, 180}}</string>
<int key="NSWTFlags">1954021376</int>
<string key="NSWindowTitle">Low Battery Yup</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="439893737">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
- <string key="NSFrameSize">{480, 360}</string>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTextField" id="287633878">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{110, 79}, {261, 22}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <string key="NSReuseIdentifierKey">_NS:9</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="414421354">
+ <int key="NSCellFlags">-1804599231</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <string key="NSCellIdentifier">_NS:9</string>
+ <reference key="NSControlView" ref="287633878"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ </array>
+ <string key="NSFrameSize">{480, 180}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="287633878"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
+ <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
@@ -2520,6 +2568,9 @@
<object class="IBObjectRecord">
<int key="objectID">372</int>
<reference key="object" ref="439893737"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="287633878"/>
+ </array>
<reference key="parent" ref="972006081"/>
</object>
<object class="IBObjectRecord">
@@ -2995,6 +3046,19 @@
<reference key="object" ref="738670835"/>
<reference key="parent" ref="963351320"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">536</int>
+ <reference key="object" ref="287633878"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="414421354"/>
+ </array>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">537</int>
+ <reference key="object" ref="414421354"/>
+ <reference key="parent" ref="287633878"/>
+ </object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -3138,6 +3202,10 @@
<string key="516.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="517.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="534.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="536.CustomClassName">DDHotKeyTextField</string>
+ <string key="536.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="537.CustomClassName">DDHotKeyTextFieldCell</string>
+ <string key="537.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3157,1498 +3225,59 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">535</int>
+ <int key="maxID">537</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
- <string key="className">ABCardController</string>
+ <string key="className">AppDelegate</string>
<string key="superclassName">NSObject</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="addCardViewField:">id</string>
- <string key="copy:">id</string>
- <string key="cut:">id</string>
- <string key="doDelete:">id</string>
- <string key="find:">id</string>
- <string key="paste:">id</string>
- <string key="saveChanges:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="addCardViewField:">
- <string key="name">addCardViewField:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="copy:">
- <string key="name">copy:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="cut:">
- <string key="name">cut:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="doDelete:">
- <string key="name">doDelete:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="find:">
- <string key="name">find:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="paste:">
- <string key="name">paste:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="saveChanges:">
- <string key="name">saveChanges:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
- <string key="mCardView">ABCardView</string>
- <string key="mEditButton">NSButton</string>
- <string key="mManagedObjectContext">NSManagedObjectContext</string>
- <string key="mSearchField">NSSearchField</string>
- <string key="mStatusTextField">NSTextField</string>
- <string key="mWindow">NSWindow</string>
+ <string key="customShortcutView">MASShortcutView</string>
+ <string key="feedbackTextField">NSTextField</string>
+ <string key="window">NSWindow</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="mCardView">
- <string key="name">mCardView</string>
- <string key="candidateClassName">ABCardView</string>
- </object>
- <object class="IBToOneOutletInfo" key="mEditButton">
- <string key="name">mEditButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="mManagedObjectContext">
- <string key="name">mManagedObjectContext</string>
- <string key="candidateClassName">NSManagedObjectContext</string>
- </object>
- <object class="IBToOneOutletInfo" key="mSearchField">
- <string key="name">mSearchField</string>
- <string key="candidateClassName">NSSearchField</string>
+ <object class="IBToOneOutletInfo" key="customShortcutView">
+ <string key="name">customShortcutView</string>
+ <string key="candidateClassName">MASShortcutView</string>
</object>
- <object class="IBToOneOutletInfo" key="mStatusTextField">
- <string key="name">mStatusTextField</string>
+ <object class="IBToOneOutletInfo" key="feedbackTextField">
+ <string key="name">feedbackTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
- <object class="IBToOneOutletInfo" key="mWindow">
- <string key="name">mWindow</string>
+ <object class="IBToOneOutletInfo" key="window">
+ <string key="name">window</string>
<string key="candidateClassName">NSWindow</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/ABCardController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">ABCardView</string>
- <string key="superclassName">NSView</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="commitAndSave:">id</string>
- <string key="statusImageClicked:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="commitAndSave:">
- <string key="name">commitAndSave:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="statusImageClicked:">
- <string key="name">statusImageClicked:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="mBindingsController">NSObjectController</string>
- <string key="mBuddyStatusImage">NSImageView</string>
- <string key="mHeaderView">NSView</string>
- <string key="mNameView">ABNameFrameView</string>
- <string key="mNextKeyView">NSView</string>
- <string key="mUserImage">NSImage</string>
- <string key="mUserImageView">ABImageView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="mBindingsController">
- <string key="name">mBindingsController</string>
- <string key="candidateClassName">NSObjectController</string>
- </object>
- <object class="IBToOneOutletInfo" key="mBuddyStatusImage">
- <string key="name">mBuddyStatusImage</string>
- <string key="candidateClassName">NSImageView</string>
- </object>
- <object class="IBToOneOutletInfo" key="mHeaderView">
- <string key="name">mHeaderView</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo" key="mNameView">
- <string key="name">mNameView</string>
- <string key="candidateClassName">ABNameFrameView</string>
- </object>
- <object class="IBToOneOutletInfo" key="mNextKeyView">
- <string key="name">mNextKeyView</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo" key="mUserImage">
- <string key="name">mUserImage</string>
- <string key="candidateClassName">NSImage</string>
- </object>
- <object class="IBToOneOutletInfo" key="mUserImageView">
- <string key="name">mUserImageView</string>
- <string key="candidateClassName">ABImageView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/ABCardView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">ABImageView</string>
- <string key="superclassName">NSImageView</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="copy:">id</string>
- <string key="cut:">id</string>
- <string key="delete:">id</string>
- <string key="paste:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="copy:">
- <string key="name">copy:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="cut:">
- <string key="name">cut:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="delete:">
- <string key="name">delete:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="paste:">
- <string key="name">paste:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/ABImageView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTBorderedView</string>
- <string key="superclassName">DVTLayoutView_ML</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">contentView</string>
- <string key="NS.object.0">NSView</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">contentView</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
- <string key="name">contentView</string>
- <string key="candidateClassName">NSView</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTBorderedView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTDelayedMenuButton</string>
- <string key="superclassName">NSButton</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTDelayedMenuButton.h</string>
+ <string key="minorKey">./Classes/AppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">DVTGradientImageButton</string>
- <string key="superclassName">NSButton</string>
+ <string key="className">DDHotKeyTextField</string>
+ <string key="superclassName">NSTextField</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTGradientImageButton.h</string>
+ <string key="minorKey">./Classes/DDHotKeyTextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">DVTImageAndTextCell</string>
+ <string key="className">DDHotKeyTextFieldCell</string>
<string key="superclassName">NSTextFieldCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTImageAndTextCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTImageAndTextColumn</string>
- <string key="superclassName">NSTableColumn</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTImageAndTextColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTLayoutView_ML</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTLayoutView_ML.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTOutlineView</string>
- <string key="superclassName">NSOutlineView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTOutlineView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTSplitView</string>
- <string key="superclassName">NSSplitView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTSplitView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTStackView_ML</string>
- <string key="superclassName">DVTLayoutView_ML</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTStackView_ML.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTTableView</string>
- <string key="superclassName">NSTableView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTTableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">DVTViewController</string>
- <string key="superclassName">NSViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/DVTViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">HFController</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">selectAll:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">selectAll:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">selectAll:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/HFController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">HFRepresenterTextView</string>
- <string key="superclassName">NSView</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">selectAll:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">selectAll:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">selectAll:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/HFRepresenterTextView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IBEditor</string>
- <string key="superclassName">NSObject</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="changeFont:">id</string>
- <string key="performCopy:">id</string>
- <string key="performCut:">id</string>
- <string key="selectAll:">id</string>
- <string key="sizeSelectionToFit:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="changeFont:">
- <string key="name">changeFont:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="performCopy:">
- <string key="name">performCopy:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="performCut:">
- <string key="name">performCut:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="selectAll:">
- <string key="name">selectAll:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="sizeSelectionToFit:">
- <string key="name">sizeSelectionToFit:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IBEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDECapsuleListView</string>
- <string key="superclassName">DVTStackView_ML</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">dataSource</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">dataSource</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
- <string key="name">dataSource</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDECapsuleListView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDMArrayController</string>
- <string key="superclassName">NSArrayController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDMArrayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDMEditor</string>
- <string key="superclassName">IDEEditor</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="bottomToolbarBorderView">DVTBorderedView</string>
- <string key="sourceListSplitViewPane">NSView</string>
- <string key="sourceListViewController">IDEDMEditorSourceListController</string>
- <string key="splitView">DVTSplitView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="bottomToolbarBorderView">
- <string key="name">bottomToolbarBorderView</string>
- <string key="candidateClassName">DVTBorderedView</string>
- </object>
- <object class="IBToOneOutletInfo" key="sourceListSplitViewPane">
- <string key="name">sourceListSplitViewPane</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo" key="sourceListViewController">
- <string key="name">sourceListViewController</string>
- <string key="candidateClassName">IDEDMEditorSourceListController</string>
- </object>
- <object class="IBToOneOutletInfo" key="splitView">
- <string key="name">splitView</string>
- <string key="candidateClassName">DVTSplitView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDMEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDMEditorController</string>
- <string key="superclassName">IDEViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDMEditorController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDMEditorSourceListController</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="borderedView">DVTBorderedView</string>
- <string key="parentEditor">IDEDMEditor</string>
- <string key="primaryColumn">DVTImageAndTextColumn</string>
- <string key="sourceListOutlineView">DVTOutlineView</string>
- <string key="sourceListTreeController">NSTreeController</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="borderedView">
- <string key="name">borderedView</string>
- <string key="candidateClassName">DVTBorderedView</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDMEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="primaryColumn">
- <string key="name">primaryColumn</string>
- <string key="candidateClassName">DVTImageAndTextColumn</string>
- </object>
- <object class="IBToOneOutletInfo" key="sourceListOutlineView">
- <string key="name">sourceListOutlineView</string>
- <string key="candidateClassName">DVTOutlineView</string>
- </object>
- <object class="IBToOneOutletInfo" key="sourceListTreeController">
- <string key="name">sourceListTreeController</string>
- <string key="candidateClassName">NSTreeController</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDMEditorSourceListController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDMHighlightImageAndTextCell</string>
- <string key="superclassName">DVTImageAndTextCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDMHighlightImageAndTextCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelBrowserEditor</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="attributesTableViewController">IDEDataModelPropertiesTableController</string>
- <string key="capsuleView">IDECapsuleListView</string>
- <string key="entityArrayController">NSArrayController</string>
- <string key="fetchedPropertiesTableViewController">IDEDataModelPropertiesTableController</string>
- <string key="parentEditor">IDEDataModelEntityContentsEditor</string>
- <string key="relationshipsTableViewController">IDEDataModelPropertiesTableController</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="attributesTableViewController">
- <string key="name">attributesTableViewController</string>
- <string key="candidateClassName">IDEDataModelPropertiesTableController</string>
- </object>
- <object class="IBToOneOutletInfo" key="capsuleView">
- <string key="name">capsuleView</string>
- <string key="candidateClassName">IDECapsuleListView</string>
- </object>
- <object class="IBToOneOutletInfo" key="entityArrayController">
- <string key="name">entityArrayController</string>
- <string key="candidateClassName">NSArrayController</string>
- </object>
- <object class="IBToOneOutletInfo" key="fetchedPropertiesTableViewController">
- <string key="name">fetchedPropertiesTableViewController</string>
- <string key="candidateClassName">IDEDataModelPropertiesTableController</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelEntityContentsEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="relationshipsTableViewController">
- <string key="name">relationshipsTableViewController</string>
- <string key="candidateClassName">IDEDataModelPropertiesTableController</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelBrowserEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelConfigurationEditor</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="capsuleListView">IDECapsuleListView</string>
- <string key="parentEditor">IDEDataModelEditor</string>
- <string key="tableController">IDEDataModelConfigurationTableController</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="capsuleListView">
- <string key="name">capsuleListView</string>
- <string key="candidateClassName">IDECapsuleListView</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="tableController">
- <string key="name">tableController</string>
- <string key="candidateClassName">IDEDataModelConfigurationTableController</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelConfigurationEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelConfigurationTableController</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="configurationsArrayController">NSArrayController</string>
- <string key="entitiesArrayController">NSArrayController</string>
- <string key="parentEditor">IDEDataModelConfigurationEditor</string>
- <string key="tableView">XDTableView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="configurationsArrayController">
- <string key="name">configurationsArrayController</string>
- <string key="candidateClassName">NSArrayController</string>
- </object>
- <object class="IBToOneOutletInfo" key="entitiesArrayController">
- <string key="name">entitiesArrayController</string>
- <string key="candidateClassName">NSArrayController</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelConfigurationEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="tableView">
- <string key="name">tableView</string>
- <string key="candidateClassName">XDTableView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelConfigurationTableController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelDiagramEditor</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="diagramView">XDDiagramView</string>
- <string key="parentEditor">IDEDataModelEntityContentsEditor</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="diagramView">
- <string key="name">diagramView</string>
- <string key="candidateClassName">XDDiagramView</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelEntityContentsEditor</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelDiagramEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelEditor</string>
- <string key="superclassName">IDEDMEditor</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="addEntityButton">DVTDelayedMenuButton</string>
- <string key="addPropertyButton">DVTDelayedMenuButton</string>
- <string key="browserDiagramSegmentControl">NSSegmentedControl</string>
- <string key="configurationViewController">IDEDataModelConfigurationEditor</string>
- <string key="entityContentsViewController">IDEDataModelEntityContentsEditor</string>
- <string key="fetchRequestViewController">IDEDataModelFetchRequestEditor</string>
- <string key="hierarchySegmentControl">NSSegmentedControl</string>
- <string key="tabView">NSTabView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="addEntityButton">
- <string key="name">addEntityButton</string>
- <string key="candidateClassName">DVTDelayedMenuButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="addPropertyButton">
- <string key="name">addPropertyButton</string>
- <string key="candidateClassName">DVTDelayedMenuButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="browserDiagramSegmentControl">
- <string key="name">browserDiagramSegmentControl</string>
- <string key="candidateClassName">NSSegmentedControl</string>
- </object>
- <object class="IBToOneOutletInfo" key="configurationViewController">
- <string key="name">configurationViewController</string>
- <string key="candidateClassName">IDEDataModelConfigurationEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="entityContentsViewController">
- <string key="name">entityContentsViewController</string>
- <string key="candidateClassName">IDEDataModelEntityContentsEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="fetchRequestViewController">
- <string key="name">fetchRequestViewController</string>
- <string key="candidateClassName">IDEDataModelFetchRequestEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="hierarchySegmentControl">
- <string key="name">hierarchySegmentControl</string>
- <string key="candidateClassName">NSSegmentedControl</string>
- </object>
- <object class="IBToOneOutletInfo" key="tabView">
- <string key="name">tabView</string>
- <string key="candidateClassName">NSTabView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelEntityContentsEditor</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="browserViewController">IDEDataModelBrowserEditor</string>
- <string key="diagramViewController">IDEDataModelDiagramEditor</string>
- <string key="parentEditor">IDEDataModelEditor</string>
- <string key="tabView">NSTabView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="browserViewController">
- <string key="name">browserViewController</string>
- <string key="candidateClassName">IDEDataModelBrowserEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="diagramViewController">
- <string key="name">diagramViewController</string>
- <string key="candidateClassName">IDEDataModelDiagramEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="tabView">
- <string key="name">tabView</string>
- <string key="candidateClassName">NSTabView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelEntityContentsEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelFetchRequestEditor</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="entityController">NSArrayController</string>
- <string key="parentEditor">IDEDataModelEditor</string>
- <string key="tableView">IDECapsuleListView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="entityController">
- <string key="name">entityController</string>
- <string key="candidateClassName">NSArrayController</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="tableView">
- <string key="name">tableView</string>
- <string key="candidateClassName">IDECapsuleListView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelFetchRequestEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDataModelPropertiesTableController</string>
- <string key="superclassName">IDEDMEditorController</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="arrayController">IDEDMArrayController</string>
- <string key="entitiesColumn">NSTableColumn</string>
- <string key="entityArrayController">NSArrayController</string>
- <string key="parentEditor">IDEDataModelBrowserEditor</string>
- <string key="propertyNameAndImageCell">IDEDMHighlightImageAndTextCell</string>
- <string key="tableView">XDTableView</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="arrayController">
- <string key="name">arrayController</string>
- <string key="candidateClassName">IDEDMArrayController</string>
- </object>
- <object class="IBToOneOutletInfo" key="entitiesColumn">
- <string key="name">entitiesColumn</string>
- <string key="candidateClassName">NSTableColumn</string>
- </object>
- <object class="IBToOneOutletInfo" key="entityArrayController">
- <string key="name">entityArrayController</string>
- <string key="candidateClassName">NSArrayController</string>
- </object>
- <object class="IBToOneOutletInfo" key="parentEditor">
- <string key="name">parentEditor</string>
- <string key="candidateClassName">IDEDataModelBrowserEditor</string>
- </object>
- <object class="IBToOneOutletInfo" key="propertyNameAndImageCell">
- <string key="name">propertyNameAndImageCell</string>
- <string key="candidateClassName">IDEDMHighlightImageAndTextCell</string>
- </object>
- <object class="IBToOneOutletInfo" key="tableView">
- <string key="name">tableView</string>
- <string key="candidateClassName">XDTableView</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDataModelPropertiesTableController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDocDownloadsTableViewController</string>
- <string key="superclassName">NSObject</string>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="_downloadButtonCell">NSButtonCell</string>
- <string key="_tableView">DVTTableView</string>
- <string key="prefPaneController">IDEDocViewingPrefPaneController</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="_downloadButtonCell">
- <string key="name">_downloadButtonCell</string>
- <string key="candidateClassName">NSButtonCell</string>
- </object>
- <object class="IBToOneOutletInfo" key="_tableView">
- <string key="name">_tableView</string>
- <string key="candidateClassName">DVTTableView</string>
- </object>
- <object class="IBToOneOutletInfo" key="prefPaneController">
- <string key="name">prefPaneController</string>
- <string key="candidateClassName">IDEDocViewingPrefPaneController</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDocDownloadsTableViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDocSetOutlineView</string>
- <string key="superclassName">NSOutlineView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDocSetOutlineView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDocSetOutlineViewController</string>
- <string key="superclassName">NSObject</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="getDocSetAction:">id</string>
- <string key="showProblemInfoForUpdate:">id</string>
- <string key="subscribeToPublisherAction:">id</string>
- <string key="unsubscribeFromPublisher:">id</string>
- <string key="updateDocSetAction:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="getDocSetAction:">
- <string key="name">getDocSetAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="showProblemInfoForUpdate:">
- <string key="name">showProblemInfoForUpdate:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="subscribeToPublisherAction:">
- <string key="name">subscribeToPublisherAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="unsubscribeFromPublisher:">
- <string key="name">unsubscribeFromPublisher:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="updateDocSetAction:">
- <string key="name">updateDocSetAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">docSetOutlineView</string>
- <string key="NS.object.0">IDEDocSetOutlineView</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">docSetOutlineView</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
- <string key="name">docSetOutlineView</string>
- <string key="candidateClassName">IDEDocSetOutlineView</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDocSetOutlineViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEDocViewingPrefPaneController</string>
- <string key="superclassName">IDEViewController</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="addSubscription:">id</string>
- <string key="checkForAndInstallUpdatesNow:">id</string>
- <string key="deleteDocSet:">id</string>
- <string key="downloadAction:">id</string>
- <string key="minimumFontSizeComboBoxAction:">id</string>
- <string key="minimumFontSizeEnabledAction:">id</string>
- <string key="showHelp:">id</string>
- <string key="showSubscriptionSheet:">id</string>
- <string key="subscriptionCancelAction:">id</string>
- <string key="toggleAutoCheckForAndInstallUpdates:">id</string>
- <string key="toggleDocSetInfo:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="addSubscription:">
- <string key="name">addSubscription:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="checkForAndInstallUpdatesNow:">
- <string key="name">checkForAndInstallUpdatesNow:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="deleteDocSet:">
- <string key="name">deleteDocSet:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="downloadAction:">
- <string key="name">downloadAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="minimumFontSizeComboBoxAction:">
- <string key="name">minimumFontSizeComboBoxAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="minimumFontSizeEnabledAction:">
- <string key="name">minimumFontSizeEnabledAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="showHelp:">
- <string key="name">showHelp:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="showSubscriptionSheet:">
- <string key="name">showSubscriptionSheet:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="subscriptionCancelAction:">
- <string key="name">subscriptionCancelAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleAutoCheckForAndInstallUpdates:">
- <string key="name">toggleAutoCheckForAndInstallUpdates:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleDocSetInfo:">
- <string key="name">toggleDocSetInfo:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="_addButton">DVTGradientImageButton</string>
- <string key="_deleteButton">DVTGradientImageButton</string>
- <string key="_showInfoAreaButton">DVTGradientImageButton</string>
- <string key="_splitView">NSSplitView</string>
- <string key="_splitViewDocSetInfoSubview">NSView</string>
- <string key="_splitViewDocSetsListSubview">NSView</string>
- <string key="borderedViewAroundSplitView">DVTBorderedView</string>
- <string key="borderedViewBelowTable">DVTBorderedView</string>
- <string key="checkAndInstallNowButton">NSButton</string>
- <string key="docSetInfoTextView">NSTextView</string>
- <string key="docSetOutlineViewController">IDEDocSetOutlineViewController</string>
- <string key="downloadsTableViewController">IDEDocDownloadsTableViewController</string>
- <string key="minimumFontSizeControl">NSComboBox</string>
- <string key="noUpdatesAvailableMessage">NSTextField</string>
- <string key="showInfoButton">NSButton</string>
- <string key="subscriptionTextField">NSTextField</string>
- <string key="subscriptionWindow">NSWindow</string>
- <string key="validateAddSubscriptionButton">NSButton</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="_addButton">
- <string key="name">_addButton</string>
- <string key="candidateClassName">DVTGradientImageButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="_deleteButton">
- <string key="name">_deleteButton</string>
- <string key="candidateClassName">DVTGradientImageButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="_showInfoAreaButton">
- <string key="name">_showInfoAreaButton</string>
- <string key="candidateClassName">DVTGradientImageButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="_splitView">
- <string key="name">_splitView</string>
- <string key="candidateClassName">NSSplitView</string>
- </object>
- <object class="IBToOneOutletInfo" key="_splitViewDocSetInfoSubview">
- <string key="name">_splitViewDocSetInfoSubview</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo" key="_splitViewDocSetsListSubview">
- <string key="name">_splitViewDocSetsListSubview</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo" key="borderedViewAroundSplitView">
- <string key="name">borderedViewAroundSplitView</string>
- <string key="candidateClassName">DVTBorderedView</string>
- </object>
- <object class="IBToOneOutletInfo" key="borderedViewBelowTable">
- <string key="name">borderedViewBelowTable</string>
- <string key="candidateClassName">DVTBorderedView</string>
- </object>
- <object class="IBToOneOutletInfo" key="checkAndInstallNowButton">
- <string key="name">checkAndInstallNowButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="docSetInfoTextView">
- <string key="name">docSetInfoTextView</string>
- <string key="candidateClassName">NSTextView</string>
- </object>
- <object class="IBToOneOutletInfo" key="docSetOutlineViewController">
- <string key="name">docSetOutlineViewController</string>
- <string key="candidateClassName">IDEDocSetOutlineViewController</string>
- </object>
- <object class="IBToOneOutletInfo" key="downloadsTableViewController">
- <string key="name">downloadsTableViewController</string>
- <string key="candidateClassName">IDEDocDownloadsTableViewController</string>
- </object>
- <object class="IBToOneOutletInfo" key="minimumFontSizeControl">
- <string key="name">minimumFontSizeControl</string>
- <string key="candidateClassName">NSComboBox</string>
- </object>
- <object class="IBToOneOutletInfo" key="noUpdatesAvailableMessage">
- <string key="name">noUpdatesAvailableMessage</string>
- <string key="candidateClassName">NSTextField</string>
- </object>
- <object class="IBToOneOutletInfo" key="showInfoButton">
- <string key="name">showInfoButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="subscriptionTextField">
- <string key="name">subscriptionTextField</string>
- <string key="candidateClassName">NSTextField</string>
- </object>
- <object class="IBToOneOutletInfo" key="subscriptionWindow">
- <string key="name">subscriptionWindow</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- <object class="IBToOneOutletInfo" key="validateAddSubscriptionButton">
- <string key="name">validateAddSubscriptionButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEDocViewingPrefPaneController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEEditor</string>
- <string key="superclassName">IDEViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEEditor.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IDEViewController</string>
- <string key="superclassName">DVTViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IDEViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">IKImageView</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="copy:">id</string>
- <string key="crop:">id</string>
- <string key="cut:">id</string>
- <string key="paste:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="copy:">
- <string key="name">copy:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="crop:">
- <string key="name">crop:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="cut:">
- <string key="name">cut:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="paste:">
- <string key="name">paste:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/IKImageView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="printDocument:">id</string>
- <string key="revertDocumentToSaved:">id</string>
- <string key="runPageLayout:">id</string>
- <string key="saveDocument:">id</string>
- <string key="saveDocumentAs:">id</string>
- <string key="saveDocumentTo:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="printDocument:">
- <string key="name">printDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="revertDocumentToSaved:">
- <string key="name">revertDocumentToSaved:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="runPageLayout:">
- <string key="name">runPageLayout:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="saveDocument:">
- <string key="name">saveDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="saveDocumentAs:">
- <string key="name">saveDocumentAs:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="saveDocumentTo:">
- <string key="name">saveDocumentTo:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/NSDocument.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">_insertFindPattern:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">_insertFindPattern:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">_insertFindPattern:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">QLPreviewBubble</string>
- <string key="superclassName">NSObject</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="hide:">id</string>
- <string key="show:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="hide:">
- <string key="name">hide:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="show:">
- <string key="name">show:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">parentWindow</string>
- <string key="NS.object.0">NSWindow</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">parentWindow</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
- <string key="name">parentWindow</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/QLPreviewBubble.h</string>
+ <string key="minorKey">./Classes/DDHotKeyTextFieldCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">QTMovieView</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="showAll:">id</string>
- <string key="showCustomButton:">id</string>
- <string key="toggleLoops:">id</string>
- <string key="zoomIn:">id</string>
- <string key="zoomOut:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="showAll:">
- <string key="name">showAll:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="showCustomButton:">
- <string key="name">showCustomButton:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleLoops:">
- <string key="name">toggleLoops:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="zoomIn:">
- <string key="name">zoomIn:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="zoomOut:">
- <string key="name">zoomOut:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/QTMovieView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">WebView</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="reloadFromOrigin:">id</string>
- <string key="resetPageZoom:">id</string>
- <string key="zoomPageIn:">id</string>
- <string key="zoomPageOut:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="reloadFromOrigin:">
- <string key="name">reloadFromOrigin:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="resetPageZoom:">
- <string key="name">resetPageZoom:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="zoomPageIn:">
- <string key="name">zoomPageIn:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="zoomPageOut:">
- <string key="name">zoomPageOut:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/WebView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">XDDiagramView</string>
+ <string key="className">MASShortcutView</string>
<string key="superclassName">NSView</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="_graphLayouterMenuItemAction:">id</string>
- <string key="_zoomPopUpButtonAction:">id</string>
- <string key="alignBottomEdges:">id</string>
- <string key="alignCentersHorizontallyInContainer:">id</string>
- <string key="alignCentersVerticallyInContainer:">id</string>
- <string key="alignHorizontalCenters:">id</string>
- <string key="alignLeftEdges:">id</string>
- <string key="alignRightEdges:">id</string>
- <string key="alignTopEdges:">id</string>
- <string key="alignVerticalCenters:">id</string>
- <string key="bringToFront:">id</string>
- <string key="collapseAllCompartments:">id</string>
- <string key="copy:">id</string>
- <string key="cut:">id</string>
- <string key="delete:">id</string>
- <string key="deleteBackward:">id</string>
- <string key="deleteForward:">id</string>
- <string key="deselectAll:">id</string>
- <string key="diagramZoomIn:">id</string>
- <string key="diagramZoomOut:">id</string>
- <string key="expandAllCompartments:">id</string>
- <string key="flipHorizontally:">id</string>
- <string key="flipVertically:">id</string>
- <string key="layoutGraphicsConcentrically:">id</string>
- <string key="layoutGraphicsHierarchically:">id</string>
- <string key="lock:">id</string>
- <string key="makeSameHeight:">id</string>
- <string key="makeSameWidth:">id</string>
- <string key="moveDown:">id</string>
- <string key="moveDownAndModifySelection:">id</string>
- <string key="moveLeft:">id</string>
- <string key="moveLeftAndModifySelection:">id</string>
- <string key="moveRight:">id</string>
- <string key="moveRightAndModifySelection:">id</string>
- <string key="moveUp:">id</string>
- <string key="moveUpAndModifySelection:">id</string>
- <string key="paste:">id</string>
- <string key="rollDownAllCompartments:">id</string>
- <string key="rollUpAllCompartments:">id</string>
- <string key="selectAll:">id</string>
- <string key="sendToBack:">id</string>
- <string key="sizeToFit:">id</string>
- <string key="toggleGridShown:">id</string>
- <string key="toggleHiddenGraphicsShown:">id</string>
- <string key="togglePageBreaksShown:">id</string>
- <string key="toggleRuler:">id</string>
- <string key="toggleSnapsToGrid:">id</string>
- <string key="unlock:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="_graphLayouterMenuItemAction:">
- <string key="name">_graphLayouterMenuItemAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="_zoomPopUpButtonAction:">
- <string key="name">_zoomPopUpButtonAction:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignBottomEdges:">
- <string key="name">alignBottomEdges:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignCentersHorizontallyInContainer:">
- <string key="name">alignCentersHorizontallyInContainer:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignCentersVerticallyInContainer:">
- <string key="name">alignCentersVerticallyInContainer:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignHorizontalCenters:">
- <string key="name">alignHorizontalCenters:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignLeftEdges:">
- <string key="name">alignLeftEdges:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignRightEdges:">
- <string key="name">alignRightEdges:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignTopEdges:">
- <string key="name">alignTopEdges:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="alignVerticalCenters:">
- <string key="name">alignVerticalCenters:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="bringToFront:">
- <string key="name">bringToFront:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="collapseAllCompartments:">
- <string key="name">collapseAllCompartments:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="copy:">
- <string key="name">copy:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="cut:">
- <string key="name">cut:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="delete:">
- <string key="name">delete:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="deleteBackward:">
- <string key="name">deleteBackward:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="deleteForward:">
- <string key="name">deleteForward:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="deselectAll:">
- <string key="name">deselectAll:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="diagramZoomIn:">
- <string key="name">diagramZoomIn:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="diagramZoomOut:">
- <string key="name">diagramZoomOut:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="expandAllCompartments:">
- <string key="name">expandAllCompartments:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="flipHorizontally:">
- <string key="name">flipHorizontally:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="flipVertically:">
- <string key="name">flipVertically:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="layoutGraphicsConcentrically:">
- <string key="name">layoutGraphicsConcentrically:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="layoutGraphicsHierarchically:">
- <string key="name">layoutGraphicsHierarchically:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="lock:">
- <string key="name">lock:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="makeSameHeight:">
- <string key="name">makeSameHeight:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="makeSameWidth:">
- <string key="name">makeSameWidth:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveDown:">
- <string key="name">moveDown:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveDownAndModifySelection:">
- <string key="name">moveDownAndModifySelection:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveLeft:">
- <string key="name">moveLeft:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveLeftAndModifySelection:">
- <string key="name">moveLeftAndModifySelection:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveRight:">
- <string key="name">moveRight:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveRightAndModifySelection:">
- <string key="name">moveRightAndModifySelection:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveUp:">
- <string key="name">moveUp:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="moveUpAndModifySelection:">
- <string key="name">moveUpAndModifySelection:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="paste:">
- <string key="name">paste:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="rollDownAllCompartments:">
- <string key="name">rollDownAllCompartments:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="rollUpAllCompartments:">
- <string key="name">rollUpAllCompartments:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="selectAll:">
- <string key="name">selectAll:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="sendToBack:">
- <string key="name">sendToBack:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="sizeToFit:">
- <string key="name">sizeToFit:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleGridShown:">
- <string key="name">toggleGridShown:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleHiddenGraphicsShown:">
- <string key="name">toggleHiddenGraphicsShown:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="togglePageBreaksShown:">
- <string key="name">togglePageBreaksShown:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleRuler:">
- <string key="name">toggleRuler:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="toggleSnapsToGrid:">
- <string key="name">toggleSnapsToGrid:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="unlock:">
- <string key="name">unlock:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">_diagramController</string>
- <string key="NS.object.0">IDEDataModelDiagramEditor</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">_diagramController</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
- <string key="name">_diagramController</string>
- <string key="candidateClassName">IDEDataModelDiagramEditor</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/XDDiagramView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">XDTableView</string>
- <string key="superclassName">NSTableView</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showAllTableColumns:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">showAllTableColumns:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">showAllTableColumns:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/XDTableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">AppDelegate</string>
- <string key="superclassName">NSObject</string>
- <dictionary class="NSMutableDictionary" key="actions">
- <string key="applicationShouldTerminate:">id</string>
- <string key="applicationWillFinishLaunching:">id</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="actionInfosByName">
- <object class="IBActionInfo" key="applicationShouldTerminate:">
- <string key="name">applicationShouldTerminate:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo" key="applicationWillFinishLaunching:">
- <string key="name">applicationWillFinishLaunching:</string>
- <string key="candidateClassName">id</string>
- </object>
- </dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/AppDelegate.h</string>
+ <string key="minorKey">./Classes/MASShortcutView.h</string>
</object>
</object>
</array>