diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index b169c54d..23cc0c4b 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -15,6 +15,10 @@ 4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C77E37915B84A240093A587 /* MPAppDelegate.m */; }; 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E37B15B84A240093A587 /* MainMenu.xib */; }; 4C88763415BABA30003D2CE9 /* PasswordWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C88763315BABA30003D2CE9 /* PasswordWindow.xib */; }; + 4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */; }; + 4CA0B2F015BCADC800654E32 /* GeneralSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */; }; + 4CA0B2F915BCAF6700654E32 /* MPGeneralSettingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */; }; + 4CA0B2FC15BCAF8600654E32 /* MPSettingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2FB15BCAF8600654E32 /* MPSettingsController.m */; }; 4CAD742E15B8860800104512 /* AesInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD73E615B8860800104512 /* AesInputStream.m */; }; 4CAD742F15B8860800104512 /* AesOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD73E815B8860800104512 /* AesOutputStream.m */; }; 4CAD743015B8860800104512 /* Arc4RandomStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD73EA15B8860800104512 /* Arc4RandomStream.m */; }; @@ -81,6 +85,13 @@ 4C77E37915B84A240093A587 /* MPAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate.m; sourceTree = ""; }; 4C77E37C15B84A240093A587 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; 4C88763315BABA30003D2CE9 /* PasswordWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordWindow.xib; sourceTree = ""; }; + 4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsWindow.xib; sourceTree = ""; }; + 4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GeneralSettings.xib; sourceTree = ""; }; + 4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPGeneralSettingsController.h; sourceTree = ""; }; + 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPGeneralSettingsController.m; sourceTree = ""; }; + 4CA0B2FA15BCAF8600654E32 /* MPSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsController.h; sourceTree = ""; }; + 4CA0B2FB15BCAF8600654E32 /* MPSettingsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsController.m; sourceTree = ""; }; + 4CA0B30D15BCB6FD00654E32 /* MPSettingsTabProtocoll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSettingsTabProtocoll.h; sourceTree = ""; }; 4CAD73E515B8860800104512 /* AesInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AesInputStream.h; sourceTree = ""; }; 4CAD73E615B8860800104512 /* AesInputStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AesInputStream.m; sourceTree = ""; }; 4CAD73E715B8860800104512 /* AesOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AesOutputStream.h; sourceTree = ""; }; @@ -195,6 +206,8 @@ children = ( 4C77E37B15B84A240093A587 /* MainMenu.xib */, 4C88763315BABA30003D2CE9 /* PasswordWindow.xib */, + 4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */, + 4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */, ); name = Views; sourceTree = ""; @@ -264,6 +277,9 @@ 4C77E36C15B84A240093A587 /* MacPass */ = { isa = PBXGroup; children = ( + 4CA0B30F15BCB85D00654E32 /* General */, + 4CA0B30E15BCB70200654E32 /* Protocolls */, + 4CA0B2F115BCAEE600654E32 /* Controller */, 4C06398C15B980480004DE27 /* Views */, 4C37A84215B8B495005EF8EE /* Model */, 4C37A84115B8B47D005EF8EE /* Delegates */, @@ -284,6 +300,32 @@ name = "Supporting Files"; sourceTree = ""; }; + 4CA0B2F115BCAEE600654E32 /* Controller */ = { + isa = PBXGroup; + children = ( + 4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */, + 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */, + 4CA0B2FA15BCAF8600654E32 /* MPSettingsController.h */, + 4CA0B2FB15BCAF8600654E32 /* MPSettingsController.m */, + ); + name = Controller; + sourceTree = ""; + }; + 4CA0B30E15BCB70200654E32 /* Protocolls */ = { + isa = PBXGroup; + children = ( + 4CA0B30D15BCB6FD00654E32 /* MPSettingsTabProtocoll.h */, + ); + name = Protocolls; + sourceTree = ""; + }; + 4CA0B30F15BCB85D00654E32 /* General */ = { + isa = PBXGroup; + children = ( + ); + name = General; + sourceTree = ""; + }; 4CAD73E315B8860800104512 /* KeePassLib */ = { isa = PBXGroup; children = ( @@ -478,6 +520,8 @@ 4CAD748015B887FD00104512 /* LICENSE.txt in Resources */, 4CAD748115B887FD00104512 /* README.markdown in Resources */, 4C88763415BABA30003D2CE9 /* PasswordWindow.xib in Resources */, + 4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */, + 4CA0B2F015BCADC800654E32 /* GeneralSettings.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -532,6 +576,8 @@ 4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */, 4CBA981815BA0DB600721965 /* MPDatabaseDocument.m in Sources */, 4CC6259115BA1C99002F5B11 /* MPOutlineViewDelegate.m in Sources */, + 4CA0B2F915BCAF6700654E32 /* MPGeneralSettingsController.m in Sources */, + 4CA0B2FC15BCAF8600654E32 /* MPSettingsController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/MacPass/GeneralSettings.xib b/MacPass/GeneralSettings.xib new file mode 100644 index 00000000..9d335790 --- /dev/null +++ b/MacPass/GeneralSettings.xib @@ -0,0 +1,528 @@ + + + + 1070 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + NSTextField + NSCustomObject + NSMenu + NSMenuItem + NSPopUpButton + NSCustomView + NSPopUpButtonCell + IBNSLayoutConstraint + NSTextFieldCell + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + MPGeneralSettingsController + + + FirstResponder + + + NSApplication + + + + 268 + + + + 268 + {{146, 292}, {127, 26}} + + + + _NS:9 + {750, 751} + YES + + -2076049856 + 2048 + + LucidaGrande + 13 + 1044 + + _NS:9 + + 109199615 + 65 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{17, 298}, {127, 17}} + + + + _NS:1505 + YES + + 68288064 + 71304192 + Password Encoding + + _NS:1505 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + {290, 336} + + + + NSView + + + + + + + view + + + + 82 + + + + encodingPopup + + + + 83 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + + + + + 5 + 1 + + 5 + 1 + + 20 + + 1000 + 9 + 40 + 3 + + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + 9 + 40 + 3 + + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + 9 + 40 + 3 + + + + + 6 + 1 + + 6 + 1 + + 20 + + 1000 + 9 + 40 + 3 + + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + 8 + 29 + 3 + + + + + 7 + 0 + + 7 + 1 + + 0.0 + + 1000 + 9 + 40 + 5 + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + 8 + 29 + 3 + + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + 6 + 24 + 2 + + + + + + + 8 + + + + + + + + 9 + + + + + 14 + + + + + + + + 15 + + + + + + + + 16 + + + + + + + + + + 17 + + + + + 18 + + + + + 19 + + + + + 59 + + + + + 62 + + + + + 66 + + + + + 68 + + + + + 124 + + + + + 129 + + + + + 130 + + + + + 131 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 131 + + + + + MPGeneralSettingsController + NSViewController + + encodingPopup + NSPopUpButton + + + encodingPopup + + encodingPopup + NSPopUpButton + + + + IBProjectSource + ./Classes/MPGeneralSettingsController.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/MacPass/MPAppDelegate.m b/MacPass/MPAppDelegate.m index 550adcaf..e5d4b767 100644 --- a/MacPass/MPAppDelegate.m +++ b/MacPass/MPAppDelegate.m @@ -11,16 +11,19 @@ #import "MPDatabaseDocument.h" #import "MPOutlineDataSource.h" #import "MPOutlineViewDelegate.h" +#import "MPSettingsController.h" NSString *const kColumnIdentifier = @"OutlineColumn"; NSString *const kOutlineViewIdentifier = @"OutlineView"; @interface MPAppDelegate () @property (assign) IBOutlet NSOutlineView *outlineView; +@property (retain) MPSettingsController *settingsController; @property (retain) MPOutlineDataSource *datasource; @property (retain) MPOutlineViewDelegate *outlineDelegate; @property (retain) MPDatabaseDocument *database; - (void)updateData; +- (IBAction)showPreferences:(id)sender; @end @implementation MPAppDelegate @@ -30,6 +33,7 @@ NSString *const kOutlineViewIdentifier = @"OutlineView"; @synthesize database = _database; @synthesize outlineDelegate = _outlineDelegate; @synthesize datasource = _datasource; +@synthesize settingsController = _settingsController; - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { @@ -37,8 +41,7 @@ NSString *const kOutlineViewIdentifier = @"OutlineView"; _datasource = [[MPOutlineDataSource alloc] init]; [[_outlineView outlineTableColumn] setIdentifier:kColumnIdentifier]; [_outlineView setDelegate:_outlineDelegate]; - [_outlineView setDataSource:_datasource]; - + [_outlineView setDataSource:_datasource]; // register for sucessfull document loads [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateData) name:MPDidLoadDataBaseNotification object:_database]; } @@ -47,4 +50,13 @@ NSString *const kOutlineViewIdentifier = @"OutlineView"; [_outlineView reloadData]; } +#pragma mark IBActions +- (void)showPreferences:(id)sender { + if(_settingsController == nil) { + _settingsController = [[MPSettingsController alloc] init]; + } + [_settingsController showWindow:_settingsController.window]; + +} + @end diff --git a/MacPass/MPDatabaseDocument.h b/MacPass/MPDatabaseDocument.h index 4d95d607..309fd5c1 100644 --- a/MacPass/MPDatabaseDocument.h +++ b/MacPass/MPDatabaseDocument.h @@ -13,5 +13,6 @@ APPKIT_EXTERN NSString *const MPDidLoadDataBaseNotification; @interface MPDatabaseDocument : NSObject - (id)initWithFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key; +- (void)openFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key; @end diff --git a/MacPass/MPDatabaseDocument.m b/MacPass/MPDatabaseDocument.m index 8bfc5ec9..e7f4223e 100644 --- a/MacPass/MPDatabaseDocument.m +++ b/MacPass/MPDatabaseDocument.m @@ -20,37 +20,42 @@ NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification"; @synthesize tree = _tree; - (id)init { - return [self initWithFile:nil password:nil keyfile:nil]; + // no appropriate init method + return nil; } - (id)initWithFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key { self = [super init]; if (self) { - // test for supplied parameters - KdbPassword *kdbPassword = nil; - if( password != nil ) { - if( key != nil ) { - kdbPassword = [[KdbPassword alloc] initWithPassword:password encoding:NSUTF8StringEncoding keyfile:[key path]]; - } - else { - kdbPassword = [[KdbPassword alloc] initWithPassword:password encoding:NSUTF8StringEncoding]; - } - } - - @try { - _tree = [KdbReaderFactory load:[file path] withPassword:kdbPassword]; - } - @catch (NSException *exception) { - // ignore - } - if( _tree != nil) { - // Post notification that a new document was loaded - NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; - [defaultCenter postNotificationName:MPDidLoadDataBaseNotification object:self]; - } + [self openFile:file password:password keyfile:key]; } return self; } +- (void)openFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key { + // Try to load the file + KdbPassword *kdbPassword = nil; + if( password != nil ) { + if( key != nil ) { + kdbPassword = [[KdbPassword alloc] initWithPassword:password encoding:NSUTF8StringEncoding keyfile:[key path]]; + } + else { + kdbPassword = [[KdbPassword alloc] initWithPassword:password encoding:NSUTF8StringEncoding]; + } + } + + @try { + _tree = [KdbReaderFactory load:[file path] withPassword:kdbPassword]; + } + @catch (NSException *exception) { + // ignore + } + if( _tree != nil) { + // Post notification that a new document was loaded + NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; + [defaultCenter postNotificationName:MPDidLoadDataBaseNotification object:self]; + } +} + @end diff --git a/MacPass/MPGeneralSettingsController.h b/MacPass/MPGeneralSettingsController.h new file mode 100644 index 00000000..e5c36213 --- /dev/null +++ b/MacPass/MPGeneralSettingsController.h @@ -0,0 +1,14 @@ +// +// MPGeneralSettingsController.h +// MacPass +// +// Created by Michael Starke on 23.07.12. +// Copyright (c) 2012 HicknHack Software GmbH. All rights reserved. +// + +#import +#import "MPSettingsTabProtocoll.h" + +@interface MPGeneralSettingsController : NSViewController + +@end diff --git a/MacPass/MPGeneralSettingsController.m b/MacPass/MPGeneralSettingsController.m new file mode 100644 index 00000000..64867bd7 --- /dev/null +++ b/MacPass/MPGeneralSettingsController.m @@ -0,0 +1,59 @@ +// +// MPGeneralSettingsController.m +// MacPass +// +// Created by Michael Starke on 23.07.12. +// Copyright (c) 2012 HicknHack Software GmbH. All rights reserved. +// + +#import "MPGeneralSettingsController.h" + +NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab"; + +@interface MPGeneralSettingsController () +@property (assign) IBOutlet NSPopUpButton *encodingPopup; +- (void)didLoadView; +@end + +@implementation MPGeneralSettingsController +@synthesize encodingPopup = _encodingPopup; + ++ (NSString *)identifier { + return MPGeneralSetingsIdentifier; +} + +- (id)init { + return [self initWithNibName:@"GeneralSettings" bundle:[NSBundle mainBundle]]; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + return self; +} + +- (void)loadView { + [super loadView]; + [self didLoadView]; +} + +- (void)didLoadView { + // setup connections + NSMenu *encodingMenu = [[NSMenu allocWithZone:[NSMenu menuZone]] init]; + NSMenuItem *item; + + item = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:@"UTF8 Encoding" action:NULL keyEquivalent:@""]; + [item setRepresentedObject:[NSNumber numberWithInt:NSUTF8StringEncoding]]; + [encodingMenu addItem:item]; + [item release]; + + item = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:@"ASCII Encoding" action:NULL keyEquivalent:@""]; + [item setRepresentedObject:[NSNumber numberWithInt:NSASCIIStringEncoding]]; + [encodingMenu addItem:item]; + [item release]; + + [_encodingPopup setMenu:encodingMenu]; + [encodingMenu release]; +} + +@end diff --git a/MacPass/MPSettingsController.h b/MacPass/MPSettingsController.h new file mode 100644 index 00000000..fb0ed9a6 --- /dev/null +++ b/MacPass/MPSettingsController.h @@ -0,0 +1,14 @@ +// +// MPSettingsController.h +// MacPass +// +// Created by Michael Starke on 23.07.12. +// Copyright (c) 2012 HicknHack Software GmbH. All rights reserved. +// + +#import + +APPKIT_EXTERN NSString const* kMPPasswordEnvodingSettingsKey; + +@interface MPSettingsController : NSWindowController +@end diff --git a/MacPass/MPSettingsController.m b/MacPass/MPSettingsController.m new file mode 100644 index 00000000..1a53a88a --- /dev/null +++ b/MacPass/MPSettingsController.m @@ -0,0 +1,32 @@ +// +// MPSettingsController.m +// MacPass +// +// Created by Michael Starke on 23.07.12. +// Copyright (c) 2012 HicknHack Software GmbH. All rights reserved. +// + +#import "MPSettingsController.h" +#import "MPGeneralSettingsController.h" + +NSString const* kMPPasswordEnvodingSettingsKey = @"PasswordEncoding"; + +@interface MPSettingsController () +@property (retain) MPGeneralSettingsController *generalController; +@end + +@implementation MPSettingsController +@synthesize generalController = _generalController; + +-(id)init { + self = [super initWithWindowNibName:@"SettingsWindow"]; + return self; +} + +- (void)windowDidLoad { + _generalController = [[MPGeneralSettingsController alloc] init]; + [_generalController loadView]; + [[self window] setContentView:[_generalController view]]; +} + +@end diff --git a/MacPass/MPSettingsTabProtocoll.h b/MacPass/MPSettingsTabProtocoll.h new file mode 100644 index 00000000..3779765f --- /dev/null +++ b/MacPass/MPSettingsTabProtocoll.h @@ -0,0 +1,16 @@ +// +// MPSettingsTabProtocoll.h +// MacPass +// +// Created by Michael Starke on 23.07.12. +// Copyright (c) 2012 HicknHack Software GmbH. All rights reserved. +// + +#import + +@protocol MPSettingsTabProtocoll + +@required ++ (NSString *)identifier; + +@end diff --git a/MacPass/SettingsWindow.xib b/MacPass/SettingsWindow.xib new file mode 100644 index 00000000..4901f8e6 --- /dev/null +++ b/MacPass/SettingsWindow.xib @@ -0,0 +1,141 @@ + + + + 1070 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + NSWindowTemplate + NSView + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + MPSettingsController + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{196, 240}, {473, 232}} + 544735232 + Window + NSWindow + + + + + 256 + {473, 232} + + + + {{0, 0}, {1680, 1050}} + {10000000000000, 10000000000000} + YES + + + + + + + window + + + + 3 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + + + + + + 2 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{357, 418}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 3 + + + + + MPSettingsController + NSWindowController + + IBProjectSource + ./Classes/MPSettingsController.h + + + + + 0 + IBCocoaFramework + YES + 3 + YES + + diff --git a/MacPass/en.lproj/MainMenu.xib b/MacPass/en.lproj/MainMenu.xib index 7bde6c00..b0b95f80 100644 --- a/MacPass/en.lproj/MainMenu.xib +++ b/MacPass/en.lproj/MainMenu.xib @@ -1015,7 +1015,6 @@ {{145, 0}, {579, 501}} - _NS:13 NSView @@ -1034,7 +1033,7 @@ - {{0, 0}, {1680, 1028}} + {{0, 0}, {1680, 1050}} {10000000000000, 10000000000000} YES @@ -1463,6 +1462,14 @@ 1109 + + + showPreferences: + + + + 1175 + imageView @@ -2653,13 +2660,24 @@ - 1174 + 1175 MPAppDelegate NSObject + + showPreferences: + id + + + showPreferences: + + showPreferences: + id + + NSOutlineView NSWindow