10 Commits

Author SHA1 Message Date
michael starke
8d34f77a1f Bumped Version
Updated Credits
2013-07-19 03:21:47 +02:00
michael starke
859fe5ede8 Default fields are now respected too in validation 2013-07-19 03:14:41 +02:00
michael starke
fef291df88 Added custom string field validation. Still needs testing for default keys 2013-07-19 03:06:29 +02:00
michael starke
c1b47bdb77 Enhanced password input to check and verify
Added repeat password input in settings
New databases without password request on (it's not changed on file until the saved)
2013-07-19 01:39:52 +02:00
michael starke
0e102d3f0f Saving last state of Inspector (last document wins) 2013-07-18 21:23:32 +02:00
michael starke
d4c7d49d6f Fixed issue with window restoration 2013-07-18 21:16:56 +02:00
michael starke
0144e3c21f Bumped Build number 2013-07-18 04:36:45 +02:00
michael starke
dd5eef4e60 Fixed missing delete button on custom fields 2013-07-18 04:29:17 +02:00
michael starke
bfc610a25e Added "reopen last database" featuer
Removed standard open new db on activate
Enabled windows state restoration
Enabled table column state restoration
Menu items should be validated better
2013-07-18 04:21:23 +02:00
michael starke
0986271199 Updated Submodules
Extracted TabelViewDelegates for Attachments and Custom Fields
2013-07-18 02:55:09 +02:00
36 changed files with 1789 additions and 996 deletions

2
HNHUi

Submodule HNHUi updated: a4186af409...c32f87da30

View File

@@ -10,6 +10,7 @@
4C01C23F1764D2980016D5D0 /* KdbEntry+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C23E1764D2980016D5D0 /* KdbEntry+Undo.m */; };
4C01C2421764D8980016D5D0 /* MPContextMenuHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */; };
4C01C245176500C40016D5D0 /* HNHLevelIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */; };
4C055E74179620BF00BD2BAB /* NSString+CommandString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C055E73179620BF00BD2BAB /* NSString+CommandString.m */; };
4C10412C178CDD44001B5239 /* NSDate+Humanized.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C10412B178CDD44001B5239 /* NSDate+Humanized.m */; };
4C16BA6217879A3C002B42BD /* MPPasswordStringFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */; };
4C18F9AB178E122500890BCE /* Test_Password_1234.kdb in Resources */ = {isa = PBXBuildFile; fileRef = 4C18F9AA178E122500890BCE /* Test_Password_1234.kdb */; };
@@ -71,6 +72,8 @@
4C431BCD16E2A82800700A81 /* MPPasteBoardController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */; };
4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */; };
4C4436771792BE810099E220 /* KPKFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4436761792BE810099E220 /* KPKFormat.m */; };
4C4510091798C53700219998 /* StringField+Validation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4510081798C53700219998 /* StringField+Validation.m */; };
4C45100C1798C65C00219998 /* Kdb4Entry+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C45100B1798C65C00219998 /* Kdb4Entry+MPAdditions.m */; };
4C45FB1C178E09ED0010007D /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C45FB1B178E09ED0010007D /* SenTestingKit.framework */; };
4C45FB1D178E09ED0010007D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C77E36615B84A240093A587 /* Cocoa.framework */; };
4C45FB23178E09ED0010007D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C45FB21178E09ED0010007D /* InfoPlist.strings */; };
@@ -137,6 +140,8 @@
4C669B9F16760ED100DD0774 /* RandomStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7516760ED100DD0774 /* RandomStream.m */; };
4C669BA016760ED100DD0774 /* Salsa20RandomStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7716760ED100DD0774 /* Salsa20RandomStream.m */; };
4C669BA216760ED100DD0774 /* UUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7B16760ED100DD0774 /* UUID.m */; };
4C67D33017981A2B00A7BDFC /* HNHTokenField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67D32F17981A2B00A7BDFC /* HNHTokenField.m */; };
4C67D33317981ABA00A7BDFC /* HNHTokenFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */; };
4C69A73A16D589DF00EC1B1A /* HNHGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C69A73916D589DF00EC1B1A /* HNHGradientView.m */; };
4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */; };
4C6D1D27178586CA0014C5A5 /* 99_AddFolderTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */; };
@@ -186,6 +191,8 @@
4CAF62FC1763604000CD7084 /* HNHBadgedTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAF62FB1763604000CD7084 /* HNHBadgedTextFieldCell.m */; };
4CB9339916D3A0DD00A13B5D /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4CB9339716D3A0DD00A13B5D /* Credits.rtf */; };
4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */; };
4CC0D2CE17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */; };
4CC0D2D117974A5A000B4BDA /* MPAttachmentTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2D017974A5A000B4BDA /* MPAttachmentTableViewDelegate.m */; };
4CC1AEBE16D4467C006D2AAB /* KdbTree+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC1AEBD16D4467C006D2AAB /* KdbTree+MPAdditions.m */; };
4CC299FF176F99E50050C939 /* MPRequestHandlerService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC299FE176F99E50050C939 /* MPRequestHandlerService.m */; };
4CC29A02176F9D140050C939 /* MPTestAssociateRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC29A01176F9D140050C939 /* MPTestAssociateRequestHandler.m */; };
@@ -234,6 +241,8 @@
4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextMenuHelper.m; sourceTree = "<group>"; };
4C01C243176500C40016D5D0 /* HNHLevelIndicatorCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHLevelIndicatorCell.h; sourceTree = "<group>"; };
4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHLevelIndicatorCell.m; sourceTree = "<group>"; };
4C055E72179620BF00BD2BAB /* NSString+CommandString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+CommandString.h"; sourceTree = "<group>"; };
4C055E73179620BF00BD2BAB /* NSString+CommandString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+CommandString.m"; sourceTree = "<group>"; };
4C10412A178CDD44001B5239 /* NSDate+Humanized.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+Humanized.h"; sourceTree = "<group>"; };
4C10412B178CDD44001B5239 /* NSDate+Humanized.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+Humanized.m"; sourceTree = "<group>"; };
4C16BA6017879A3C002B42BD /* MPPasswordStringFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordStringFormatter.h; sourceTree = "<group>"; };
@@ -345,6 +354,10 @@
4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OverlayWindow.xib; sourceTree = "<group>"; };
4C4436751792BE810099E220 /* KPKFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KPKFormat.h; sourceTree = "<group>"; };
4C4436761792BE810099E220 /* KPKFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KPKFormat.m; sourceTree = "<group>"; };
4C4510071798C53700219998 /* StringField+Validation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "StringField+Validation.h"; sourceTree = "<group>"; };
4C4510081798C53700219998 /* StringField+Validation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "StringField+Validation.m"; sourceTree = "<group>"; };
4C45100A1798C65C00219998 /* Kdb4Entry+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Kdb4Entry+MPAdditions.h"; sourceTree = "<group>"; };
4C45100B1798C65C00219998 /* Kdb4Entry+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Kdb4Entry+MPAdditions.m"; sourceTree = "<group>"; };
4C45FB1A178E09ED0010007D /* MacPassTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MacPassTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
4C45FB1B178E09ED0010007D /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
4C45FB20178E09ED0010007D /* MacPassTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MacPassTests-Info.plist"; sourceTree = "<group>"; };
@@ -472,6 +485,10 @@
4C669B7716760ED100DD0774 /* Salsa20RandomStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Salsa20RandomStream.m; sourceTree = "<group>"; };
4C669B7A16760ED100DD0774 /* UUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UUID.h; sourceTree = "<group>"; };
4C669B7B16760ED100DD0774 /* UUID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UUID.m; sourceTree = "<group>"; };
4C67D32E17981A2B00A7BDFC /* HNHTokenField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHTokenField.h; sourceTree = "<group>"; };
4C67D32F17981A2B00A7BDFC /* HNHTokenField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHTokenField.m; sourceTree = "<group>"; };
4C67D33117981ABA00A7BDFC /* HNHTokenFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHTokenFieldCell.h; sourceTree = "<group>"; };
4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHTokenFieldCell.m; sourceTree = "<group>"; };
4C69A73816D589DF00EC1B1A /* HNHGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHGradientView.h; sourceTree = "<group>"; };
4C69A73916D589DF00EC1B1A /* HNHGradientView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHGradientView.m; sourceTree = "<group>"; };
4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 48_FolderTemplate.pdf; sourceTree = "<group>"; };
@@ -489,7 +506,6 @@
4C76156B1764C0C80015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PasswordInputView.xib; sourceTree = "<group>"; };
4C76156C1764C0CC0015A1A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/PasswordInputView.strings; sourceTree = "<group>"; };
4C7615701764C0E80015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/InspectorView.xib; sourceTree = "<group>"; };
4C7615721764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GeneralSettings.strings; sourceTree = "<group>"; };
4C7615751764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PasswordInputView.strings; sourceTree = "<group>"; };
4C7615771764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
4C7615781764C4A50015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = de; path = de.lproj/Credits.rtf; sourceTree = "<group>"; };
@@ -545,7 +561,6 @@
4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSettingsTab.h; sourceTree = "<group>"; };
4CA0E3A5176FAF99004D18CB /* MPDocumentQueryService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocumentQueryService.h; sourceTree = "<group>"; };
4CA0E3A6176FAF99004D18CB /* MPDocumentQueryService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDocumentQueryService.m; sourceTree = "<group>"; };
4CA23357176DB8F000F0B6AC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GeneralSettings.strings; sourceTree = "<group>"; };
4CA23358176DBFE100F0B6AC /* MPLockDaemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPLockDaemon.h; sourceTree = "<group>"; };
4CA23359176DBFE100F0B6AC /* MPLockDaemon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPLockDaemon.m; sourceTree = "<group>"; };
4CAAFDD51787AED60013FCF9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MainMenu.strings; sourceTree = "<group>"; };
@@ -568,6 +583,10 @@
4CB9339816D3A0DD00A13B5D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsHelper.h; sourceTree = "<group>"; };
4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsHelper.m; sourceTree = "<group>"; };
4CC0D2CC17974A47000B4BDA /* MPCustomFieldTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableViewDelegate.h; sourceTree = "<group>"; };
4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableViewDelegate.m; sourceTree = "<group>"; };
4CC0D2CF17974A5A000B4BDA /* MPAttachmentTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableViewDelegate.h; sourceTree = "<group>"; };
4CC0D2D017974A5A000B4BDA /* MPAttachmentTableViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAttachmentTableViewDelegate.m; sourceTree = "<group>"; };
4CC1AEBC16D4467C006D2AAB /* KdbTree+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbTree+MPAdditions.h"; sourceTree = "<group>"; };
4CC1AEBD16D4467C006D2AAB /* KdbTree+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbTree+MPAdditions.m"; sourceTree = "<group>"; };
4CC299FD176F99E50050C939 /* MPRequestHandlerService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPRequestHandlerService.h; sourceTree = "<group>"; };
@@ -582,6 +601,8 @@
4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbEntry+MPAdditions.m"; sourceTree = "<group>"; };
4CC7EA1917807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundendTextFieldCellHelper.h; sourceTree = "<group>"; };
4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundendTextFieldCellHelper.m; sourceTree = "<group>"; };
4CCA7EEC1797866F00B0B55E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GeneralSettings.strings; sourceTree = "<group>"; };
4CCA7EEE1797867200B0B55E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GeneralSettings.strings; sourceTree = "<group>"; };
4CD3ABB2178F71B50073F5C5 /* KPKVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KPKVersion.h; sourceTree = "<group>"; };
4CD3ABB3178F71B50073F5C5 /* KPKTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KPKTree.h; sourceTree = "<group>"; };
4CD3ABB4178F71B50073F5C5 /* KPKTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KPKTree.m; sourceTree = "<group>"; };
@@ -916,6 +937,10 @@
4C83F4A91774B155006C5FC0 /* Kdb3Tree+NewTree.m */,
4C83F4AB1774B25F006C5FC0 /* Kdb4Tree+NewTree.h */,
4C83F4AC1774B25F006C5FC0 /* Kdb4Tree+NewTree.m */,
4C4510071798C53700219998 /* StringField+Validation.h */,
4C4510081798C53700219998 /* StringField+Validation.m */,
4C45100A1798C65C00219998 /* Kdb4Entry+MPAdditions.h */,
4C45100B1798C65C00219998 /* Kdb4Entry+MPAdditions.m */,
);
name = "KeePassLib Categories";
sourceTree = "<group>";
@@ -955,6 +980,10 @@
4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */,
4CE298E91795FC2A00DF7BDB /* MPEntryMenuDelegate.h */,
4CE298EA1795FC2A00DF7BDB /* MPEntryMenuDelegate.m */,
4CC0D2CC17974A47000B4BDA /* MPCustomFieldTableViewDelegate.h */,
4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */,
4CC0D2CF17974A5A000B4BDA /* MPAttachmentTableViewDelegate.h */,
4CC0D2D017974A5A000B4BDA /* MPAttachmentTableViewDelegate.m */,
);
name = Delegates;
sourceTree = "<group>";
@@ -1316,6 +1345,10 @@
4CC3AAB9175F4983003EF01B /* HNHRoundedTextFieldCell.m */,
4C9D6AA717615199001C660C /* HNHRoundedSecureTextFieldCell.h */,
4C9D6AA817615199001C660C /* HNHRoundedSecureTextFieldCell.m */,
4C67D32E17981A2B00A7BDFC /* HNHTokenField.h */,
4C67D32F17981A2B00A7BDFC /* HNHTokenField.m */,
4C67D33117981ABA00A7BDFC /* HNHTokenFieldCell.h */,
4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */,
4C58BD4D176370B100B8178C /* HNHBadgedTextField.h */,
4C58BD4E176370B100B8178C /* HNHBadgedTextField.m */,
4CAF62FA1763604000CD7084 /* HNHBadgedTextFieldCell.h */,
@@ -1358,6 +1391,8 @@
4C8A173C1790AA41008B5C17 /* NSData+Keyfile.m */,
4CDB5C401794AA4F0017667E /* KPKTree+Serializing.h */,
4CDB5C411794AA4F0017667E /* KPKTree+Serializing.m */,
4C055E72179620BF00BD2BAB /* NSString+CommandString.h */,
4C055E73179620BF00BD2BAB /* NSString+CommandString.m */,
);
path = Categories;
sourceTree = "<group>";
@@ -1790,6 +1825,13 @@
4CDB5C421794AA4F0017667E /* KPKTree+Serializing.m in Sources */,
4C5AA591179549A1008ECAD7 /* KPKXmlTreeWriter.m in Sources */,
4CE298EB1795FC2A00DF7BDB /* MPEntryMenuDelegate.m in Sources */,
4C055E74179620BF00BD2BAB /* NSString+CommandString.m in Sources */,
4CC0D2CE17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m in Sources */,
4CC0D2D117974A5A000B4BDA /* MPAttachmentTableViewDelegate.m in Sources */,
4C67D33017981A2B00A7BDFC /* HNHTokenField.m in Sources */,
4C67D33317981ABA00A7BDFC /* HNHTokenFieldCell.m in Sources */,
4C4510091798C53700219998 /* StringField+Validation.m in Sources */,
4C45100C1798C65C00219998 /* Kdb4Entry+MPAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1808,8 +1850,8 @@
isa = PBXVariantGroup;
children = (
4C76155F1764C0590015A1A6 /* Base */,
4C7615721764C4A40015A1A6 /* de */,
4CA23357176DB8F000F0B6AC /* en */,
4CCA7EEC1797866F00B0B55E /* de */,
4CCA7EEE1797867200B0B55E /* en */,
);
name = GeneralSettings.xib;
sourceTree = "<group>";

