mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-14 11:42:30 +00:00
fixed view redrawing and animations
MPGradientView not correctly redraws dirty rects added rough idea for Search bar (Select what to search) fixed animations for status bar updated open panel to just allow .kdb and .kdbx files auto-coallapsing outline view on startup added rough scotch for entry edit view
This commit is contained in:
@@ -260,8 +260,8 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
4C8FECC816D57E3200BF26CF /* QuartzCore.framework in Frameworks */,
|
|
||||||
4CAD748E15B88AC100104512 /* libz.dylib in Frameworks */,
|
4CAD748E15B88AC100104512 /* libz.dylib in Frameworks */,
|
||||||
|
4C8FECC816D57E3200BF26CF /* QuartzCore.framework in Frameworks */,
|
||||||
4CAD748C15B889B700104512 /* Security.framework in Frameworks */,
|
4CAD748C15B889B700104512 /* Security.framework in Frameworks */,
|
||||||
4C77E36715B84A240093A587 /* Cocoa.framework in Frameworks */,
|
4C77E36715B84A240093A587 /* Cocoa.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
@@ -273,15 +273,15 @@
|
|||||||
4C06398C15B980480004DE27 /* Views */ = {
|
4C06398C15B980480004DE27 /* Views */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
4C25D58616CF0FAA00F6806C /* EntryView.xib */,
|
||||||
4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */,
|
4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */,
|
||||||
4C77E37B15B84A240093A587 /* MainMenu.xib */,
|
|
||||||
4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */,
|
|
||||||
4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */,
|
4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */,
|
||||||
|
4C77E37B15B84A240093A587 /* MainMenu.xib */,
|
||||||
4CD884B615BD47080042BBF8 /* MainWindow.xib */,
|
4CD884B615BD47080042BBF8 /* MainWindow.xib */,
|
||||||
|
4C61EA0416D2FFE200AC519E /* OutlineView.xib */,
|
||||||
|
4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */,
|
||||||
4C6B0E8B16C9B99B00A9ED23 /* PasswordInputView.xib */,
|
4C6B0E8B16C9B99B00A9ED23 /* PasswordInputView.xib */,
|
||||||
4C25D58416CF0F8800F6806C /* WelcomeView.xib */,
|
4C25D58416CF0F8800F6806C /* WelcomeView.xib */,
|
||||||
4C25D58616CF0FAA00F6806C /* EntryView.xib */,
|
|
||||||
4C61EA0416D2FFE200AC519E /* OutlineView.xib */,
|
|
||||||
4C69A73816D589DF00EC1B1A /* MPGradientView.h */,
|
4C69A73816D589DF00EC1B1A /* MPGradientView.h */,
|
||||||
4C69A73916D589DF00EC1B1A /* MPGradientView.m */,
|
4C69A73916D589DF00EC1B1A /* MPGradientView.m */,
|
||||||
);
|
);
|
||||||
@@ -871,7 +871,7 @@
|
|||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "MacPass/MacPass-Prefix.pch";
|
GCC_PREFIX_HEADER = "MacPass/MacPass-Prefix.pch";
|
||||||
INFOPLIST_FILE = "MacPass/MacPass-Info.plist";
|
INFOPLIST_FILE = "MacPass/MacPass-Info.plist";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
@@ -884,7 +884,7 @@
|
|||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "MacPass/MacPass-Prefix.pch";
|
GCC_PREFIX_HEADER = "MacPass/MacPass-Prefix.pch";
|
||||||
INFOPLIST_FILE = "MacPass/MacPass-Info.plist";
|
INFOPLIST_FILE = "MacPass/MacPass-Info.plist";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
<string key="NSFrame">{{13, 10}, {482, 597}}</string>
|
<string key="NSFrame">{{13, 10}, {482, 597}}</string>
|
||||||
<reference key="NSSuperview" ref="1005"/>
|
<reference key="NSSuperview" ref="1005"/>
|
||||||
<reference key="NSWindow"/>
|
<reference key="NSWindow"/>
|
||||||
<reference key="NSNextKeyView" ref="709543686"/>
|
|
||||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
<array class="NSMutableArray" key="NSTabViewItems">
|
<array class="NSMutableArray" key="NSTabViewItems">
|
||||||
<object class="NSTabViewItem" id="66471917">
|
<object class="NSTabViewItem" id="66471917">
|
||||||
@@ -678,7 +677,6 @@ AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA</b
|
|||||||
<string key="NSFrame">{{382, 10}, {69, 32}}</string>
|
<string key="NSFrame">{{382, 10}, {69, 32}}</string>
|
||||||
<reference key="NSSuperview" ref="709543686"/>
|
<reference key="NSSuperview" ref="709543686"/>
|
||||||
<reference key="NSWindow"/>
|
<reference key="NSWindow"/>
|
||||||
<reference key="NSNextKeyView"/>
|
|
||||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSButtonCell" key="NSCell" id="1017592733">
|
<object class="NSButtonCell" key="NSCell" id="1017592733">
|
||||||
@@ -740,7 +738,6 @@ AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA</b
|
|||||||
<int key="NSvFlags">256</int>
|
<int key="NSvFlags">256</int>
|
||||||
<array class="NSMutableArray" key="NSSubviews"/>
|
<array class="NSMutableArray" key="NSSubviews"/>
|
||||||
<string key="NSFrame">{{10, 33}, {462, 551}}</string>
|
<string key="NSFrame">{{10, 33}, {462, 551}}</string>
|
||||||
<reference key="NSNextKeyView"/>
|
|
||||||
<string key="NSReuseIdentifierKey">_NS:28</string>
|
<string key="NSReuseIdentifierKey">_NS:28</string>
|
||||||
</object>
|
</object>
|
||||||
<string key="NSLabel">Advanced</string>
|
<string key="NSLabel">Advanced</string>
|
||||||
@@ -765,7 +762,7 @@ AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA</b
|
|||||||
<string key="NSClassName">NSView</string>
|
<string key="NSClassName">NSView</string>
|
||||||
</object>
|
</object>
|
||||||
<object class="NSImageView" id="491721175">
|
<object class="NSImageView" id="491721175">
|
||||||
<reference key="NSNextResponder"/>
|
<nil key="NSNextResponder"/>
|
||||||
<int key="NSvFlags">268</int>
|
<int key="NSvFlags">268</int>
|
||||||
<set class="NSMutableSet" key="NSDragTypes">
|
<set class="NSMutableSet" key="NSDragTypes">
|
||||||
<string>Apple PDF pasteboard type</string>
|
<string>Apple PDF pasteboard type</string>
|
||||||
@@ -776,7 +773,6 @@ AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA</b
|
|||||||
<string>NeXT TIFF v4.0 pasteboard type</string>
|
<string>NeXT TIFF v4.0 pasteboard type</string>
|
||||||
</set>
|
</set>
|
||||||
<string key="NSFrameSize">{54, 54}</string>
|
<string key="NSFrameSize">{54, 54}</string>
|
||||||
<reference key="NSSuperview"/>
|
|
||||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSImageCell" key="NSCell" id="26384283">
|
<object class="NSImageCell" key="NSCell" id="26384283">
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,10 @@
|
|||||||
#import "MPIconHelper.h"
|
#import "MPIconHelper.h"
|
||||||
#import "KdbGroup+MPAdditions.h"
|
#import "KdbGroup+MPAdditions.h"
|
||||||
|
|
||||||
|
#import <QuartzCore/QuartzCore.h>
|
||||||
|
|
||||||
|
#define STATUS_BAR_ANIMATION_TIME 0.2
|
||||||
|
|
||||||
NSString *const MPEntryTableUserNameColumnIdentifier = @"MPUserNameColumnIdentifier";
|
NSString *const MPEntryTableUserNameColumnIdentifier = @"MPUserNameColumnIdentifier";
|
||||||
NSString *const MPEntryTableTitleColumnIdentifier = @"MPTitleColumnIdentifier";
|
NSString *const MPEntryTableTitleColumnIdentifier = @"MPTitleColumnIdentifier";
|
||||||
NSString *const MPEntryTablePasswordColumnIdentifier = @"MPPasswordColumnIdentifier";
|
NSString *const MPEntryTablePasswordColumnIdentifier = @"MPPasswordColumnIdentifier";
|
||||||
@@ -28,11 +32,17 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
@property (retain) NSArray *filteredEntries;
|
@property (retain) NSArray *filteredEntries;
|
||||||
@property (assign) IBOutlet NSTableView *entryTable;
|
@property (assign) IBOutlet NSTableView *entryTable;
|
||||||
@property (assign) IBOutlet NSView *statusBar;
|
@property (assign) IBOutlet NSView *statusBar;
|
||||||
|
@property (assign) IBOutlet NSTextField *searchLabelTextField;
|
||||||
|
@property (assign) BOOL isStatusBarVisible;
|
||||||
|
@property (retain) IBOutlet NSLayoutConstraint *statusBarToTop;
|
||||||
|
@property (retain) IBOutlet NSLayoutConstraint *tableToTop;
|
||||||
|
|
||||||
|
|
||||||
- (BOOL)hasActiveFilter;
|
- (BOOL)hasFilter;
|
||||||
- (void)updateFilter;
|
- (void)updateFilter;
|
||||||
- (void)didChangeGroupSelectionInOutlineView:(NSNotification *)notification;
|
- (void)didChangeGroupSelectionInOutlineView:(NSNotification *)notification;
|
||||||
|
- (void)showStatusBarAnimated:(BOOL)animate;
|
||||||
|
- (void)hideStatusBarAnimated:(BOOL)animate;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -46,6 +56,7 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||||
if(self) {
|
if(self) {
|
||||||
|
_isStatusBarVisible = YES;
|
||||||
_entryArrayController = [[NSArrayController alloc] init];
|
_entryArrayController = [[NSArrayController alloc] init];
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||||
selector:@selector(didChangeGroupSelectionInOutlineView:)
|
selector:@selector(didChangeGroupSelectionInOutlineView:)
|
||||||
@@ -57,6 +68,9 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
|
|
||||||
- (void)didLoadView {
|
- (void)didLoadView {
|
||||||
|
|
||||||
|
[self.view setWantsLayer:YES];
|
||||||
|
[self hideStatusBarAnimated:NO];
|
||||||
|
[[self.searchLabelTextField cell] setBackgroundStyle:NSBackgroundStyleRaised];
|
||||||
[self.entryTable setDelegate:self];
|
[self.entryTable setDelegate:self];
|
||||||
|
|
||||||
NSTableColumn *parentColumn = [self.entryTable tableColumns][0];
|
NSTableColumn *parentColumn = [self.entryTable tableColumns][0];
|
||||||
@@ -103,7 +117,7 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( isPasswordColum ) {
|
if( isPasswordColum ) {
|
||||||
view = [tableView makeViewWithIdentifier:_MPTAbleSecurCellView owner:self];
|
view = [tableView makeViewWithIdentifier:_MPTAbleSecurCellView owner:self];
|
||||||
[[view textField] setStringValue:entry.password];
|
[[view textField] setStringValue:entry.password];
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
@@ -119,15 +133,9 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
|
|
||||||
#pragma mark Notifications
|
#pragma mark Notifications
|
||||||
- (void)didChangeGroupSelectionInOutlineView:(NSNotification *)notification {
|
- (void)didChangeGroupSelectionInOutlineView:(NSNotification *)notification {
|
||||||
/*
|
|
||||||
If we have an active search, do not mess with the content
|
self.filter = @""; // will update the reast automatically
|
||||||
*/
|
|
||||||
if([self hasActiveFilter]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier] setHidden:YES];
|
|
||||||
}
|
|
||||||
MPOutlineViewDelegate *delegate = [notification object];
|
MPOutlineViewDelegate *delegate = [notification object];
|
||||||
KdbGroup *group = delegate.selectedGroup;
|
KdbGroup *group = delegate.selectedGroup;
|
||||||
if(group) {
|
if(group) {
|
||||||
@@ -140,7 +148,7 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
|
|
||||||
#pragma mark Filtering
|
#pragma mark Filtering
|
||||||
|
|
||||||
- (BOOL)hasActiveFilter {
|
- (BOOL)hasFilter {
|
||||||
return ([self.filter length] > 0);
|
return ([self.filter length] > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,21 +162,16 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
|
|
||||||
- (void)updateFilter {
|
- (void)updateFilter {
|
||||||
MPDatabaseDocument *openDatabase = [MPDatabaseController defaultController].database;
|
MPDatabaseDocument *openDatabase = [MPDatabaseController defaultController].database;
|
||||||
if(openDatabase) {
|
if(openDatabase && [self hasFilter]) {
|
||||||
|
[self showStatusBarAnimated:YES];
|
||||||
|
|
||||||
/*
|
|
||||||
Search in the background
|
|
||||||
*/
|
|
||||||
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
||||||
dispatch_async(backgroundQueue, ^{
|
dispatch_async(backgroundQueue, ^{
|
||||||
if([self.filter length] == 0) {
|
|
||||||
self.filteredEntries = [openDatabase.root childEntries];
|
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF.title CONTAINS[cd] %@", self.filter];
|
||||||
}
|
self.filteredEntries = [[openDatabase.root childEntries] filteredArrayUsingPredicate:filterPredicate];
|
||||||
else {
|
|
||||||
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF.title CONTAINS[cd] %@", self.filter];
|
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||||
self.filteredEntries = [[openDatabase.root childEntries] filteredArrayUsingPredicate:filterPredicate];
|
|
||||||
}
|
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
|
||||||
[self.entryArrayController setContent:self.filteredEntries];
|
[self.entryArrayController setContent:self.filteredEntries];
|
||||||
[[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier] setHidden:NO];
|
[[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier] setHidden:NO];
|
||||||
});
|
});
|
||||||
@@ -177,6 +180,53 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
|
|||||||
else {
|
else {
|
||||||
[self.entryArrayController setContent:nil];
|
[self.entryArrayController setContent:nil];
|
||||||
self.filteredEntries = nil;
|
self.filteredEntries = nil;
|
||||||
|
[[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier] setHidden:YES];
|
||||||
|
[self hideStatusBarAnimated:YES];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark Animation
|
||||||
|
|
||||||
|
- (void)showStatusBarAnimated:(BOOL)animate {
|
||||||
|
|
||||||
|
if(self.isStatusBarVisible) {
|
||||||
|
return; // nothign to to
|
||||||
|
}
|
||||||
|
self.isStatusBarVisible = YES;
|
||||||
|
self.statusBarToTop.constant = 0;
|
||||||
|
self.tableToTop.constant = [self.statusBar frame].size.height;
|
||||||
|
|
||||||
|
if(animate) {
|
||||||
|
[NSAnimationContext runAnimationGroup:^(NSAnimationContext* context) {
|
||||||
|
context.duration = STATUS_BAR_ANIMATION_TIME;
|
||||||
|
context.allowsImplicitAnimation = YES;
|
||||||
|
[self.view layoutSubtreeIfNeeded];
|
||||||
|
} completionHandler:nil] ;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self.view layoutSubtreeIfNeeded];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)hideStatusBarAnimated:(BOOL)animate {
|
||||||
|
|
||||||
|
if(!self.isStatusBarVisible) {
|
||||||
|
return; // nothing to do;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.isStatusBarVisible = NO;
|
||||||
|
self.statusBarToTop.constant = -[self.statusBar frame].size.height;
|
||||||
|
self.tableToTop.constant = -1;
|
||||||
|
|
||||||
|
if(animate) {
|
||||||
|
[NSAnimationContext runAnimationGroup:^(NSAnimationContext* context) {
|
||||||
|
context.duration = STATUS_BAR_ANIMATION_TIME;
|
||||||
|
context.allowsImplicitAnimation = YES;
|
||||||
|
[self.view layoutSubtreeIfNeeded];
|
||||||
|
} completionHandler:nil] ;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self.view layoutSubtreeIfNeeded];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
@implementation MPGradientView
|
@implementation MPGradientView
|
||||||
|
|
||||||
|
|
||||||
- (id)initWithFrame:(NSRect)frameRect {
|
- (id)initWithFrame:(NSRect)frameRect {
|
||||||
NSColor *activeTop = [NSColor colorWithCalibratedWhite:0.85 alpha:1];
|
NSColor *activeTop = [NSColor colorWithCalibratedWhite:0.85 alpha:1];
|
||||||
NSColor *activeBottom = [NSColor colorWithCalibratedWhite:0.7 alpha:1];
|
NSColor *activeBottom = [NSColor colorWithCalibratedWhite:0.7 alpha:1];
|
||||||
@@ -40,12 +39,17 @@
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark Drawing
|
||||||
|
|
||||||
- (void)drawRect:(NSRect)dirtyRect {
|
- (void)drawRect:(NSRect)dirtyRect {
|
||||||
|
/*
|
||||||
|
We draw a Gradient, so make sure we always redraw the full view
|
||||||
|
*/
|
||||||
NSGradient *gradient = self.isRenderedActive ? self.activeGradient : self.inactiveGradient;
|
NSGradient *gradient = self.isRenderedActive ? self.activeGradient : self.inactiveGradient;
|
||||||
[gradient drawInRect:dirtyRect angle:90];
|
[gradient drawInRect:self.bounds angle:90];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark State Refresh
|
||||||
- (void)_registerWindow:(NSWindow *)newWindow {
|
- (void)_registerWindow:(NSWindow *)newWindow {
|
||||||
if([self window]) {
|
if([self window]) {
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidBecomeKeyNotification object:[self window]];
|
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidBecomeKeyNotification object:[self window]];
|
||||||
@@ -55,7 +59,6 @@
|
|||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshActiveState) name:NSWindowDidBecomeKeyNotification object:newWindow];
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshActiveState) name:NSWindowDidBecomeKeyNotification object:newWindow];
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshActiveState) name:NSWindowDidResignKeyNotification object:newWindow];
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshActiveState) name:NSWindowDidResignKeyNotification object:newWindow];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
|
- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
|
||||||
@@ -67,6 +70,7 @@
|
|||||||
self.isRenderedActive = [[self window] isKeyWindow];
|
self.isRenderedActive = [[self window] isKeyWindow];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# pragma mark Custom Properties
|
||||||
- (void)setIsRenderedActive:(BOOL)isRenderedActive {
|
- (void)setIsRenderedActive:(BOOL)isRenderedActive {
|
||||||
if(_isRenderedActive != isRenderedActive) {
|
if(_isRenderedActive != isRenderedActive) {
|
||||||
_isRenderedActive = isRenderedActive;
|
_isRenderedActive = isRenderedActive;
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
|
|
||||||
@interface MPMainWindowController ()
|
@interface MPMainWindowController ()
|
||||||
|
|
||||||
|
|
||||||
@property (assign) IBOutlet NSView *outlineView;
|
@property (assign) IBOutlet NSView *outlineView;
|
||||||
@property (assign) IBOutlet NSSplitView *splitView;
|
@property (assign) IBOutlet NSSplitView *splitView;
|
||||||
@property (assign) IBOutlet NSView *contentView;
|
@property (assign) IBOutlet NSView *contentView;
|
||||||
|
|
||||||
@property (retain) IBOutlet NSView *welcomeView;
|
@property (retain) IBOutlet NSView *welcomeView;
|
||||||
|
@property (assign) IBOutlet NSTextField *welcomeText;
|
||||||
@property (retain) NSToolbar *toolbar;
|
@property (retain) NSToolbar *toolbar;
|
||||||
|
|
||||||
@property (retain) MPPasswordInputController *passwordInputController;
|
@property (retain) MPPasswordInputController *passwordInputController;
|
||||||
@@ -31,6 +31,9 @@
|
|||||||
@property (retain) MPToolbarDelegate *toolbarDelegate;
|
@property (retain) MPToolbarDelegate *toolbarDelegate;
|
||||||
@property (retain) MPMainWindowSplitViewDelegate *splitViewDelegate;
|
@property (retain) MPMainWindowSplitViewDelegate *splitViewDelegate;
|
||||||
|
|
||||||
|
- (void)collapseOutlineView;
|
||||||
|
- (void)expandOutlineView;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation MPMainWindowController
|
@implementation MPMainWindowController
|
||||||
@@ -58,9 +61,14 @@
|
|||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark View Handling
|
||||||
|
|
||||||
- (void)windowDidLoad
|
- (void)windowDidLoad
|
||||||
{
|
{
|
||||||
[super windowDidLoad];
|
[super windowDidLoad];
|
||||||
|
|
||||||
|
[[self.welcomeText cell] setBackgroundStyle:NSBackgroundStyleRaised];
|
||||||
|
|
||||||
const CGFloat minimumWindowWidth = MPMainWindowSplitViewDelegateMinimumContentWidth + MPMainWindowSplitViewDelegateMinimumOutlineWidth + [self.splitView dividerThickness];
|
const CGFloat minimumWindowWidth = MPMainWindowSplitViewDelegateMinimumContentWidth + MPMainWindowSplitViewDelegateMinimumOutlineWidth + [self.splitView dividerThickness];
|
||||||
[self.window setMinSize:NSMakeSize( minimumWindowWidth, 400)];
|
[self.window setMinSize:NSMakeSize( minimumWindowWidth, 400)];
|
||||||
|
|
||||||
@@ -72,13 +80,13 @@
|
|||||||
[self.splitView setDelegate:self.splitViewDelegate];
|
[self.splitView setDelegate:self.splitViewDelegate];
|
||||||
|
|
||||||
NSRect frame = [self.outlineView frame];
|
NSRect frame = [self.outlineView frame];
|
||||||
// frame.size.height -= 1;
|
|
||||||
// frame.origin.y = 10;
|
|
||||||
[self.outlineViewController.view setFrame:frame];
|
[self.outlineViewController.view setFrame:frame];
|
||||||
[self.outlineViewController.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
|
[self.outlineViewController.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
|
||||||
[self.splitView replaceSubview:self.outlineView with:[self.outlineViewController view]];
|
[self.splitView replaceSubview:self.outlineView with:[self.outlineViewController view]];
|
||||||
[self.splitView adjustSubviews];
|
[self.splitView adjustSubviews];
|
||||||
|
|
||||||
[self setContentViewController:nil];
|
[self setContentViewController:nil];
|
||||||
|
[self collapseOutlineView];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setContentViewController:(MPViewController *)viewController {
|
- (void)setContentViewController:(MPViewController *)viewController {
|
||||||
@@ -113,6 +121,21 @@
|
|||||||
[self.window makeFirstResponder:[viewController reconmendedFirstResponder]];
|
[self.window makeFirstResponder:[viewController reconmendedFirstResponder]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)collapseOutlineView {
|
||||||
|
NSView *outlineView = [self.splitView subviews][0];
|
||||||
|
if(![outlineView isHidden]) {
|
||||||
|
[self.splitView setPosition:0 ofDividerAtIndex:0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)expandOutlineView {
|
||||||
|
NSView *outlineView = [self.splitView subviews][0];
|
||||||
|
if([outlineView isHidden]) {
|
||||||
|
[self.splitView setPosition:MPMainWindowSplitViewDelegateMinimumOutlineWidth ofDividerAtIndex:0];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
|
|
||||||
- (void)performFindPanelAction:(id)sender {
|
- (void)performFindPanelAction:(id)sender {
|
||||||
@@ -134,6 +157,7 @@
|
|||||||
[openPanel setCanChooseFiles:YES];
|
[openPanel setCanChooseFiles:YES];
|
||||||
[openPanel setCanCreateDirectories:NO];
|
[openPanel setCanCreateDirectories:NO];
|
||||||
[openPanel setAllowsMultipleSelection:NO];
|
[openPanel setAllowsMultipleSelection:NO];
|
||||||
|
[openPanel setAllowedFileTypes:@[ @"kdbx", @"kdb"]];
|
||||||
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result){
|
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result){
|
||||||
if(result == NSFileHandlingPanelOKButton) {
|
if(result == NSFileHandlingPanelOKButton) {
|
||||||
NSURL *file = [[openPanel URLs] lastObject];
|
NSURL *file = [[openPanel URLs] lastObject];
|
||||||
@@ -155,10 +179,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)showEntries {
|
- (void)showEntries {
|
||||||
|
[self expandOutlineView];
|
||||||
if(!self.entryViewController) {
|
if(!self.entryViewController) {
|
||||||
_entryViewController = [[MPEntryViewController alloc] init];
|
_entryViewController = [[MPEntryViewController alloc] init];
|
||||||
}
|
}
|
||||||
[self setContentViewController:self.entryViewController];
|
[self setContentViewController:self.entryViewController];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (IBAction)changedFileType:(id)sender {
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>15D</string>
|
<string>1C8</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
|||||||
@@ -41,17 +41,10 @@
|
|||||||
<object class="NSTextField" id="86698766">
|
<object class="NSTextField" id="86698766">
|
||||||
<reference key="NSNextResponder" ref="1005"/>
|
<reference key="NSNextResponder" ref="1005"/>
|
||||||
<int key="NSvFlags">268</int>
|
<int key="NSvFlags">268</int>
|
||||||
<string key="NSFrame">{{210, 211}, {177, 34}}</string>
|
<string key="NSFrame">{{223, 214}, {152, 29}}</string>
|
||||||
<reference key="NSSuperview" ref="1005"/>
|
<reference key="NSSuperview" ref="1005"/>
|
||||||
<reference key="NSWindow"/>
|
<reference key="NSWindow"/>
|
||||||
<reference key="NSNextKeyView"/>
|
<reference key="NSNextKeyView"/>
|
||||||
<object class="NSShadow" key="NSViewShadow">
|
|
||||||
<double key="NSShadowVert">1</double>
|
|
||||||
<object class="NSColor" key="NSShadowColor" id="214915299">
|
|
||||||
<int key="NSColorSpace">1</int>
|
|
||||||
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
||||||
<bool key="NSEnabled">YES</bool>
|
<bool key="NSEnabled">YES</bool>
|
||||||
<object class="NSTextFieldCell" key="NSCell" id="726130946">
|
<object class="NSTextFieldCell" key="NSCell" id="726130946">
|
||||||
@@ -60,7 +53,7 @@
|
|||||||
<string key="NSContents">No Database</string>
|
<string key="NSContents">No Database</string>
|
||||||
<object class="NSFont" key="NSSupport">
|
<object class="NSFont" key="NSSupport">
|
||||||
<string key="NSName">LucidaGrande</string>
|
<string key="NSName">LucidaGrande</string>
|
||||||
<double key="NSSize">28</double>
|
<double key="NSSize">24</double>
|
||||||
<int key="NSfFlags">16</int>
|
<int key="NSfFlags">16</int>
|
||||||
</object>
|
</object>
|
||||||
<string key="NSCellIdentifier">_NS:1535</string>
|
<string key="NSCellIdentifier">_NS:1535</string>
|
||||||
@@ -91,7 +84,6 @@
|
|||||||
<reference key="NSSuperview"/>
|
<reference key="NSSuperview"/>
|
||||||
<reference key="NSWindow"/>
|
<reference key="NSWindow"/>
|
||||||
<reference key="NSNextKeyView" ref="86698766"/>
|
<reference key="NSNextKeyView" ref="86698766"/>
|
||||||
<bool key="NSViewIsLayerTreeHost">YES</bool>
|
|
||||||
<string key="NSClassName">NSView</string>
|
<string key="NSClassName">NSView</string>
|
||||||
</object>
|
</object>
|
||||||
</array>
|
</array>
|
||||||
@@ -105,6 +97,14 @@
|
|||||||
</object>
|
</object>
|
||||||
<int key="connectionID">12</int>
|
<int key="connectionID">12</int>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">welcomeText</string>
|
||||||
|
<reference key="source" ref="1001"/>
|
||||||
|
<reference key="destination" ref="86698766"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">17</int>
|
||||||
|
</object>
|
||||||
</array>
|
</array>
|
||||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
<array key="orderedObjects">
|
<array key="orderedObjects">
|
||||||
@@ -136,27 +136,11 @@
|
|||||||
<int key="objectID">1</int>
|
<int key="objectID">1</int>
|
||||||
<reference key="object" ref="1005"/>
|
<reference key="object" ref="1005"/>
|
||||||
<array class="NSMutableArray" key="children">
|
<array class="NSMutableArray" key="children">
|
||||||
<object class="IBNSLayoutConstraint" id="400794400">
|
<object class="IBNSLayoutConstraint" id="7631442">
|
||||||
<reference key="firstItem" ref="1005"/>
|
<reference key="firstItem" ref="86698766"/>
|
||||||
<int key="firstAttribute">10</int>
|
|
||||||
<int key="relation">0</int>
|
|
||||||
<reference key="secondItem" ref="86698766"/>
|
|
||||||
<int key="secondAttribute">10</int>
|
|
||||||
<float key="multiplier">1</float>
|
|
||||||
<object class="IBLayoutConstant" key="constant">
|
|
||||||
<double key="value">0.0</double>
|
|
||||||
</object>
|
|
||||||
<float key="priority">1000</float>
|
|
||||||
<reference key="containingView" ref="1005"/>
|
|
||||||
<int key="scoringType">9</int>
|
|
||||||
<float key="scoringTypeFloat">40</float>
|
|
||||||
<int key="contentType">2</int>
|
|
||||||
</object>
|
|
||||||
<object class="IBNSLayoutConstraint" id="121551590">
|
|
||||||
<reference key="firstItem" ref="1005"/>
|
|
||||||
<int key="firstAttribute">9</int>
|
<int key="firstAttribute">9</int>
|
||||||
<int key="relation">0</int>
|
<int key="relation">0</int>
|
||||||
<reference key="secondItem" ref="86698766"/>
|
<reference key="secondItem" ref="1005"/>
|
||||||
<int key="secondAttribute">9</int>
|
<int key="secondAttribute">9</int>
|
||||||
<float key="multiplier">1</float>
|
<float key="multiplier">1</float>
|
||||||
<object class="IBLayoutConstant" key="constant">
|
<object class="IBLayoutConstant" key="constant">
|
||||||
@@ -164,8 +148,24 @@
|
|||||||
</object>
|
</object>
|
||||||
<float key="priority">1000</float>
|
<float key="priority">1000</float>
|
||||||
<reference key="containingView" ref="1005"/>
|
<reference key="containingView" ref="1005"/>
|
||||||
<int key="scoringType">9</int>
|
<int key="scoringType">5</int>
|
||||||
<float key="scoringTypeFloat">40</float>
|
<float key="scoringTypeFloat">22</float>
|
||||||
|
<int key="contentType">2</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBNSLayoutConstraint" id="790404227">
|
||||||
|
<reference key="firstItem" ref="86698766"/>
|
||||||
|
<int key="firstAttribute">10</int>
|
||||||
|
<int key="relation">0</int>
|
||||||
|
<reference key="secondItem" ref="1005"/>
|
||||||
|
<int key="secondAttribute">10</int>
|
||||||
|
<float key="multiplier">1</float>
|
||||||
|
<object class="IBLayoutConstant" key="constant">
|
||||||
|
<double key="value">0.0</double>
|
||||||
|
</object>
|
||||||
|
<float key="priority">1000</float>
|
||||||
|
<reference key="containingView" ref="1005"/>
|
||||||
|
<int key="scoringType">5</int>
|
||||||
|
<float key="scoringTypeFloat">22</float>
|
||||||
<int key="contentType">2</int>
|
<int key="contentType">2</int>
|
||||||
</object>
|
</object>
|
||||||
<reference ref="86698766"/>
|
<reference ref="86698766"/>
|
||||||
@@ -186,13 +186,13 @@
|
|||||||
<reference key="parent" ref="86698766"/>
|
<reference key="parent" ref="86698766"/>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBObjectRecord">
|
<object class="IBObjectRecord">
|
||||||
<int key="objectID">10</int>
|
<int key="objectID">21</int>
|
||||||
<reference key="object" ref="121551590"/>
|
<reference key="object" ref="790404227"/>
|
||||||
<reference key="parent" ref="1005"/>
|
<reference key="parent" ref="1005"/>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBObjectRecord">
|
<object class="IBObjectRecord">
|
||||||
<int key="objectID">11</int>
|
<int key="objectID">22</int>
|
||||||
<reference key="object" ref="400794400"/>
|
<reference key="object" ref="7631442"/>
|
||||||
<reference key="parent" ref="1005"/>
|
<reference key="parent" ref="1005"/>
|
||||||
</object>
|
</object>
|
||||||
</array>
|
</array>
|
||||||
@@ -202,46 +202,39 @@
|
|||||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<array class="NSMutableArray" key="1.IBNSViewMetadataConstraints">
|
<array class="NSMutableArray" key="1.IBNSViewMetadataConstraints">
|
||||||
<reference ref="121551590"/>
|
<reference ref="790404227"/>
|
||||||
<reference ref="400794400"/>
|
<reference ref="7631442"/>
|
||||||
</array>
|
</array>
|
||||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
|
||||||
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
|
||||||
<boolean value="NO" key="2.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
<boolean value="NO" key="2.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||||
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<reference key="2.IBViewIntegration.shadowColor" ref="214915299"/>
|
<real value="0.0" key="2.IBViewIntegration.shadowBlurRadius"/>
|
||||||
|
<object class="NSColor" key="2.IBViewIntegration.shadowColor">
|
||||||
|
<int key="NSColorSpace">1</int>
|
||||||
|
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
||||||
|
</object>
|
||||||
<real value="1" key="2.IBViewIntegration.shadowOffsetHeight"/>
|
<real value="1" key="2.IBViewIntegration.shadowOffsetHeight"/>
|
||||||
|
<real value="0.0" key="2.IBViewIntegration.shadowOffsetWidth"/>
|
||||||
|
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||||
<nil key="activeLocalization"/>
|
<nil key="activeLocalization"/>
|
||||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">12</int>
|
<int key="maxID">22</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
<object class="IBPartialClassDescription">
|
<object class="IBPartialClassDescription">
|
||||||
<string key="className">MPMainWindowController</string>
|
<string key="className">MPMainWindowController</string>
|
||||||
<string key="superclassName">NSWindowController</string>
|
<string key="superclassName">NSWindowController</string>
|
||||||
<object class="NSMutableDictionary" key="actions">
|
|
||||||
<string key="NS.key.0">usePassword:</string>
|
|
||||||
<string key="NS.object.0">id</string>
|
|
||||||
</object>
|
|
||||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
|
||||||
<string key="NS.key.0">usePassword:</string>
|
|
||||||
<object class="IBActionInfo" key="NS.object.0">
|
|
||||||
<string key="name">usePassword:</string>
|
|
||||||
<string key="candidateClassName">id</string>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<dictionary class="NSMutableDictionary" key="outlets">
|
<dictionary class="NSMutableDictionary" key="outlets">
|
||||||
<string key="contentView">NSView</string>
|
<string key="contentView">NSView</string>
|
||||||
<string key="keyPathControl">NSPathControl</string>
|
<string key="outlineView">NSView</string>
|
||||||
<string key="outlineView">NSOutlineView</string>
|
<string key="splitView">NSSplitView</string>
|
||||||
<string key="passwordTextField">NSTextField</string>
|
<string key="welcomeText">NSTextField</string>
|
||||||
<string key="passwordView">NSView</string>
|
|
||||||
<string key="welcomeView">NSView</string>
|
<string key="welcomeView">NSView</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
@@ -249,22 +242,18 @@
|
|||||||
<string key="name">contentView</string>
|
<string key="name">contentView</string>
|
||||||
<string key="candidateClassName">NSView</string>
|
<string key="candidateClassName">NSView</string>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBToOneOutletInfo" key="keyPathControl">
|
|
||||||
<string key="name">keyPathControl</string>
|
|
||||||
<string key="candidateClassName">NSPathControl</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="outlineView">
|
<object class="IBToOneOutletInfo" key="outlineView">
|
||||||
<string key="name">outlineView</string>
|
<string key="name">outlineView</string>
|
||||||
<string key="candidateClassName">NSOutlineView</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="passwordTextField">
|
|
||||||
<string key="name">passwordTextField</string>
|
|
||||||
<string key="candidateClassName">NSTextField</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="passwordView">
|
|
||||||
<string key="name">passwordView</string>
|
|
||||||
<string key="candidateClassName">NSView</string>
|
<string key="candidateClassName">NSView</string>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="splitView">
|
||||||
|
<string key="name">splitView</string>
|
||||||
|
<string key="candidateClassName">NSSplitView</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="welcomeText">
|
||||||
|
<string key="name">welcomeText</string>
|
||||||
|
<string key="candidateClassName">NSTextField</string>
|
||||||
|
</object>
|
||||||
<object class="IBToOneOutletInfo" key="welcomeView">
|
<object class="IBToOneOutletInfo" key="welcomeView">
|
||||||
<string key="name">welcomeView</string>
|
<string key="name">welcomeView</string>
|
||||||
<string key="candidateClassName">NSView</string>
|
<string key="candidateClassName">NSView</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user