mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-13 22:52:26 +00:00
Using NSViewController presentation instead of manual NSPopup creation
This commit is contained in:
@@ -33,7 +33,6 @@
|
|||||||
4C17F108184E6B6C00E85625 /* 31_PrintTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F106184E6B6C00E85625 /* 31_PrintTemplate.pdf */; };
|
4C17F108184E6B6C00E85625 /* 31_PrintTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F106184E6B6C00E85625 /* 31_PrintTemplate.pdf */; };
|
||||||
4C17F109184E6B6C00E85625 /* 30_TerminalTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */; };
|
4C17F109184E6B6C00E85625 /* 30_TerminalTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */; };
|
||||||
4C1BDF2B1E4392640012A3F0 /* MPPluginDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */; };
|
4C1BDF2B1E4392640012A3F0 /* MPPluginDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */; };
|
||||||
4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */; };
|
|
||||||
4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1E9884185F71A800943563 /* MPContextBarViewController.m */; };
|
4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1E9884185F71A800943563 /* MPContextBarViewController.m */; };
|
||||||
4C1F7FA21E3A12E600D6A40E /* MPModifiedKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1F7FA11E3A12E600D6A40E /* MPModifiedKey.m */; };
|
4C1F7FA21E3A12E600D6A40E /* MPModifiedKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1F7FA11E3A12E600D6A40E /* MPModifiedKey.m */; };
|
||||||
4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1FA07A18231900003A3F8C /* MPDocument+Autotype.m */; };
|
4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1FA07A18231900003A3F8C /* MPDocument+Autotype.m */; };
|
||||||
@@ -373,7 +372,6 @@
|
|||||||
4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 30_TerminalTemplate.pdf; sourceTree = "<group>"; };
|
4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 30_TerminalTemplate.pdf; sourceTree = "<group>"; };
|
||||||
4C1BDF281E4392640012A3F0 /* MPPluginDataViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPluginDataViewController.h; sourceTree = "<group>"; };
|
4C1BDF281E4392640012A3F0 /* MPPluginDataViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPluginDataViewController.h; sourceTree = "<group>"; };
|
||||||
4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPluginDataViewController.m; sourceTree = "<group>"; };
|
4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPluginDataViewController.m; sourceTree = "<group>"; };
|
||||||
4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordCreatorWindow.xib; sourceTree = "<group>"; };
|
|
||||||
4C1E9883185F71A800943563 /* MPContextBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPContextBarViewController.h; sourceTree = "<group>"; };
|
4C1E9883185F71A800943563 /* MPContextBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPContextBarViewController.h; sourceTree = "<group>"; };
|
||||||
4C1E9884185F71A800943563 /* MPContextBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextBarViewController.m; sourceTree = "<group>"; };
|
4C1E9884185F71A800943563 /* MPContextBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextBarViewController.m; sourceTree = "<group>"; };
|
||||||
4C1F7FA01E3A12E600D6A40E /* MPModifiedKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPModifiedKey.h; sourceTree = "<group>"; };
|
4C1F7FA01E3A12E600D6A40E /* MPModifiedKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPModifiedKey.h; sourceTree = "<group>"; };
|
||||||
@@ -1443,7 +1441,6 @@
|
|||||||
4CE8247116E2E98200573141 /* Data Controller */,
|
4CE8247116E2E98200573141 /* Data Controller */,
|
||||||
4CE8247016E2E96500573141 /* Window Controller */,
|
4CE8247016E2E96500573141 /* Window Controller */,
|
||||||
4CA0B2F115BCAEE600654E32 /* View Controller */,
|
4CA0B2F115BCAEE600654E32 /* View Controller */,
|
||||||
4CE8247216E2E99F00573141 /* Windows */,
|
|
||||||
4C06398C15B980480004DE27 /* Views */,
|
4C06398C15B980480004DE27 /* Views */,
|
||||||
4CDB556616E29A8A00635918 /* Controls */,
|
4CDB556616E29A8A00635918 /* Controls */,
|
||||||
4C37A84215B8B495005EF8EE /* Model */,
|
4C37A84215B8B495005EF8EE /* Model */,
|
||||||
@@ -1661,14 +1658,6 @@
|
|||||||
name = "Data Controller";
|
name = "Data Controller";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
4CE8247216E2E99F00573141 /* Windows */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */,
|
|
||||||
);
|
|
||||||
name = Windows;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
4CE88B9317BA64DB0042E078 /* Icons */ = {
|
4CE88B9317BA64DB0042E078 /* Icons */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1879,7 +1868,6 @@
|
|||||||
4C3826BB1AD04D8E007D7D67 /* 47_PackageTemplate.pdf in Resources */,
|
4C3826BB1AD04D8E007D7D67 /* 47_PackageTemplate.pdf in Resources */,
|
||||||
6021FE8D18E1617300C3BC51 /* PasswordCreatorView.xib in Resources */,
|
6021FE8D18E1617300C3BC51 /* PasswordCreatorView.xib in Resources */,
|
||||||
4C3826AC1AD04D8E007D7D67 /* 29_SecureTerminalTemplate.pdf in Resources */,
|
4C3826AC1AD04D8E007D7D67 /* 29_SecureTerminalTemplate.pdf in Resources */,
|
||||||
4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */,
|
|
||||||
4C3826741AD04BA5007D7D67 /* infoTemplate.pdf in Resources */,
|
4C3826741AD04BA5007D7D67 /* infoTemplate.pdf in Resources */,
|
||||||
4C3826B11AD04D8E007D7D67 /* 36_ArchiveTemplate.pdf in Resources */,
|
4C3826B11AD04D8E007D7D67 /* 36_ArchiveTemplate.pdf in Resources */,
|
||||||
4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */,
|
4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */,
|
||||||
|
|||||||
@@ -233,13 +233,19 @@ NSString *const MPDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDi
|
|||||||
|
|
||||||
- (void)showPasswordCreator:(id)sender {
|
- (void)showPasswordCreator:(id)sender {
|
||||||
if(!self.passwordCreatorWindow) {
|
if(!self.passwordCreatorWindow) {
|
||||||
[NSBundle.mainBundle loadNibNamed:@"PasswordCreatorWindow"owner:self topLevelObjects:nil];
|
self.passwordCreatorWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||||
|
styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskResizable
|
||||||
|
backing:NSBackingStoreBuffered
|
||||||
|
defer:NO];
|
||||||
|
self.passwordCreatorWindow.releasedWhenClosed = NO;
|
||||||
|
self.passwordCreatorWindow.title = NSLocalizedString(@"PASSWORD_CREATOR_WINDOW_TITLE", @"Window title for the stand-alone password creator window");
|
||||||
}
|
}
|
||||||
if(!self.passwordCreatorController) {
|
if(!self.passwordCreatorController) {
|
||||||
self.passwordCreatorController = [[MPPasswordCreatorViewController alloc] init];
|
self.passwordCreatorController = [[MPPasswordCreatorViewController alloc] init];
|
||||||
self.passwordCreatorWindow.contentViewController = self.passwordCreatorController;
|
self.passwordCreatorWindow.contentViewController = self.passwordCreatorController;
|
||||||
}
|
}
|
||||||
[self.passwordCreatorController reset];
|
[self.passwordCreatorController reset];
|
||||||
|
[self.passwordCreatorWindow center];
|
||||||
[self.passwordCreatorWindow makeKeyAndOrderFront:self.passwordCreatorWindow];
|
[self.passwordCreatorWindow makeKeyAndOrderFront:self.passwordCreatorWindow];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,11 +83,11 @@ typedef NS_ENUM(NSUInteger, MPDatePreset) {
|
|||||||
[self.observer willChangeModelProperty];
|
[self.observer willChangeModelProperty];
|
||||||
[self.representedObject timeInfo].expirationDate = self.datePicker.dateValue;
|
[self.representedObject timeInfo].expirationDate = self.datePicker.dateValue;
|
||||||
[self.observer didChangeModelProperty];
|
[self.observer didChangeModelProperty];
|
||||||
[self.view.window performClose:sender];
|
[self dismissController:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)cancel:(id)sender {
|
- (IBAction)cancel:(id)sender {
|
||||||
[self.view.window performClose:sender];
|
[self dismissController:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)setDatePreset:(id)sender {
|
- (IBAction)setDatePreset:(id)sender {
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
|
|
||||||
@property (nonatomic, assign) BOOL showPassword;
|
@property (nonatomic, assign) BOOL showPassword;
|
||||||
@property (nonatomic, assign) MPEntryTab activeTab;
|
@property (nonatomic, assign) MPEntryTab activeTab;
|
||||||
@property (strong) NSPopover *activePopover;
|
|
||||||
@property (nonatomic, readonly) KPKEntry *representedEntry;
|
@property (nonatomic, readonly) KPKEntry *representedEntry;
|
||||||
|
|
||||||
@property (strong) MPTemporaryFileStorage *quicklookStorage;
|
@property (strong) MPTemporaryFileStorage *quicklookStorage;
|
||||||
@@ -371,24 +370,22 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
[self _showPopopver:viewController atView:sender onEdge:NSMinYEdge];
|
[self _showPopopver:viewController atView:sender onEdge:NSMinYEdge];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_showPopopver:(NSViewController *)viewController atView:(NSView *)view onEdge:(NSRectEdge)edge {
|
- (void)dismissViewController:(NSViewController *)viewController {
|
||||||
if(self.activePopover.contentViewController == viewController) {
|
if([viewController isKindOfClass:MPAutotypeBuilderViewController.class]) {
|
||||||
return; // Do nothing, we already did show the controller
|
self.showCustomAssociationSequenceAutotypeBuilderButton.enabled = YES;
|
||||||
|
self.showCustomEntrySequenceAutotypeBuilderButton.enabled = YES;
|
||||||
}
|
}
|
||||||
[self.activePopover close];
|
else if([viewController isKindOfClass:MPPasswordCreatorViewController.class]) {
|
||||||
NSAssert(self.activePopover == nil, @"Popover hast to be niled out");
|
self.generatePasswordButton.enabled = YES;
|
||||||
self.activePopover = [[NSPopover alloc] init];
|
}
|
||||||
self.activePopover.delegate = self;
|
[super dismissViewController:viewController];
|
||||||
self.activePopover.behavior = NSPopoverBehaviorTransient;
|
|
||||||
self.activePopover.contentViewController = viewController;
|
|
||||||
[self.activePopover showRelativeToRect:NSZeroRect ofView:view preferredEdge:edge];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)popoverDidClose:(NSNotification *)notification {
|
- (void)_showPopopver:(NSViewController *)viewController atView:(NSView *)view onEdge:(NSRectEdge)edge {
|
||||||
self.generatePasswordButton.enabled = YES;
|
if([self.presentedViewControllers containsObject:viewController]) {
|
||||||
self.showCustomEntrySequenceAutotypeBuilderButton.enabled = YES;
|
return;
|
||||||
self.showCustomAssociationSequenceAutotypeBuilderButton.enabled = YES;
|
}
|
||||||
self.activePopover = nil;
|
[self presentViewController:viewController asPopoverRelativeToRect:NSZeroRect ofView:view preferredEdge:edge behavior:NSPopoverBehaviorTransient];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|||||||
@@ -27,8 +27,4 @@
|
|||||||
|
|
||||||
@interface MPIconSelectViewController : MPViewController <NSCollectionViewDelegate>
|
@interface MPIconSelectViewController : MPViewController <NSCollectionViewDelegate>
|
||||||
|
|
||||||
@property (weak, nullable) NSPopover *popover;
|
|
||||||
|
|
||||||
- (IBAction)didSelectCollectionViewItem:(id _Nullable)sender;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ typedef NS_ENUM(NSInteger, MPIconDownloadStatus) {
|
|||||||
node.iconId = [node.class defaultIcon];
|
node.iconId = [node.class defaultIcon];
|
||||||
node.iconUUID = nil;
|
node.iconUUID = nil;
|
||||||
[self.observer didChangeModelProperty];
|
[self.observer didChangeModelProperty];
|
||||||
[self.view.window performClose:sender];
|
[self dismissController:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)downloadIcon:(id)sender {
|
- (IBAction)downloadIcon:(id)sender {
|
||||||
@@ -168,7 +168,7 @@ typedef NS_ENUM(NSInteger, MPIconDownloadStatus) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)cancel:(id)sender {
|
- (IBAction)cancel:(id)sender {
|
||||||
[self.view.window performClose:sender];
|
[self dismissController:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
||||||
@@ -186,15 +186,6 @@ typedef NS_ENUM(NSInteger, MPIconDownloadStatus) {
|
|||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didSelectCollectionViewItem:(id)sender {
|
|
||||||
if(![sender isKindOfClass:[NSCollectionViewItem class]]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
NSCollectionViewItem *item = sender;
|
|
||||||
NSLog(@"selected item.frame: %@", NSStringFromRect(item.view.frame));
|
|
||||||
//[self _selectIcon:item.representedObject];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)_selectIcon:(KPKIcon *)icon {
|
- (void)_selectIcon:(KPKIcon *)icon {
|
||||||
KPKNode *node = self.representedObject;
|
KPKNode *node = self.representedObject;
|
||||||
NSUInteger iconIndex = [self.iconCollectionView.content indexOfObject:icon];
|
NSUInteger iconIndex = [self.iconCollectionView.content indexOfObject:icon];
|
||||||
@@ -210,7 +201,7 @@ typedef NS_ENUM(NSInteger, MPIconDownloadStatus) {
|
|||||||
node.iconUUID = nil;
|
node.iconUUID = nil;
|
||||||
}
|
}
|
||||||
[self.observer didChangeModelProperty];
|
[self.observer didChangeModelProperty];
|
||||||
[self.view.window performClose:nil];
|
[self dismissController:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id <NSDraggingInfo>)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation {
|
- (NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id <NSDraggingInfo>)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation {
|
||||||
@@ -225,7 +216,7 @@ typedef NS_ENUM(NSInteger, MPIconDownloadStatus) {
|
|||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
BOOL success = NO;
|
BOOL success = NO;
|
||||||
MPDocument *document = [NSDocumentController sharedDocumentController].currentDocument;
|
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||||
for(NSURL *url in urls) {
|
for(NSURL *url in urls) {
|
||||||
KPKIcon *icon = [[KPKIcon alloc] initWithImageAtURL:url];
|
KPKIcon *icon = [[KPKIcon alloc] initWithImageAtURL:url];
|
||||||
if(icon.image) {
|
if(icon.image) {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
#import <HNHUi/HNHUi.h>
|
#import <HNHUi/HNHUi.h>
|
||||||
@class MPIconImageView;
|
@class MPIconImageView;
|
||||||
|
|
||||||
@interface MPInspectorViewController : MPViewController <NSPopoverDelegate, HNHUITextViewDelegate>
|
@interface MPInspectorViewController : MPViewController <HNHUITextViewDelegate>
|
||||||
|
|
||||||
@property (weak) IBOutlet NSTextField *noSelectionInfo;
|
@property (weak) IBOutlet NSTextField *noSelectionInfo;
|
||||||
@property (weak) IBOutlet MPIconImageView *itemImageView;
|
@property (weak) IBOutlet MPIconImageView *itemImageView;
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
|
|||||||
@property (strong) MPEntryInspectorViewController *entryViewController;
|
@property (strong) MPEntryInspectorViewController *entryViewController;
|
||||||
@property (strong) MPGroupInspectorViewController *groupViewController;
|
@property (strong) MPGroupInspectorViewController *groupViewController;
|
||||||
|
|
||||||
@property (strong) NSPopover *popover;
|
|
||||||
@property (copy) NSString *expiryDateText;
|
@property (copy) NSString *expiryDateText;
|
||||||
|
|
||||||
@property (nonatomic, assign) NSUInteger activeTab;
|
@property (nonatomic, assign) NSUInteger activeTab;
|
||||||
@@ -177,24 +176,9 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)_popupViewController:(MPViewController *)vc atView:(NSView *)view {
|
- (void)_popupViewController:(MPViewController *)vc atView:(NSView *)view {
|
||||||
if(self.popover) {
|
|
||||||
return; // Popover still active, abort
|
|
||||||
}
|
|
||||||
self.popover = [[NSPopover alloc] init];
|
|
||||||
self.popover.delegate = self;
|
|
||||||
self.popover.behavior = NSPopoverBehaviorTransient;
|
|
||||||
vc.representedObject = self.representedObject;
|
vc.representedObject = self.representedObject;
|
||||||
vc.observer = self.windowController.document;
|
vc.observer = self.windowController.document;
|
||||||
self.popover.contentViewController = vc;
|
[self presentViewController:vc asPopoverRelativeToRect:NSZeroRect ofView:view preferredEdge:NSMinYEdge behavior:NSPopoverBehaviorTransient];
|
||||||
[self.popover showRelativeToRect:NSZeroRect ofView:view preferredEdge:NSMinYEdge];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - NSPopover Delegate
|
|
||||||
|
|
||||||
- (void)popoverDidClose:(NSNotification *)notification {
|
|
||||||
/* clear out the popover */
|
|
||||||
self.popover = nil;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - MPDocument Notifications
|
#pragma mark - MPDocument Notifications
|
||||||
|
|||||||
@@ -195,11 +195,21 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
|
|||||||
entry.password = self.password;
|
entry.password = self.password;
|
||||||
[self.observer didChangeModelProperty];
|
[self.observer didChangeModelProperty];
|
||||||
}
|
}
|
||||||
[self.view.window performClose:sender];
|
if(self.presentingViewController) {
|
||||||
|
[self dismissController:sender];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self.view.window performClose:sender];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)_cancel:(id)sender {
|
- (IBAction)_cancel:(id)sender {
|
||||||
[self.view.window performClose:sender];
|
if(self.presentingViewController) {
|
||||||
|
[self dismissController:sender];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self.view.window performClose:sender];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)_setDefault:(id)sender {
|
- (IBAction)_setDefault:(id)sender {
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
|
||||||
<dependencies>
|
|
||||||
<deployment identifier="macosx"/>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<objects>
|
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAppDelegate">
|
|
||||||
<connections>
|
|
||||||
<outlet property="passwordCreatorWindow" destination="1" id="3"/>
|
|
||||||
</connections>
|
|
||||||
</customObject>
|
|
||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
|
||||||
<window title="Password Generator" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
|
||||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
|
||||||
<rect key="contentRect" x="196" y="240" width="338" height="216"/>
|
|
||||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
|
||||||
<view key="contentView" id="2">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="338" height="216"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</view>
|
|
||||||
<point key="canvasLocation" x="48" y="-70"/>
|
|
||||||
</window>
|
|
||||||
</objects>
|
|
||||||
</document>
|
|
||||||
Reference in New Issue
Block a user