View File

@@ -48,7 +48,7 @@
<object class="NSButton" id="145041823">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 174}, {233, 18}}</string>
<string key="NSFrame">{{18, 177}, {241, 18}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="60918609"/>
@@ -56,9 +56,9 @@
<string key="NSHuggingPriority">{250, 252}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="168279901">
<int key="NSCellFlags">-1543503872</int>
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">268435456</int>
<string key="NSContents">Open empty database on activate</string>
<string key="NSContents">Reopen last Database after Launch</string>
<object class="NSFont" key="NSSupport" id="874940307">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
@@ -82,34 +82,6 @@
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="297534459">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 194}, {226, 18}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="145041823"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSHuggingPriority">{250, 253}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="197992074">
<int key="NSCellFlags">-1543503872</int>
<int key="NSCellFlags2">268435456</int>
<string key="NSContents">Open empty database on launch</string>
<reference key="NSSupport" ref="874940307"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="297534459"/>
<int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="125685135"/>
<reference key="NSAlternateImage" ref="765261007"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="60918609">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">12</int>
@@ -121,7 +93,7 @@
<object class="NSTextField" id="958810247">
<reference key="NSNextResponder" ref="731672371"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 96}, {170, 17}}</string>
<string key="NSFrame">{{15, 96}, {124, 17}}</string>
<reference key="NSSuperview" ref="731672371"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="222890410"/>
@@ -158,7 +130,7 @@
<object class="NSPopUpButton" id="222890410">
<reference key="NSNextResponder" ref="731672371"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{237, 92}, {112, 23}}</string>
<string key="NSFrame">{{179, 92}, {170, 23}}</string>
<reference key="NSSuperview" ref="731672371"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="326334884"/>
@@ -200,7 +172,7 @@
<reference ref="855032005"/>
<object class="NSMenuItem" id="303393620">
<reference key="NSMenu" ref="437492746"/>
<string key="NSTitle">10 Seconds</string>
<string key="NSTitle">after 10 Seconds</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -212,7 +184,7 @@
</object>
<object class="NSMenuItem" id="460415455">
<reference key="NSMenu" ref="437492746"/>
<string key="NSTitle">30 Seconds</string>
<string key="NSTitle">after 30 Seconds</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -224,7 +196,7 @@
</object>
<object class="NSMenuItem" id="678942088">
<reference key="NSMenu" ref="437492746"/>
<string key="NSTitle">1 Minute</string>
<string key="NSTitle">after 1 Minute</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -248,7 +220,7 @@
<object class="NSButton" id="326334884">
<reference key="NSNextResponder" ref="731672371"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 70}, {172, 18}}</string>
<string key="NSFrame">{{31, 72}, {172, 18}}</string>
<reference key="NSSuperview" ref="731672371"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="982397212"/>
@@ -276,7 +248,7 @@
<object class="NSPopUpButton" id="272904029">
<reference key="NSNextResponder" ref="731672371"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{237, 32}, {112, 26}}</string>
<string key="NSFrame">{{179, 33}, {170, 26}}</string>
<reference key="NSSuperview" ref="731672371"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1066302408"/>
@@ -360,7 +332,7 @@
<object class="NSButton" id="1066302408">
<reference key="NSNextResponder" ref="731672371"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 12}, {122, 18}}</string>
<string key="NSFrame">{{31, 12}, {122, 18}}</string>
<reference key="NSSuperview" ref="731672371"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
@@ -386,7 +358,7 @@
<object class="NSTextField" id="982397212">
<reference key="NSNextResponder" ref="731672371"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 38}, {98, 17}}</string>
<string key="NSFrame">{{15, 38}, {98, 17}}</string>
<reference key="NSSuperview" ref="731672371"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="272904029"/>
@@ -453,7 +425,7 @@
<string key="NSFrameSize">{400, 230}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="297534459"/>
<reference key="NSNextKeyView" ref="145041823"/>
<string key="NSClassName">NSView</string>
</object>
</array>
@@ -499,6 +471,14 @@
</object>
<int key="connectionID">810</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">reopenLastDatabase</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="145041823"/>
</object>
<int key="connectionID">878</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -530,6 +510,22 @@
<int key="objectID">1</int>
<reference key="object" ref="1005"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="505875569">
<reference key="firstItem" ref="60918609"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
<int key="secondAttribute">3</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">74</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="213536579">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">4</int>
@@ -546,38 +542,6 @@
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="528706521">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">4</int>
<int key="relation">1</int>
<reference key="secondItem" ref="60918609"/>
<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="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="19198291">
<reference key="firstItem" ref="60918609"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="145041823"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">20</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">3</int>
</object>
<object class="IBNSLayoutConstraint" id="484547610">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">6</int>
@@ -610,56 +574,24 @@
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="343337820">
<object class="IBNSLayoutConstraint" id="119736576">
<reference key="firstItem" ref="145041823"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="297534459"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">6</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">3</int>
</object>
<object class="IBNSLayoutConstraint" id="1065146703">
<reference key="firstItem" ref="145041823"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
<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="1005"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="799708645">
<reference key="firstItem" ref="297534459"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
<int key="secondAttribute">3</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
<object class="IBLayoutConstant" key="constant">
<double key="value">37</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="285907299">
<reference key="firstItem" ref="297534459"/>
<object class="IBNSLayoutConstraint" id="1065146703">
<reference key="firstItem" ref="145041823"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
@@ -708,7 +640,6 @@
</object>
<reference ref="60918609"/>
<reference ref="145041823"/>
<reference ref="297534459"/>
</array>
<reference key="parent" ref="0"/>
</object>
@@ -716,7 +647,23 @@
<int key="objectID">465</int>
<reference key="object" ref="60918609"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="370071994">
<object class="IBNSLayoutConstraint" id="771059501">
<reference key="firstItem" ref="60918609"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="272904029"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">16</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="920770187">
<reference key="firstItem" ref="60918609"/>
<int key="firstAttribute">4</int>
<int key="relation">0</int>
@@ -724,7 +671,7 @@
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">32</double>
<double key="value">33</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
@@ -733,10 +680,10 @@
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="459585909">
<reference key="firstItem" ref="272904029"/>
<reference key="firstItem" ref="222890410"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="222890410"/>
<reference key="secondItem" ref="272904029"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
@@ -748,11 +695,11 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="771059501">
<object class="IBNSLayoutConstraint" id="437525640">
<reference key="firstItem" ref="60918609"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="272904029"/>
<reference key="secondItem" ref="222890410"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
@@ -780,37 +727,21 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="811582841">
<reference key="firstItem" ref="222890410"/>
<object class="IBNSLayoutConstraint" id="1043261939">
<reference key="firstItem" ref="1066302408"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="958810247"/>
<int key="secondAttribute">6</int>
<reference key="secondItem" ref="326334884"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">57</double>
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="520285939">
<reference key="firstItem" ref="60918609"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="222890410"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">16</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="806133159">
<reference key="firstItem" ref="60918609"/>
@@ -845,7 +776,7 @@
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="476689522">
<reference key="firstItem" ref="1066302408"/>
<reference key="firstItem" ref="982397212"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="60918609"/>
@@ -860,12 +791,12 @@
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="287888619">
<object class="IBNSLayoutConstraint" id="1037442692">
<reference key="firstItem" ref="982397212"/>
<int key="firstAttribute">11</int>
<int key="firstAttribute">10</int>
<int key="relation">0</int>
<reference key="secondItem" ref="272904029"/>
<int key="secondAttribute">11</int>
<int key="secondAttribute">10</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
@@ -876,15 +807,15 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="561950720">
<reference key="firstItem" ref="982397212"/>
<object class="IBNSLayoutConstraint" id="236685633">
<reference key="firstItem" ref="326334884"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="60918609"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">19</double>
<double key="value">31</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
@@ -892,36 +823,20 @@
<float key="scoringTypeFloat">9</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="376978074">
<object class="IBNSLayoutConstraint" id="933426524">
<reference key="firstItem" ref="326334884"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="958810247"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">10</double>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">8</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="467548005">
<reference key="firstItem" ref="326334884"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="60918609"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">16</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="60918609"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="432174165">
@@ -973,11 +888,11 @@
<int key="contentType">3</int>
</object>
<reference ref="958810247"/>
<reference ref="326334884"/>
<reference ref="982397212"/>
<reference ref="272904029"/>
<reference ref="326334884"/>
<reference ref="1066302408"/>
<reference ref="222890410"/>
<reference ref="982397212"/>
</array>
<reference key="parent" ref="1005"/>
</object>
@@ -1020,7 +935,7 @@
<reference key="object" ref="222890410"/>
<array class="NSMutableArray" key="children">
<reference ref="934584997"/>
<object class="IBNSLayoutConstraint" id="943587685">
<object class="IBNSLayoutConstraint" id="777025190">
<reference key="firstItem" ref="222890410"/>
<int key="firstAttribute">7</int>
<int key="relation">0</int>
@@ -1028,7 +943,7 @@
<int key="secondAttribute">0</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">107</double>
<double key="value">165</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="222890410"/>
@@ -1112,34 +1027,6 @@
<reference key="object" ref="891799107"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">506</int>
<reference key="object" ref="520285939"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">509</int>
<reference key="object" ref="811582841"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">526</int>
<reference key="object" ref="297534459"/>
<array class="NSMutableArray" key="children">
<reference ref="197992074"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">527</int>
<reference key="object" ref="197992074"/>
<reference key="parent" ref="297534459"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">528</int>
<reference key="object" ref="285907299"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">530</int>
<reference key="object" ref="145041823"/>
@@ -1158,16 +1045,6 @@
<reference key="object" ref="1065146703"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">535</int>
<reference key="object" ref="343337820"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">536</int>
<reference key="object" ref="799708645"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">584</int>
<reference key="object" ref="272904029"/>
@@ -1210,16 +1087,6 @@
<reference key="object" ref="328220222"/>
<reference key="parent" ref="552398563"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">660</int>
<reference key="object" ref="467548005"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">664</int>
<reference key="object" ref="943587685"/>
<reference key="parent" ref="222890410"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">630</int>
<reference key="object" ref="1066302408"/>
@@ -1233,26 +1100,6 @@
<reference key="object" ref="252113219"/>
<reference key="parent" ref="1066302408"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">706</int>
<reference key="object" ref="771059501"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">708</int>
<reference key="object" ref="459585909"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">718</int>
<reference key="object" ref="476689522"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">759</int>
<reference key="object" ref="376978074"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">773</int>
<reference key="object" ref="871797750"/>
@@ -1288,11 +1135,6 @@
<reference key="object" ref="806133159"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">802</int>
<reference key="object" ref="370071994"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">803</int>
<reference key="object" ref="15468834"/>
@@ -1317,40 +1159,80 @@
<reference key="parent" ref="982397212"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">807</int>
<reference key="object" ref="561950720"/>
<int key="objectID">788</int>
<reference key="object" ref="772519144"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">808</int>
<reference key="object" ref="287888619"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">537</int>
<reference key="object" ref="19198291"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">721</int>
<reference key="object" ref="528706521"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">800</int>
<int key="objectID">840</int>
<reference key="object" ref="213536579"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">799</int>
<int key="objectID">845</int>
<reference key="object" ref="119736576"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">846</int>
<reference key="object" ref="505875569"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">847</int>
<reference key="object" ref="250630005"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">788</int>
<reference key="object" ref="772519144"/>
<int key="objectID">861</int>
<reference key="object" ref="1037442692"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">862</int>
<reference key="object" ref="920770187"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">867</int>
<reference key="object" ref="933426524"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">868</int>
<reference key="object" ref="1043261939"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">870</int>
<reference key="object" ref="476689522"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">871</int>
<reference key="object" ref="236685633"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">873</int>
<reference key="object" ref="771059501"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">875</int>
<reference key="object" ref="437525640"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">876</int>
<reference key="object" ref="459585909"/>
<reference key="parent" ref="60918609"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">877</int>
<reference key="object" ref="777025190"/>
<reference key="parent" ref="222890410"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -1360,21 +1242,18 @@
<array key="1.IBNSViewMetadataConstraints">
<reference ref="1063893674"/>
<reference ref="250630005"/>
<reference ref="285907299"/>
<reference ref="799708645"/>
<reference ref="1065146703"/>
<reference ref="343337820"/>
<reference ref="119736576"/>
<reference ref="989429017"/>
<reference ref="484547610"/>
<reference ref="19198291"/>
<reference ref="528706521"/>
<reference ref="213536579"/>
<reference ref="505875569"/>
</array>
<boolean value="NO" key="1.IBNSViewMetadataLastInspectedTranslatesAutoresizingMaskIntoConstraints"/>
<boolean value="NO" key="1.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="419.IBNSViewMetadataConstraints">
<reference ref="943587685"/>
<reference ref="777025190"/>
</array>
<boolean value="NO" key="419.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="419.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1400,38 +1279,28 @@
<reference ref="891799107"/>
<reference ref="1014678196"/>
<reference ref="432174165"/>
<reference ref="467548005"/>
<reference ref="376978074"/>
<reference ref="561950720"/>
<reference ref="287888619"/>
<reference ref="933426524"/>
<reference ref="236685633"/>
<reference ref="1037442692"/>
<reference ref="476689522"/>
<reference ref="772519144"/>
<reference ref="806133159"/>
<reference ref="520285939"/>
<reference ref="811582841"/>
<reference ref="1043261939"/>
<reference ref="311160635"/>
<reference ref="771059501"/>
<reference ref="437525640"/>
<reference ref="459585909"/>
<reference ref="370071994"/>
<reference ref="920770187"/>
<reference ref="771059501"/>
</array>
<boolean value="NO" key="465.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="465.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="475.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="499.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="506.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="509.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="525.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="526.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="526.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="527.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="528.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="530.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="530.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="531.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="532.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="535.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="536.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="537.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="584.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="584.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="585.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1442,36 +1311,38 @@
<boolean value="NO" key="630.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="630.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="631.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="660.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="664.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="706.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="708.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="718.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="721.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="759.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="773.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="784.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="788.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="789.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="792.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="798.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="799.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="800.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="801.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="802.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="803.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="804.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="805.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="805.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="806.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="807.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="808.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="840.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="845.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="846.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="847.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="861.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="862.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="867.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="868.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="870.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="871.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="873.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="875.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="876.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="877.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">814</int>
<int key="maxID">878</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1483,6 +1354,7 @@
<string key="clearPasteboardTimeoutPopup">NSPopUpButton</string>
<string key="idleTimeOutPopup">NSPopUpButton</string>
<string key="lockOnSleepCheckButton">NSButton</string>
<string key="reopenLastDatabase">NSButton</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="clearPasteboardOnQuitCheckButton">
@@ -1501,6 +1373,10 @@
<string key="name">lockOnSleepCheckButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="reopenLastDatabase">
<string key="name">reopenLastDatabase</string>
<string key="candidateClassName">NSButton</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>

