Added simple hud overlay on double-click actions

This commit is contained in:
michael starke
2013-03-03 04:46:25 +01:00
parent 72bf306a3c
commit 7d6712536b
9 changed files with 773 additions and 15 deletions

View File

@@ -20,6 +20,7 @@
4C3BD51516D276F800389F1F /* MPToolbarDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BD51416D276F800389F1F /* MPToolbarDelegate.m */; }; 4C3BD51516D276F800389F1F /* MPToolbarDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BD51416D276F800389F1F /* MPToolbarDelegate.m */; };
4C3FFD9E16DAF60600DF9186 /* FilterBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */; }; 4C3FFD9E16DAF60600DF9186 /* FilterBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */; };
4C431BCD16E2A82800700A81 /* MPPasteBoardController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */; }; 4C431BCD16E2A82800700A81 /* MPPasteBoardController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */; };
4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */; };
4C4E1DC716DC6536007B9B47 /* PathBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C4E1DC616DC6536007B9B47 /* PathBar.xib */; }; 4C4E1DC716DC6536007B9B47 /* PathBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C4E1DC616DC6536007B9B47 /* PathBar.xib */; };
4C586F9E16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586F9D16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf */; }; 4C586F9E16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586F9D16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf */; };
4C586FA016D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586F9F16D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf */; }; 4C586FA016D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586F9F16D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf */; };
@@ -101,6 +102,8 @@
4CDB556416E29A7C00635918 /* MPPathControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB556316E29A7C00635918 /* MPPathControl.m */; }; 4CDB556416E29A7C00635918 /* MPPathControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB556316E29A7C00635918 /* MPPathControl.m */; };
4CDF01A316D1B76700D0AC08 /* MPEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDF01A216D1B76700D0AC08 /* MPEntryViewController.m */; }; 4CDF01A316D1B76700D0AC08 /* MPEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDF01A216D1B76700D0AC08 /* MPEntryViewController.m */; };
4CE06D7D16DEF3FE00840E3A /* MPButtonBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE06D7C16DEF3FE00840E3A /* MPButtonBar.m */; }; 4CE06D7D16DEF3FE00840E3A /* MPButtonBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE06D7C16DEF3FE00840E3A /* MPButtonBar.m */; };
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; };
4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8247416E2F2B900573141 /* MPOverlayView.m */; };
4CF5D49616D5B6E900CB78BD /* MPEntryEditController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF5D49416D5B6E900CB78BD /* MPEntryEditController.m */; }; 4CF5D49616D5B6E900CB78BD /* MPEntryEditController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF5D49416D5B6E900CB78BD /* MPEntryEditController.m */; };
4CF5D49716D5B6E900CB78BD /* EntryEditView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */; }; 4CF5D49716D5B6E900CB78BD /* EntryEditView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@@ -126,6 +129,7 @@
4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterBar.xib; sourceTree = "<group>"; }; 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterBar.xib; sourceTree = "<group>"; };
4C431BCB16E2A82700700A81 /* MPPasteBoardController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasteBoardController.h; sourceTree = "<group>"; }; 4C431BCB16E2A82700700A81 /* MPPasteBoardController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasteBoardController.h; sourceTree = "<group>"; };
4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasteBoardController.m; sourceTree = "<group>"; }; 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasteBoardController.m; sourceTree = "<group>"; };
4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OverlayWindow.xib; sourceTree = "<group>"; };
4C4E1DC616DC6536007B9B47 /* PathBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PathBar.xib; sourceTree = "<group>"; }; 4C4E1DC616DC6536007B9B47 /* PathBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PathBar.xib; sourceTree = "<group>"; };
4C586F9D16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 00_PasswordTemplate.pdf; sourceTree = "<group>"; }; 4C586F9D16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 00_PasswordTemplate.pdf; sourceTree = "<group>"; };
4C586F9F16D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 01_PackageNetworkTemplate.pdf; sourceTree = "<group>"; }; 4C586F9F16D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 01_PackageNetworkTemplate.pdf; sourceTree = "<group>"; };
@@ -278,6 +282,10 @@
4CDF01A216D1B76700D0AC08 /* MPEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPEntryViewController.m; sourceTree = "<group>"; }; 4CDF01A216D1B76700D0AC08 /* MPEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPEntryViewController.m; sourceTree = "<group>"; };
4CE06D7B16DEF3FE00840E3A /* MPButtonBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPButtonBar.h; sourceTree = "<group>"; }; 4CE06D7B16DEF3FE00840E3A /* MPButtonBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPButtonBar.h; sourceTree = "<group>"; };
4CE06D7C16DEF3FE00840E3A /* MPButtonBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPButtonBar.m; sourceTree = "<group>"; }; 4CE06D7C16DEF3FE00840E3A /* MPButtonBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPButtonBar.m; sourceTree = "<group>"; };
4CE8246D16E2E93400573141 /* MPOverlayWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayWindowController.h; sourceTree = "<group>"; };
4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayWindowController.m; sourceTree = "<group>"; };
4CE8247316E2F2B900573141 /* MPOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayView.h; sourceTree = "<group>"; };
4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = "<group>"; };
4CF5D49316D5B6E900CB78BD /* MPEntryEditController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPEntryEditController.h; sourceTree = "<group>"; }; 4CF5D49316D5B6E900CB78BD /* MPEntryEditController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPEntryEditController.h; sourceTree = "<group>"; };
4CF5D49416D5B6E900CB78BD /* MPEntryEditController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPEntryEditController.m; sourceTree = "<group>"; }; 4CF5D49416D5B6E900CB78BD /* MPEntryEditController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPEntryEditController.m; sourceTree = "<group>"; };
4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EntryEditView.xib; sourceTree = "<group>"; }; 4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EntryEditView.xib; sourceTree = "<group>"; };
@@ -305,7 +313,6 @@
4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */, 4CF5D49516D5B6E900CB78BD /* EntryEditView.xib */,
4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */, 4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */,
4C77E37B15B84A240093A587 /* MainMenu.xib */, 4C77E37B15B84A240093A587 /* MainMenu.xib */,
4CD884B615BD47080042BBF8 /* MainWindow.xib */,
4C61EA0416D2FFE200AC519E /* OutlineView.xib */, 4C61EA0416D2FFE200AC519E /* OutlineView.xib */,
4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */, 4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */,
4C6B0E8B16C9B99B00A9ED23 /* PasswordInputView.xib */, 4C6B0E8B16C9B99B00A9ED23 /* PasswordInputView.xib */,
@@ -314,6 +321,8 @@
4C4E1DC616DC6536007B9B47 /* PathBar.xib */, 4C4E1DC616DC6536007B9B47 /* PathBar.xib */,
4C69A73816D589DF00EC1B1A /* MPGradientView.h */, 4C69A73816D589DF00EC1B1A /* MPGradientView.h */,
4C69A73916D589DF00EC1B1A /* MPGradientView.m */, 4C69A73916D589DF00EC1B1A /* MPGradientView.m */,
4CE8247316E2F2B900573141 /* MPOverlayView.h */,
4CE8247416E2F2B900573141 /* MPOverlayView.m */,
); );
name = Views; name = Views;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -529,7 +538,10 @@
4C586F9C16D07ABD00E7DB57 /* Icons */, 4C586F9C16D07ABD00E7DB57 /* Icons */,
4CA0B30F15BCB85D00654E32 /* General */, 4CA0B30F15BCB85D00654E32 /* General */,
4CA0B30E15BCB70200654E32 /* Protocolls */, 4CA0B30E15BCB70200654E32 /* Protocolls */,
4CA0B2F115BCAEE600654E32 /* Controller */, 4CE8247116E2E98200573141 /* Data Controller */,
4CE8247016E2E96500573141 /* Window Controller */,
4CA0B2F115BCAEE600654E32 /* View Controller */,
4CE8247216E2E99F00573141 /* Windows */,
4C06398C15B980480004DE27 /* Views */, 4C06398C15B980480004DE27 /* Views */,
4CDB556616E29A8A00635918 /* Controls */, 4CDB556616E29A8A00635918 /* Controls */,
4C37A84215B8B495005EF8EE /* Model */, 4C37A84215B8B495005EF8EE /* Model */,
@@ -551,17 +563,11 @@
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4CA0B2F115BCAEE600654E32 /* Controller */ = { 4CA0B2F115BCAEE600654E32 /* View Controller */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */, 4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */,
4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */, 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */,
4CA0B2FA15BCAF8600654E32 /* MPSettingsController.h */,
4CA0B2FB15BCAF8600654E32 /* MPSettingsController.m */,
4C83814015BF4677001AE468 /* MPMainWindowController.h */,
4C83814115BF4677001AE468 /* MPMainWindowController.m */,
4C75CE3A16CB128700F61A4D /* MPDatabaseController.h */,
4C75CE3B16CB128700F61A4D /* MPDatabaseController.m */,
4C2E382416D1470200037A9D /* MPViewController.h */, 4C2E382416D1470200037A9D /* MPViewController.h */,
4C2E382516D1470200037A9D /* MPViewController.m */, 4C2E382516D1470200037A9D /* MPViewController.m */,
4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */, 4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */,
@@ -572,10 +578,8 @@
4C61EA0216D2FD0800AC519E /* MPOutlineViewController.m */, 4C61EA0216D2FD0800AC519E /* MPOutlineViewController.m */,
4CF5D49316D5B6E900CB78BD /* MPEntryEditController.h */, 4CF5D49316D5B6E900CB78BD /* MPEntryEditController.h */,
4CF5D49416D5B6E900CB78BD /* MPEntryEditController.m */, 4CF5D49416D5B6E900CB78BD /* MPEntryEditController.m */,
4C431BCB16E2A82700700A81 /* MPPasteBoardController.h */,
4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */,
); );
name = Controller; name = "View Controller";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4CA0B30E15BCB70200654E32 /* Protocolls */ = { 4CA0B30E15BCB70200654E32 /* Protocolls */ = {
@@ -663,6 +667,39 @@
name = Controls; name = Controls;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4CE8247016E2E96500573141 /* Window Controller */ = {
isa = PBXGroup;
children = (
4CA0B2FA15BCAF8600654E32 /* MPSettingsController.h */,
4CA0B2FB15BCAF8600654E32 /* MPSettingsController.m */,
4C83814015BF4677001AE468 /* MPMainWindowController.h */,
4C83814115BF4677001AE468 /* MPMainWindowController.m */,
4CE8246D16E2E93400573141 /* MPOverlayWindowController.h */,
4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */,
);
name = "Window Controller";
sourceTree = "<group>";
};
4CE8247116E2E98200573141 /* Data Controller */ = {
isa = PBXGroup;
children = (
4C75CE3A16CB128700F61A4D /* MPDatabaseController.h */,
4C75CE3B16CB128700F61A4D /* MPDatabaseController.m */,
4C431BCB16E2A82700700A81 /* MPPasteBoardController.h */,
4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */,
);
name = "Data Controller";
sourceTree = "<group>";
};
4CE8247216E2E99F00573141 /* Windows */ = {
isa = PBXGroup;
children = (
4CD884B615BD47080042BBF8 /* MainWindow.xib */,
4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */,
);
name = Windows;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@@ -742,6 +779,7 @@
4CF5D49716D5B6E900CB78BD /* EntryEditView.xib in Resources */, 4CF5D49716D5B6E900CB78BD /* EntryEditView.xib in Resources */,
4C3FFD9E16DAF60600DF9186 /* FilterBar.xib in Resources */, 4C3FFD9E16DAF60600DF9186 /* FilterBar.xib in Resources */,
4C4E1DC716DC6536007B9B47 /* PathBar.xib in Resources */, 4C4E1DC716DC6536007B9B47 /* PathBar.xib in Resources */,
4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -836,6 +874,8 @@
4C587F2E16E0257B0003718D /* MPButtonBarButton.m in Sources */, 4C587F2E16E0257B0003718D /* MPButtonBarButton.m in Sources */,
4CDB556416E29A7C00635918 /* MPPathControl.m in Sources */, 4CDB556416E29A7C00635918 /* MPPathControl.m in Sources */,
4C431BCD16E2A82800700A81 /* MPPasteBoardController.m in Sources */, 4C431BCD16E2A82800700A81 /* MPPasteBoardController.m in Sources */,
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */,
4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

View File

@@ -13,6 +13,7 @@
#import "MPIconHelper.h" #import "MPIconHelper.h"
#import "MPMainWindowController.h" #import "MPMainWindowController.h"
#import "MPPasteBoardController.h" #import "MPPasteBoardController.h"
#import "MPOverlayWindowController.h"
#import "KdbGroup+MPAdditions.h" #import "KdbGroup+MPAdditions.h"
#import <QuartzCore/QuartzCore.h> #import <QuartzCore/QuartzCore.h>
@@ -83,6 +84,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
- (void)_hideStatusBarAnimated:(BOOL)animate; - (void)_hideStatusBarAnimated:(BOOL)animate;
- (void)_copyEntryData:(id)sender; - (void)_copyEntryData:(id)sender;
- (void)_quickCopyEntryData:(id)sender;
@end @end
@@ -125,6 +127,8 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
[self _hideStatusBarAnimated:NO]; [self _hideStatusBarAnimated:NO];
[self.entryTable setDelegate:self]; [self.entryTable setDelegate:self];
[self.entryTable setDoubleAction:@selector(_quickCopyEntryData:)];
[self.entryTable setTarget:self];
[self _setupEntryMenu]; [self _setupEntryMenu];
NSTableColumn *parentColumn = [self.entryTable tableColumns][0]; NSTableColumn *parentColumn = [self.entryTable tableColumns][0];
@@ -378,9 +382,34 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
#pragma mark Actions #pragma mark Actions
- (void)_quickCopyEntryData:(id)sender {
NSInteger clickedRow = [self.entryTable clickedRow];
if(clickedRow < 0 || clickedRow > [[self.entryArrayController arrangedObjects] count]) {
return;
}
KdbEntry *selectedEntry = [self.entryArrayController arrangedObjects][clickedRow];
NSTableColumn *column = [self.entryTable tableColumns][[self.entryTable clickedColumn]];
NSString *identifier = [column identifier];
NSImage *image = nil;
NSString *lable = nil;
if([identifier isEqualToString:MPEntryTablePasswordColumnIdentifier]) {
[[MPPasteBoardController defaultController] copyObjects:@[ selectedEntry.password ]];
image = [[NSBundle mainBundle] imageForResource:@"00_PasswordTemplate"];
lable = @"Password copied!";
}
else if([identifier isEqualToString:MPEntryTableUserNameColumnIdentifier]) {
[[MPPasteBoardController defaultController] copyObjects:@[ selectedEntry.username ]];
image = [[NSBundle mainBundle] imageForResource:@"09_IdentityTemplate"];
lable = @"Username copied!";
}
if(image || lable) {
[[MPOverlayWindowController sharedController] displayOverlayImage:image label:lable atView:self.view];
}
}
- (void)_copyEntryData:(id)sender { - (void)_copyEntryData:(id)sender {
NSInteger clickedRow = [self.entryTable clickedRow]; NSInteger clickedRow = [self.entryTable clickedRow];
if(clickedRow > [[self.entryArrayController arrangedObjects] count]) { if(clickedRow < 0 || clickedRow > [[self.entryArrayController arrangedObjects] count]) {
return; return;
} }
KdbEntry *selectedEntry = [self.entryArrayController arrangedObjects][clickedRow]; KdbEntry *selectedEntry = [self.entryArrayController arrangedObjects][clickedRow];

13
MacPass/MPOverlayView.h Normal file
View File

@@ -0,0 +1,13 @@
//
// MPOverlayView.h
// MacPass
//
// Created by Michael Starke on 03.03.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface MPOverlayView : NSView
@end

29
MacPass/MPOverlayView.m Normal file
View File

@@ -0,0 +1,29 @@
//
// MPOverlayView.m
// MacPass
//
// Created by Michael Starke on 03.03.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPOverlayView.h"
@implementation MPOverlayView
- (void)drawRect:(NSRect)dirtyRect {
[[NSGraphicsContext currentContext] saveGraphicsState];
[[NSColor clearColor] set];
NSRectFill([self bounds]);
NSColor *backgroundColor = [NSColor colorWithCalibratedWhite:0 alpha:0.7];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:[self bounds] xRadius:10 yRadius:10];
[backgroundColor set];
[path fill];
[[NSGraphicsContext currentContext] restoreGraphicsState];
}
- (BOOL)isOpaque {
return NO;
}
@end

View File

@@ -0,0 +1,20 @@
//
// MPOverlayWindowController.h
// MacPass
//
// Created by Michael Starke on 03.03.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface MPOverlayWindowController : NSWindowController
+ (MPOverlayWindowController *)sharedController;
/*
Displays an overlay centered at the given view. The Windows is added as a childwindow to the view window
*/
- (void)displayOverlayImage:(NSImage *)imageOrNil label:(NSString *)labelOrNil atView:(NSView *)view;
@end

View File

@@ -0,0 +1,87 @@
//
// MPOverlayWindowController.m
// MacPass
//
// Created by Michael Starke on 03.03.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPOverlayWindowController.h"
#import "MPOverlayView.h"
@interface MPOverlayWindowController ()
@property (assign) BOOL isAnimating;
@property (assign) IBOutlet NSImageView *imageView;
@property (assign) IBOutlet NSTextField *textField;
@end
@implementation MPOverlayWindowController
+ (MPOverlayWindowController *)sharedController {
static MPOverlayWindowController *sharedInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MPOverlayWindowController alloc] initWithWindowNibName:@"OverlayWindow"];
});
return sharedInstance;
}
- (id)initWithWindow:(NSWindow *)window {
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
}
return self;
}
- (void)windowDidLoad {
[super windowDidLoad];
[self.window setStyleMask:NSBorderlessWindowMask];
[self.window setAlphaValue:0];
[self.window setOpaque:NO];
[self.window setHasShadow:NO];
[[self.textField cell] setBackgroundStyle:NSBackgroundStyleLowered];
[[self.imageView cell] setBackgroundStyle:NSBackgroundStyleLowered];
[[self.imageView cell] setImageAlignment:NSImageAlignCenter];
}
- (void)displayOverlayImage:(NSImage *)imageOrNil label:(NSString *)labelOrNil atView:(NSView *)view {
/* make window transparent */
[self.window setAlphaValue:0];
[self.window setIsVisible:YES];
/* setup any provided images and labels*/
[self.imageView setImage:imageOrNil];
if(labelOrNil) {
[self.textField setStringValue:labelOrNil];
}
else {
[self.textField setStringValue:@""];
}
[self.textField sizeToFit];
/*
Center in view
*/
if(view) {
NSWindow *parentWindow = [view window];
NSRect parentFrame = [parentWindow frame];
NSRect myFrame = [self.window frame];
NSPoint newOrigin = parentFrame.origin;
newOrigin.x += 0.5 * (parentFrame.size.width - myFrame.size.width);
newOrigin.y += 0.5 * (parentFrame.size.height - myFrame.size.height);
[self.window setFrameOrigin:newOrigin];
[parentWindow addChildWindow:self.window ordered:NSWindowAbove];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
context.duration = 0.2;
[[self.window animator]setAlphaValue:1];
} completionHandler:^{
[self.window performSelector:@selector(close) withObject:nil afterDelay:0.5];
}];
}
}
@end

