Usability improvements to OS X MP app.
[ADDED] OS X: A status item to activate the MP window. [ADDED] OS X: A global hotkey (cmd-ctrl-p) to activate the MP window. [ADDED] OS X: Make the MP window dismissable by hitting Esc. [ADDED] OS X: Copy the site content by hitting Enter. [FIXED] OS X: Make the password field first responder. [FIXED] OS X: Don't pop the password window multiple times if the application gets activated while the key isn't set yet. [IMPROVED] OS X: Remove the MP icon from the dock.
This commit is contained in:
parent
376953ae56
commit
424479dada
@ -7,6 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
DA44255715546C580052177D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA44255615546C570052177D /* Carbon.framework */; };
|
||||
DA600BEB150420AC008E9AB6 /* MPPasswordWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600BE9150420AC008E9AB6 /* MPPasswordWindowController.m */; };
|
||||
DA600BEC150420AC008E9AB6 /* MPPasswordWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA600BEA150420AC008E9AB6 /* MPPasswordWindowController.xib */; };
|
||||
DA600C2D150565FC008E9AB6 /* MPConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600C2A150565FC008E9AB6 /* MPConfig.m */; };
|
||||
@ -1430,6 +1431,7 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
DA44255615546C570052177D /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
|
||||
DA600BE8150420AC008E9AB6 /* MPPasswordWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordWindowController.h; sourceTree = "<group>"; };
|
||||
DA600BE9150420AC008E9AB6 /* MPPasswordWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordWindowController.m; sourceTree = "<group>"; };
|
||||
DA600BEA150420AC008E9AB6 /* MPPasswordWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPPasswordWindowController.xib; sourceTree = "<group>"; };
|
||||
@ -3235,6 +3237,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA44255715546C580052177D /* Carbon.framework in Frameworks */,
|
||||
DADEA5D51503EEDF00FD084E /* Security.framework in Frameworks */,
|
||||
DAFE4A6415039CDC003ABA7C /* Pearl.dylib in Frameworks */,
|
||||
DAB8D98D150374AD00CED3BC /* Cocoa.framework in Frameworks */,
|
||||
@ -3982,7 +3985,6 @@
|
||||
DAB8D97D150374AC00CED3BC = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DADEA5D31503EEA700FD084E /* Security.framework */,
|
||||
DAB8D992150374AD00CED3BC /* MasterPassword */,
|
||||
DA600C5915057F0F008E9AB6 /* Resources */,
|
||||
DAB8D9DA1503940100CED3BC /* Pearl */,
|
||||
@ -4007,6 +4009,8 @@
|
||||
DAB8D98B150374AD00CED3BC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA44255615546C570052177D /* Carbon.framework */,
|
||||
DADEA5D31503EEA700FD084E /* Security.framework */,
|
||||
DAB8D98C150374AD00CED3BC /* Cocoa.framework */,
|
||||
DAB8D98E150374AD00CED3BC /* Other Frameworks */,
|
||||
);
|
||||
|
@ -12,6 +12,7 @@
|
||||
@interface MPAppDelegate : NSObject <NSApplicationDelegate>
|
||||
|
||||
@property (assign) IBOutlet NSWindow *window;
|
||||
@property (strong) NSStatusItem *statusItem;
|
||||
|
||||
- (IBAction)saveAction:(id)sender;
|
||||
|
||||
|
@ -9,16 +9,20 @@
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPConfig.h"
|
||||
#import "MPElementEntity.h"
|
||||
#import <Carbon/Carbon.h>
|
||||
|
||||
|
||||
@interface MPAppDelegate ()
|
||||
|
||||
@property (readwrite, strong, nonatomic) MPPasswordWindowController *passwordWindow;
|
||||
|
||||
- (void)activate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPAppDelegate
|
||||
@synthesize window = _window;
|
||||
@synthesize window;
|
||||
@synthesize statusItem;
|
||||
@synthesize passwordWindow;
|
||||
|
||||
@dynamic persistentStoreCoordinator, managedObjectModel, managedObjectContext;
|
||||
@ -26,19 +30,57 @@
|
||||
@synthesize keyHash;
|
||||
@synthesize keyHashHex;
|
||||
|
||||
static EventHotKeyID MPShowHotKey = { .signature = 'show', .id = 1 };
|
||||
|
||||
+ (void)initialize {
|
||||
|
||||
[MPConfig get];
|
||||
|
||||
#ifdef DEBUG
|
||||
[PearlLogger get].autoprintLevel = PearlLogLevelTrace
|
||||
;
|
||||
[PearlLogger get].autoprintLevel = PearlLogLevelTrace;
|
||||
#endif
|
||||
}
|
||||
|
||||
static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData){
|
||||
|
||||
// Extract the hotkey ID.
|
||||
EventHotKeyID hotKeyID;
|
||||
GetEventParameter(theEvent,kEventParamDirectObject,typeEventHotKeyID,
|
||||
NULL,sizeof(hotKeyID),NULL,&hotKeyID);
|
||||
|
||||
// Check which hotkey this was.
|
||||
if (hotKeyID.signature == MPShowHotKey.signature && hotKeyID.id == MPShowHotKey.id) {
|
||||
[((__bridge MPAppDelegate *)userData) activate];
|
||||
return noErr;
|
||||
}
|
||||
|
||||
return eventNotHandledErr;
|
||||
}
|
||||
|
||||
- (void)activate {
|
||||
|
||||
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
||||
}
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||
|
||||
[self managedObjectContext];
|
||||
// Status item.
|
||||
self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
|
||||
self.statusItem.title = @"•••";
|
||||
self.statusItem.highlightMode = YES;
|
||||
self.statusItem.target = self;
|
||||
self.statusItem.action = @selector(activate);
|
||||
|
||||
// Global hotkey.
|
||||
EventHotKeyRef hotKeyRef;
|
||||
EventTypeSpec hotKeyEvents[1] = { { .eventClass = kEventClassKeyboard, .eventKind = kEventHotKeyPressed } };
|
||||
OSStatus status = InstallApplicationEventHandler(NewEventHandlerUPP(MPHotKeyHander), GetEventTypeCount(hotKeyEvents), hotKeyEvents,
|
||||
(__bridge void *)self, NULL);
|
||||
if(status != noErr)
|
||||
err(@"Error installing application event handler: %d", status);
|
||||
status = RegisterEventHotKey(35 /* p */, controlKey + cmdKey, MPShowHotKey, GetApplicationEventTarget(), 0, &hotKeyRef);
|
||||
if(status != noErr)
|
||||
err(@"Error registering hotkey: %d", status);
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(NSNotification *)notification {
|
||||
@ -59,13 +101,16 @@
|
||||
if (!self.key)
|
||||
// Ask the user to set the key through his master password.
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (self.key)
|
||||
return;
|
||||
|
||||
NSAlert *alert = [NSAlert alertWithMessageText:@"Master Password is locked."
|
||||
defaultButton:@"Unlock" alternateButton:@"Change" otherButton:@"Quit"
|
||||
informativeTextWithFormat:@"Your master password is required to unlock the application."];
|
||||
NSTextField *passwordField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 22)];
|
||||
NSSecureTextField *passwordField = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 22)];
|
||||
[alert setAccessoryView:passwordField];
|
||||
[passwordField becomeFirstResponder];
|
||||
[alert layout];
|
||||
[passwordField becomeFirstResponder];
|
||||
do {
|
||||
NSInteger button = [alert runModal];
|
||||
|
||||
|
@ -9,8 +9,9 @@
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface MPPasswordWindowController : NSWindowController <NSTextFieldDelegate>
|
||||
|
||||
@property (weak) IBOutlet NSTextField *siteField;
|
||||
@property (weak) IBOutlet NSTextField *contentField;
|
||||
- (IBAction)empty:(id)sender;
|
||||
@property (weak) IBOutlet NSTextField *tipField;
|
||||
|
||||
@end
|
||||
|
@ -22,10 +22,17 @@
|
||||
@synthesize oldSiteName, siteResults;
|
||||
@synthesize siteField;
|
||||
@synthesize contentField;
|
||||
@synthesize tipField;
|
||||
|
||||
- (void)windowDidLoad {
|
||||
|
||||
[self.contentField setStringValue:@""];
|
||||
[self.tipField setStringValue:@""];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowDidBecomeKeyNotification object:self.window queue:nil
|
||||
usingBlock:^(NSNotification *note) {
|
||||
[self.siteField selectText:self];
|
||||
}];
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification object:self.window queue:nil
|
||||
usingBlock:^(NSNotification *note) {
|
||||
[[NSApplication sharedApplication] hide:self];
|
||||
@ -35,6 +42,10 @@
|
||||
NSString *newSiteName = [self.siteField stringValue];
|
||||
BOOL shouldComplete = [self.oldSiteName length] < [newSiteName length];
|
||||
self.oldSiteName = newSiteName;
|
||||
|
||||
if ([self trySite])
|
||||
shouldComplete = NO;
|
||||
|
||||
if (shouldComplete)
|
||||
[[[note userInfo] objectForKey:@"NSFieldEditor"] complete:nil];
|
||||
}];
|
||||
@ -45,9 +56,9 @@
|
||||
- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index {
|
||||
|
||||
NSString *query = [[control stringValue] substringWithRange:charRange];
|
||||
if (![query length] || ![MPAppDelegate get].keyHashHex)
|
||||
return nil;
|
||||
|
||||
assert(query);
|
||||
assert([MPAppDelegate get].keyHashHex);
|
||||
NSFetchRequest *fetchRequest = [MPAppDelegate.managedObjectModel
|
||||
fetchRequestFromTemplateWithName:@"MPElements"
|
||||
substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@ -72,64 +83,85 @@
|
||||
|
||||
- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector {
|
||||
|
||||
dbg(@"Selector = %@", NSStringFromSelector(commandSelector));
|
||||
if (commandSelector == @selector(cancel:))
|
||||
[self.window close];
|
||||
if (commandSelector == @selector(insertNewline:) && [[self.contentField stringValue] length]) {
|
||||
[[NSPasteboard generalPasteboard] declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
|
||||
if ([[NSPasteboard generalPasteboard] setString:[self.contentField stringValue] forType:NSPasteboardTypeString]) {
|
||||
self.tipField.alphaValue = 1;
|
||||
[self.tipField setStringValue:@"Copied!"];
|
||||
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 3.0f * NSEC_PER_SEC);
|
||||
dispatch_after(popTime, dispatch_get_main_queue(), ^{
|
||||
[NSAnimationContext beginGrouping];
|
||||
[[NSAnimationContext currentContext] setDuration:0.2f];
|
||||
[self.tipField.animator setAlphaValue:0];
|
||||
[NSAnimationContext endGrouping];
|
||||
});
|
||||
return YES;
|
||||
} else
|
||||
wrn(@"Couldn't copy password to pasteboard.");
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)controlTextDidEndEditing:(NSNotification *)obj {
|
||||
|
||||
if (obj.object == self.siteField) {
|
||||
NSString *siteName = [self.siteField stringValue];
|
||||
|
||||
MPElementEntity *result = nil;
|
||||
for (MPElementEntity *element in self.siteResults)
|
||||
if ([element.name isEqualToString:siteName]) {
|
||||
result = element;
|
||||
break;
|
||||
if (obj.object == self.siteField)
|
||||
[self trySite];
|
||||
}
|
||||
|
||||
- (BOOL)trySite {
|
||||
|
||||
MPElementEntity *result = [self findElement];
|
||||
if (!result) {
|
||||
[self.contentField setStringValue:@""];
|
||||
[self.tipField setStringValue:@""];
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (result)
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
|
||||
NSString *description = [result description];
|
||||
[result use];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.contentField setStringValue:description];
|
||||
[self.tipField setStringValue:@"Hit enter to copy the password."];
|
||||
self.tipField.alphaValue = 1;
|
||||
});
|
||||
});
|
||||
|
||||
// For when the app should be able to create new sites.
|
||||
// else
|
||||
// [[MPAppDelegate get].managedObjectContext performBlock:^{
|
||||
// MPElementEntity *element = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPElementGeneratedEntity class])
|
||||
// inManagedObjectContext:[MPAppDelegate get].managedObjectContext];
|
||||
// assert([element isKindOfClass:ClassFromMPElementType(element.type)]);
|
||||
// assert([MPAppDelegate get].keyHashHex);
|
||||
//
|
||||
// element.name = siteName;
|
||||
// element.mpHashHex = [MPAppDelegate get].keyHashHex;
|
||||
//
|
||||
// NSString *description = [element description];
|
||||
// [element use];
|
||||
//
|
||||
// dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// [self.contentField setStringValue:description? description: @""];
|
||||
// });
|
||||
// }];
|
||||
}
|
||||
/*
|
||||
else
|
||||
[[MPAppDelegate get].managedObjectContext performBlock:^{
|
||||
MPElementEntity *element = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPElementGeneratedEntity class])
|
||||
inManagedObjectContext:[MPAppDelegate get].managedObjectContext];
|
||||
assert([element isKindOfClass:ClassFromMPElementType(element.type)]);
|
||||
assert([MPAppDelegate get].keyHashHex);
|
||||
|
||||
element.name = siteName;
|
||||
element.mpHashHex = [MPAppDelegate get].keyHashHex;
|
||||
|
||||
NSString *description = [element description];
|
||||
[element use];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.contentField setStringValue:description? description: @""];
|
||||
});
|
||||
}];
|
||||
*/
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (IBAction)empty:(id)sender {
|
||||
- (MPElementEntity *)findElement {
|
||||
|
||||
for(NSEntityDescription *entity in [[MPAppDelegate managedObjectModel] entities]) {
|
||||
NSFetchRequest *request = [NSFetchRequest new];
|
||||
[request setEntity:entity];
|
||||
NSError *error;
|
||||
NSArray *results = [[MPAppDelegate managedObjectContext] executeFetchRequest:request error:&error];
|
||||
for(NSManagedObject *o in results) {
|
||||
[[MPAppDelegate managedObjectContext] deleteObject:o];
|
||||
}
|
||||
}
|
||||
for (MPElementEntity *element in self.siteResults)
|
||||
if ([element.name isEqualToString:[self.siteField stringValue]])
|
||||
return element;
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -12,13 +12,11 @@
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSTextField</string>
|
||||
<string>NSView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSCustomObject</string>
|
||||
<string>IBNSLayoutConstraint</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
<string>NSView</string>
|
||||
<string>IBNSLayoutConstraint</string>
|
||||
<string>NSCustomObject</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@ -38,15 +36,15 @@
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="45434518">
|
||||
<int key="NSWindowStyleMask">8215</int>
|
||||
<int key="NSWindowStyleMask">8209</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{600, 530}, {480, 134}}</string>
|
||||
<string key="NSWindowRect">{{600, 530}, {480, 159}}</string>
|
||||
<int key="NSWTFlags">611845120</int>
|
||||
<string key="NSWindowTitle">Master Password</string>
|
||||
<string key="NSWindowClass">NSPanel</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<string key="NSWindowContentMaxSize">{480, 134}</string>
|
||||
<string key="NSWindowContentMaxSize">{480, 320}</string>
|
||||
<string key="NSWindowContentMinSize">{480, 134}</string>
|
||||
<object class="NSView" key="NSWindowView" id="258451033">
|
||||
<reference key="NSNextResponder"/>
|
||||
@ -55,9 +53,10 @@
|
||||
<object class="NSTextField" id="291791585">
|
||||
<reference key="NSNextResponder" ref="258451033"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{140, 92}, {200, 22}}</string>
|
||||
<string key="NSFrame">{{140, 117}, {200, 22}}</string>
|
||||
<reference key="NSSuperview" ref="258451033"/>
|
||||
<reference key="NSNextKeyView" ref="524129387"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="226215720"/>
|
||||
<int key="NSViewLayerContentsRedrawPolicy">2</int>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@ -70,16 +69,15 @@
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<string key="NSPlaceholderString">Enter site name X</string>
|
||||
<string key="NSPlaceholderString">Site</string>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="291791585"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<int key="NSTextBezelStyle">1</int>
|
||||
<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">
|
||||
<object class="NSColor" key="NSColor" id="370404594">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
@ -98,8 +96,10 @@
|
||||
<object class="NSTextField" id="226215720">
|
||||
<reference key="NSNextResponder" ref="258451033"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 20}, {446, 64}}</string>
|
||||
<string key="NSFrame">{{17, 45}, {446, 64}}</string>
|
||||
<reference key="NSSuperview" ref="258451033"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1020047619"/>
|
||||
<int key="NSViewLayerContentsRedrawPolicy">2</int>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSAntiCompressionPriority">{250, 750}</string>
|
||||
@ -115,7 +115,7 @@
|
||||
</object>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="226215720"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<object class="NSColor" key="NSBackgroundColor" id="245864165">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
@ -130,33 +130,35 @@
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="524129387">
|
||||
<object class="NSTextField" id="1020047619">
|
||||
<reference key="NSNextResponder" ref="258451033"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{384, 85}, {82, 32}}</string>
|
||||
<string key="NSFrame">{{17, 20}, {446, 17}}</string>
|
||||
<reference key="NSSuperview" ref="258451033"/>
|
||||
<reference key="NSNextKeyView" ref="226215720"/>
|
||||
<reference key="NSWindow"/>
|
||||
<int key="NSViewLayerContentsRedrawPolicy">2</int>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSReuseIdentifierKey">_NS:1505</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="1001833466">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Empty</string>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="691402180">
|
||||
<int key="NSCellFlags">68288064</int>
|
||||
<int key="NSCellFlags2">138413056</int>
|
||||
<string key="NSContents">Hit enter to copy the password.</string>
|
||||
<reference key="NSSupport" ref="590895625"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="524129387"/>
|
||||
<int key="NSButtonFlags">-2038284033</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
<string key="NSCellIdentifier">_NS:1505</string>
|
||||
<reference key="NSControlView" ref="1020047619"/>
|
||||
<reference key="NSBackgroundColor" ref="245864165"/>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlLightHighlightColor</string>
|
||||
<reference key="NSColor" ref="370404594"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{480, 134}</string>
|
||||
<string key="NSFrameSize">{480, 159}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="291791585"/>
|
||||
<bool key="NSViewIsLayerTreeHost">YES</bool>
|
||||
<int key="NSViewLayerContentsRedrawPolicy">2</int>
|
||||
@ -164,7 +166,7 @@
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
|
||||
<string key="NSMinSize">{480, 153}</string>
|
||||
<string key="NSMaxSize">{480, 153}</string>
|
||||
<string key="NSMaxSize">{480, 339}</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
</array>
|
||||
@ -195,12 +197,12 @@
|
||||
<int key="connectionID">42</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">empty:</string>
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">tipField</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="524129387"/>
|
||||
<reference key="destination" ref="1020047619"/>
|
||||
</object>
|
||||
<int key="connectionID">48</int>
|
||||
<int key="connectionID">95</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
@ -210,6 +212,14 @@
|
||||
</object>
|
||||
<int key="connectionID">39</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">initialFirstResponder</string>
|
||||
<reference key="source" ref="45434518"/>
|
||||
<reference key="destination" ref="291791585"/>
|
||||
</object>
|
||||
<int key="connectionID">49</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
@ -257,38 +267,6 @@
|
||||
<int key="objectID">23</int>
|
||||
<reference key="object" ref="258451033"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<object class="IBNSLayoutConstraint" id="456428551">
|
||||
<reference key="firstItem" ref="226215720"/>
|
||||
<int key="firstAttribute">5</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="258451033"/>
|
||||
<int key="secondAttribute">5</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="51508433">
|
||||
<reference key="firstItem" ref="291791585"/>
|
||||
<int key="firstAttribute">9</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="226215720"/>
|
||||
<int key="secondAttribute">9</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">0.0</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">6</int>
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">2</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="490796257">
|
||||
<reference key="firstItem" ref="226215720"/>
|
||||
<int key="firstAttribute">3</int>
|
||||
@ -337,54 +315,6 @@
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="99093936">
|
||||
<reference key="firstItem" ref="258451033"/>
|
||||
<int key="firstAttribute">6</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="226215720"/>
|
||||
<int key="secondAttribute">6</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="400319127">
|
||||
<reference key="firstItem" ref="291791585"/>
|
||||
<int key="firstAttribute">3</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="258451033"/>
|
||||
<int key="secondAttribute">3</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="453166348">
|
||||
<reference key="firstItem" ref="258451033"/>
|
||||
<int key="firstAttribute">4</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="226215720"/>
|
||||
<int key="secondAttribute">4</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">9</int>
|
||||
<float key="scoringTypeFloat">40</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="582018795">
|
||||
<reference key="firstItem" ref="258451033"/>
|
||||
<int key="firstAttribute">6</int>
|
||||
@ -419,12 +349,44 @@
|
||||
</object>
|
||||
<reference ref="226215720"/>
|
||||
<reference ref="291791585"/>
|
||||
<reference ref="524129387"/>
|
||||
<object class="IBNSLayoutConstraint" id="118079668">
|
||||
<object class="IBNSLayoutConstraint" id="456428551">
|
||||
<reference key="firstItem" ref="226215720"/>
|
||||
<int key="firstAttribute">5</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="258451033"/>
|
||||
<int key="secondAttribute">5</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<reference ref="1020047619"/>
|
||||
<object class="IBNSLayoutConstraint" id="51508433">
|
||||
<reference key="firstItem" ref="291791585"/>
|
||||
<int key="firstAttribute">9</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="226215720"/>
|
||||
<int key="secondAttribute">9</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">0.0</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">6</int>
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">2</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="99093936">
|
||||
<reference key="firstItem" ref="258451033"/>
|
||||
<int key="firstAttribute">6</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="524129387"/>
|
||||
<reference key="secondItem" ref="1020047619"/>
|
||||
<int key="secondAttribute">6</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
@ -436,35 +398,73 @@
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="840794562">
|
||||
<reference key="firstItem" ref="524129387"/>
|
||||
<int key="firstAttribute">11</int>
|
||||
<object class="IBNSLayoutConstraint" id="536265876">
|
||||
<reference key="firstItem" ref="258451033"/>
|
||||
<int key="firstAttribute">4</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="291791585"/>
|
||||
<int key="secondAttribute">11</int>
|
||||
<reference key="secondItem" ref="1020047619"/>
|
||||
<int key="secondAttribute">4</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">0.0</double>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">6</int>
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">2</int>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="1695776">
|
||||
<reference key="firstItem" ref="258451033"/>
|
||||
<int key="firstAttribute">6</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="226215720"/>
|
||||
<int key="secondAttribute">6</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="400319127">
|
||||
<reference key="firstItem" ref="291791585"/>
|
||||
<int key="firstAttribute">3</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="258451033"/>
|
||||
<int key="secondAttribute">3</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="105480775">
|
||||
<reference key="firstItem" ref="1020047619"/>
|
||||
<int key="firstAttribute">5</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="258451033"/>
|
||||
<int key="secondAttribute">5</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">20</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<int key="scoringType">8</int>
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
<reference key="containingView" ref="258451033"/>
|
||||
</object>
|
||||
</array>
|
||||
<reference key="parent" ref="45434518"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">24</int>
|
||||
<reference key="object" ref="456428551"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">25</int>
|
||||
<reference key="object" ref="51508433"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">26</int>
|
||||
<reference key="object" ref="490796257"/>
|
||||
@ -480,21 +480,6 @@
|
||||
<reference key="object" ref="1014829211"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">29</int>
|
||||
<reference key="object" ref="99093936"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">30</int>
|
||||
<reference key="object" ref="400319127"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">31</int>
|
||||
<reference key="object" ref="453166348"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">32</int>
|
||||
<reference key="object" ref="582018795"/>
|
||||
@ -517,6 +502,7 @@
|
||||
<int key="objectID">35</int>
|
||||
<reference key="object" ref="291791585"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="213149334"/>
|
||||
<object class="IBNSLayoutConstraint" id="302161926">
|
||||
<reference key="firstItem" ref="291791585"/>
|
||||
<int key="firstAttribute">7</int>
|
||||
@ -533,15 +519,9 @@
|
||||
<int key="contentType">1</int>
|
||||
<reference key="containingView" ref="291791585"/>
|
||||
</object>
|
||||
<reference ref="213149334"/>
|
||||
</array>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">36</int>
|
||||
<reference key="object" ref="302161926"/>
|
||||
<reference key="parent" ref="291791585"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">37</int>
|
||||
<reference key="object" ref="213149334"/>
|
||||
@ -553,26 +533,56 @@
|
||||
<reference key="parent" ref="226215720"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">44</int>
|
||||
<reference key="object" ref="524129387"/>
|
||||
<int key="objectID">50</int>
|
||||
<reference key="object" ref="1020047619"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="1001833466"/>
|
||||
<reference ref="691402180"/>
|
||||
</array>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">45</int>
|
||||
<reference key="object" ref="1001833466"/>
|
||||
<reference key="parent" ref="524129387"/>
|
||||
<int key="objectID">51</int>
|
||||
<reference key="object" ref="691402180"/>
|
||||
<reference key="parent" ref="1020047619"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">46</int>
|
||||
<reference key="object" ref="118079668"/>
|
||||
<int key="objectID">74</int>
|
||||
<reference key="object" ref="456428551"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">47</int>
|
||||
<reference key="object" ref="840794562"/>
|
||||
<int key="objectID">85</int>
|
||||
<reference key="object" ref="51508433"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">87</int>
|
||||
<reference key="object" ref="99093936"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">90</int>
|
||||
<reference key="object" ref="302161926"/>
|
||||
<reference key="parent" ref="291791585"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">91</int>
|
||||
<reference key="object" ref="536265876"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">92</int>
|
||||
<reference key="object" ref="1695776"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">93</int>
|
||||
<reference key="object" ref="400319127"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">94</int>
|
||||
<reference key="object" ref="105480775"/>
|
||||
<reference key="parent" ref="258451033"/>
|
||||
</object>
|
||||
</array>
|
||||
@ -585,29 +595,24 @@
|
||||
<boolean value="YES" key="22.IBNSWindowAutoPositionCentersVertical"/>
|
||||
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="YES" key="22.NSWindowTemplate.visibleAtLaunch"/>
|
||||
<array key="23.IBNSViewMetadataConstraints">
|
||||
<array class="NSMutableArray" key="23.IBNSViewMetadataConstraints">
|
||||
<reference ref="137127436"/>
|
||||
<reference ref="582018795"/>
|
||||
<reference ref="453166348"/>
|
||||
<reference ref="400319127"/>
|
||||
<reference ref="99093936"/>
|
||||
<reference ref="1014829211"/>
|
||||
<reference ref="751044970"/>
|
||||
<reference ref="490796257"/>
|
||||
<reference ref="51508433"/>
|
||||
<reference ref="456428551"/>
|
||||
<reference ref="118079668"/>
|
||||
<reference ref="840794562"/>
|
||||
<reference ref="51508433"/>
|
||||
<reference ref="99093936"/>
|
||||
<reference ref="536265876"/>
|
||||
<reference ref="1695776"/>
|
||||
<reference ref="400319127"/>
|
||||
<reference ref="105480775"/>
|
||||
</array>
|
||||
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="30.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="31.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="32.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="NO" key="34.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
@ -617,22 +622,65 @@
|
||||
</array>
|
||||
<boolean value="NO" key="35.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="NO" key="44.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="46.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="47.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<boolean value="NO" key="50.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="50.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="51.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="85.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="87.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="90.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="91.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="93.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="94.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">48</int>
|
||||
<int key="maxID">95</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">MPPasswordWindowController</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="contentField">NSTextField</string>
|
||||
<string key="siteField">NSTextField</string>
|
||||
<string key="tipField">NSTextField</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="contentField">
|
||||
<string key="name">contentField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="siteField">
|
||||
<string key="name">siteField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="tipField">
|
||||
<string key="name">tipField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/MPPasswordWindowController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSLayoutConstraint</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/NSLayoutConstraint.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
|
@ -26,6 +26,8 @@
|
||||
<string>public.app-category.productivity</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2012 Lyndir. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
|
Loading…
Reference in New Issue
Block a user