View File

@@ -133,65 +133,11 @@
<object class="NSCustomView" id="816254670">
<reference key="NSNextResponder" ref="87082330"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="277685969">
<reference key="NSNextResponder" ref="816254670"/>
<int key="NSvFlags">-2147483380</int>
<string key="NSFrame">{{184, 5}, {45, 19}}</string>
<reference key="NSSuperview" ref="816254670"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="442762067"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="740692320">
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Done</string>
<object class="NSFont" key="NSSupport" id="323604925">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="277685969"/>
<int key="NSButtonFlags">-2038153216</int>
<int key="NSButtonFlags2">164</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="442762067">
<reference key="NSNextResponder" ref="816254670"/>
<int key="NSvFlags">-2147483380</int>
<string key="NSFrame">{{237, 5}, {36, 19}}</string>
<reference key="NSSuperview" ref="816254670"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="669709526">
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Edit</string>
<reference key="NSSupport" ref="323604925"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="442762067"/>
<int key="NSButtonFlags">-2038153216</int>
<int key="NSButtonFlags2">164</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{293, 30}</string>
<reference key="NSSuperview" ref="87082330"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="277685969"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSClassName">HNHGradientView</string>
</object>
@@ -256,13 +202,13 @@
<string key="NSFrame">{{0, 31}, {293, 399}}</string>
<reference key="NSSuperview" ref="87082330"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="726109125"/>
<reference key="NSNextKeyView" ref="177600245"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<array class="NSMutableArray" key="NSTabViewItems">
<object class="NSTabViewItem" id="1002013291">
<string key="NSIdentifier">1</string>
<object class="NSView" key="NSView" id="726109125">
<reference key="NSNextResponder" ref="166081160"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="734056912">
@@ -270,7 +216,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 365}, {35, 14}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="909883915"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -303,7 +248,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 335}, {253, 22}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="328122838"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -338,7 +282,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 313}, {58, 14}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="800408621"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -359,7 +302,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 283}, {253, 22}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="428053603"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -381,7 +323,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 231}, {253, 22}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="279643156"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -403,7 +344,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 261}, {25, 14}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="484293743"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -424,7 +364,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 209}, {58, 14}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="685310174"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -445,7 +384,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 152}, {253, 19}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="13391205"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSHuggingPriority">{250, 750}</string>
@@ -454,7 +392,11 @@
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Generate</string>
<reference key="NSSupport" ref="323604925"/>
<object class="NSFont" key="NSSupport" id="323604925">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="172507372"/>
<int key="NSButtonFlags">-2038153216</int>
@@ -471,7 +413,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 35}, {259, 11}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="212627618"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -496,8 +437,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 16}, {259, 11}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="894571713"/>
<reference key="NSNextKeyView" ref="816254670"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="72260846">
@@ -517,7 +457,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 179}, {214, 22}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1035439471"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -542,7 +481,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{242, 177}, {31, 25}}</string>
<reference key="NSSuperview" ref="726109125"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="172507372"/>
<string key="NSReuseIdentifierKey">_NS:22</string>
<bool key="NSEnabled">YES</bool>
@@ -568,8 +506,6 @@
</object>
</array>
<string key="NSFrameSize">{293, 399}</string>
<reference key="NSSuperview" ref="166081160"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="734056912"/>
<string key="NSReuseIdentifierKey">_NS:11</string>
</object>
@@ -596,7 +532,7 @@
<int key="NSvFlags">2322</int>
<string key="NSFrameSize">{251, 332}</string>
<reference key="NSSuperview" ref="454120122"/>
<reference key="NSNextKeyView" ref="942541726"/>
<reference key="NSNextKeyView" ref="657519150"/>
<string key="NSReuseIdentifierKey">_NS:13</string>
<object class="NSTextContainer" key="NSTextContainer" id="77792568">
<object class="NSLayoutManager" key="NSLayoutManager">
@@ -688,7 +624,7 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{236, 1}, {16, 332}}</string>
<reference key="NSSuperview" ref="850153963"/>
<reference key="NSNextKeyView" ref="894571713"/>
<reference key="NSNextKeyView" ref="816254670"/>
<string key="NSReuseIdentifierKey">_NS:83</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="850153963"/>
@@ -713,7 +649,7 @@
</array>
<string key="NSFrame">{{20, 20}, {253, 334}}</string>
<reference key="NSSuperview" ref="13134025"/>
<reference key="NSNextKeyView" ref="657519150"/>
<reference key="NSNextKeyView" ref="454120122"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSsFlags">133138</int>
<reference key="NSVScroller" ref="942541726"/>
@@ -926,7 +862,6 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 147}, {52, 16}}</string>
<reference key="NSSuperview" ref="994354248"/>
<reference key="NSNextKeyView" ref="894571713"/>
<string key="NSReuseIdentifierKey">_NS:60</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
@@ -958,7 +893,7 @@
</object>
<object class="NSTabViewItem" id="800410412">
<object class="NSView" key="NSView" id="177600245">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder" ref="166081160"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="966066653">
@@ -966,6 +901,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{241, 362}, {32, 19}}</string>
<reference key="NSSuperview" ref="177600245"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="892620201"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -991,6 +927,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 365}, {80, 14}}</string>
<reference key="NSSuperview" ref="177600245"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="966066653"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -1020,6 +957,7 @@
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{259, 333}</string>
<reference key="NSSuperview" ref="236190992"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="291769955"/>
<string key="NSReuseIdentifierKey">_NS:13</string>
<bool key="NSEnabled">YES</bool>
@@ -1082,6 +1020,7 @@
</array>
<string key="NSFrame">{{1, 1}, {259, 333}}</string>
<reference key="NSSuperview" ref="892620201"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="441697535"/>
<string key="NSReuseIdentifierKey">_NS:11</string>
<reference key="NSDocView" ref="441697535"/>
@@ -1093,6 +1032,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="892620201"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1045948787"/>
<string key="NSReuseIdentifierKey">_NS:58</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -1105,6 +1045,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 119}, {223, 15}}</string>
<reference key="NSSuperview" ref="892620201"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="894571713"/>
<string key="NSReuseIdentifierKey">_NS:60</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -1116,6 +1057,7 @@
</array>
<string key="NSFrame">{{16, 20}, {261, 335}}</string>
<reference key="NSSuperview" ref="177600245"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="236190992"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSsFlags">133681</int>
@@ -1129,6 +1071,8 @@
</object>
</array>
<string key="NSFrameSize">{293, 399}</string>
<reference key="NSSuperview" ref="166081160"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="40836012"/>
</object>
<string key="NSLabel">Fields</string>
@@ -1136,13 +1080,13 @@
<reference key="NSTabView" ref="166081160"/>
</object>
</array>
<reference key="NSSelectedTabViewItem" ref="1002013291"/>
<reference key="NSSelectedTabViewItem" ref="800410412"/>
<reference key="NSFont" ref="308723166"/>
<int key="NSTvFlags">6</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<array class="NSMutableArray" key="NSSubviews">
<reference ref="726109125"/>
<reference ref="177600245"/>
</array>
</object>
</array>
@@ -1463,7 +1407,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{223, 11}, {32, 19}}</string>
<reference key="NSSuperview" ref="291769955"/>
<reference key="NSNextKeyView" ref="101606984"/>
<reference key="NSNextKeyView" ref="511009648"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="26197670">
@@ -1653,6 +1597,72 @@
</object>
<int key="connectionID">2260</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">valueTextField</string>
<object class="NSTableCellView" key="source" id="511009648">
<nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="781002733">
<reference key="NSNextResponder" ref="511009648"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{3, 10}, {250, 22}}</string>
<reference key="NSSuperview" ref="511009648"/>
<reference key="NSNextKeyView" ref="101606984"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="991080261">
<int key="NSCellFlags">-1805647871</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="308723166"/>
<string key="NSPlaceholderString">Value</string>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="781002733"/>
<bool key="NSDrawsBackground">YES</bool>
<reference key="NSBackgroundColor" ref="955209345"/>
<reference key="NSTextColor" ref="412903852"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="632623009">
<reference key="NSNextResponder" ref="511009648"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{0, 40}, {258, 14}}</string>
<reference key="NSSuperview" ref="511009648"/>
<reference key="NSNextKeyView" ref="781002733"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="304318757">
<int key="NSCellFlags">-1808793535</int>
<int key="NSCellFlags2">272761856</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString">Title</string>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="632623009"/>
<reference key="NSBackgroundColor" ref="955209345"/>
<reference key="NSTextColor" ref="1062890562"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{1, 57}, {256, 54}}</string>
<reference key="NSNextKeyView" ref="632623009"/>
</object>
<reference key="destination" ref="781002733"/>
</object>
<int key="connectionID">2365</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">labelTextField</string>
<reference key="source" ref="511009648"/>
<reference key="destination" ref="632623009"/>
</object>
<int key="connectionID">2366</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -2003,70 +2013,6 @@
<int key="objectID">662</int>
<reference key="object" ref="816254670"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="34368549">
<reference key="firstItem" ref="442762067"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="277685969"/>
<int key="secondAttribute">6</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="816254670"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="752675649">
<reference key="firstItem" ref="816254670"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="442762067"/>
<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="816254670"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="824671915">
<reference key="firstItem" ref="277685969"/>
<int key="firstAttribute">11</int>
<int key="relation">0</int>
<reference key="secondItem" ref="442762067"/>
<int key="secondAttribute">11</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="816254670"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="1053370990">
<reference key="firstItem" ref="277685969"/>
<int key="firstAttribute">10</int>
<int key="relation">0</int>
<reference key="secondItem" ref="816254670"/>
<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="816254670"/>
<int key="scoringType">5</int>
<float key="scoringTypeFloat">22</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="574545128">
<reference key="firstItem" ref="816254670"/>
<int key="firstAttribute">8</int>
@@ -2083,8 +2029,6 @@
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
<reference ref="442762067"/>
<reference ref="277685969"/>
</array>
<reference key="parent" ref="87082330"/>
</object>
@@ -3841,6 +3785,7 @@
<array class="NSMutableArray" key="children">
<reference ref="559416629"/>
<reference ref="291769955"/>
<reference ref="511009648"/>
</array>
<reference key="parent" ref="441697535"/>
</object>
@@ -4679,57 +4624,256 @@
<reference key="object" ref="849686715"/>
<reference key="parent" ref="726109125"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2313</int>
<reference key="object" ref="442762067"/>
<array class="NSMutableArray" key="children">
<reference ref="669709526"/>
</array>
<reference key="parent" ref="816254670"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2314</int>
<reference key="object" ref="669709526"/>
<reference key="parent" ref="442762067"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2315</int>
<reference key="object" ref="752675649"/>
<reference key="parent" ref="816254670"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2317</int>
<reference key="object" ref="277685969"/>
<array class="NSMutableArray" key="children">
<reference ref="740692320"/>
</array>
<reference key="parent" ref="816254670"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2318</int>
<reference key="object" ref="740692320"/>
<reference key="parent" ref="277685969"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2319</int>
<reference key="object" ref="34368549"/>
<reference key="parent" ref="816254670"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2320</int>
<reference key="object" ref="1053370990"/>
<reference key="parent" ref="816254670"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2321</int>
<reference key="object" ref="824671915"/>
<reference key="parent" ref="816254670"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2322</int>
<reference key="object" ref="775474818"/>
<reference key="parent" ref="726109125"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2345</int>
<reference key="object" ref="511009648"/>
<array class="NSMutableArray" key="children">
<reference ref="781002733"/>
<reference ref="632623009"/>
<object class="IBNSLayoutConstraint" id="346165127">
<reference key="firstItem" ref="511009648"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="781002733"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">3</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="511009648"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="590616446">
<reference key="firstItem" ref="511009648"/>
<int key="firstAttribute">4</int>
<int key="relation">0</int>
<reference key="secondItem" ref="781002733"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">10</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="511009648"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="179229956">
<reference key="firstItem" ref="781002733"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="632623009"/>
<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="511009648"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="302253341">
<reference key="firstItem" ref="781002733"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="511009648"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">3</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="511009648"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="901474527">
<reference key="firstItem" ref="632623009"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="511009648"/>
<int key="secondAttribute">3</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="511009648"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="283957064">
<reference key="firstItem" ref="632623009"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="511009648"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">3</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="511009648"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
</array>
<reference key="parent" ref="330991171"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2347</int>
<reference key="object" ref="781002733"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="796932488">
<reference key="firstItem" ref="781002733"/>
<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">80</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="781002733"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
<object class="IBNSLayoutConstraint" id="893684750">
<reference key="firstItem" ref="781002733"/>
<int key="firstAttribute">8</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">22</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="781002733"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
<reference ref="991080261"/>
</array>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2348</int>
<reference key="object" ref="632623009"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="680263316">
<reference key="firstItem" ref="632623009"/>
<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">252</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="632623009"/>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="contentType">1</int>
</object>
<object class="IBNSLayoutConstraint" id="867937555">
<reference key="firstItem" ref="632623009"/>
<int key="firstAttribute">8</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">14</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="632623009"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
<reference ref="304318757"/>
</array>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2349</int>
<reference key="object" ref="283957064"/>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2351</int>
<reference key="object" ref="901474527"/>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2352</int>
<reference key="object" ref="302253341"/>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2353</int>
<reference key="object" ref="179229956"/>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2354</int>
<reference key="object" ref="590616446"/>
<reference key="parent" ref="511009648"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2358</int>
<reference key="object" ref="867937555"/>
<reference key="parent" ref="632623009"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2359</int>
<reference key="object" ref="304318757"/>
<reference key="parent" ref="632623009"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2360</int>
<reference key="object" ref="893684750"/>
<reference key="parent" ref="781002733"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2361</int>
<reference key="object" ref="796932488"/>
<reference key="parent" ref="781002733"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2362</int>
<reference key="object" ref="991080261"/>
<reference key="parent" ref="781002733"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2369</int>
<reference key="object" ref="680263316"/>
<reference key="parent" ref="632623009"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2370</int>
<reference key="object" ref="346165127"/>
<reference key="parent" ref="511009648"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -4786,7 +4930,7 @@
<reference ref="171913043"/>
</array>
<string key="1396.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="1397.IBNSViewMetadataConstraints">
<array class="NSMutableArray" key="1397.IBNSViewMetadataConstraints">
<reference ref="866470549"/>
<reference ref="496215318"/>
<reference ref="644631459"/>
@@ -4975,6 +5119,7 @@
<boolean value="YES" key="2014.isInViewBasedMode"/>
<array key="2014.prototypeCellViews">
<reference ref="291769955"/>
<reference ref="511009648"/>
</array>
<string key="2017.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2020.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -4994,6 +5139,7 @@
<reference ref="243564120"/>
</array>
<string key="2024.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2024.userInterfaceItemIdentifier">SelectedCell</string>
<array key="2042.IBNSViewMetadataConstraints">
<reference ref="788011316"/>
<reference ref="268050676"/>
@@ -5107,17 +5253,43 @@
<string key="2275.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2276.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2278.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="2313.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2313.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2314.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2315.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="2317.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2317.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2318.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2319.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2320.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2321.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2322.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2345.CustomClassName">MPCustomFieldTableCellView</string>
<array key="2345.IBNSViewMetadataConstraints">
<reference ref="283957064"/>
<reference ref="901474527"/>
<reference ref="302253341"/>
<reference ref="179229956"/>
<reference ref="590616446"/>
<reference ref="346165127"/>
</array>
<string key="2345.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2345.userInterfaceItemIdentifier">NormalCell</string>
<array class="NSMutableArray" key="2347.IBNSViewMetadataConstraints">
<reference ref="893684750"/>
<reference ref="796932488"/>
</array>
<boolean value="NO" key="2347.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2347.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="2348.IBNSViewMetadataConstraints">
<reference ref="867937555"/>
<reference ref="680263316"/>
</array>
<boolean value="NO" key="2348.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2348.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2349.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2351.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2352.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2353.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2354.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2358.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2359.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2360.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2361.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2362.CustomClassName">HNHRoundedTextFieldCell</string>
<string key="2362.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2369.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2370.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="455.IBNSViewMetadataConstraints">
<reference ref="222939184"/>
<reference ref="1058743908"/>
@@ -5152,10 +5324,6 @@
<string key="651.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="662.IBNSViewMetadataConstraints">
<reference ref="574545128"/>
<reference ref="1053370990"/>
<reference ref="824671915"/>
<reference ref="752675649"/>
<reference ref="34368549"/>
</array>
<boolean value="NO" key="662.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="662.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -5168,7 +5336,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">2322</int>
<int key="maxID">2370</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">