View File

@@ -74,7 +74,7 @@
[[NSPasteboard generalPasteboard] clearContents]; [[NSPasteboard generalPasteboard] clearContents];
[[NSPasteboard generalPasteboard] writeObjects:objects]; [[NSPasteboard generalPasteboard] writeObjects:objects];
self.isEmpty = NO; self.isEmpty = NO;
[self performSelector:@selector(clearContents) withObject:nil afterDelay:self.clearTimeout]; [self performSelector:@selector(_clearPasteboardContents) withObject:nil afterDelay:self.clearTimeout];
} }
- (void)_clearPasteboardContents { - (void)_clearPasteboardContents {

View File

@@ -21,7 +21,7 @@
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>37F</string> <string>3B6</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string> <string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>

540
MacPass/OverlayWindow.xib Normal file
View File

@@ -0,0 +1,540 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12C3103</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">3084</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBNSLayoutConstraint</string>
<string>NSCustomObject</string>
<string>NSImageCell</string>
<string>NSImageView</string>
<string>NSTextField</string>
<string>NSTextFieldCell</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">MPOverlayWindowController</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSWindowTemplate" id="121640213">
<int key="NSWindowStyleMask">15</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 207}, {151, 131}}</string>
<int key="NSWTFlags">1685586944</int>
<string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="151608046">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="668073146">
<reference key="NSNextResponder" ref="151608046"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{53, 20}, {45, 19}}</string>
<reference key="NSSuperview" ref="151608046"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="653083877">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">306189312</int>
<string key="NSContents">Label</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">14</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="668073146"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">windowFrameTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSImageView" id="129824625">
<reference key="NSNextResponder" ref="151608046"/>
<int key="NSvFlags">268</int>
<set class="NSMutableSet" key="NSDragTypes">
<string>Apple PDF pasteboard type</string>
<string>Apple PICT pasteboard type</string>
<string>Apple PNG pasteboard type</string>
<string>NSFilenamesPboardType</string>
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
<string>NeXT TIFF v4.0 pasteboard type</string>
</set>
<string key="NSFrame">{{43, 47}, {64, 64}}</string>
<reference key="NSSuperview" ref="151608046"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="668073146"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="893226415">
<int key="NSCellFlags">134217728</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSActionTemplate</string>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<int key="NSAlign">0</int>
<int key="NSScale">3</int>
<int key="NSStyle">0</int>
<bool key="NSAnimates">NO</bool>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
</array>
<string key="NSFrameSize">{151, 131}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="129824625"/>
<string key="NSReuseIdentifierKey">_NS:20</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">textField</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="668073146"/>
</object>
<int key="connectionID">60</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="121640213"/>
</object>
<int key="connectionID">61</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">imageView</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="129824625"/>
</object>
<int key="connectionID">89</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">27</int>
<reference key="object" ref="121640213"/>
<array class="NSMutableArray" key="children">
<reference ref="151608046"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">28</int>
<reference key="object" ref="151608046"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="291614112">
<reference key="firstItem" ref="151608046"/>
<int key="firstAttribute">4</int>
<int key="relation">0</int>
<reference key="secondItem" ref="668073146"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="655705961">
<reference key="firstItem" ref="668073146"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="129824625"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">8</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="533839699">
<reference key="firstItem" ref="151608046"/>
<int key="firstAttribute">6</int>
<int key="relation">1</int>
<reference key="secondItem" ref="668073146"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="953110230">
<reference key="firstItem" ref="668073146"/>
<int key="firstAttribute">5</int>
<int key="relation">1</int>
<reference key="secondItem" ref="151608046"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="160411876">
<reference key="firstItem" ref="151608046"/>
<int key="firstAttribute">4</int>
<int key="relation">1</int>
<reference key="secondItem" ref="668073146"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="311454723">
<reference key="firstItem" ref="129824625"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="668073146"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="118064690">
<reference key="firstItem" ref="129824625"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="151608046"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="463557880">
<reference key="firstItem" ref="129824625"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="151608046"/>
<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>
<reference key="containingView" ref="151608046"/>
<int key="scoringType">5</int>
<float key="scoringTypeFloat">22</float>
<int key="contentType">2</int>
</object>
<reference ref="129824625"/>
<reference ref="668073146"/>
</array>
<reference key="parent" ref="121640213"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">35</int>
<reference key="object" ref="668073146"/>
<array class="NSMutableArray" key="children">
<reference ref="653083877"/>
<object class="IBNSLayoutConstraint" id="483246759">
<reference key="firstItem" ref="668073146"/>
<int key="firstAttribute">7</int>
<int key="relation">1</int>
<nil key="secondItem"/>
<int key="secondAttribute">0</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">39</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="668073146"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">36</int>
<reference key="object" ref="653083877"/>
<reference key="parent" ref="668073146"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">56</int>
<reference key="object" ref="160411876"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">57</int>
<reference key="object" ref="953110230"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">58</int>
<reference key="object" ref="533839699"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">68</int>
<reference key="object" ref="129824625"/>
<array class="NSMutableArray" key="children">
<reference ref="893226415"/>
<object class="IBNSLayoutConstraint" id="527545548">
<reference key="firstItem" ref="129824625"/>
<int key="firstAttribute">7</int>
<int key="relation">0</int>
<nil key="secondItem"/>
<int key="secondAttribute">0</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">64</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="129824625"/>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">69</int>
<reference key="object" ref="893226415"/>
<reference key="parent" ref="129824625"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">78</int>
<reference key="object" ref="527545548"/>
<reference key="parent" ref="129824625"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">83</int>
<reference key="object" ref="463557880"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">84</int>
<reference key="object" ref="118064690"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">85</int>
<reference key="object" ref="311454723"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">86</int>
<reference key="object" ref="655705961"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">87</int>
<reference key="object" ref="291614112"/>
<reference key="parent" ref="151608046"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">88</int>
<reference key="object" ref="483246759"/>
<reference key="parent" ref="668073146"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.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="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="27.NSWindowTemplate.visibleAtLaunch"/>
<string key="28.CustomClassName">MPOverlayView</string>
<array key="28.IBNSViewMetadataConstraints">
<reference ref="463557880"/>
<reference ref="118064690"/>
<reference ref="311454723"/>
<reference ref="160411876"/>
<reference ref="953110230"/>
<reference ref="533839699"/>
<reference ref="655705961"/>
<reference ref="291614112"/>
</array>
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="35.IBNSViewMetadataConstraints">
<reference ref="483246759"/>
</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="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="68.IBNSViewMetadataConstraints">
<reference ref="527545548"/>
</array>
<boolean value="NO" key="68.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="68.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="69.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="78.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="84.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="85.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="86.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="87.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="88.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">90</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">MPOverlayView</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPOverlayView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPOverlayWindowController</string>
<string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="imageView">NSImageView</string>
<string key="textField">NSTextField</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="imageView">
<string key="name">imageView</string>
<string key="candidateClassName">NSImageView</string>
</object>
<object class="IBToOneOutletInfo" key="textField">
<string key="name">textField</string>
<string key="candidateClassName">NSTextField</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPOverlayWindowController.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>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NS.key.0">NSActionTemplate</string>
<string key="NS.object.0">{15, 15}</string>
</object>
<bool key="IBDocument.UseAutolayout">YES</bool>
</data>
</archive>