View File

@@ -286,7 +286,7 @@
<object class="NSButton" id="769513826">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{281, 65}, {83, 32}}</string>
<string key="NSFrame">{{320, 65}, {83, 32}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
@@ -526,6 +526,22 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="875982455">
<reference key="firstItem" ref="769513826"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="594061862"/>
<int key="secondAttribute">6</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">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="641552480">
<reference key="firstItem" ref="769513826"/>
<int key="firstAttribute">3</int>
@@ -542,22 +558,6 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="875982455">
<reference key="firstItem" ref="769513826"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1034097047"/>
<int key="secondAttribute">6</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">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="1001566026">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">4</int>
@@ -804,9 +804,9 @@
<reference ref="1034097047"/>
<reference ref="333885704"/>
<reference ref="662046682"/>
<reference ref="769513826"/>
<reference ref="594061862"/>
<reference ref="660673733"/>
<reference ref="769513826"/>
</array>
<reference key="parent" ref="0"/>
</object>
@@ -1027,11 +1027,6 @@
<reference key="object" ref="72235716"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">465</int>
<reference key="object" ref="875982455"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">286</int>
<reference key="object" ref="912203343"/>
@@ -1105,13 +1100,18 @@
<reference key="object" ref="1041224580"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">496</int>
<reference key="object" ref="875982455"/>
<reference key="parent" ref="1005"/>
</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>
<array key="1.IBNSViewMetadataConstraints">
<array class="NSMutableArray" key="1.IBNSViewMetadataConstraints">
<reference ref="781301592"/>
<reference ref="335819100"/>
<reference ref="915913759"/>
@@ -1127,8 +1127,8 @@
<reference ref="273022298"/>
<reference ref="912203343"/>
<reference ref="1001566026"/>
<reference ref="875982455"/>
<reference ref="641552480"/>
<reference ref="875982455"/>
<reference ref="466444110"/>
<reference ref="72235716"/>
<reference ref="1041224580"/>
@@ -1187,7 +1187,6 @@
<string key="456.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="459.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="462.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="465.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="476.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="478.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="479.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1200,12 +1199,13 @@
<string key="489.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="490.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="492.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="496.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">495</int>
<int key="maxID">497</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">

File diff suppressed because it is too large Load Diff

View File

@@ -50,8 +50,9 @@
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<string key="NSFrameAutosaveName">DatabaseWindow</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
<object class="NSSplitView" id="903506498">
@@ -64,6 +65,7 @@
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSIsVertical">YES</bool>
<int key="NSDividerStyle">2</int>
<string key="NSAutosaveName"/>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
@@ -159,6 +161,7 @@
<string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="editPassword:">id</string>
<string key="exportDatabase:">id</string>
<string key="showDatabaseSettings:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
@@ -166,6 +169,10 @@
<string key="name">editPassword:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="exportDatabase:">
<string key="name">exportDatabase:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showDatabaseSettings:">
<string key="name">showDatabaseSettings:</string>
<string key="candidateClassName">id</string>

View File

@@ -0,0 +1,15 @@
//
// Kdb4Entry+MPAdditions.h
// MacPass
//
// Created by Michael Starke on 19.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "Kdb4Node.h"
@interface Kdb4Entry (MPAdditions)
- (NSString *)uniqueKeyForProposal:(NSString *)key;
@end

View File

@@ -0,0 +1,34 @@
//
// Kdb4Entry+MPAdditions.m
// MacPass
//
// Created by Michael Starke on 19.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "Kdb4Entry+MPAdditions.h"
@implementation Kdb4Entry (MPAdditions)
- (NSString *)uniqueKeyForProposal:(NSString *)key {
/*
FIXME: Introduce some cachin behaviour. We iterate over after every single edit
*/
NSArray *defaultKeys = @[ FIELD_TITLE,
FIELD_USER_NAME,
FIELD_PASSWORD,
FIELD_URL,
FIELD_NOTES ];
NSMutableSet *keys = [[NSMutableSet alloc] initWithArray:defaultKeys];
for(StringField *field in self.stringFields) {
[keys addObject:field.key];
}
NSUInteger counter = 1;
NSString *base = key;
while([keys containsObject:key]) {
key = [NSString stringWithFormat:@"%@-%ld", base, counter++];
}
return key;
}
@end

View File

@@ -38,16 +38,31 @@
[MPStringLengthValueTransformer registerTransformer];
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender {
return [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyOpenEmptyDatabaseOnLaunch];
}
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
BOOL reopen = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch];
if(reopen) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(_applicationDidFinishRestoringWindows:)
name:NSApplicationDidFinishRestoringWindowsNotification
object:nil];
}
}
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
serverDaemon = [[MPServerDaemon alloc] init];
lockDaemon = [[MPLockDaemon alloc] init];
}
- (NSString *)applicationName {
return [[NSBundle mainBundle] infoDictionary][@"CFBundleName"];
}
@@ -93,4 +108,16 @@
}
}
- (void)_applicationDidFinishRestoringWindows:(NSNotification *)notification {
NSDocumentController *documentController = [NSDocumentController sharedDocumentController];
NSArray *documents = [documentController documents];
NSArray *recentDocuments = [documentController recentDocumentURLs];
if([documents count] == 0 && [recentDocuments count] > 0) {
NSURL *url = recentDocuments[0];
[documentController openDocumentWithContentsOfURL:url display:YES completionHandler:^(NSDocument *document, BOOL documentWasAlreadyOpen, NSError *error) {
// do nothing
}];
}
}
@end

View File

@@ -0,0 +1,17 @@
//
// MPAttachmentTableViewDelegate.h
// MacPass
//
// Created by Michael Starke on 17.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
@class MPInspectorViewController;
@interface MPAttachmentTableViewDelegate : NSObject <NSTableViewDelegate>
@property (nonatomic, weak) MPInspectorViewController *viewController;
@end

View File

@@ -0,0 +1,65 @@
//
// MPAttachmentTableViewDelegate.m
// MacPass
//
// Created by Michael Starke on 17.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPAttachmentTableViewDelegate.h"
#import "MPInspectorViewController.h"
#import "MPSelectedAttachmentTableCellView.h"
#import "Kdb4Node.h"
#import "HNHTableRowView.h"
@implementation MPAttachmentTableViewDelegate
- (void)tableViewSelectionDidChange:(NSNotification *)notification {
NSTableView *tableView = [notification object];
NSIndexSet *allColumns = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [[tableView tableColumns] count])];
Kdb4Entry *entryv4 = (Kdb4Entry *)self.viewController.selectedEntry;
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [entryv4.binaries count] )];
[tableView reloadDataForRowIndexes:indexSet columnIndexes:allColumns];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
/* Decide what view to use */
NSIndexSet *selectedIndexes = [tableView selectedRowIndexes];
NSTableCellView *view;
if([selectedIndexes containsIndex:row]) {
MPSelectedAttachmentTableCellView *cellView = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
[cellView.saveButton setTag:row];
[cellView.saveButton setAction:@selector(saveAttachment:)];
[cellView.saveButton setTarget:self.viewController];
[cellView.removeButton setTag:row];
[cellView.removeButton setAction:@selector(removeAttachment:)];
[cellView.removeButton setTarget:self.viewController];
view = cellView;
}
else {
view = [tableView makeViewWithIdentifier:@"NormalCell" owner:tableView];
}
/* Bind view */
if([self.viewController.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)self.viewController.selectedEntry;
BinaryRef *binaryRef = entry.binaries[row];
[[view textField] bind:NSValueBinding toObject:binaryRef withKeyPath:@"key" options:nil];
[[view imageView] setImage:[[NSWorkspace sharedWorkspace] iconForFileType:[binaryRef.key pathExtension]]];
}
else {
// Create view to support only one binary!
}
return view;
}
- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row {
HNHTableRowView *view = nil;
view = [[HNHTableRowView alloc] init];
view.selectionCornerRadius = 7;
return view;
}
@end

View File

@@ -0,0 +1,17 @@
//
// MPCustomFieldTableDelegate.h
// MacPass
//
// Created by Michael Starke on 17.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
@class MPInspectorViewController;
@interface MPCustomFieldTableViewDelegate : NSObject <NSTableViewDelegate>
@property (nonatomic, weak) MPInspectorViewController *viewController;
@end

View File

@@ -0,0 +1,42 @@
//
// MPCustomFieldTableDelegate.m
// MacPass
//
// Created by Michael Starke on 17.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPCustomFieldTableViewDelegate.h"
#import "MPInspectorViewController.h"
#import "MPCustomFieldTableCellView.h"
#import "Kdb4Node.h"
#import "StringField+Undo.h"
@implementation MPCustomFieldTableViewDelegate
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if(![self.viewController.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
return nil;
}
Kdb4Entry *entry = (Kdb4Entry *)self.viewController.selectedEntry;
MPCustomFieldTableCellView *view = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_customFieldFrameChanged:) name:NSViewFrameDidChangeNotification object:view];
if([self.viewController.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
StringField *stringField = entry.stringFields[row];
NSDictionary *validateOptions = @{ NSValidatesImmediatelyBindingOption: @YES };
[view.labelTextField bind:NSValueBinding toObject:stringField withKeyPath:MPStringFieldKeyUndoableKey options:validateOptions];
[view.valueTextField bind:NSValueBinding toObject:stringField withKeyPath:MPStringFieldValueUndoableKey options:nil];
[view.removeButton setTarget:self.viewController];
[view.removeButton setAction:@selector(removeCustomField:)];
[view.removeButton setTag:row];
}
return view;
}
- (void)_customFieldFrameChanged:(NSNotification *)notification {
// NSView *sender = [notification object];
// NSLog(@"didChangeFrameFor: %@ to: %@", sender, NSStringFromRect([sender frame]));
}
@end

View File

@@ -18,9 +18,11 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
@class MPDocument;
@class HNHRoundedSecureTextField;
@interface MPDatabaseSettingsWindowController : NSWindowController
@interface MPDatabaseSettingsWindowController : NSWindowController <NSTextFieldDelegate>
@property (weak) IBOutlet NSTabView *sectionTabView;
@property (weak) IBOutlet NSButton *saveButton;
@property (weak) IBOutlet NSButton *cancelButton;
/* General Tab */
@property (weak) IBOutlet NSTextField *databaseNameTextField;
@@ -28,8 +30,11 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
/* Protection */
@property (weak) IBOutlet HNHRoundedSecureTextField *passwordTextField;
@property (weak) IBOutlet HNHRoundedSecureTextField *passwordRepeatTextField;
@property (weak) IBOutlet NSPathControl *keyfilePathControl;
@property (weak) IBOutlet NSButton *togglePasswordButton;
@property (weak) IBOutlet NSTextField *errorTextField;
- (IBAction)clearKey:(id)sender;
- (IBAction)generateKey:(id)sender;

View File

@@ -14,6 +14,8 @@
#import "HNHRoundedSecureTextField.h"
#import "NSString+Empty.h"
#import "Kdb.h"
#import "Kdb4Node.h"
#import "KdbGroup+MPAdditions.h"
@@ -24,6 +26,8 @@
@property (nonatomic,assign) BOOL trashEnabled;
@property (nonatomic,assign) BOOL showPassword;
@property (nonatomic,assign) BOOL hasValidPasswordOrKey;
@property (nonatomic,weak) NSURL *keyURL;
@end
@@ -38,6 +42,7 @@
if(self) {
_document = document;
_showPassword = NO;
_hasValidPasswordOrKey = NO;
}
return self;
}
@@ -47,6 +52,9 @@
NSAssert(_document != nil, @"Document needs to be present");
[self.saveButton bind:NSEnabledBinding toObject:self withKeyPath:@"hasValidPasswordOrKey" options:nil];
[self.cancelButton bind:NSEnabledBinding toObject:self withKeyPath:@"hasValidPasswordOrKey" options:nil];
Kdb4Tree *tree = _document.treeV4;
if( tree ) {
[self _setupDatabase:tree];
@@ -109,15 +117,68 @@
[self.sectionTabView selectTabViewItemAtIndex:tab];
}
- (void)setShowPassword:(BOOL)showPassword {
if(_showPassword != showPassword) {
_showPassword = showPassword;
[self.passwordRepeatTextField setStringValue:@""];
[self _verifyPasswordAndKey];
}
}
- (void)setKeyURL:(NSURL *)keyURL {
_keyURL = keyURL;
[self _verifyPasswordAndKey];
}
#pragma mark Actions
- (IBAction)clearKey:(id)sender {
[self.keyfilePathControl setURL:nil];
self.keyURL = nil;
}
- (IBAction)generateKey:(id)sender {
}
#pragma makr NSTextFieldDelegate
- (void)controlTextDidChange:(NSNotification *)obj {
[self _verifyPasswordAndKey];
}
#pragma mark Private Helper
- (void)_verifyPasswordAndKey {
NSString *password = [self.passwordTextField stringValue];
NSString *repeat = [self.passwordRepeatTextField stringValue];
BOOL hasKey = (self.keyURL != nil);
BOOL keyOk = YES;
if(hasKey) {
keyOk = [self.keyURL checkResourceIsReachableAndReturnError:nil];
}
BOOL hasPassword = ![password isEmpty];
BOOL passwordOk = YES;
if(hasPassword ) {
passwordOk = [password isEqualToString:repeat] || self.showPassword;
}
BOOL hasPasswordOrKey = (hasKey || hasPassword);
keyOk = hasKey ? keyOk : YES;
passwordOk = hasPassword ? passwordOk : YES;
self.hasValidPasswordOrKey = hasPasswordOrKey && passwordOk && keyOk;
if(!hasPasswordOrKey) {
[self.errorTextField setStringValue:NSLocalizedString(@"ERROR_NO_PASSWORD_OR_KEYFILE", "Missing Key or Password")];
return; // alldone
}
if(!passwordOk && !keyOk ) {
[self.errorTextField setStringValue:NSLocalizedString(@"ERROR_PASSWORD_MISSMATCH_INVALID_KEYFILE", "Passwords do not match, keyfile is invalid")];
}
else if(!passwordOk) {
[self.errorTextField setStringValue:NSLocalizedString(@"ERROR_PASSWORD_MISSMATCH", "Passwords do not match")];
}
else {
[self.errorTextField setStringValue:NSLocalizedString(@"ERROR_INVALID_KEYFILE", "Keyfile not valid")];
}
}
- (void)_setupDatabase:(Kdb4Tree *)tree {
[self.databaseNameTextField setStringValue:tree.databaseName];
[self.databaseDescriptionTextView setString:tree.databaseDescription];
@@ -140,10 +201,21 @@
- (void)_setupPasswordTab:(Kdb4Tree *)tree {
[self.passwordTextField setStringValue:_document.password ? _document.password : @""];
[self.keyfilePathControl setURL:_document.key];
[self.passwordRepeatTextField setStringValue:[self.passwordRepeatTextField stringValue]];
self.keyURL = _document.key;
NSDictionary *negateOption = @{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName };
[self.passwordTextField bind:@"showPassword" toObject:self withKeyPath:@"showPassword" options:nil];
[self.togglePasswordButton bind:NSValueBinding toObject:self withKeyPath:@"showPassword" options:nil];
[self.passwordRepeatTextField bind:NSEnabledBinding toObject:self withKeyPath:@"showPassword" options:negateOption];
[self.errorTextField bind:NSHiddenBinding toObject:self withKeyPath:@"hasValidPasswordOrKey" options:nil];
[self.keyfilePathControl bind:NSValueBinding toObject:self withKeyPath:@"keyURL" options:nil];
[self.passwordRepeatTextField setDelegate:self];
[self.passwordTextField setDelegate:self];
/* Manually initate the first check */
[self _verifyPasswordAndKey];
}
- (void)_updateTrashFolders:(Kdb4Tree *)tree {

View File

@@ -19,14 +19,18 @@
#import "Kdb4Node.h"
#import "Kdb4Persist.h"
#import "KdbPassword.h"
#import "KdbGroup+Undo.h"
#import "KdbGroup+KVOAdditions.h"
#import "Kdb4Entry+KVOAdditions.h"
#import "KdbGroup+MPTreeTools.h"
#import "KdbGroup+MPAdditions.h"
#import "KdbEntry+Undo.h"
#import "KdbGroup+Undo.h"
#import "Kdb3Tree+NewTree.h"
#import "Kdb4Tree+NewTree.h"
#import "Kdb4Entry+MPAdditions.h"
#import "KdbGroup+MPTreeTools.h"
#import "KdbGroup+MPAdditions.h"
#import "DataOutputStream.h"
@@ -263,7 +267,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
- (Kdb3Tree *)treeV3 {
switch (_version) {
case MPDatabaseVersion3:
NSAssert([self.tree isKindOfClass:[Kdb3Tree class]], @"Tree has to be Version3");
NSAssert(self.tree == nil || [self.tree isKindOfClass:[Kdb3Tree class]], @"Tree has to be Version3");
return (Kdb3Tree *)self.tree;
case MPDatabaseVersion4:
return nil;
@@ -277,7 +281,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
case MPDatabaseVersion3:
return nil;
case MPDatabaseVersion4:
NSAssert([self.tree isKindOfClass:[Kdb4Tree class]], @"Tree has to be Version4");
NSAssert(self.tree == nil || [self.tree isKindOfClass:[Kdb4Tree class]], @"Tree has to be Version4");
return (Kdb4Tree *)self.tree;
default:
return nil;
@@ -349,12 +353,12 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
Kdb4Entry *entryV4 = (Kdb4Entry *)entry;
NSString *title = NSLocalizedString(@"DEFAULT_CUSTOM_FIELD_TITLE", @"Default Titel for new Custom-Fields");
NSString *value = NSLocalizedString(@"DEFAULT_CUSTOM_FIELD_VALUE", @"Default Value for new Custom-Fields");
title = [entryV4 uniqueKeyForProposal:title];
StringField *newStringField = [StringField stringFieldWithKey:title andValue:value];
[self addStringField:newStringField toEntry:entryV4 atIndex:[entryV4.stringFields count]];
return newStringField;
}
- (void)moveGroup:(KdbGroup *)group toGroup:(KdbGroup *)target index:(NSInteger)index {
NSInteger oldIndex = [group.parent.groups indexOfObject:group];
if(group.parent == target && oldIndex == index) {
@@ -420,6 +424,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
- (void)addStringField:(StringField *)field toEntry:(Kdb4Entry *)entry atIndex:(NSUInteger)index {
[[[self undoManager] prepareWithInvocationTarget:self] removeStringField:field formEntry:entry];
[[self undoManager] setActionName:NSLocalizedString(@"UNDO_ADD_STRING_FIELD", @"Add Stringfield Undo")];
field.entry = entry;
[entry insertObject:field inStringFieldsAtIndex:index];
}
@@ -430,6 +435,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
}
[[[self undoManager] prepareWithInvocationTarget:self] addStringField:field toEntry:entry atIndex:index];
[[self undoManager] setActionName:NSLocalizedString(@"UNDO_DELETE_STRING_FIELD", @"Delte Stringfield undo")];
field.entry = nil;
[entry removeObjectFromStringFieldsAtIndex:index];
}
@@ -455,13 +461,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
}
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
if([menuItem action] == [MPActionHelper actionOfType:MPActionEmptyTrash]) {
- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem {
if([anItem action] == [MPActionHelper actionOfType:MPActionEmptyTrash]) {
BOOL hasGroups = [self.trash.groups count] > 0;
BOOL hasEntries = [self.trash.entries count] > 0;
return (hasEntries || hasGroups);
}
return YES;
return [super validateUserInterfaceItem:anItem];
}
#pragma mark Private

View File

@@ -17,6 +17,7 @@
#import "MPActionHelper.h"
#import "MPDatabaseSettingsWindowController.h"
#import "MPConstants.h"
#import "MPSettingsHelper.h"
NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCurrentItemChangedNotification";
@@ -62,9 +63,6 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#pragma mark View Handling
@@ -94,6 +92,11 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
[_splitView setHoldingPriority:NSLayoutPriorityDefaultLow+2 forSubviewAtIndex:0];
[_splitView setHoldingPriority:NSLayoutPriorityDefaultLow+1 forSubviewAtIndex:2];
BOOL showInspector = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyShowInspector];
if(!showInspector) {
[inspectorView removeFromSuperview];
}
[[self window] setDelegate:self];
MPDocument *document = [self document];
@@ -103,6 +106,8 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
else {
[self showEntries];
}
[_splitView setAutosaveName:@"SplitView"];
}
- (void)_setContentViewController:(MPViewController *)viewController {
@@ -176,18 +181,25 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
BOOL enabled = YES;
MPDocument *document = [self document];
if([menuItem action] == @selector(exportDatabase:)) {
SEL itemAction = [menuItem action];
if(itemAction == @selector(showDatabaseSettings:)
|| itemAction == @selector(editPassword:)) {
return document.decrypted && !document.isLocked;
}
BOOL enabled = YES;
if(itemAction == @selector(exportDatabase:)) {
enabled = (nil != document.treeV4);
}
enabled &= !( document.isLocked || document.isReadOnly );
enabled &= !( !document.decrypted || document.isLocked || document.isReadOnly );
return enabled;
}
- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem {
MPDocument *document = [self document];
if(document.isLocked || document.isReadOnly) {
if(!document.decrypted || document.isLocked || document.isReadOnly) {
return NO;
}
SEL itemAction = [theItem action];
@@ -245,18 +257,21 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
- (void)toggleInspector:(id)sender {
NSView *inspectorView = [_inspectorViewController view];
BOOL inspectorVisible = NO;
if([inspectorView superview]) {
//[inspectorView animator]
[inspectorView removeFromSuperview];
}
else {
// Remove contraint on view removal.
inspectorVisible = YES;
[_splitView addSubview:inspectorView];
[_splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[inspectorView(>=200)]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(inspectorView)]];
}
[[NSUserDefaults standardUserDefaults] setBool:inspectorVisible forKey:kMPSettingsKeyShowInspector];
}
- (void)showEntries {
@@ -268,7 +283,7 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
[[contentView subviews][0] removeFromSuperviewWithoutNeedingDisplay];
}
[contentView addSubview:_splitView];
[_splitView adjustSubviews];
//[_splitView adjustSubviews];
NSView *outlineView = [_outlineViewController view];
NSView *inspectorView = [_inspectorViewController view];
NSView *entryView = [_entryViewController view];
@@ -314,7 +329,7 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
if(removeInspector) {
[inspectorView removeFromSuperview];
}
[contentView layout];
[contentView layoutSubtreeIfNeeded];
MPDocument *document = [self document];
document.locked = NO;
@@ -325,6 +340,7 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
[_outlineViewController showOutline];
}
#pragma mark NSWindowDelegate
- (void)windowDidUpdate:(NSNotification *)notification {
id firstResonder = [[self window] firstResponder];
@@ -333,10 +349,16 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
}
_firstResponder = firstResonder;
if([_firstResponder isKindOfClass:[NSView class]]) {
[self _updateCurrentItem:[NSNotification notificationWithName:@"dummy" object:_firstResponder ]];
//self _updateCurrentItem:[NSNotification notificationWithName:@"dummy" object:_firstResponder ]];
}
}
- (void)windowDidBecomeKey:(NSNotification *)notification {
MPDocument *document = [self document];
if(!document.hasPasswordOrKey && document.decrypted) {
[self performSelector:@selector(editPassword:) withObject:nil afterDelay:0.5];
}
}
#pragma mark Helper

View File

@@ -148,6 +148,9 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
[passwordColumn setIdentifier:MPEntryTablePasswordColumnIdentifier];
[urlColumn setIdentifier:MPEntryTableURLColumnIdentifier];
[self.entryTable setAutosaveName:@"EntryTable"];
[self.entryTable setAutosaveTableColumns:YES];
NSSortDescriptor *titleColumSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES selector:@selector(compare:)];
NSSortDescriptor *userNameSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"username" ascending:YES selector:@selector(compare:)];
NSSortDescriptor *urlSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"url" ascending:YES selector:@selector(compare:)];

View File

@@ -16,5 +16,6 @@
@property (weak) IBOutlet NSPopUpButton *clearPasteboardTimeoutPopup;
@property (weak) IBOutlet NSPopUpButton *idleTimeOutPopup;
@property (weak) IBOutlet NSButton *lockOnSleepCheckButton;
@property (weak) IBOutlet NSButton *reopenLastDatabase;
@end

View File

@@ -32,6 +32,7 @@ NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab";
- (void)didLoadView {
NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController];
NSString *reopenLastFilePath = [NSString stringWithFormat:@"values.%@", kMPSettingsKeyReopenLastDatabaseOnLaunch];
NSString *clearPasteboardKeyPath = [NSString stringWithFormat:@"values.%@", kMPSettingsKeyClearPasteboardOnQuit];
NSString *clearPasteboardTimeOutKeyPath = [NSString stringWithFormat:@"values.%@", kMPSettingsKeyPasteboardClearTimeout];
NSString *idleTimeOutKeyPath = [NSString stringWithFormat:@"values.%@", kMPSettingsKeyIdleLockTimeOut];
@@ -40,5 +41,6 @@ NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab";
[self.clearPasteboardTimeoutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:clearPasteboardTimeOutKeyPath options:nil];
[self.lockOnSleepCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:lockOnSleepKeyPath options:nil];
[self.idleTimeOutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:idleTimeOutKeyPath options:nil];
[self.reopenLastDatabase bind:NSValueBinding toObject:defaultsController withKeyPath:reopenLastFilePath options:nil];
}
@end

View File

@@ -15,7 +15,7 @@
@class HNHRoundedSecureTextField;
@class MPDocumentWindowController;
@interface MPInspectorViewController : MPViewController <NSPopoverDelegate, NSTableViewDelegate>
@interface MPInspectorViewController : MPViewController <NSPopoverDelegate>
@property (weak) IBOutlet MPPopupImageView *itemImageView;
@property (weak) IBOutlet NSTextField *itemNameTextfield;
@@ -36,6 +36,9 @@
@property (weak) IBOutlet NSButton *togglePassword;
@property (weak, nonatomic, readonly) KdbEntry *selectedEntry;
@property (weak, nonatomic, readonly) KdbGroup *selectedGroup;
/* Seperate call to ensure alle registered objects are in place */
- (void)setupNotifications:(MPDocumentWindowController *)windowController;

View File

@@ -20,6 +20,8 @@
#import "MPDatabaseVersion.h"
#import "MPCustomFieldTableCellView.h"
#import "MPSelectedAttachmentTableCellView.h"
#import "MPAttachmentTableViewDelegate.h"
#import "MPCustomFieldTableViewDelegate.h"
#import "NSDate+Humanized.h"
@@ -45,6 +47,10 @@ enum {
@interface MPInspectorViewController () {
BOOL _visible;
NSArrayController *_attachmentsController;
NSArrayController *_customFieldsController;
MPAttachmentTableViewDelegate *_attachmentTableDelegate;
MPCustomFieldTableViewDelegate *_customFieldTableDelegate;
}
@property (weak, nonatomic) KdbEntry *selectedEntry;
@@ -60,8 +66,6 @@ enum {
@property (nonatomic, assign) NSUInteger activeTab;
@property (weak) IBOutlet NSTabView *tabView;
@property (strong) NSArrayController *attachmentsController;
@property (strong) NSArrayController *customFieldsController;
- (IBAction)addCustomField:(id)sender;
- (IBAction)removeCustomField:(id)sender;
@@ -87,6 +91,10 @@ enum {
_selectedGroup = nil;
_attachmentsController = [[NSArrayController alloc] init];
_customFieldsController = [[NSArrayController alloc] init];
_attachmentTableDelegate = [[MPAttachmentTableViewDelegate alloc] init];
_attachmentTableDelegate.viewController = self;
_customFieldTableDelegate = [[MPCustomFieldTableViewDelegate alloc] init];
_customFieldTableDelegate.viewController = self;
_activeTab = MPGeneralTab;
}
return self;
@@ -107,12 +115,12 @@ enum {
/* Set background to clearcolor so we can draw in the scrollview */
[_attachmentTableView setBackgroundColor:[NSColor clearColor]];
[_attachmentTableView bind:NSContentBinding toObject:self.attachmentsController withKeyPath:@"arrangedObjects" options:nil];
[_attachmentTableView setDelegate:self];
[_attachmentTableView bind:NSContentBinding toObject:_attachmentsController withKeyPath:@"arrangedObjects" options:nil];
[_attachmentTableView setDelegate:_attachmentTableDelegate];
/* Set background to clearcolor so we can draw in the scrollview */
[_customFieldsTableView setBackgroundColor:[NSColor clearColor]];
[_customFieldsTableView bind:NSContentBinding toObject:self.customFieldsController withKeyPath:@"arrangedObjects" options:nil];
[_customFieldsTableView setDelegate:self];
[_customFieldsTableView bind:NSContentBinding toObject:_customFieldsController withKeyPath:@"arrangedObjects" options:nil];
[_customFieldsTableView setDelegate:_customFieldTableDelegate];
[self.passwordTextField bind:@"showPassword" toObject:self withKeyPath:@"showPassword" options:nil];
[self.togglePassword bind:NSValueBinding toObject:self withKeyPath:@"showPassword" options:nil];
@@ -167,26 +175,26 @@ enum {
- (void)_updateAttachments {
if(self.selectedEntry) {
if([self.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
[self.attachmentsController bind:NSContentArrayBinding toObject:self.selectedEntry withKeyPath:@"binaries" options:nil];
[_attachmentsController bind:NSContentArrayBinding toObject:self.selectedEntry withKeyPath:@"binaries" options:nil];
}
else {
/* Use binary from Kdb3Entry */
}
}
else if([self.attachmentsController content] != nil){
[self.attachmentsController unbind:NSContentArrayBinding];
[self.attachmentsController setContent:nil];
else if([_attachmentsController content] != nil){
[_attachmentsController unbind:NSContentArrayBinding];
[_attachmentsController setContent:nil];
}
}
- (void)_updateCustomFields {
if(self.selectedEntry && [self.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
[self.customFieldsController bind:NSContentArrayBinding toObject:self.selectedEntry withKeyPath:@"stringFields" options:nil];
[_customFieldsController bind:NSContentArrayBinding toObject:self.selectedEntry withKeyPath:@"stringFields" options:nil];
}
else if([self.customFieldsController content] != nil){
[self.customFieldsController unbind:NSContentArrayBinding];
[self.customFieldsController setContent:nil];
else if([_customFieldsController content] != nil){
[_customFieldsController unbind:NSContentArrayBinding];
[_customFieldsController setContent:nil];
}
}
@@ -412,78 +420,4 @@ enum {
[self _updateContent];
}
#pragma mark NSTableViewDelegate
/* TODO: Divide this into single delegates */
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if(tableView == self.attachmentTableView) {
return [self _viewForAttachmentTableColumn:tableColumn row:row];
}
return [self _viewForCustomFieldTableColumn:tableColumn row:row];
}
- (void)tableViewSelectionDidChange:(NSNotification *)notification {
if([notification object] == self.attachmentTableView) {
NSIndexSet *allColumns = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [[self.attachmentTableView tableColumns] count])];
Kdb4Entry *entryv4 = (Kdb4Entry *)self.selectedEntry;
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [entryv4.binaries count] )];
[self.attachmentTableView reloadDataForRowIndexes:indexSet columnIndexes:allColumns];
}
}
- (NSView *)_viewForAttachmentTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
/* Decide what view to use */
NSIndexSet *selectedIndexes = [self.attachmentTableView selectedRowIndexes];
NSTableCellView *view;
if([selectedIndexes containsIndex:row]) {
MPSelectedAttachmentTableCellView *cellView = [_attachmentTableView makeViewWithIdentifier:@"SelectedCell" owner:_attachmentTableView];
[cellView.saveButton setTag:row];
[cellView.saveButton setAction:@selector(saveAttachment:)];
[cellView.saveButton setTarget:self];
[cellView.removeButton setTag:row];
[cellView.removeButton setAction:@selector(removeAttachment:)];
[cellView.removeButton setTarget:self];
view = cellView;
}
else {
view = [_attachmentTableView makeViewWithIdentifier:@"NormalCell" owner:_attachmentTableView];
}
/* Bind view */
if([self.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
BinaryRef *binaryRef = entry.binaries[row];
[[view textField] bind:NSValueBinding toObject:binaryRef withKeyPath:@"key" options:nil];
[[view imageView] setImage:[[NSWorkspace sharedWorkspace] iconForFileType:[binaryRef.key pathExtension]]];
}
return view;
}
- (NSView *)_viewForCustomFieldTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
MPCustomFieldTableCellView *view = [_customFieldsTableView makeViewWithIdentifier:[tableColumn identifier] owner:_customFieldsTableView];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_customFieldFrameChanged:) name:NSViewFrameDidChangeNotification object:view];
if([self.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
StringField *stringField = entry.stringFields[row];
[view.labelTextField bind:NSValueBinding toObject:stringField withKeyPath:MPStringFieldKeyUndoableKey options:nil];
[view.valueTextField bind:NSValueBinding toObject:stringField withKeyPath:MPStringFieldValueUndoableKey options:nil];
[view.removeButton setTarget:self];
[view.removeButton setAction:@selector(removeCustomField:)];
[view.removeButton setTag:row];
}
return view;
}
- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row {
HNHTableRowView *view = nil;
if(tableView == self.attachmentTableView) {
view = [[HNHTableRowView alloc] init];
view.selectionCornerRadius = 7;
}
return view;
}
- (void)_customFieldFrameChanged:(NSNotification *)notification {
// NSView *sender = [notification object];
// NSLog(@"didChangeFrameFor: %@ to: %@", sender, NSStringFromRect([sender frame]));
}
@end

View File

@@ -15,6 +15,7 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyClearPasteboardOnQuit;
/* Behaviour */
APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordEncoding;
APPKIT_EXTERN NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch;
APPKIT_EXTERN NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch;
/* Server Settings */
APPKIT_EXTERN NSString *const kMPSettingsKeyHttpPort;
@@ -26,6 +27,9 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyLockOnSleep;
APPKIT_EXTERN NSString *const kMPSettingsKeyIdleLockTimeOut;
/* Autosaving states */
APPKIT_EXTERN NSString *const kMPSettingsKeyShowInspector;
typedef NS_ENUM(NSUInteger, MPPasswordEncoding) {
MPPasswordEncodingUTF8,
MPPasswordEncodingASCII,

View File

@@ -11,11 +11,13 @@
NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout";
NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit";
NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch";
NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch";
NSString *const kMPSettingsKeyHttpPort =@"HttpPort";
NSString *const kMPSettingsKeyEnableHttpServer = @"EnableHttpServer";
NSString *const kMPSettingsKeyShowMenuItem = @"ShowMenuItem";
NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep";
NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut";
NSString *const kMPSettingsKeyShowInspector = @"ShowInspector";
@implementation MPSettingsHelper
@@ -25,9 +27,11 @@ NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut";
+ (NSDictionary *)_standardDefaults {
return @{
kMPSettingsKeyShowInspector: @YES, // Show the Inspector by default
kMPSettingsKeyPasteboardClearTimeout: @30, // 30 seconds
kMPSettingsKeyClearPasteboardOnQuit: @YES,
kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @YES,
kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @NO,
kMPSettingsKeyReopenLastDatabaseOnLaunch: @YES,
kMPSettingsKeyHttpPort: @19455,
kMPSettingsKeyEnableHttpServer: @NO,
kMPSettingsKeyShowMenuItem: @YES,

View File

@@ -44,11 +44,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.3.2</string>
<string>0.3.5</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2506</string>
<string>2516</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>

View File

@@ -0,0 +1,13 @@
//
// StringField+Validation.h
// MacPass
//
// Created by Michael Starke on 19.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "Kdb4Node.h"
@interface StringField (Validation)
@end

View File

@@ -0,0 +1,19 @@
//
// StringField+Validation.m
// MacPass
//
// Created by Michael Starke on 19.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "StringField+Validation.h"
#import "Kdb4Entry+MPAdditions.h"
@implementation StringField (Validation)
- (BOOL)validateValue:(inout __autoreleasing id *)ioValue forKey:(NSString *)inKey error:(out NSError *__autoreleasing *)outError {
*ioValue = [self.entry uniqueKeyForProposal:*ioValue];
return YES;
}
@end

View File

@@ -1,7 +1,7 @@
{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;\red52\green110\blue183;\red38\green38\blue38;}
\paperw11900\paperh16840\vieww28040\viewh7240\viewkind0
\paperw11900\paperh16840\vieww19440\viewh14240\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 Projekt Webseite:\
@@ -37,6 +37,7 @@ You should have received a copy of the GNU General Public License along with thi
\b0 \cf3 \
Copyright \'a9 2012 Robbie Hanson. Alle Rechte vorbehalten.\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "https://github.com/MiniKeePass/MiniKeePass"}}{\fldrslt \cf2 MiniKeePass}}\
Copyright \'a9 2011 Jason Rush und John Flanagan. Alle Rechte vorbehalten.\
\
@@ -50,9 +51,16 @@ Copyright \'a9 2011, Alex Rozanski. Alle Rechte vorbehalten.\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/questions/11386876/how-to-encode-and-decode-files-as-base64-in-cocoa-objective-c"}}{\fldrslt \cf3 Base64 Encoding Category}}\
Copyright @2013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}\
Copyright \'a92013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "http://www.cocoadev.com/index.pl?NSDataCategory"}}{\fldrslt \cf3 NSData+Gzip}}\
Basierend auf dem Code im CocoaDev Wiki\
}
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "https://github.com/karelia/SecurityInterface"}}{\fldrslt \cf3 KSPasswordField}}\kerning1\expnd0\expndtw3
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\cf3 \kerning1\expnd0\expndtw0 Quelltext wird in HNHRoundedSecureTextField verwendet\kerning1\expnd0\expndtw3
\
\kerning1\expnd0\expndtw0 Copyright \'a92012 Mike Abdullah, Karelia Software. Alle Rechte vorbehalten.}

View File

@@ -1,30 +1,48 @@
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "421"; */
"421.title" = "OtherViews";
/* Class = "NSMenu"; title = "ClipboardClearInterval"; ObjectID = "421"; */
"421.title" = "ClipboardClearInterval";
/* Class = "NSMenuItem"; title = "10 Seconds"; ObjectID = "422"; */
"422.title" = "10 Sekunden";
/* Class = "NSMenuItem"; title = "after 10 Seconds"; ObjectID = "422"; */
"422.title" = "nach 10 Sekunden";
/* Class = "NSMenuItem"; title = "30 Seconds"; ObjectID = "423"; */
"423.title" = "30 Sekunden";
/* Class = "NSMenuItem"; title = "after 30 Seconds"; ObjectID = "423"; */
"423.title" = "nach 30 Sekunden";
/* Class = "NSMenuItem"; title = "1 Minute"; ObjectID = "424"; */
"424.title" = "1 Minute";
/* Class = "NSMenuItem"; title = "after 1 Minute"; ObjectID = "424"; */
"424.title" = "nach 1 Minute";
/* Class = "NSMenuItem"; title = "Never"; ObjectID = "429"; */
"429.title" = "Nie";
/* Class = "NSTextFieldCell"; title = "Clear Copied Items"; ObjectID = "432"; */
"432.title" = "Zwischenablage Leere";
"432.title" = "Leere Zwischenablage";
/* Class = "NSButtonCell"; title = "Clear Clipboard on Quit"; ObjectID = "448"; */
"448.title" = "Zwischenablage beim Beenden leeren";
/* Class = "NSBox"; title = "Clipboard"; ObjectID = "465"; */
"465.title" = "Zwischenablage";
/* Class = "NSBox"; title = "Security"; ObjectID = "465"; */
"465.title" = "Sicherheit";
/* Class = "NSButtonCell"; title = "Open empty database on launch"; ObjectID = "527"; */
"527.title" = "Leere Datenbank beim Programmstart öffnen";
/* Class = "NSButtonCell"; title = "Reopen last Database after Launch"; ObjectID = "531"; */
"531.title" = "Letzte Datenbank beim Start wieder öffnen";
/* Class = "NSButtonCell"; title = "Open empty database on activate"; ObjectID = "531"; */
"531.title" = "Lerre Datenbank beim Aktiveren öffnen";
/* Class = "NSMenu"; title = "LockTimes"; ObjectID = "586"; */
"586.title" = "LockTimes";
/* Class = "NSMenuItem"; title = "for 1 Minute"; ObjectID = "588"; */
"588.title" = "für 1 Minute";
/* Class = "NSMenuItem"; title = "for 5 Minutes"; ObjectID = "589"; */
"589.title" = "für 5 Minuten";
/* Class = "NSMenuItem"; title = "for 15 Minutes"; ObjectID = "603"; */
"603.title" = "für 15 Minuten";
/* Class = "NSButtonCell"; title = "Lock after sleep"; ObjectID = "631"; */
"631.title" = "Datenbank im Ruhezustand sperren";
/* Class = "NSMenuItem"; title = "Never"; ObjectID = "804"; */
"804.title" = "Nie";
/* Class = "NSTextFieldCell"; title = "Lock while idle"; ObjectID = "806"; */
"806.title" = "Sperren nach Inaktivität";

Binary file not shown.

View File

@@ -11,8 +11,9 @@
\b \
License:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 MacPass KeePass compatible client for OS X\
\b0 \cf0 MacPass KeePass compatible client for OS X\
Copyright (c) 2012-2013 Michael Starke, HicknHack Software GmbH\
\
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by\
@@ -40,6 +41,7 @@ You should have received a copy of the GNU General Public License along with thi
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt \cf2 KissXML}}\cf3 \
Copyright \'a9 2012 Robbie Hanson. All rights reserved.\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "https://github.com/MiniKeePass/MiniKeePass"}}{\fldrslt \cf2 MiniKeePass}}\
Copyright \'a9 2011 Jason Rush and John Flanagan. All rights reserved.\
\
@@ -53,9 +55,13 @@ Copyright \'a9 2011, Alex Rozanski. All rights reserved.\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/questions/11386876/how-to-encode-and-decode-files-as-base64-in-cocoa-objective-c"}}{\fldrslt \cf3 NSData+Base64}}\
Copyright @2013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}\
Copyright \'a92013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "http://www.cocoadev.com/index.pl?NSDataCategory"}}{\fldrslt \cf3 NSData+Gzip}}\
Extracted from code on the CocoaDev Wiki\
}
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "https://github.com/karelia/SecurityInterface"}}{\fldrslt \cf3 KSPasswordField}}\
Code reused in HNHRoundedSecureTextField\
Copyright \'a92012 Mike Abdullah, Karelia Software. All rights reserved.}

View File

@@ -2,14 +2,14 @@
/* Class = "NSMenu"; title = "ClipboardClearInterval"; ObjectID = "421"; */
"421.title" = "ClipboardClearInterval";
/* Class = "NSMenuItem"; title = "10 Seconds"; ObjectID = "422"; */
"422.title" = "10 Seconds";
/* Class = "NSMenuItem"; title = "after 10 Seconds"; ObjectID = "422"; */
"422.title" = "after 10 Seconds";
/* Class = "NSMenuItem"; title = "30 Seconds"; ObjectID = "423"; */
"423.title" = "30 Seconds";
/* Class = "NSMenuItem"; title = "after 30 Seconds"; ObjectID = "423"; */
"423.title" = "after 30 Seconds";
/* Class = "NSMenuItem"; title = "1 Minute"; ObjectID = "424"; */
"424.title" = "1 Minute";
/* Class = "NSMenuItem"; title = "after 1 Minute"; ObjectID = "424"; */
"424.title" = "after 1 Minute";
/* Class = "NSMenuItem"; title = "Never"; ObjectID = "429"; */
"429.title" = "Never";
@@ -23,26 +23,26 @@
/* Class = "NSBox"; title = "Security"; ObjectID = "465"; */
"465.title" = "Security";
/* Class = "NSButtonCell"; title = "Open empty database on launch"; ObjectID = "527"; */
"527.title" = "Open empty database on launch";
/* Class = "NSButtonCell"; title = "Open empty database on activate"; ObjectID = "531"; */
"531.title" = "Open empty database on activate";
/* Class = "NSButtonCell"; title = "Reopen last Database after Launch"; ObjectID = "531"; */
"531.title" = "Reopen last Database after Launch";
/* Class = "NSMenu"; title = "LockTimes"; ObjectID = "586"; */
"586.title" = "LockTimes";
/* Class = "NSMenuItem"; title = "1 Minute"; ObjectID = "588"; */
"588.title" = "1 Minute";
/* Class = "NSMenuItem"; title = "for 1 Minute"; ObjectID = "588"; */
"588.title" = "for 1 Minute";
/* Class = "NSMenuItem"; title = "5 Minutes"; ObjectID = "589"; */
"589.title" = "5 Minutes";
/* Class = "NSMenuItem"; title = "for 5 Minutes"; ObjectID = "589"; */
"589.title" = "for 5 Minutes";
/* Class = "NSMenuItem"; title = "15 Minutes"; ObjectID = "603"; */
"603.title" = "15 Minutes";
/* Class = "NSButtonCell"; title = "Lock while idle for"; ObjectID = "606"; */
"606.title" = "Lock while idle for";
/* Class = "NSMenuItem"; title = "for 15 Minutes"; ObjectID = "603"; */
"603.title" = "for 15 Minutes";
/* Class = "NSButtonCell"; title = "Lock after sleep"; ObjectID = "631"; */
"631.title" = "Lock after sleep";
/* Class = "NSMenuItem"; title = "Never"; ObjectID = "804"; */
"804.title" = "Never";
/* Class = "NSTextFieldCell"; title = "Lock while idle"; ObjectID = "806"; */
"806.title" = "Lock while idle";

Binary file not shown.