20 Commits

Author SHA1 Message Date
michael starke
6ba8b1445d Updated to new HNHRoundedSecureTextField 2013-07-09 03:04:55 +02:00
michael starke
79a8c05e95 Updated views to new Password input. 2013-07-09 02:41:22 +02:00
michael starke
a98720a00c experiments with password toggle input 2013-07-07 23:39:06 +02:00
michael starke
c674745103 Updated references 2013-07-07 22:09:21 +02:00
michael starke
d3cdc4d574 Added 4 more icons. Updated HNHUi 2013-07-07 14:04:43 +02:00
michael starke
dfb8c7936a Updated HNHUi 2013-07-06 12:13:38 +02:00
michael starke
02f54d2c35 Updated HNHUi 2013-07-06 12:11:01 +02:00
michael starke
1db5bd0e12 Bumped Version to 0.3.1 2013-07-06 04:22:08 +02:00
michael starke
cadfd3fdca Fixed issue that occurred in no reset on Database settings after cancle 2013-07-06 04:20:36 +02:00
michael starke
f55e78349e Reworked DatabaseSettings to be cancelable
Moved Password edit to Database settings
2013-07-06 04:18:10 +02:00
michael starke
005bab7380 Updated HNHUi 2013-07-06 04:16:56 +02:00
michael starke
f0e4def758 Added better save to disk icon 2013-07-06 01:05:45 +02:00
michael starke
58abad34a1 Updated HNHUi 2013-07-06 01:05:24 +02:00
michael starke
628fbbfeda Removal off attachments included 2013-07-05 20:50:38 +02:00
michael starke
9c3a62bef6 Added support to save and load Attachemnts on KeePass2 Databases.
Support for Keepass1 DBs is still missing
2013-07-05 20:09:17 +02:00
michael starke
7feb2517dd Added a default Database name
Minor changes
Updtaed KeePassLib
2013-07-05 16:37:35 +02:00
michael starke
59db224a35 OutlineView group now displays the database name if a KeePass 2 database is used 2013-07-05 01:06:02 +02:00
michael starke
c32003d7c6 Merge branch 'master' of https://github.com/mstarke/MacPass 2013-07-04 23:55:21 +02:00
michael starke
1a095ce1d7 Added Icon supplied by Iiro Jäppinen
Added more KeePass Icon replacements
2013-07-04 23:54:45 +02:00
Michael Starke
7b8ce088fe Updated releases 2013-07-04 00:09:07 +02:00
88 changed files with 4429 additions and 2816 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

BIN
Assets/App icon/PSD.zip Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

2
HNHUi

Submodule HNHUi updated: 332586b554...260aa47e80

View File

@@ -10,8 +10,7 @@
4C01C23F1764D2980016D5D0 /* KdbEntry+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C23E1764D2980016D5D0 /* KdbEntry+Undo.m */; }; 4C01C23F1764D2980016D5D0 /* KdbEntry+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C23E1764D2980016D5D0 /* KdbEntry+Undo.m */; };
4C01C2421764D8980016D5D0 /* MPContextMenuHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */; }; 4C01C2421764D8980016D5D0 /* MPContextMenuHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */; };
4C01C245176500C40016D5D0 /* HNHLevelIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */; }; 4C01C245176500C40016D5D0 /* HNHLevelIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */; };
4C0D9B37177F84D700D0857C /* HNHSecureTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0D9B36177F84D700D0857C /* HNHSecureTextView.m */; }; 4C16BA6217879A3C002B42BD /* MPPasswordStringFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */; };
4C0D9B3A177F867100D0857C /* HNHSecureLayoutManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0D9B39177F867100D0857C /* HNHSecureLayoutManager.m */; };
4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */; }; 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */; };
4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */; }; 4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */; };
4C245B76176E1E3D0086100E /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A6A176E1E3C0086100E /* DDData.m */; }; 4C245B76176E1E3D0086100E /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A6A176E1E3C0086100E /* DDData.m */; };
@@ -47,11 +46,14 @@
4C2724DA17790E7C00FD8456 /* NSMutableData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2724D917790E7C00FD8456 /* NSMutableData+Base64.m */; }; 4C2724DA17790E7C00FD8456 /* NSMutableData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2724D917790E7C00FD8456 /* NSMutableData+Base64.m */; };
4C2A6134177A1D5F00C9826C /* KPLErrorCodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2A6133177A1D5F00C9826C /* KPLErrorCodes.m */; }; 4C2A6134177A1D5F00C9826C /* KPLErrorCodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2A6133177A1D5F00C9826C /* KPLErrorCodes.m */; };
4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPTreeTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */; }; 4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPTreeTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */; };
4C2C8B341787500E009649F3 /* UnprotectedWarningView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */; };
4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; }; 4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; };
4C2E381E16D11FF900037A9D /* 04_KlipperTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */; }; 4C2E381E16D11FF900037A9D /* 04_KlipperTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */; };
4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; }; 4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; };
4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2E382216D1421B00037A9D /* MPIconHelper.m */; }; 4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2E382216D1421B00037A9D /* MPIconHelper.m */; };
4C2E382616D1470200037A9D /* MPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2E382516D1470200037A9D /* MPViewController.m */; }; 4C2E382616D1470200037A9D /* MPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2E382516D1470200037A9D /* MPViewController.m */; };
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */; };
4C366643178748F500B249F1 /* 99_HarddiskTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */; };
4C36E5B4177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C36E5B3177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m */; }; 4C36E5B4177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C36E5B3177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m */; };
4C37A6731769393300AD0A40 /* HNHTableHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A6721769393300AD0A40 /* HNHTableHeaderCell.m */; }; 4C37A6731769393300AD0A40 /* HNHTableHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A6721769393300AD0A40 /* HNHTableHeaderCell.m */; };
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; }; 4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; };
@@ -69,6 +71,10 @@
4C4FCE15177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */; }; 4C4FCE15177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */; };
4C4FCE18177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE17177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m */; }; 4C4FCE18177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE17177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m */; };
4C52A244177D7B9F0000D88F /* HNHScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C52A243177D7B9F0000D88F /* HNHScrollView.m */; }; 4C52A244177D7B9F0000D88F /* HNHScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C52A243177D7B9F0000D88F /* HNHScrollView.m */; };
4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */; };
4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */; };
4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */; };
4C52A892178863B000868229 /* 68_PhoneTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A891178863B000868229 /* 68_PhoneTemplate.pdf */; };
4C569D9E17652B0600595B62 /* MPConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C569D9D17652B0600595B62 /* MPConstants.m */; }; 4C569D9E17652B0600595B62 /* MPConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C569D9D17652B0600595B62 /* MPConstants.m */; };
4C569DA117652BFE00595B62 /* MPEntryTableDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C569DA017652BFE00595B62 /* MPEntryTableDataSource.m */; }; 4C569DA117652BFE00595B62 /* MPEntryTableDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C569DA017652BFE00595B62 /* MPEntryTableDataSource.m */; };
4C569DA417653F3500595B62 /* KdbEntry+MPTreeTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C569DA317653F3500595B62 /* KdbEntry+MPTreeTools.m */; }; 4C569DA417653F3500595B62 /* KdbEntry+MPTreeTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C569DA317653F3500595B62 /* KdbEntry+MPTreeTools.m */; };
@@ -117,9 +123,12 @@
4C669BA016760ED100DD0774 /* Salsa20RandomStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7716760ED100DD0774 /* Salsa20RandomStream.m */; }; 4C669BA016760ED100DD0774 /* Salsa20RandomStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7716760ED100DD0774 /* Salsa20RandomStream.m */; };
4C669BA216760ED100DD0774 /* UUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7B16760ED100DD0774 /* UUID.m */; }; 4C669BA216760ED100DD0774 /* UUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C669B7B16760ED100DD0774 /* UUID.m */; };
4C69A73A16D589DF00EC1B1A /* HNHGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C69A73916D589DF00EC1B1A /* HNHGradientView.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 */; };
4C6D1D2B17858A250014C5A5 /* MacPass.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D2A17858A250014C5A5 /* MacPass.icns */; };
4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C701CBB178618A000581B88 /* 12_RemoteTemplate.pdf */; };
4C74DD07177BD1640034A9DB /* MPCustomFieldView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */; }; 4C74DD07177BD1640034A9DB /* MPCustomFieldView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */; };
4C76155C1764C04C0015A1A6 /* GeneralSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76155E1764C04C0015A1A6 /* GeneralSettings.xib */; }; 4C76155C1764C04C0015A1A6 /* GeneralSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76155E1764C04C0015A1A6 /* GeneralSettings.xib */; };
4C7615631764C08C0015A1A6 /* PasswordEditView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C7615651764C08C0015A1A6 /* PasswordEditView.xib */; };
4C7615681764C0C40015A1A6 /* PasswordInputView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */; }; 4C7615681764C0C40015A1A6 /* PasswordInputView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */; };
4C76156D1764C0E20015A1A6 /* InspectorView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76156F1764C0E20015A1A6 /* InspectorView.xib */; }; 4C76156D1764C0E20015A1A6 /* InspectorView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76156F1764C0E20015A1A6 /* InspectorView.xib */; };
4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */; }; 4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */; };
@@ -131,7 +140,6 @@
4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C77E37915B84A240093A587 /* MPAppDelegate.m */; }; 4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C77E37915B84A240093A587 /* MPAppDelegate.m */; };
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E37B15B84A240093A587 /* MainMenu.xib */; }; 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E37B15B84A240093A587 /* MainMenu.xib */; };
4C79DF2A176685870083708F /* HNHRoundedTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C79DF29176685870083708F /* HNHRoundedTextField.m */; }; 4C79DF2A176685870083708F /* HNHRoundedTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C79DF29176685870083708F /* HNHRoundedTextField.m */; };
4C7E832A172DE2F2002493D8 /* MPPasswordEditViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */; };
4C7F35681779DFFB00C57890 /* Errors.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C7F356A1779DFFB00C57890 /* Errors.strings */; }; 4C7F35681779DFFB00C57890 /* Errors.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C7F356A1779DFFB00C57890 /* Errors.strings */; };
4C80BB6F176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C80BB6E176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.m */; }; 4C80BB6F176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C80BB6E176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.m */; };
4C811C8316ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */; }; 4C811C8316ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */; };
@@ -166,8 +174,9 @@
4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC672781781D0C0006DEDCF /* KdbGroup+MPAdditions.m */; }; 4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC672781781D0C0006DEDCF /* KdbGroup+MPAdditions.m */; };
4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */; }; 4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */; };
4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */; }; 4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */; };
4CD5D702177A5EE400100649 /* DocumentSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */; }; 4CD5D702177A5EE400100649 /* DatabaseSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD5D701177A5EE400100649 /* DatabaseSettingsWindow.xib */; };
4CD5D705177A5F3300100649 /* MPDocumentSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */; }; 4CD5D705177A5F3300100649 /* MPDatabaseSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD5D704177A5F3300100649 /* MPDatabaseSettingsWindowController.m */; };
4CD6C5AE1789FDE6000891F6 /* HNHRoundedSecureTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD6C5AD1789FDE6000891F6 /* HNHRoundedSecureTextField.m */; };
4CD78ABC16D155FF00768A1D /* 07_NotepadTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */; }; 4CD78ABC16D155FF00768A1D /* 07_NotepadTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */; };
4CD78ABD16D155FF00768A1D /* 08_SocketTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */; }; 4CD78ABD16D155FF00768A1D /* 08_SocketTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */; };
4CD78ABE16D155FF00768A1D /* 09_IdentityTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */; }; 4CD78ABE16D155FF00768A1D /* 09_IdentityTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */; };
@@ -181,6 +190,8 @@
4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; }; 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; };
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; }; 4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; };
4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8247416E2F2B900573141 /* MPOverlayView.m */; }; 4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8247416E2F2B900573141 /* MPOverlayView.m */; };
4CF1F0CA1786B37900CD920E /* NSData+Gzip.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF1F0C81786B37900CD920E /* NSData+Gzip.m */; };
4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */; };
4CF6C711176F4533007A811D /* MPStringLengthValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */; }; 4CF6C711176F4533007A811D /* MPStringLengthValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */; };
4CF6C718176F5234007A811D /* MPAssociateRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C717176F5234007A811D /* MPAssociateRequestHandler.m */; }; 4CF6C718176F5234007A811D /* MPAssociateRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C717176F5234007A811D /* MPAssociateRequestHandler.m */; };
4CF78057176E5CFD0032EE71 /* MPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF78056176E5CFD0032EE71 /* MPConnection.m */; }; 4CF78057176E5CFD0032EE71 /* MPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF78056176E5CFD0032EE71 /* MPConnection.m */; };
@@ -198,10 +209,8 @@
4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextMenuHelper.m; sourceTree = "<group>"; }; 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>"; }; 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>"; }; 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHLevelIndicatorCell.m; sourceTree = "<group>"; };
4C0D9B35177F84D700D0857C /* HNHSecureTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHSecureTextView.h; sourceTree = "<group>"; }; 4C16BA6017879A3C002B42BD /* MPPasswordStringFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordStringFormatter.h; sourceTree = "<group>"; };
4C0D9B36177F84D700D0857C /* HNHSecureTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHSecureTextView.m; sourceTree = "<group>"; }; 4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordStringFormatter.m; sourceTree = "<group>"; };
4C0D9B38177F867100D0857C /* HNHSecureLayoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHSecureLayoutManager.h; sourceTree = "<group>"; };
4C0D9B39177F867100D0857C /* HNHSecureLayoutManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHSecureLayoutManager.m; sourceTree = "<group>"; };
4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordCreatorWindow.xib; sourceTree = "<group>"; }; 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordCreatorWindow.xib; sourceTree = "<group>"; };
4C22040B1746ED160054C916 /* KdbGroup+Undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+Undo.h"; sourceTree = "<group>"; }; 4C22040B1746ED160054C916 /* KdbGroup+Undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+Undo.h"; sourceTree = "<group>"; };
4C22040C1746ED160054C916 /* KdbGroup+Undo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+Undo.m"; sourceTree = "<group>"; }; 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+Undo.m"; sourceTree = "<group>"; };
@@ -272,6 +281,7 @@
4C2A6133177A1D5F00C9826C /* KPLErrorCodes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KPLErrorCodes.m; sourceTree = "<group>"; }; 4C2A6133177A1D5F00C9826C /* KPLErrorCodes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KPLErrorCodes.m; sourceTree = "<group>"; };
4C2C4C2A16D3BE3700D49295 /* KdbGroup+MPTreeTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+MPTreeTools.h"; sourceTree = "<group>"; }; 4C2C4C2A16D3BE3700D49295 /* KdbGroup+MPTreeTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+MPTreeTools.h"; sourceTree = "<group>"; };
4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+MPTreeTools.m"; sourceTree = "<group>"; }; 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+MPTreeTools.m"; sourceTree = "<group>"; };
4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UnprotectedWarningView.xib; sourceTree = "<group>"; };
4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 03_ServerTemplate.pdf; sourceTree = "<group>"; }; 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 03_ServerTemplate.pdf; sourceTree = "<group>"; };
4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 04_KlipperTemplate.pdf; sourceTree = "<group>"; }; 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 04_KlipperTemplate.pdf; sourceTree = "<group>"; };
4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 05_LanguagesTemplate.pdf; sourceTree = "<group>"; }; 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 05_LanguagesTemplate.pdf; sourceTree = "<group>"; };
@@ -279,6 +289,8 @@
4C2E382216D1421B00037A9D /* MPIconHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconHelper.m; sourceTree = "<group>"; }; 4C2E382216D1421B00037A9D /* MPIconHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconHelper.m; sourceTree = "<group>"; };
4C2E382416D1470200037A9D /* MPViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPViewController.h; sourceTree = "<group>"; }; 4C2E382416D1470200037A9D /* MPViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPViewController.h; sourceTree = "<group>"; };
4C2E382516D1470200037A9D /* MPViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPViewController.m; sourceTree = "<group>"; }; 4C2E382516D1470200037A9D /* MPViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPViewController.m; sourceTree = "<group>"; };
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Attachments.m"; sourceTree = "<group>"; };
4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_HarddiskTemplate.pdf; sourceTree = "<group>"; };
4C36E5B2177CD4FB00152132 /* Kdb4Tree+KVOAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Kdb4Tree+KVOAdditions.h"; sourceTree = "<group>"; }; 4C36E5B2177CD4FB00152132 /* Kdb4Tree+KVOAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Kdb4Tree+KVOAdditions.h"; sourceTree = "<group>"; };
4C36E5B3177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Kdb4Tree+KVOAdditions.m"; sourceTree = "<group>"; }; 4C36E5B3177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Kdb4Tree+KVOAdditions.m"; sourceTree = "<group>"; };
4C37A6711769393300AD0A40 /* HNHTableHeaderCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHTableHeaderCell.h; sourceTree = "<group>"; }; 4C37A6711769393300AD0A40 /* HNHTableHeaderCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHTableHeaderCell.h; sourceTree = "<group>"; };
@@ -311,6 +323,10 @@
4C4FCE17177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Kdb4Entry+KVOAdditions.m"; sourceTree = "<group>"; }; 4C4FCE17177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Kdb4Entry+KVOAdditions.m"; sourceTree = "<group>"; };
4C52A242177D7B9F0000D88F /* HNHScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHScrollView.h; sourceTree = "<group>"; }; 4C52A242177D7B9F0000D88F /* HNHScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHScrollView.h; sourceTree = "<group>"; };
4C52A243177D7B9F0000D88F /* HNHScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHScrollView.m; sourceTree = "<group>"; }; 4C52A243177D7B9F0000D88F /* HNHScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHScrollView.m; sourceTree = "<group>"; };
4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 06_BlockDeviceTemplate.pdf; sourceTree = "<group>"; };
4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 13_KeysTemplate.pdf; sourceTree = "<group>"; };
4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 18_DisplayTemplate.pdf; sourceTree = "<group>"; };
4C52A891178863B000868229 /* 68_PhoneTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 68_PhoneTemplate.pdf; sourceTree = "<group>"; };
4C569D9C17652AC800595B62 /* MPConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPConstants.h; sourceTree = "<group>"; }; 4C569D9C17652AC800595B62 /* MPConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPConstants.h; sourceTree = "<group>"; };
4C569D9D17652B0600595B62 /* MPConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPConstants.m; sourceTree = "<group>"; }; 4C569D9D17652B0600595B62 /* MPConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPConstants.m; sourceTree = "<group>"; };
4C569D9F17652BFE00595B62 /* MPEntryTableDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPEntryTableDataSource.h; sourceTree = "<group>"; }; 4C569D9F17652BFE00595B62 /* MPEntryTableDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPEntryTableDataSource.h; sourceTree = "<group>"; };
@@ -407,23 +423,22 @@
4C669B7B16760ED100DD0774 /* UUID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UUID.m; sourceTree = "<group>"; }; 4C669B7B16760ED100DD0774 /* UUID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UUID.m; sourceTree = "<group>"; };
4C69A73816D589DF00EC1B1A /* HNHGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHGradientView.h; 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>"; }; 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>"; };
4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_AddFolderTemplate.pdf; sourceTree = "<group>"; };
4C6D1D2A17858A250014C5A5 /* MacPass.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = MacPass.icns; path = "../Assets/App icon/MacPass.icns"; sourceTree = "<group>"; };
4C701CBB178618A000581B88 /* 12_RemoteTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 12_RemoteTemplate.pdf; sourceTree = "<group>"; };
4C74DD05177BD1640034A9DB /* MPCustomFieldView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldView.h; sourceTree = "<group>"; }; 4C74DD05177BD1640034A9DB /* MPCustomFieldView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldView.h; sourceTree = "<group>"; };
4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldView.m; sourceTree = "<group>"; }; 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldView.m; sourceTree = "<group>"; };
4C76155F1764C0590015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/GeneralSettings.xib; sourceTree = "<group>"; }; 4C76155F1764C0590015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/GeneralSettings.xib; sourceTree = "<group>"; };
4C7615601764C05A0015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; }; 4C7615601764C05A0015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
4C7615661764C08F0015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PasswordEditView.xib; sourceTree = "<group>"; };
4C7615671764C09E0015A1A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/PasswordEditView.strings; sourceTree = "<group>"; };
4C76156B1764C0C80015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PasswordInputView.xib; sourceTree = "<group>"; }; 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>"; }; 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>"; }; 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>"; }; 4C7615721764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GeneralSettings.strings; sourceTree = "<group>"; };
4C7615731764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/MainMenu.strings; sourceTree = "<group>"; };
4C7615741764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PasswordEditView.strings; sourceTree = "<group>"; };
4C7615751764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PasswordInputView.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>"; }; 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>"; }; 4C7615781764C4A50015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = de; path = de.lproj/Credits.rtf; sourceTree = "<group>"; };
4C7615791764C4A50015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 4C7615791764C4A50015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
4C76157B1764C5450015A1A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MainMenu.strings; sourceTree = "<group>"; };
4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 43_TrashTemplate.pdf; sourceTree = "<group>"; }; 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 43_TrashTemplate.pdf; sourceTree = "<group>"; };
4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_InfoTemplate.pdf; sourceTree = "<group>"; }; 4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_InfoTemplate.pdf; sourceTree = "<group>"; };
4C77547316E55FE800970E02 /* MPInspectorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPInspectorViewController.h; sourceTree = "<group>"; }; 4C77547316E55FE800970E02 /* MPInspectorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPInspectorViewController.h; sourceTree = "<group>"; };
@@ -441,9 +456,6 @@
4C77E37915B84A240093A587 /* MPAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate.m; sourceTree = "<group>"; }; 4C77E37915B84A240093A587 /* MPAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate.m; sourceTree = "<group>"; };
4C79DF28176685870083708F /* HNHRoundedTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundedTextField.h; sourceTree = "<group>"; }; 4C79DF28176685870083708F /* HNHRoundedTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundedTextField.h; sourceTree = "<group>"; };
4C79DF29176685870083708F /* HNHRoundedTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundedTextField.m; sourceTree = "<group>"; }; 4C79DF29176685870083708F /* HNHRoundedTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundedTextField.m; sourceTree = "<group>"; };
4C79DF2F1766941D0083708F /* MPResponderQuery.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPResponderQuery.h; sourceTree = "<group>"; };
4C7E8328172DE2F2002493D8 /* MPPasswordEditViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordEditViewController.h; sourceTree = "<group>"; };
4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordEditViewController.m; sourceTree = "<group>"; };
4C7F35691779DFFB00C57890 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Errors.strings; sourceTree = "<group>"; }; 4C7F35691779DFFB00C57890 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Errors.strings; sourceTree = "<group>"; };
4C7F356B1779DFFF00C57890 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Errors.strings; sourceTree = "<group>"; }; 4C7F356B1779DFFF00C57890 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Errors.strings; sourceTree = "<group>"; };
4C80BB6D176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHScrollDocumentViewAdapter.h; sourceTree = "<group>"; }; 4C80BB6D176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHScrollDocumentViewAdapter.h; sourceTree = "<group>"; };
@@ -477,6 +489,7 @@
4CA23357176DB8F000F0B6AC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GeneralSettings.strings; 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>"; }; 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>"; }; 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>"; };
4CAD745615B887FD00104512 /* DDXMLElementAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDXMLElementAdditions.h; sourceTree = "<group>"; }; 4CAD745615B887FD00104512 /* DDXMLElementAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDXMLElementAdditions.h; sourceTree = "<group>"; };
4CAD745715B887FD00104512 /* DDXMLElementAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDXMLElementAdditions.m; sourceTree = "<group>"; }; 4CAD745715B887FD00104512 /* DDXMLElementAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDXMLElementAdditions.m; sourceTree = "<group>"; };
4CAD745915B887FD00104512 /* NSString+DDXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+DDXML.h"; sourceTree = "<group>"; }; 4CAD745915B887FD00104512 /* NSString+DDXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+DDXML.h"; sourceTree = "<group>"; };
@@ -496,7 +509,6 @@
4CB9339816D3A0DD00A13B5D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; }; 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>"; }; 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>"; }; 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsHelper.m; sourceTree = "<group>"; };
4CC0B8DA1773729F00311E8C /* MPFirstResonderNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPFirstResonderNotification.h; sourceTree = "<group>"; };
4CC1AEBC16D4467C006D2AAB /* KdbTree+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbTree+MPAdditions.h"; 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>"; }; 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>"; }; 4CC299FD176F99E50050C939 /* MPRequestHandlerService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPRequestHandlerService.h; sourceTree = "<group>"; };
@@ -511,9 +523,11 @@
4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbEntry+MPAdditions.m"; sourceTree = "<group>"; }; 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>"; }; 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>"; }; 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundendTextFieldCellHelper.m; sourceTree = "<group>"; };
4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DocumentSettingsWindow.xib; sourceTree = "<group>"; }; 4CD5D701177A5EE400100649 /* DatabaseSettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DatabaseSettingsWindow.xib; sourceTree = "<group>"; };
4CD5D703177A5F3300100649 /* MPDocumentSettingsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocumentSettingsWindowController.h; sourceTree = "<group>"; }; 4CD5D703177A5F3300100649 /* MPDatabaseSettingsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDatabaseSettingsWindowController.h; sourceTree = "<group>"; };
4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDocumentSettingsWindowController.m; sourceTree = "<group>"; }; 4CD5D704177A5F3300100649 /* MPDatabaseSettingsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDatabaseSettingsWindowController.m; sourceTree = "<group>"; };
4CD6C5AC1789FDE6000891F6 /* HNHRoundedSecureTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundedSecureTextField.h; sourceTree = "<group>"; };
4CD6C5AD1789FDE6000891F6 /* HNHRoundedSecureTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundedSecureTextField.m; sourceTree = "<group>"; };
4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 07_NotepadTemplate.pdf; sourceTree = "<group>"; }; 4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 07_NotepadTemplate.pdf; sourceTree = "<group>"; };
4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 08_SocketTemplate.pdf; sourceTree = "<group>"; }; 4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 08_SocketTemplate.pdf; sourceTree = "<group>"; };
4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 09_IdentityTemplate.pdf; sourceTree = "<group>"; }; 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 09_IdentityTemplate.pdf; sourceTree = "<group>"; };
@@ -533,6 +547,9 @@
4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayWindowController.m; sourceTree = "<group>"; }; 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayWindowController.m; sourceTree = "<group>"; };
4CE8247316E2F2B900573141 /* MPOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayView.h; sourceTree = "<group>"; }; 4CE8247316E2F2B900573141 /* MPOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayView.h; sourceTree = "<group>"; };
4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = "<group>"; }; 4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = "<group>"; };
4CF1F0C81786B37900CD920E /* NSData+Gzip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Gzip.m"; sourceTree = "<group>"; };
4CF1F0C91786B37900CD920E /* NSData+Gzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Gzip.h"; sourceTree = "<group>"; };
4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 26_FileSaveTemplate.pdf; sourceTree = "<group>"; };
4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStringLengthValueTransformer.h; sourceTree = "<group>"; }; 4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStringLengthValueTransformer.h; sourceTree = "<group>"; };
4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStringLengthValueTransformer.m; sourceTree = "<group>"; }; 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStringLengthValueTransformer.m; sourceTree = "<group>"; };
4CF6C715176F5183007A811D /* MPServerRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerRequestHandler.h; sourceTree = "<group>"; }; 4CF6C715176F5183007A811D /* MPServerRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerRequestHandler.h; sourceTree = "<group>"; };
@@ -578,6 +595,7 @@
4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */, 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */,
4C76156F1764C0E20015A1A6 /* InspectorView.xib */, 4C76156F1764C0E20015A1A6 /* InspectorView.xib */,
4CE39AC016ECE359000FE29D /* IconSelection.xib */, 4CE39AC016ECE359000FE29D /* IconSelection.xib */,
4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */,
4C74DD05177BD1640034A9DB /* MPCustomFieldView.h */, 4C74DD05177BD1640034A9DB /* MPCustomFieldView.h */,
4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */, 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */,
4CE8247316E2F2B900573141 /* MPOverlayView.h */, 4CE8247316E2F2B900573141 /* MPOverlayView.h */,
@@ -596,6 +614,17 @@
name = Views; name = Views;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C16BA5F1787997E002B42BD /* ValueTransformer */ = {
isa = PBXGroup;
children = (
4C5BF679175C01F300D53DF7 /* MPUppercaseStringValueTransformer.h */,
4C5BF67A175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m */,
4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */,
4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */,
);
name = ValueTransformer;
sourceTree = "<group>";
};
4C245A64176E1E3C0086100E /* CocoaHTTPServer */ = { 4C245A64176E1E3C0086100E /* CocoaHTTPServer */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -749,6 +778,8 @@
4C2724D01778EFE300FD8456 /* NSString+Empty.m */, 4C2724D01778EFE300FD8456 /* NSString+Empty.m */,
4C2724D21778FA0700FD8456 /* NSDate+Packed.h */, 4C2724D21778FA0700FD8456 /* NSDate+Packed.h */,
4C2724D31778FA0700FD8456 /* NSDate+Packed.m */, 4C2724D31778FA0700FD8456 /* NSDate+Packed.m */,
4CF1F0C81786B37900CD920E /* NSData+Gzip.m */,
4CF1F0C91786B37900CD920E /* NSData+Gzip.h */,
4C2724D51778FF1A00FD8456 /* NSUUID+KeePassLib.h */, 4C2724D51778FF1A00FD8456 /* NSUUID+KeePassLib.h */,
4C2724D61778FF1A00FD8456 /* NSUUID+KeePassLib.m */, 4C2724D61778FF1A00FD8456 /* NSUUID+KeePassLib.m */,
4C2724D817790E7C00FD8456 /* NSMutableData+Base64.h */, 4C2724D817790E7C00FD8456 /* NSMutableData+Base64.h */,
@@ -793,22 +824,23 @@
4C2E382016D141F700037A9D /* Helper */ = { 4C2E382016D141F700037A9D /* Helper */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4C16BA5F1787997E002B42BD /* ValueTransformer */,
4C888C9516EB754B003D34A1 /* MPActionHelper.h */,
4C888C9616EB754B003D34A1 /* MPActionHelper.m */,
4C2E382116D1421B00037A9D /* MPIconHelper.h */, 4C2E382116D1421B00037A9D /* MPIconHelper.h */,
4C2E382216D1421B00037A9D /* MPIconHelper.m */, 4C2E382216D1421B00037A9D /* MPIconHelper.m */,
4C920E2816DCDFA00083839B /* MPLoggerProxy.h */, 4C920E2816DCDFA00083839B /* MPLoggerProxy.h */,
4C920E2916DCDFA00083839B /* MPLoggerProxy.m */, 4C920E2916DCDFA00083839B /* MPLoggerProxy.m */,
4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */, 4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */,
4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */, 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */,
4C5BF679175C01F300D53DF7 /* MPUppercaseStringValueTransformer.h */,
4C5BF67A175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m */,
4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */,
4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */,
4C01C2401764D8980016D5D0 /* MPContextMenuHelper.h */, 4C01C2401764D8980016D5D0 /* MPContextMenuHelper.h */,
4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */, 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */,
4C569D9C17652AC800595B62 /* MPConstants.h */, 4C569D9C17652AC800595B62 /* MPConstants.h */,
4C569D9D17652B0600595B62 /* MPConstants.m */, 4C569D9D17652B0600595B62 /* MPConstants.m */,
4CA23358176DBFE100F0B6AC /* MPLockDaemon.h */, 4CA23358176DBFE100F0B6AC /* MPLockDaemon.h */,
4CA23359176DBFE100F0B6AC /* MPLockDaemon.m */, 4CA23359176DBFE100F0B6AC /* MPLockDaemon.m */,
4C16BA6017879A3C002B42BD /* MPPasswordStringFormatter.h */,
4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */,
); );
name = Helper; name = Helper;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -838,6 +870,7 @@
4CE5B549173AFBA700207B39 /* MPDocument.m */, 4CE5B549173AFBA700207B39 /* MPDocument.m */,
4C5EC300177B700D00DA955B /* MPRootAdapter.h */, 4C5EC300177B700D00DA955B /* MPRootAdapter.h */,
4C5EC301177B700D00DA955B /* MPRootAdapter.m */, 4C5EC301177B700D00DA955B /* MPRootAdapter.m */,
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */,
); );
name = Model; name = Model;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -862,12 +895,21 @@
4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */, 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */,
4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */, 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */,
4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */, 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */,
4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */,
4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */, 4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */,
4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */, 4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */,
4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */, 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */,
4CD78ABA16D155FF00768A1D /* 10_ContactTemplate.pdf */, 4CD78ABA16D155FF00768A1D /* 10_ContactTemplate.pdf */,
4CD78ABB16D155FF00768A1D /* 11_CameraTemplate.pdf */, 4CD78ABB16D155FF00768A1D /* 11_CameraTemplate.pdf */,
4C701CBB178618A000581B88 /* 12_RemoteTemplate.pdf */,
4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */,
4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */,
4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */,
4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */, 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */,
4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */,
4C52A891178863B000868229 /* 68_PhoneTemplate.pdf */,
4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */,
4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */,
4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */, 4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */,
); );
path = Icons; path = Icons;
@@ -1013,7 +1055,6 @@
4C2C4C2516D3BCEA00D49295 /* KeePassLib Categories */, 4C2C4C2516D3BCEA00D49295 /* KeePassLib Categories */,
4C2E382016D141F700037A9D /* Helper */, 4C2E382016D141F700037A9D /* Helper */,
4C586F9C16D07ABD00E7DB57 /* Icons */, 4C586F9C16D07ABD00E7DB57 /* Icons */,
4CA0B30F15BCB85D00654E32 /* General */,
4CA0B30E15BCB70200654E32 /* Protocolls */, 4CA0B30E15BCB70200654E32 /* Protocolls */,
4CE8247116E2E98200573141 /* Data Controller */, 4CE8247116E2E98200573141 /* Data Controller */,
4CE8247016E2E96500573141 /* Window Controller */, 4CE8247016E2E96500573141 /* Window Controller */,
@@ -1031,6 +1072,7 @@
4C77E36D15B84A240093A587 /* Supporting Files */ = { 4C77E36D15B84A240093A587 /* Supporting Files */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4C6D1D2A17858A250014C5A5 /* MacPass.icns */,
4C888C8E16EB6C91003D34A1 /* Localizable.strings */, 4C888C8E16EB6C91003D34A1 /* Localizable.strings */,
4CB9339716D3A0DD00A13B5D /* Credits.rtf */, 4CB9339716D3A0DD00A13B5D /* Credits.rtf */,
4C77E36E15B84A240093A587 /* MacPass-Info.plist */, 4C77E36E15B84A240093A587 /* MacPass-Info.plist */,
@@ -1053,8 +1095,6 @@
4C2E382516D1470200037A9D /* MPViewController.m */, 4C2E382516D1470200037A9D /* MPViewController.m */,
4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */, 4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */,
4C65FAE716D16DDB006E0577 /* MPPasswordInputController.m */, 4C65FAE716D16DDB006E0577 /* MPPasswordInputController.m */,
4C7E8328172DE2F2002493D8 /* MPPasswordEditViewController.h */,
4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */,
4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */, 4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */,
4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */, 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */,
4CDF01A116D1B76700D0AC08 /* MPEntryViewController.h */, 4CDF01A116D1B76700D0AC08 /* MPEntryViewController.h */,
@@ -1074,21 +1114,10 @@
children = ( children = (
4CF6C715176F5183007A811D /* MPServerRequestHandler.h */, 4CF6C715176F5183007A811D /* MPServerRequestHandler.h */,
4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */, 4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */,
4C79DF2F1766941D0083708F /* MPResponderQuery.h */,
4CC0B8DA1773729F00311E8C /* MPFirstResonderNotification.h */,
); );
name = Protocolls; name = Protocolls;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4CA0B30F15BCB85D00654E32 /* General */ = {
isa = PBXGroup;
children = (
4C888C9516EB754B003D34A1 /* MPActionHelper.h */,
4C888C9616EB754B003D34A1 /* MPActionHelper.m */,
);
name = General;
sourceTree = "<group>";
};
4CAD745415B887FD00104512 /* KissXML */ = { 4CAD745415B887FD00104512 /* KissXML */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -1140,10 +1169,12 @@
4C46E09D17673A0A00DA62E8 /* HNHShadowBox.m */, 4C46E09D17673A0A00DA62E8 /* HNHShadowBox.m */,
4CC7EA1917807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.h */, 4CC7EA1917807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.h */,
4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */, 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */,
4CC3AAB8175F4983003EF01B /* HNHRoundedTextFieldCell.h */,
4CC3AAB9175F4983003EF01B /* HNHRoundedTextFieldCell.m */,
4C79DF28176685870083708F /* HNHRoundedTextField.h */, 4C79DF28176685870083708F /* HNHRoundedTextField.h */,
4C79DF29176685870083708F /* HNHRoundedTextField.m */, 4C79DF29176685870083708F /* HNHRoundedTextField.m */,
4CD6C5AC1789FDE6000891F6 /* HNHRoundedSecureTextField.h */,
4CD6C5AD1789FDE6000891F6 /* HNHRoundedSecureTextField.m */,
4CC3AAB8175F4983003EF01B /* HNHRoundedTextFieldCell.h */,
4CC3AAB9175F4983003EF01B /* HNHRoundedTextFieldCell.m */,
4C9D6AA717615199001C660C /* HNHRoundedSecureTextFieldCell.h */, 4C9D6AA717615199001C660C /* HNHRoundedSecureTextFieldCell.h */,
4C9D6AA817615199001C660C /* HNHRoundedSecureTextFieldCell.m */, 4C9D6AA817615199001C660C /* HNHRoundedSecureTextFieldCell.m */,
4C58BD4D176370B100B8178C /* HNHBadgedTextField.h */, 4C58BD4D176370B100B8178C /* HNHBadgedTextField.h */,
@@ -1164,10 +1195,6 @@
4CF78059176E6D5F0032EE71 /* HNHTableRowView.m */, 4CF78059176E6D5F0032EE71 /* HNHTableRowView.m */,
4C52A242177D7B9F0000D88F /* HNHScrollView.h */, 4C52A242177D7B9F0000D88F /* HNHScrollView.h */,
4C52A243177D7B9F0000D88F /* HNHScrollView.m */, 4C52A243177D7B9F0000D88F /* HNHScrollView.m */,
4C0D9B35177F84D700D0857C /* HNHSecureTextView.h */,
4C0D9B36177F84D700D0857C /* HNHSecureTextView.m */,
4C0D9B38177F867100D0857C /* HNHSecureLayoutManager.h */,
4C0D9B39177F867100D0857C /* HNHSecureLayoutManager.m */,
); );
path = HNHUi; path = HNHUi;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1192,8 +1219,8 @@
4C83814115BF4677001AE468 /* MPDocumentWindowController.m */, 4C83814115BF4677001AE468 /* MPDocumentWindowController.m */,
4CE8246D16E2E93400573141 /* MPOverlayWindowController.h */, 4CE8246D16E2E93400573141 /* MPOverlayWindowController.h */,
4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */, 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */,
4CD5D703177A5F3300100649 /* MPDocumentSettingsWindowController.h */, 4CD5D703177A5F3300100649 /* MPDatabaseSettingsWindowController.h */,
4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */, 4CD5D704177A5F3300100649 /* MPDatabaseSettingsWindowController.m */,
); );
name = "Window Controller"; name = "Window Controller";
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1214,7 +1241,7 @@
4CD884B615BD47080042BBF8 /* DocumentWindow.xib */, 4CD884B615BD47080042BBF8 /* DocumentWindow.xib */,
4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */, 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */,
4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */, 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */,
4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */, 4CD5D701177A5EE400100649 /* DatabaseSettingsWindow.xib */,
); );
name = Windows; name = Windows;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1231,7 +1258,6 @@
4CF78061176E752E0032EE71 /* PasswordInputs */ = { 4CF78061176E752E0032EE71 /* PasswordInputs */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4C7615651764C08C0015A1A6 /* PasswordEditView.xib */,
4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */, 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */,
4C5A11FD1708DE8700223D8A /* PasswordCreatorView.xib */, 4C5A11FD1708DE8700223D8A /* PasswordCreatorView.xib */,
); );
@@ -1321,12 +1347,22 @@
4CE39AC116ECE359000FE29D /* IconSelection.xib in Resources */, 4CE39AC116ECE359000FE29D /* IconSelection.xib in Resources */,
4C5A11FF1708DE8800223D8A /* PasswordCreatorView.xib in Resources */, 4C5A11FF1708DE8800223D8A /* PasswordCreatorView.xib in Resources */,
4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */, 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */,
4C7615631764C08C0015A1A6 /* PasswordEditView.xib in Resources */,
4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */, 4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */,
4C7714AC176C9D4600549F2A /* 99_InfoTemplate.pdf in Resources */, 4C7714AC176C9D4600549F2A /* 99_InfoTemplate.pdf in Resources */,
4CF7805F176E75110032EE71 /* ServerSettings.xib in Resources */, 4CF7805F176E75110032EE71 /* ServerSettings.xib in Resources */,
4C7F35681779DFFB00C57890 /* Errors.strings in Resources */, 4C7F35681779DFFB00C57890 /* Errors.strings in Resources */,
4CD5D702177A5EE400100649 /* DocumentSettingsWindow.xib in Resources */, 4CD5D702177A5EE400100649 /* DatabaseSettingsWindow.xib in Resources */,
4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */,
4C6D1D27178586CA0014C5A5 /* 99_AddFolderTemplate.pdf in Resources */,
4C6D1D2B17858A250014C5A5 /* MacPass.icns in Resources */,
4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */,
4C366643178748F500B249F1 /* 99_HarddiskTemplate.pdf in Resources */,
4C2C8B341787500E009649F3 /* UnprotectedWarningView.xib in Resources */,
4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */,
4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */,
4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */,
4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */,
4C52A892178863B000868229 /* 68_PhoneTemplate.pdf in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -1420,7 +1456,6 @@
4C46B88517063A070046109A /* NSString+MPPasswordCreation.m in Sources */, 4C46B88517063A070046109A /* NSString+MPPasswordCreation.m in Sources */,
4C46B88817063A170046109A /* NSString+MPPasswordAnalysis.m in Sources */, 4C46B88817063A170046109A /* NSString+MPPasswordAnalysis.m in Sources */,
4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */, 4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */,
4C7E832A172DE2F2002493D8 /* MPPasswordEditViewController.m in Sources */,
4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */, 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */,
4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */, 4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */,
4C3D4C0817594CA40038DAAC /* HNHSeparator.m in Sources */, 4C3D4C0817594CA40038DAAC /* HNHSeparator.m in Sources */,
@@ -1484,7 +1519,7 @@
4C2724D71778FF1A00FD8456 /* NSUUID+KeePassLib.m in Sources */, 4C2724D71778FF1A00FD8456 /* NSUUID+KeePassLib.m in Sources */,
4C2724DA17790E7C00FD8456 /* NSMutableData+Base64.m in Sources */, 4C2724DA17790E7C00FD8456 /* NSMutableData+Base64.m in Sources */,
4C2A6134177A1D5F00C9826C /* KPLErrorCodes.m in Sources */, 4C2A6134177A1D5F00C9826C /* KPLErrorCodes.m in Sources */,
4CD5D705177A5F3300100649 /* MPDocumentSettingsWindowController.m in Sources */, 4CD5D705177A5F3300100649 /* MPDatabaseSettingsWindowController.m in Sources */,
4C5EC302177B700D00DA955B /* MPRootAdapter.m in Sources */, 4C5EC302177B700D00DA955B /* MPRootAdapter.m in Sources */,
4C74DD07177BD1640034A9DB /* MPCustomFieldView.m in Sources */, 4C74DD07177BD1640034A9DB /* MPCustomFieldView.m in Sources */,
4C36E5B4177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m in Sources */, 4C36E5B4177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m in Sources */,
@@ -1492,12 +1527,14 @@
4C4FCE18177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m in Sources */, 4C4FCE18177D03D700BBF7AE /* Kdb4Entry+KVOAdditions.m in Sources */,
4C52A244177D7B9F0000D88F /* HNHScrollView.m in Sources */, 4C52A244177D7B9F0000D88F /* HNHScrollView.m in Sources */,
4C3E1CC0177DEFB3003BD9BD /* StringField+Undo.m in Sources */, 4C3E1CC0177DEFB3003BD9BD /* StringField+Undo.m in Sources */,
4C0D9B37177F84D700D0857C /* HNHSecureTextView.m in Sources */,
4C0D9B3A177F867100D0857C /* HNHSecureLayoutManager.m in Sources */,
4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */, 4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */,
4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */, 4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */,
4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */, 4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */,
4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */, 4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */,
4CF1F0CA1786B37900CD920E /* NSData+Gzip.m in Sources */,
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */,
4C16BA6217879A3C002B42BD /* MPPasswordStringFormatter.m in Sources */,
4CD6C5AE1789FDE6000891F6 /* HNHRoundedSecureTextField.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -1514,16 +1551,6 @@
name = GeneralSettings.xib; name = GeneralSettings.xib;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C7615651764C08C0015A1A6 /* PasswordEditView.xib */ = {
isa = PBXVariantGroup;
children = (
4C7615661764C08F0015A1A6 /* Base */,
4C7615671764C09E0015A1A6 /* en */,
4C7615741764C4A40015A1A6 /* de */,
);
name = PasswordEditView.xib;
sourceTree = "<group>";
};
4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */ = { 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
@@ -1557,8 +1584,7 @@
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
4C7615601764C05A0015A1A6 /* Base */, 4C7615601764C05A0015A1A6 /* Base */,
4C7615731764C4A40015A1A6 /* de */, 4CAAFDD51787AED60013FCF9 /* en */,
4C76157B1764C5450015A1A6 /* en */,
); );
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = "<group>"; sourceTree = "<group>";

File diff suppressed because it is too large Load Diff

View File

@@ -274,7 +274,7 @@
</object> </object>
<object class="NSMenuItem" id="544639599"> <object class="NSMenuItem" id="544639599">
<reference key="NSMenu" ref="720053764"/> <reference key="NSMenu" ref="720053764"/>
<string key="NSTitle">Document Settings…</string> <string key="NSTitle">Database Settings…</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/> <reference key="NSOnImage" ref="35465992"/>
@@ -282,7 +282,7 @@
</object> </object>
<object class="NSMenuItem" id="915918141"> <object class="NSMenuItem" id="915918141">
<reference key="NSMenu" ref="720053764"/> <reference key="NSMenu" ref="720053764"/>
<string key="NSTitle">Change Password…</string> <string key="NSTitle">Change Master Password…</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/> <reference key="NSOnImage" ref="35465992"/>
@@ -788,11 +788,11 @@
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
<string key="label">showDocumentSettings:</string> <string key="label">showDatabaseSettings:</string>
<reference key="source" ref="1014"/> <reference key="source" ref="1014"/>
<reference key="destination" ref="544639599"/> <reference key="destination" ref="544639599"/>
</object> </object>
<int key="connectionID">1233</int> <int key="connectionID">1234</int>
</object> </object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection"> <object class="IBActionConnection" key="connection">
@@ -1298,7 +1298,7 @@
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/> <dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/> <nil key="sourceID"/>
<int key="maxID">1233</int> <int key="maxID">1234</int>
</object> </object>
<object class="IBClassDescriber" key="IBDocument.Classes"> <object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions"> <array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1358,15 +1358,15 @@
<string key="superclassName">NSWindowController</string> <string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions"> <dictionary class="NSMutableDictionary" key="actions">
<string key="editPassword:">id</string> <string key="editPassword:">id</string>
<string key="showDocumentSettings:">id</string> <string key="showDatabaseSettings:">id</string>
</dictionary> </dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName"> <dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="editPassword:"> <object class="IBActionInfo" key="editPassword:">
<string key="name">editPassword:</string> <string key="name">editPassword:</string>
<string key="candidateClassName">id</string> <string key="candidateClassName">id</string>
</object> </object>
<object class="IBActionInfo" key="showDocumentSettings:"> <object class="IBActionInfo" key="showDatabaseSettings:">
<string key="name">showDocumentSettings:</string> <string key="name">showDatabaseSettings:</string>
<string key="candidateClassName">id</string> <string key="candidateClassName">id</string>
</object> </object>
</dictionary> </dictionary>

View File

@@ -1,947 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12E55</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.39</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">3084</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBNSLayoutConstraint</string>
<string>NSButton</string>
<string>NSButtonCell</string>
<string>NSCustomObject</string>
<string>NSCustomView</string>
<string>NSPathCell</string>
<string>NSPathControl</string>
<string>NSSecureTextField</string>
<string>NSSecureTextFieldCell</string>
<string>NSTextField</string>
<string>NSTextFieldCell</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">MPPasswordEditViewController</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomView" id="595834490">
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="762740216">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{99, 157}, {164, 17}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="847623533"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="79241474">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Change Password/Keyfile</string>
<object class="NSFont" key="NSSupport" id="385477987">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="762740216"/>
<object class="NSColor" key="NSBackgroundColor" id="515490923">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="504890084">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor" id="354127501">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="256981522">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{113, 13}, {82, 32}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="771851607"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="69579583">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Cancel</string>
<reference key="NSSupport" ref="385477987"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="256981522"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPathControl" id="679285412">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<set class="NSMutableSet" key="NSDragTypes">
<string>Apple URL pasteboard type</string>
<string>NSFilenamesPboardType</string>
</set>
<string key="NSFrame">{{83, 57}, {197, 22}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="256981522"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPathCell" key="NSCell" id="902994558">
<int key="NSCellFlags">337641473</int>
<int key="NSCellFlags2">131072</int>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="679285412"/>
<array class="NSMutableArray" key="NSPathComponentCells"/>
<int key="NSPathStyle">2</int>
<reference key="NSDelegate" ref="679285412"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSSecureTextField" id="670734441">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{86, 86}, {191, 22}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="365869599"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSSecureTextFieldCell" key="NSCell" id="656181976">
<int key="NSCellFlags">342884416</int>
<int key="NSCellFlags2">272630848</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="385477987"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="670734441"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">textBackgroundColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">textColor</string>
<reference key="NSColor" ref="354127501"/>
</object>
<array key="NSAllowedInputLocales">
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
</array>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="847623533">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 89}, {64, 17}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="670734441"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="792960157">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Password</string>
<reference key="NSSupport" ref="385477987"/>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="847623533"/>
<reference key="NSBackgroundColor" ref="515490923"/>
<reference key="NSTextColor" ref="504890084"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="365869599">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{35, 62}, {46, 17}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="679285412"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="324335303">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Keyfile</string>
<reference key="NSSupport" ref="385477987"/>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="365869599"/>
<reference key="NSBackgroundColor" ref="515490923"/>
<reference key="NSTextColor" ref="504890084"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="771851607">
<reference key="NSNextResponder" ref="595834490"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{195, 13}, {88, 32}}</string>
<reference key="NSSuperview" ref="595834490"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSHuggingPriority">{250, 250}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="251779948">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Change</string>
<reference key="NSSupport" ref="385477987"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="771851607"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrameSize">{363, 194}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="762740216"/>
<string key="NSAntiCompressionPriority">{751, 750}</string>
<string key="NSClassName">NSView</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="595834490"/>
</object>
<int key="connectionID">52</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">passwordTextField</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="670734441"/>
</object>
<int key="connectionID">53</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">keyfilePathControl</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="679285412"/>
</object>
<int key="connectionID">54</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">_change:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="771851607"/>
</object>
<int key="connectionID">55</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">_cancel:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="256981522"/>
</object>
<int key="connectionID">56</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="595834490"/>
<array class="NSMutableArray" key="children">
<reference ref="365869599"/>
<reference ref="679285412"/>
<reference ref="670734441"/>
<reference ref="847623533"/>
<reference ref="771851607"/>
<object class="IBNSLayoutConstraint" id="501931119">
<reference key="firstItem" ref="771851607"/>
<int key="firstAttribute">10</int>
<int key="relation">0</int>
<reference key="secondItem" ref="256981522"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="1024015372">
<reference key="firstItem" ref="771851607"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="256981522"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">12</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="381133690">
<reference key="firstItem" ref="771851607"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="679285412"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="629412806">
<reference key="firstItem" ref="771851607"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="679285412"/>
<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="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="176392839">
<reference key="firstItem" ref="595834490"/>
<int key="firstAttribute">4</int>
<int key="relation">1</int>
<reference key="secondItem" ref="771851607"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="340048519">
<reference key="firstItem" ref="679285412"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="365869599"/>
<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="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="33581314">
<reference key="firstItem" ref="679285412"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="670734441"/>
<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="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="481322683">
<reference key="firstItem" ref="679285412"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="670734441"/>
<int key="secondAttribute">5</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="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="966743814">
<reference key="firstItem" ref="679285412"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="670734441"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="379216952">
<reference key="firstItem" ref="595834490"/>
<int key="firstAttribute">10</int>
<int key="relation">0</int>
<reference key="secondItem" ref="670734441"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="612132939">
<reference key="firstItem" ref="670734441"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="847623533"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="485639451">
<reference key="firstItem" ref="595834490"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="670734441"/>
<int key="secondAttribute">9</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="51218896">
<reference key="firstItem" ref="670734441"/>
<int key="firstAttribute">10</int>
<int key="relation">0</int>
<reference key="secondItem" ref="847623533"/>
<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="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="910263208">
<reference key="firstItem" ref="365869599"/>
<int key="firstAttribute">11</int>
<int key="relation">0</int>
<reference key="secondItem" ref="679285412"/>
<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="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="575391720">
<reference key="firstItem" ref="762740216"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="595834490"/>
<int key="secondAttribute">3</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="595834490"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="335749536">
<reference key="firstItem" ref="762740216"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="670734441"/>
<int key="secondAttribute">9</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="595834490"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="426619093">
<reference key="firstItem" ref="847623533"/>
<int key="firstAttribute">5</int>
<int key="relation">1</int>
<reference key="secondItem" ref="595834490"/>
<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="595834490"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<reference ref="762740216"/>
<reference ref="256981522"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="256981522"/>
<array class="NSMutableArray" key="children">
<reference ref="69579583"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="365869599"/>
<array class="NSMutableArray" key="children">
<reference ref="324335303"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="679285412"/>
<array class="NSMutableArray" key="children">
<reference ref="902994558"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="670734441"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="318411198">
<reference key="firstItem" ref="670734441"/>
<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">191</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="670734441"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
<reference ref="656181976"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="847623533"/>
<array class="NSMutableArray" key="children">
<reference ref="792960157"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="771851607"/>
<array class="NSMutableArray" key="children">
<reference ref="251779948"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="426619093"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">17</int>
<reference key="object" ref="51218896"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="485639451"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="612132939"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="379216952"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">22</int>
<reference key="object" ref="910263208"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="966743814"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">24</int>
<reference key="object" ref="481322683"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">25</int>
<reference key="object" ref="33581314"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">26</int>
<reference key="object" ref="340048519"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">28</int>
<reference key="object" ref="176392839"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">29</int>
<reference key="object" ref="629412806"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">30</int>
<reference key="object" ref="381133690"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">31</int>
<reference key="object" ref="1024015372"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">32</int>
<reference key="object" ref="251779948"/>
<reference key="parent" ref="771851607"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">33</int>
<reference key="object" ref="792960157"/>
<reference key="parent" ref="847623533"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">34</int>
<reference key="object" ref="318411198"/>
<reference key="parent" ref="670734441"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">35</int>
<reference key="object" ref="656181976"/>
<reference key="parent" ref="670734441"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">36</int>
<reference key="object" ref="902994558"/>
<reference key="parent" ref="679285412"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">37</int>
<reference key="object" ref="324335303"/>
<reference key="parent" ref="365869599"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">38</int>
<reference key="object" ref="69579583"/>
<reference key="parent" ref="256981522"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">45</int>
<reference key="object" ref="762740216"/>
<array class="NSMutableArray" key="children">
<reference ref="79241474"/>
</array>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">46</int>
<reference key="object" ref="79241474"/>
<reference key="parent" ref="762740216"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">48</int>
<reference key="object" ref="335749536"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">49</int>
<reference key="object" ref="575391720"/>
<reference key="parent" ref="595834490"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">59</int>
<reference key="object" ref="501931119"/>
<reference key="parent" ref="595834490"/>
</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>
<boolean value="NO" key="10.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="2.IBNSViewMetadataConstraints">
<reference ref="426619093"/>
<reference ref="335749536"/>
<reference ref="575391720"/>
<reference ref="910263208"/>
<reference ref="51218896"/>
<reference ref="485639451"/>
<reference ref="612132939"/>
<reference ref="379216952"/>
<reference ref="966743814"/>
<reference ref="481322683"/>
<reference ref="33581314"/>
<reference ref="340048519"/>
<reference ref="176392839"/>
<reference ref="629412806"/>
<reference ref="381133690"/>
<reference ref="1024015372"/>
<reference ref="501931119"/>
</array>
<boolean value="NO" key="2.IBNSViewMetadataLastInspectedTranslatesAutoresizingMaskIntoConstraints"/>
<boolean value="NO" key="2.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="30.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="31.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="32.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="34.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="45.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="46.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="48.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="49.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="5.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="59.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="6.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="7.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="8.IBNSViewMetadataConstraints">
<reference ref="318411198"/>
</array>
<boolean value="NO" key="8.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="9.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="9.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">59</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">MPPasswordEditViewController</string>
<string key="superclassName">MPViewController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="_cancel:">id</string>
<string key="_change:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="_cancel:">
<string key="name">_cancel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="_change:">
<string key="name">_change:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="keyfilePathControl">NSPathControl</string>
<string key="passwordTextField">NSSecureTextField</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="keyfilePathControl">
<string key="name">keyfilePathControl</string>
<string key="candidateClassName">NSPathControl</string>
</object>
<object class="IBToOneOutletInfo" key="passwordTextField">
<string key="name">passwordTextField</string>
<string key="candidateClassName">NSSecureTextField</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPPasswordEditViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPViewController</string>
<string key="superclassName">NSViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSLayoutConstraint</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/NSLayoutConstraint.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<bool key="IBDocument.UseAutolayout">YES</bool>
</data>
</archive>

File diff suppressed because it is too large Load Diff

View File

@@ -36,7 +36,7 @@
<object class="NSWindowTemplate" id="1005"> <object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">15</int> <int key="NSWindowStyleMask">15</int>
<int key="NSWindowBacking">2</int> <int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 240}, {560, 490}}</string> <string key="NSWindowRect">{{196, 240}, {700, 500}}</string>
<int key="NSWTFlags">1618477056</int> <int key="NSWTFlags">1618477056</int>
<string key="NSWindowTitle">Window</string> <string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">NSWindow</string> <string key="NSWindowClass">NSWindow</string>
@@ -46,20 +46,21 @@
<reference key="NSNextResponder"/> <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews"/> <array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{560, 490}</string> <string key="NSFrameSize">{700, 500}</string>
<reference key="NSSuperview"/> <reference key="NSSuperview"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string> <string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string> <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool> <bool key="NSWindowIsRestorable">YES</bool>
</object> </object>
<object class="NSSplitView" id="903506498"> <object class="NSSplitView" id="903506498">
<nil key="NSNextResponder"/> <reference key="NSNextResponder"/>
<int key="NSvFlags">268</int> <int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/> <array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{560, 194}</string> <string key="NSFrameSize">{560, 194}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSIsVertical">YES</bool> <bool key="NSIsVertical">YES</bool>
<int key="NSDividerStyle">2</int> <int key="NSDividerStyle">2</int>
@@ -158,15 +159,15 @@
<string key="superclassName">NSWindowController</string> <string key="superclassName">NSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions"> <dictionary class="NSMutableDictionary" key="actions">
<string key="editPassword:">id</string> <string key="editPassword:">id</string>
<string key="showDocumentSettings:">id</string> <string key="showDatabaseSettings:">id</string>
</dictionary> </dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName"> <dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="editPassword:"> <object class="IBActionInfo" key="editPassword:">
<string key="name">editPassword:</string> <string key="name">editPassword:</string>
<string key="candidateClassName">id</string> <string key="candidateClassName">id</string>
</object> </object>
<object class="IBActionInfo" key="showDocumentSettings:"> <object class="IBActionInfo" key="showDatabaseSettings:">
<string key="name">showDocumentSettings:</string> <string key="name">showDatabaseSettings:</string>
<string key="candidateClassName">id</string> <string key="candidateClassName">id</string>
</object> </object>
</dictionary> </dictionary>

View File

@@ -57,6 +57,7 @@
<int key="NSvFlags">268</int> <int key="NSvFlags">268</int>
<string key="NSFrame">{{7, 5}, {32, 19}}</string> <string key="NSFrame">{{7, 5}, {32, 19}}</string>
<reference key="NSSuperview" ref="163272962"/> <reference key="NSSuperview" ref="163272962"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/> <reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
@@ -85,8 +86,9 @@
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object> </object>
</array> </array>
<string key="NSFrameSize">{684, 30}</string> <string key="NSFrameSize">{694, 30}</string>
<reference key="NSSuperview" ref="997686550"/> <reference key="NSSuperview" ref="997686550"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="276578969"/> <reference key="NSNextKeyView" ref="276578969"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSClassName">HNHGradientView</string> <string key="NSClassName">HNHGradientView</string>
@@ -103,8 +105,9 @@
<reference key="NSNextResponder" ref="262664416"/> <reference key="NSNextResponder" ref="262664416"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews"/> <array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{684, 548}</string> <string key="NSFrameSize">{694, 548}</string>
<reference key="NSSuperview" ref="262664416"/> <reference key="NSSuperview" ref="262664416"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="788738248"/> <reference key="NSNextKeyView" ref="788738248"/>
<string key="NSReuseIdentifierKey">_NS:13</string> <string key="NSReuseIdentifierKey">_NS:13</string>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
@@ -113,8 +116,9 @@
<object class="NSTableHeaderView" key="NSHeaderView" id="253618752"> <object class="NSTableHeaderView" key="NSHeaderView" id="253618752">
<reference key="NSNextResponder" ref="736877784"/> <reference key="NSNextResponder" ref="736877784"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{684, 17}</string> <string key="NSFrameSize">{694, 17}</string>
<reference key="NSSuperview" ref="736877784"/> <reference key="NSSuperview" ref="736877784"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="262664416"/> <reference key="NSNextKeyView" ref="262664416"/>
<reference key="NSTableView" ref="528076956"/> <reference key="NSTableView" ref="528076956"/>
</object> </object>
@@ -272,7 +276,7 @@
<reference key="NSTableView" ref="528076956"/> <reference key="NSTableView" ref="528076956"/>
</object> </object>
<object class="NSTableColumn" id="683421605"> <object class="NSTableColumn" id="683421605">
<double key="NSWidth">188</double> <double key="NSWidth">198</double>
<double key="NSMinWidth">10</double> <double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028234663852886e+38</double> <double key="NSMaxWidth">3.4028234663852886e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
@@ -325,8 +329,9 @@
<int key="NSTableViewGroupRowStyle">1</int> <int key="NSTableViewGroupRowStyle">1</int>
</object> </object>
</array> </array>
<string key="NSFrame">{{0, 17}, {684, 548}}</string> <string key="NSFrame">{{0, 17}, {694, 548}}</string>
<reference key="NSSuperview" ref="613995671"/> <reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="528076956"/> <reference key="NSNextKeyView" ref="528076956"/>
<string key="NSReuseIdentifierKey">_NS:11</string> <string key="NSReuseIdentifierKey">_NS:11</string>
<reference key="NSDocView" ref="528076956"/> <reference key="NSDocView" ref="528076956"/>
@@ -338,6 +343,7 @@
<int key="NSvFlags">-2147483392</int> <int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string> <string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="613995671"/> <reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="802411427"/> <reference key="NSNextKeyView" ref="802411427"/>
<string key="NSReuseIdentifierKey">_NS:58</string> <string key="NSReuseIdentifierKey">_NS:58</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -350,6 +356,7 @@
<int key="NSvFlags">-2147483392</int> <int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{0, 310}, {480, 16}}</string> <string key="NSFrame">{{0, 310}, {480, 16}}</string>
<reference key="NSSuperview" ref="613995671"/> <reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="163272962"/> <reference key="NSNextKeyView" ref="163272962"/>
<string key="NSReuseIdentifierKey">_NS:60</string> <string key="NSReuseIdentifierKey">_NS:60</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -364,16 +371,18 @@
<array class="NSMutableArray" key="NSSubviews"> <array class="NSMutableArray" key="NSSubviews">
<reference ref="253618752"/> <reference ref="253618752"/>
</array> </array>
<string key="NSFrameSize">{684, 17}</string> <string key="NSFrameSize">{694, 17}</string>
<reference key="NSSuperview" ref="613995671"/> <reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="253618752"/> <reference key="NSNextKeyView" ref="253618752"/>
<reference key="NSDocView" ref="253618752"/> <reference key="NSDocView" ref="253618752"/>
<reference key="NSBGColor" ref="136901388"/> <reference key="NSBGColor" ref="136901388"/>
<int key="NScvFlags">4</int> <int key="NScvFlags">4</int>
</object> </object>
</array> </array>
<string key="NSFrame">{{0, 30}, {684, 565}}</string> <string key="NSFrame">{{0, 30}, {694, 565}}</string>
<reference key="NSSuperview" ref="997686550"/> <reference key="NSSuperview" ref="997686550"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="736877784"/> <reference key="NSNextKeyView" ref="736877784"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSsFlags">133680</int> <int key="NSsFlags">133680</int>
@@ -387,8 +396,9 @@
<double key="NSMagnification">1</double> <double key="NSMagnification">1</double>
</object> </object>
</array> </array>
<string key="NSFrameSize">{684, 594}</string> <string key="NSFrameSize">{694, 594}</string>
<reference key="NSSuperview"/> <reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="613995671"/> <reference key="NSNextKeyView" ref="613995671"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSClassName">NSView</string> <string key="NSClassName">NSView</string>
@@ -646,7 +656,7 @@
<object class="NSTextField" id="488604658"> <object class="NSTextField" id="488604658">
<reference key="NSNextResponder" ref="954630866"/> <reference key="NSNextResponder" ref="954630866"/>
<int key="NSvFlags">266</int> <int key="NSvFlags">266</int>
<string key="NSFrameSize">{188, 17}</string> <string key="NSFrameSize">{198, 17}</string>
<reference key="NSSuperview" ref="954630866"/> <reference key="NSSuperview" ref="954630866"/>
<reference key="NSNextKeyView" ref="1037276411"/> <reference key="NSNextKeyView" ref="1037276411"/>
<string key="NSAntiCompressionPriority">{250, 750}</string> <string key="NSAntiCompressionPriority">{250, 750}</string>
@@ -663,7 +673,7 @@
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object> </object>
</array> </array>
<string key="NSFrame">{{494, 1}, {188, 17}}</string> <string key="NSFrame">{{494, 1}, {198, 17}}</string>
<reference key="NSNextKeyView" ref="488604658"/> <reference key="NSNextKeyView" ref="488604658"/>
</object> </object>
<reference key="destination" ref="488604658"/> <reference key="destination" ref="488604658"/>
@@ -1565,7 +1575,7 @@
<reference key="parent" ref="276578969"/> <reference key="parent" ref="276578969"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">790</int> <int key="objectID">834</int>
<reference key="object" ref="244975730"/> <reference key="object" ref="244975730"/>
<reference key="parent" ref="163272962"/> <reference key="parent" ref="163272962"/>
</object> </object>
@@ -1705,7 +1715,7 @@
<string key="678.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="678.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="679.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="679.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="683.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="683.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="690.IBNSViewMetadataConstraints"> <array key="690.IBNSViewMetadataConstraints">
<reference ref="337191559"/> <reference ref="337191559"/>
<reference ref="187301323"/> <reference ref="187301323"/>
<reference ref="244975730"/> <reference ref="244975730"/>
@@ -1725,15 +1735,117 @@
<string key="733.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="733.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="741.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="741.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="743.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="743.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="790.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="834.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary> </dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/> <dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/> <nil key="sourceID"/>
<int key="maxID">801</int> <int key="maxID">834</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">HNHGradientView</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/HNHGradientView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPEntryViewController</string>
<string key="superclassName">MPViewController</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="addEntryButton">NSButton</string>
<string key="bottomBar">HNHGradientView</string>
<string key="entryTable">NSTableView</string>
<string key="filterBar">NSView</string>
<string key="filterDoneButton">NSButton</string>
<string key="filterLabelTextField">NSTextField</string>
<string key="filterSearchField">NSSearchField</string>
<string key="filterTitleButton">NSButton</string>
<string key="filterURLButton">NSButton</string>
<string key="filterUsernameButton">NSButton</string>
<string key="tableToTop">NSLayoutConstraint</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="addEntryButton">
<string key="name">addEntryButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="bottomBar">
<string key="name">bottomBar</string>
<string key="candidateClassName">HNHGradientView</string>
</object>
<object class="IBToOneOutletInfo" key="entryTable">
<string key="name">entryTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo" key="filterBar">
<string key="name">filterBar</string>
<string key="candidateClassName">NSView</string>
</object>
<object class="IBToOneOutletInfo" key="filterDoneButton">
<string key="name">filterDoneButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="filterLabelTextField">
<string key="name">filterLabelTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo" key="filterSearchField">
<string key="name">filterSearchField</string>
<string key="candidateClassName">NSSearchField</string>
</object>
<object class="IBToOneOutletInfo" key="filterTitleButton">
<string key="name">filterTitleButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="filterURLButton">
<string key="name">filterURLButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="filterUsernameButton">
<string key="name">filterUsernameButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="tableToTop">
<string key="name">tableToTop</string>
<string key="candidateClassName">NSLayoutConstraint</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPEntryViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPTableView</string>
<string key="superclassName">NSTableView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPTableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPViewController</string>
<string key="superclassName">NSViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSLayoutConstraint</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/NSLayoutConstraint.h</string>
</object>
</object>
</array>
</object> </object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -15,5 +15,9 @@
- (void)removeObjectFromStringFieldsAtIndex:(NSUInteger)anIndex; - (void)removeObjectFromStringFieldsAtIndex:(NSUInteger)anIndex;
- (void)insertObject:(StringField *)stringfield inStringFieldsAtIndex:(NSUInteger)anIndex; - (void)insertObject:(StringField *)stringfield inStringFieldsAtIndex:(NSUInteger)anIndex;
- (NSUInteger)countOfBinaries;
- (BinaryRef *)objectInBinariesAtIndex:(NSUInteger)index;
- (void)removeObjectFromBinariesAtIndex:(NSUInteger)index;
- (void)insertObject:(BinaryRef *)binary inBinariesAtIndex:(NSUInteger)index;
@end @end

View File

@@ -10,6 +10,7 @@
@implementation Kdb4Entry (KVOAdditions) @implementation Kdb4Entry (KVOAdditions)
/* Entries */
- (NSUInteger)countOfStringFields { - (NSUInteger)countOfStringFields {
return [self.stringFields count]; return [self.stringFields count];
} }
@@ -26,4 +27,21 @@
[self.stringFields removeObjectAtIndex:anIndex]; [self.stringFields removeObjectAtIndex:anIndex];
} }
/* Binaries */
- (NSUInteger)countOfBinaries {
return [self.binaries count];
}
- (BinaryRef *)objectInBinariesAtIndex:(NSUInteger)index {
return (self.binaries)[index];
}
- (void)insertObject:(BinaryRef *)binary inBinariesAtIndex:(NSUInteger)index {
[self.binaries insertObject:binary atIndex:index];
}
- (void)removeObjectFromBinariesAtIndex:(NSUInteger)index {
[self.binaries removeObjectAtIndex:index];
}
@end @end

View File

@@ -11,5 +11,6 @@
@interface Kdb4Tree (NewTree) @interface Kdb4Tree (NewTree)
+(Kdb4Tree *)templateTree; +(Kdb4Tree *)templateTree;
+(Kdb4Tree *)demoTree;
@end @end

View File

@@ -15,7 +15,7 @@
Kdb4Tree *tree = [[Kdb4Tree alloc] init]; Kdb4Tree *tree = [[Kdb4Tree alloc] init];
tree.generator = @"MacPass"; tree.generator = @"MacPass";
tree.databaseName = @""; tree.databaseName = NSLocalizedString(@"NEW_DATABASE", "Name for a newly created Database");
tree.databaseNameChanged = currentTime; tree.databaseNameChanged = currentTime;
tree.databaseDescription = @""; tree.databaseDescription = @"";
tree.databaseDescriptionChanged = currentTime; tree.databaseDescriptionChanged = currentTime;
@@ -74,4 +74,50 @@
return tree; return tree;
} }
+ (Kdb4Tree *)demoTree {
NSDate *currentTime = [NSDate date];
Kdb4Tree *tree = [[Kdb4Tree alloc] init];
tree.generator = @"MacPass";
tree.databaseName = @"Icon Demonstation";
tree.databaseNameChanged = currentTime;
tree.databaseDescription = @"This database just has all default icons as groups in the tree";
tree.databaseDescriptionChanged = currentTime;
tree.defaultUserName = @"";
tree.defaultUserNameChanged = currentTime;
tree.maintenanceHistoryDays = 365;
tree.color = @"";
tree.masterKeyChanged = currentTime;
tree.masterKeyChangeRec = -1;
tree.masterKeyChangeForce = -1;
tree.protectTitle = NO;
tree.protectUserName = NO;
tree.protectPassword = YES;
tree.protectUrl = NO;
tree.protectNotes = NO;
tree.recycleBinEnabled = YES;
tree.recycleBinUuid = [UUID nullUuid];
tree.recycleBinChanged = currentTime;
tree.entryTemplatesGroup = [UUID nullUuid];
tree.entryTemplatesGroupChanged = currentTime;
tree.historyMaxItems = 10;
tree.historyMaxSize = 6 * 1024 * 1024; // 6 MB
tree.lastSelectedGroup = [UUID nullUuid];
tree.lastTopVisibleGroup = [UUID nullUuid];
KdbGroup *parentGroup = [tree createGroup:nil];
parentGroup.name = @"General";
parentGroup.image = 48;
tree.root = parentGroup;
for(NSUInteger iImageIndex = 0; iImageIndex < 69; iImageIndex++) {
KdbGroup *group = [tree createGroup:parentGroup];
group.name = [NSString stringWithFormat:@"Group %ld", iImageIndex];
group.image = iImageIndex;
[parentGroup addGroup:group];
}
return tree;
}
@end @end

View File

@@ -7,6 +7,8 @@
// //
#import "KdbEntry+MPAdditions.h" #import "KdbEntry+MPAdditions.h"
#import "Kdb3Node.h"
#import "Kdb4Node.h"
#import "MPIconHelper.h" #import "MPIconHelper.h"

View File

@@ -17,4 +17,5 @@
return NSNotFound; return NSNotFound;
} }
@end @end

View File

@@ -8,6 +8,9 @@
#import "Kdb.h" #import "Kdb.h"
@class BinaryRef;
@class Binary;
@interface KdbTree (MPAdditions) @interface KdbTree (MPAdditions)
- (NSArray *)allEntries; - (NSArray *)allEntries;

View File

@@ -9,6 +9,10 @@
#import "KdbTree+MPAdditions.h" #import "KdbTree+MPAdditions.h"
#import "KdbGroup+MPTreeTools.h" #import "KdbGroup+MPTreeTools.h"
#import "NSMutableData+Base64.h"
#import "Kdb3Node.h"
#import "Kdb4Node.h"
@implementation KdbTree (MPAdditions) @implementation KdbTree (MPAdditions)
- (NSArray *)allGroups { - (NSArray *)allGroups {

View File

@@ -10,8 +10,8 @@
@interface MPCustomFieldTableCellView : NSTableCellView @interface MPCustomFieldTableCellView : NSTableCellView
@property (weak) IBOutlet NSTextField *labelTextField; @property (nonatomic, weak) IBOutlet NSTextField *labelTextField;
@property (weak) IBOutlet NSTextField *valueTextField; @property (nonatomic, weak) IBOutlet NSTextField *valueTextField;
@property (weak) IBOutlet NSButton *removeButton; @property (nonatomic, weak) IBOutlet NSButton *removeButton;
@end @end

View File

@@ -8,10 +8,17 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
MPDatabaseSettingsTabGeneral,
MPDatabaseSettingsTabPassword,
MPDatabaseSettingsTabDisplay,
MPDatabaseSettingsTabAdvanced
};
@class MPDocument; @class MPDocument;
@class HNHRoundedSecureTextField;
@interface MPDocumentSettingsWindowController : NSWindowController @interface MPDatabaseSettingsWindowController : NSWindowController
@property (weak) IBOutlet NSTabView *sectionTabView; @property (weak) IBOutlet NSTabView *sectionTabView;
@@ -20,8 +27,12 @@
@property (unsafe_unretained) IBOutlet NSTextView *databaseDescriptionTextView; @property (unsafe_unretained) IBOutlet NSTextView *databaseDescriptionTextView;
/* Protection */ /* Protection */
@property (weak) IBOutlet NSTextField *passwordTextField; @property (weak) IBOutlet HNHRoundedSecureTextField *passwordTextField;
@property (weak) IBOutlet NSPathControl *keyfilePathControl; @property (weak) IBOutlet NSPathControl *keyfilePathControl;
@property (weak) IBOutlet NSButton *togglePasswordButton;
- (IBAction)clearKey:(id)sender;
- (IBAction)generateKey:(id)sender;
/* Display Tab */ /* Display Tab */
@property (weak) IBOutlet NSButton *protectTitleCheckButton; @property (weak) IBOutlet NSButton *protectTitleCheckButton;
@@ -30,13 +41,15 @@
@property (weak) IBOutlet NSButton *protectURLCheckButton; @property (weak) IBOutlet NSButton *protectURLCheckButton;
@property (weak) IBOutlet NSButton *protectNotesCheckButton; @property (weak) IBOutlet NSButton *protectNotesCheckButton;
/* Advanced Tab*/ /* Advanced Tab*/
@property (weak) IBOutlet NSButton *enableRecycleBinCheckButton; @property (weak) IBOutlet NSButton *enableRecycleBinCheckButton;
@property (weak) IBOutlet NSButton *emptyRecycleBinOnQuitCheckButton; @property (weak) IBOutlet NSButton *emptyRecycleBinOnQuitCheckButton;
@property (weak) IBOutlet NSPopUpButton *selectRecycleBinGroupPopUpButton; @property (weak) IBOutlet NSPopUpButton *selectRecycleBinGroupPopUpButton;
- (id)initWithDocument:(MPDocument *)document; - (id)initWithDocument:(MPDocument *)document;
- (void)showSettingsTab:(MPDatabaseSettingsTab)tab;
- (void)update; - (void)update;
@end @end

View File

@@ -0,0 +1,175 @@
//
// MPDocumentSettingsWindowController.m
// MacPass
//
// Created by Michael Starke on 26.06.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPDatabaseSettingsWindowController.h"
#import "MPDocument.h"
#import "MPDocumentWindowController.h"
#import "MPDatabaseVersion.h"
#import "MPIconHelper.h"
#import "HNHRoundedSecureTextField.h"
#import "Kdb.h"
#import "Kdb4Node.h"
#import "KdbGroup+MPAdditions.h"
@interface MPDatabaseSettingsWindowController () {
MPDocument *_document;
}
@property (nonatomic,assign) BOOL trashEnabled;
@property (nonatomic,assign) BOOL showPassword;
@end
@implementation MPDatabaseSettingsWindowController
- (id)init {
return [self initWithDocument:nil];
}
- (id)initWithDocument:(MPDocument *)document {
self = [super initWithWindowNibName:@"DatabaseSettingsWindow"];
if(self) {
_document = document;
_showPassword = NO;
}
return self;
}
- (void)windowDidLoad {
[super windowDidLoad];
NSAssert(_document != nil, @"Document needs to be present");
Kdb4Tree *tree = _document.treeV4;
if( tree ) {
[self _setupDatabase:tree];
[self _setupProtectionTab:tree];
[self _setupAdvancedTab:tree];
[self _setupPasswordTab:tree];
}
else {
// Switch to KdbV3 View
}
}
- (IBAction)save:(id)sender {
/* Protection */
_document.password = [self.passwordTextField stringValue];
_document.key = [self.keyfilePathControl URL];
/* General */
_document.treeV4.databaseDescription = [self.databaseDescriptionTextView string];
_document.treeV4.databaseName = [self.databaseNameTextField stringValue];
/* Display */
/* Advanced */
_document.treeV4.recycleBinEnabled = self.trashEnabled;
NSMenuItem *menuItem = [self.selectRecycleBinGroupPopUpButton selectedItem];
KdbGroup *group = [menuItem representedObject];
[_document useGroupAsTrash:group];
_document.treeV4.protectNotes = [self.protectNotesCheckButton state] == NSOnState;
_document.treeV4.protectPassword = [self.protectPasswortCheckButton state] == NSOnState;
_document.treeV4.protectTitle = [self.protectTitleCheckButton state] == NSOnState;
_document.treeV4.protectUrl = [self.protectURLCheckButton state] == NSOnState;
_document.treeV4.protectUserName = [self.protectUserNameCheckButton state] == NSOnState;
/* Close to finish */
[self close:nil];
}
- (IBAction)close:(id)sender {
[NSApp endSheet:[self window]];
[[self window] orderOut:nil];
}
- (void)update {
/* Update all stuff that might have changed */
Kdb4Tree *tree = _document.treeV4;
if(tree) {
[self _setupDatabase:tree];
[self _setupProtectionTab:tree];
[self _setupAdvancedTab:tree];
[self _setupPasswordTab:tree];
}
}
- (void)showSettingsTab:(MPDatabaseSettingsTab)tab {
self.showPassword = NO;
[self.sectionTabView selectTabViewItemAtIndex:tab];
}
#pragma mark Actions
- (IBAction)clearKey:(id)sender {
[self.keyfilePathControl setURL:nil];
}
- (IBAction)generateKey:(id)sender {
}
#pragma mark Private Helper
- (void)_setupDatabase:(Kdb4Tree *)tree {
[self.databaseNameTextField setStringValue:tree.databaseName];
[self.databaseDescriptionTextView setString:tree.databaseDescription];
}
- (void)_setupProtectionTab:(Kdb4Tree *)tree {
[self.protectNotesCheckButton setState:tree.protectNotes ? NSOnState : NSOffState ];
[self.protectNotesCheckButton setState:tree.protectPassword ? NSOnState : NSOffState];
[self.protectTitleCheckButton setState:tree.protectTitle ? NSOnState : NSOffState];
[self.protectURLCheckButton setState:tree.protectUrl ? NSOnState : NSOffState];
[self.protectUserNameCheckButton setState:tree.protectUserName ? NSOnState : NSOffState];
}
- (void)_setupAdvancedTab:(Kdb4Tree *)tree {
self.trashEnabled = tree.recycleBinEnabled;
[self.enableRecycleBinCheckButton bind:NSValueBinding toObject:self withKeyPath:@"trashEnabled" options:nil];
[self.selectRecycleBinGroupPopUpButton bind:NSEnabledBinding toObject:self withKeyPath:@"trashEnabled" options:nil];
[self _updateTrashFolders:tree];
}
- (void)_setupPasswordTab:(Kdb4Tree *)tree {
[self.passwordTextField setStringValue:_document.password ? _document.password : @""];
[self.keyfilePathControl setURL:_document.key];
[self.passwordTextField bind:@"showPassword" toObject:self withKeyPath:@"showPassword" options:nil];
[self.togglePasswordButton bind:NSValueBinding toObject:self withKeyPath:@"showPassword" options:nil];
}
- (void)_updateTrashFolders:(Kdb4Tree *)tree {
NSMenu *menu = [self _buildTreeMenu:tree];
[self.selectRecycleBinGroupPopUpButton setMenu:menu];
}
- (NSMenu *)_buildTreeMenu:(Kdb4Tree *)tree {
NSMenu *menu = [[NSMenu alloc] init];
[menu setAutoenablesItems:NO];
for(Kdb4Group *group in tree.root.groups) {
NSMenuItem *groupItem = [[NSMenuItem alloc] init];
[groupItem setImage:group.icon];
[groupItem setTitle:group.name];
[groupItem setRepresentedObject:group];
[groupItem setEnabled:YES];
if([group.uuid isEqual:tree.recycleBinUuid]) {
[groupItem setState:NSOnState];
}
[menu addItem:groupItem];
}
NSMenuItem *selectItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SELECT_RECYCLEBIN", @"Menu item if no reycleBin is selected") action:NULL keyEquivalent:@""];
[selectItem setEnabled:YES];
[menu insertItem:selectItem atIndex:0];
return menu;
}
@end

View File

@@ -0,0 +1,147 @@
//
// MPDocument+Attachments.m
// MacPass
//
// Created by Michael Starke on 05.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPDocument.h"
#import "NSMutableData+Base64.h"
#import "NSData+Gzip.h"
#import "Kdb3Node.h"
#import "Kdb4Node.h"
#import "Kdb4Entry+KVOAdditions.h"
@implementation MPDocument (Attachments)
- (void)addAttachment:(NSURL *)location toEntry:(KdbEntry *)anEntry {
NSError *error = nil;
NSString *fileName = [location lastPathComponent];
if([anEntry isKindOfClass:[Kdb3Entry class]]) {
Kdb3Entry *entry = (Kdb3Entry *)anEntry;
NSData *binaryData = [NSData dataWithContentsOfURL:location options:NSDataReadingUncached error:&error];
if(!binaryData) {
[NSApp presentError:error];
binaryData = nil;
error = nil;
return; // failed
}
entry.binary = binaryData;
entry.binaryDesc = fileName;
}
if( [anEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)anEntry;
NSData *fileData = [NSData dataWithContentsOfURL:location options:NSDataReadingMappedIfSafe error:&error];
if(!fileData) {
[NSApp presentError:error];
fileData = nil;
error = nil;
return; // failed
}
Binary *binary = [[Binary alloc] init];
NSUInteger nextId = [self nextBinaryId];
if(nextId == NSNotFound) {
binary = nil;
return; // No id found. Something went wrong
}
binary.binaryId = nextId;
binary.compressed = (self.treeV4.compressionAlgorithm != KPLCompressionNone);
NSData *encodedData;
if(binary.compressed) {
switch(self.treeV4.compressionAlgorithm) {
case KPLCompressionGzip: {
NSData *compressedData = [fileData gzipDeflate];
encodedData = [NSMutableData mutableDataWithBase64EncodedData:compressedData];
break;
}
default:
NSAssert(NO, @"Unsupported Compression Algorithm");
binary = nil;
encodedData = nil;
fileData = nil;
return;
}
}
else {
encodedData = fileData;
}
binary.data = [[NSString alloc] initWithData:encodedData encoding:NSASCIIStringEncoding];
[self.treeV4.binaries addObject:binary];
BinaryRef *ref = [[BinaryRef alloc] init];
ref.key = fileName;
ref.ref = binary.binaryId;
[entry insertObject:ref inBinariesAtIndex:[entry.binaries count]];
}
}
- (void)saveAttachmentFromEntry:(KdbEntry *)anEntry toLocation:(NSURL *)location {
if([anEntry isKindOfClass:[Kdb3Entry class]]) {
Kdb3Entry *entry = (Kdb3Entry *)anEntry;
NSError *error = nil;
if(! [entry.binary writeToURL:location options:NSDataWritingWithoutOverwriting error:&error] ) {
[NSApp presentError:error];
}
}
return; //
}
- (void)removeAttachment:(BinaryRef *)reference fromEntry:(KdbEntry *)anEntry {
if(self.version != MPDatabaseVersion4) {
return; // Wrong Database version;
}
Binary *binary = [self findBinary:reference];
Kdb4Entry *entry = (Kdb4Entry *)anEntry;
NSUInteger index = [entry.binaries indexOfObject:reference];
if(index == NSNotFound) {
return; // No Reference for this entry found
}
[entry removeObjectFromBinariesAtIndex:index];
[self.treeV4.binaries removeObject:binary];
}
- (Binary *)findBinary:(BinaryRef *)reference {
if(self.version != MPDatabaseVersion4) {
return nil;
}
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
Binary *binaryFile = evaluatedObject;
return (binaryFile.binaryId == reference.ref);
}];
NSArray *filteredBinary = [self.treeV4.binaries filteredArrayUsingPredicate:filterPredicate];
return [filteredBinary lastObject];
}
- (void)saveAttachment:(BinaryRef *)reference toLocation:(NSURL *)location {
Binary *binary = [self findBinary:reference];
NSData *rawData = nil;
if(binary) {
if(binary.compressed) {
rawData = [NSMutableData mutableDataWithBase64DecodedData:[binary.data dataUsingEncoding:NSASCIIStringEncoding]];
rawData = [rawData gzipInflate];
}
else {
rawData = [NSMutableData mutableDataWithBase64DecodedData:[binary.data dataUsingEncoding:NSASCIIStringEncoding]];
}
NSError *error = nil;
if( ![rawData writeToURL:location options:0 error:&error] ) {
[NSApp presentError:error];
}
}
}
- (NSUInteger)nextBinaryId {
if(self.version != MPDatabaseVersion4) {
return NSNotFound;
}
NSUInteger maxKey = 0;
for(Binary *binary in self.treeV4.binaries) {
maxKey = MAX(binary.binaryId, maxKey);
}
return (maxKey + 1);
}
@end

View File

@@ -42,7 +42,7 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
@property (strong, readonly, nonatomic) KdbTree *tree; @property (strong, readonly, nonatomic) KdbTree *tree;
@property (weak, readonly, nonatomic) KdbGroup *root; @property (weak, readonly, nonatomic) KdbGroup *root;
@property (readonly, strong) MPRootAdapter *rootAdapter; @property (readonly, strong) MPRootAdapter *rootAdapter;
@property (nonatomic, strong) NSString *password; @property (nonatomic, copy) NSString *password;
@property (nonatomic, strong) NSURL *key; @property (nonatomic, strong) NSURL *key;
@property (assign, readonly) MPDatabaseVersion version; @property (assign, readonly) MPDatabaseVersion version;
@@ -57,10 +57,6 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
*/ */
- (KdbEntry *)findEntry:(UUID *)uuid; - (KdbEntry *)findEntry:(UUID *)uuid;
- (KdbGroup *)findGroup:(UUID *)uuid; - (KdbGroup *)findGroup:(UUID *)uuid;
/*
Return the Binary for the given BinaryRef. nil if none was found
*/
- (Binary *)binaryForRef:(BinaryRef *)binaryRef;
- (Kdb4Tree *)treeV4; - (Kdb4Tree *)treeV4;
- (Kdb3Tree *)treeV3; - (Kdb3Tree *)treeV3;
@@ -93,3 +89,14 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
- (void)emptyTrash:(id)sender; - (void)emptyTrash:(id)sender;
@end @end
@interface MPDocument (Attachments)
- (void)addAttachment:(NSURL *)location toEntry:(KdbEntry *)anEntry;
- (void)saveAttachmentFromEntry:(KdbEntry *)anEntry toLocation:(NSURL *)location;
- (void)saveAttachment:(BinaryRef *)reference toLocation:(NSURL *)location;
- (void)removeAttachment:(BinaryRef *)reference fromEntry:(KdbEntry *)anEntry;
- (NSUInteger)nextBinaryId;
- (Binary *)findBinary:(BinaryRef *)reference;
@end

View File

@@ -56,6 +56,8 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
@property (readonly) BOOL useTrash; @property (readonly) BOOL useTrash;
@property (weak, readonly) KdbGroup *trash; @property (weak, readonly) KdbGroup *trash;
@property (strong) IBOutlet NSView *warningView;
@property (weak) IBOutlet NSImageView *warningViewImage;
@end @end
@@ -83,6 +85,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
break; break;
case MPDatabaseVersion4: case MPDatabaseVersion4:
self.tree = [Kdb4Tree templateTree]; self.tree = [Kdb4Tree templateTree];
//self.tree = [Kdb4Tree demoTree];
break; break;
default: default:
self = nil; self = nil;
@@ -117,6 +120,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
} }
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError { - (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
/* FIXME: Logfile handling
self.lockFileURL = [url URLByAppendingPathExtension:@"lock"]; self.lockFileURL = [url URLByAppendingPathExtension:@"lock"];
if([[NSFileManager defaultManager] fileExistsAtPath:[_lockFileURL path]]) { if([[NSFileManager defaultManager] fileExistsAtPath:[_lockFileURL path]]) {
self.readOnly = YES; self.readOnly = YES;
@@ -126,6 +130,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
_didLockFile = YES; _didLockFile = YES;
self.readOnly = NO; self.readOnly = NO;
} }
*/
self.decrypted = NO; self.decrypted = NO;
return YES; return YES;
} }
@@ -172,15 +177,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
- (void)setPassword:(NSString *)password { - (void)setPassword:(NSString *)password {
if(![_password isEqualToString:password]) { if(![_password isEqualToString:password]) {
_password = password; _password = [password copy];
_secured |= ([_password length] > 0); [self _updateIsSecured];
} }
} }
- (void)setKey:(NSURL *)key { - (void)setKey:(NSURL *)key {
if(![[_key absoluteString] isEqualToString:[key absoluteString]]) { if(![[_key absoluteString] isEqualToString:[key absoluteString]]) {
_key = key; _key = key;
_secured |= (_key != nil); [self _updateIsSecured];
} }
} }
@@ -194,6 +199,19 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
return NO; return NO;
} }
- (BOOL)prepareSavePanel:(NSSavePanel *)savePanel {
if(self.isSecured) {
[savePanel setAccessoryView:nil];
return YES;
}
if(!self.warningView) {
[[NSBundle mainBundle] loadNibNamed:@"UnprotectedWarningView" owner:self topLevelObjects:nil];
[self.warningViewImage setImage:[NSImage imageNamed:NSImageNameCaution]];
}
[savePanel setAccessoryView:self.warningView];
return YES;
}
#pragma mark Data Accesors #pragma mark Data Accesors
- (void)setTree:(KdbTree *)tree { - (void)setTree:(KdbTree *)tree {
if(_tree != tree) { if(_tree != tree) {
@@ -214,19 +232,6 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
return [self.root groupForUUID:uuid]; return [self.root groupForUUID:uuid];
} }
- (Binary *)binaryForRef:(BinaryRef *)binaryRef {
if(self.version != MPDatabaseVersion4) {
return nil;
}
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
Binary *binaryFile = evaluatedObject;
return (binaryFile.binaryId == binaryRef.ref);
}];
Kdb4Tree *tree = (Kdb4Tree *)self.tree;
NSArray *filteredBinary = [tree.binaries filteredArrayUsingPredicate:filterPredicate];
return [filteredBinary lastObject];
}
- (Kdb3Tree *)treeV3 { - (Kdb3Tree *)treeV3 {
switch (_version) { switch (_version) {
case MPDatabaseVersion3: case MPDatabaseVersion3:
@@ -301,6 +306,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
} }
KdbGroup *newGroup = [self.tree createGroup:parent]; KdbGroup *newGroup = [self.tree createGroup:parent];
newGroup.name = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group"); newGroup.name = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group");
newGroup.image = MPIconFolder;
[self group:parent addGroup:newGroup atIndex:[parent.groups count]]; [self group:parent addGroup:newGroup atIndex:[parent.groups count]];
NSDictionary *userInfo = @{ MPDocumentGroupKey : newGroup }; NSDictionary *userInfo = @{ MPDocumentGroupKey : newGroup };
[[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidAddGroupNotification object:self userInfo:userInfo]; [[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidAddGroupNotification object:self userInfo:userInfo];
@@ -463,6 +469,12 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
} }
#pragma mark Private #pragma mark Private
- (void)_updateIsSecured {
BOOL securePassword = ([self.password length] > 0);
BOOL secureKey = (nil != self.key);
self.secured = (secureKey || securePassword);
}
- (void)_cleanupLock { - (void)_cleanupLock {
if(_didLockFile) { if(_didLockFile) {
[[NSFileManager defaultManager] removeItemAtURL:_lockFileURL error:nil]; [[NSFileManager defaultManager] removeItemAtURL:_lockFileURL error:nil];

View File

@@ -1,128 +0,0 @@
//
// MPDocumentSettingsWindowController.m
// MacPass
//
// Created by Michael Starke on 26.06.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPDocumentSettingsWindowController.h"
#import "MPDocument.h"
#import "MPDocumentWindowController.h"
#import "MPDatabaseVersion.h"
#import "MPIconHelper.h"
#import "Kdb.h"
#import "Kdb4Node.h"
#import "KdbGroup+MPAdditions.h"
@interface MPDocumentSettingsWindowController () {
MPDocument *_document;
}
@end
@implementation MPDocumentSettingsWindowController
- (id)init {
return [self initWithDocument:nil];
}
- (id)initWithDocument:(MPDocument *)document {
self = [super initWithWindowNibName:@"DocumentSettingsWindow"];
if(self) {
_document = document;
}
return self;
}
- (void)windowDidLoad {
[super windowDidLoad];
NSAssert(_document != nil, @"Document needs to be present");
Kdb4Tree *tree = _document.treeV4;
if( tree ) {
[self _setupDatabase:tree];
[self _setupProtectionTab:tree];
[self _setupAdvancedTab:tree];
[self _setupPasswordTab:tree];
}
else {
// Switch to KdbV3 View
}
}
- (IBAction)close:(id)sender {
[NSApp endSheet:[self window]];
[[self window] orderOut:nil];
}
- (void)update {
/* Update all stuff that might have changed */
Kdb4Tree *tree = _document.treeV4;
if(tree) {
[self _updateTrashFolders:tree];
}
}
#pragma mark Private Helper
- (void)_setupDatabase:(Kdb4Tree *)tree {
[self.databaseNameTextField bind:NSValueBinding toObject:tree withKeyPath:@"databaseName" options:nil];
[self.databaseDescriptionTextView bind:NSValueBinding toObject:tree withKeyPath:@"databaseDescription" options:nil];
}
- (void)_setupProtectionTab:(Kdb4Tree *)tree {
[self.protectNotesCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectNotes" options:nil];
[self.protectPasswortCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectPassword" options:nil];
[self.protectTitleCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectTitle" options:nil];
[self.protectURLCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectUrl" options:nil];
[self.protectUserNameCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectUserName" options:nil];
}
- (void)_setupAdvancedTab:(Kdb4Tree *)tree {
[self.enableRecycleBinCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"recycleBinEnabled" options:nil];
[self.selectRecycleBinGroupPopUpButton bind:NSEnabledBinding toObject:tree withKeyPath:@"recycleBinEnabled" options:nil];
[self _updateTrashFolders:tree];
}
- (void)_setupPasswordTab:(Kdb4Tree *)tree {
}
- (void)_didSelectTrashFolder:(id)sender {
NSMenuItem *menuItem = sender;
/* if we do not get a group, use nil to reset the trash */
KdbGroup *group = [menuItem representedObject];
[_document useGroupAsTrash:group];
}
- (void)_updateTrashFolders:(Kdb4Tree *)tree {
NSMenu *menu = [self _buildTreeMenu:tree];
[self.selectRecycleBinGroupPopUpButton setMenu:menu];
}
- (NSMenu *)_buildTreeMenu:(Kdb4Tree *)tree {
NSMenu *menu = [[NSMenu alloc] init];
for(Kdb4Group *group in tree.root.groups) {
NSMenuItem *groupItem = [[NSMenuItem alloc] init];
[groupItem setImage:group.icon];
[groupItem setTitle:group.name];
[groupItem setAction:@selector(_didSelectTrashFolder:)];
[groupItem setTarget:self];
[groupItem setRepresentedObject:group];
if([group.uuid isEqual:tree.recycleBinUuid]) {
[groupItem setState:NSOnState];
}
[menu addItem:groupItem];
}
NSMenuItem *selectItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SELECT_RECYCLEBIN", @"Menu item if no reycleBin is selected") action:NULL keyEquivalent:@""];
[selectItem setAction:@selector(_didSelectTrashFolder:)];
[selectItem setTarget:self];
[menu insertItem:selectItem atIndex:0];
return menu;
}
@end

View File

@@ -11,7 +11,6 @@
@class MPViewController; @class MPViewController;
@class MPEntryViewController; @class MPEntryViewController;
@class MPInspectorViewController; @class MPInspectorViewController;
@class MPPasswordEditViewController;
@class MPPasswordInputController; @class MPPasswordInputController;
@class MPOutlineViewController; @class MPOutlineViewController;
@@ -23,7 +22,6 @@ APPKIT_EXTERN NSString *const MPCurrentItemChangedNotification;
@interface MPDocumentWindowController : NSWindowController <NSWindowDelegate> @interface MPDocumentWindowController : NSWindowController <NSWindowDelegate>
@property (readonly, strong) MPPasswordInputController *passwordInputController; @property (readonly, strong) MPPasswordInputController *passwordInputController;
@property (readonly, strong) MPPasswordEditViewController *passwordEditController;
@property (readonly, strong) MPEntryViewController *entryViewController; @property (readonly, strong) MPEntryViewController *entryViewController;
@property (readonly, strong) MPOutlineViewController *outlineViewController; @property (readonly, strong) MPOutlineViewController *outlineViewController;
@property (readonly, strong) MPInspectorViewController *inspectorViewController; @property (readonly, strong) MPInspectorViewController *inspectorViewController;
@@ -39,7 +37,7 @@ APPKIT_EXTERN NSString *const MPCurrentItemChangedNotification;
- (void)showPasswordInput; - (void)showPasswordInput;
- (void)performFindPanelAction:(id)sender; - (void)performFindPanelAction:(id)sender;
- (IBAction)editPassword:(id)sender; - (IBAction)editPassword:(id)sender;
- (IBAction)showDocumentSettings:(id)sender; - (IBAction)showDatabaseSettings:(id)sender;
- (void)lock:(id)sender; - (void)lock:(id)sender;

View File

@@ -10,13 +10,12 @@
#import "MPDocument.h" #import "MPDocument.h"
#import "MPPasswordInputController.h" #import "MPPasswordInputController.h"
#import "MPEntryViewController.h" #import "MPEntryViewController.h"
#import "MPPasswordEditViewController.h"
#import "MPToolbarDelegate.h" #import "MPToolbarDelegate.h"
#import "MPOutlineViewController.h" #import "MPOutlineViewController.h"
#import "MPInspectorViewController.h" #import "MPInspectorViewController.h"
#import "MPAppDelegate.h" #import "MPAppDelegate.h"
#import "MPActionHelper.h" #import "MPActionHelper.h"
#import "MPDocumentSettingsWindowController.h" #import "MPDatabaseSettingsWindowController.h"
#import "MPConstants.h" #import "MPConstants.h"
NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCurrentItemChangedNotification"; NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCurrentItemChangedNotification";
@@ -34,11 +33,10 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
@property (unsafe_unretained) KdbEntry *currentEntry; @property (unsafe_unretained) KdbEntry *currentEntry;
@property (strong) MPPasswordInputController *passwordInputController; @property (strong) MPPasswordInputController *passwordInputController;
@property (strong) MPPasswordEditViewController *passwordEditController;
@property (strong) MPEntryViewController *entryViewController; @property (strong) MPEntryViewController *entryViewController;
@property (strong) MPOutlineViewController *outlineViewController; @property (strong) MPOutlineViewController *outlineViewController;
@property (strong) MPInspectorViewController *inspectorViewController; @property (strong) MPInspectorViewController *inspectorViewController;
@property (strong) MPDocumentSettingsWindowController *documentSettingsWindowController; @property (strong) MPDatabaseSettingsWindowController *documentSettingsWindowController;
@property (strong) MPToolbarDelegate *toolbarDelegate; @property (strong) MPToolbarDelegate *toolbarDelegate;
@@ -52,7 +50,6 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
_firstResponder = nil; _firstResponder = nil;
_toolbarDelegate = [[MPToolbarDelegate alloc] init]; _toolbarDelegate = [[MPToolbarDelegate alloc] init];
_outlineViewController = [[MPOutlineViewController alloc] init]; _outlineViewController = [[MPOutlineViewController alloc] init];
_passwordEditController = [[MPPasswordEditViewController alloc] init];
_entryViewController = [[MPEntryViewController alloc] init]; _entryViewController = [[MPEntryViewController alloc] init];
_inspectorViewController = [[MPInspectorViewController alloc] init]; _inspectorViewController = [[MPInspectorViewController alloc] init];
_currentItem = nil; _currentItem = nil;
@@ -205,18 +202,11 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
} }
- (void)editPassword:(id)sender { - (void)editPassword:(id)sender {
if(!self.passwordEditController) { [self _showDatabaseSetting:MPDatabaseSettingsTabPassword];
_passwordEditController = [[MPPasswordEditViewController alloc] init];
}
[self _setContentViewController:self.passwordEditController];
} }
- (void)showDocumentSettings:(id)sender { - (void)showDatabaseSettings:(id)sender {
if(!self.documentSettingsWindowController) { [self _showDatabaseSetting:MPDatabaseSettingsTabGeneral];
_documentSettingsWindowController = [[MPDocumentSettingsWindowController alloc] initWithDocument:[self document]];
}
[_documentSettingsWindowController update];
[[NSApplication sharedApplication] beginSheet:[_documentSettingsWindowController window] modalForWindow:[self window] modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
} }
- (void)lock:(id)sender { - (void)lock:(id)sender {
@@ -335,6 +325,16 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
#pragma mark Helper #pragma mark Helper
- (void)_showDatabaseSetting:(MPDatabaseSettingsTab)tab {
if(!self.documentSettingsWindowController) {
_documentSettingsWindowController = [[MPDatabaseSettingsWindowController alloc] initWithDocument:[self document]];
}
[self.documentSettingsWindowController update];
[self.documentSettingsWindowController showSettingsTab:tab];
[[NSApplication sharedApplication] beginSheet:[self.documentSettingsWindowController window] modalForWindow:[self window] modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
}
- (NSSearchField *)locateToolbarSearchField { - (NSSearchField *)locateToolbarSearchField {
for(NSToolbarItem *toolbarItem in [[self.window toolbar] items]) { for(NSToolbarItem *toolbarItem in [[self.window toolbar] items]) {
NSView *view = [toolbarItem view]; NSView *view = [toolbarItem view];

View File

@@ -159,6 +159,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
[self.entryTable setDataSource:_dataSource]; [self.entryTable setDataSource:_dataSource];
[parentColumn setHidden:YES]; [parentColumn setHidden:YES];
} }
- (void)setupNotifications:(MPDocumentWindowController *)windowController { - (void)setupNotifications:(MPDocumentWindowController *)windowController {

View File

@@ -1,16 +0,0 @@
//
// MPFirstResonderNotification.h
// MacPass
//
// Created by Michael Starke on 20.06.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol MPFirstResonderNotification <NSObject>
@required
- (BOOL)becomeFirstResponder;
@end

View File

@@ -15,13 +15,23 @@ typedef NS_ENUM(NSUInteger, MPIconType) {
MPIconServer, MPIconServer,
MPIconKlipper, MPIconKlipper,
MPIconLanguages, MPIconLanguages,
MPIconBlockDevice,
MPIconNotepad, MPIconNotepad,
MPIconSocket, MPIconSocket,
MPIconIdentity, MPIconIdentity,
MPIconContact, MPIconContact,
MPIconCamera, MPIconCamera,
MPIconTrash, MPIconRemote,
MPIconInfo MPIconKeys,
MPIconDisplay = 18,
MPIconFileSave = 26,
MPIconTrash = 43,
MPIconFolder = 48,
MPIconPhone = 68,
/* Custom Icons not used in Database */
MPIconInfo = 1000,
MPIconAddFolder,
MPIconHardDisk,
}; };
@interface MPIconHelper : NSObject @interface MPIconHelper : NSObject

View File

@@ -10,13 +10,17 @@
@implementation MPIconHelper @implementation MPIconHelper
static NSDictionary *icons;
+ (NSImage *)icon:(MPIconType)type { + (NSImage *)icon:(MPIconType)type {
NSDictionary *icons = [MPIconHelper availableIconNames]; if(!icons) {
if(type >= [icons count]) { icons = [MPIconHelper availableIconNames];
return [NSImage imageNamed:NSImageNameActionTemplate];
} }
NSString *imageName = icons[@(type)]; if([[icons allKeys] containsObject:@(type)]) {
return [[NSBundle mainBundle] imageForResource:imageName]; NSString *imageName = icons[@(type)];
return [[NSBundle mainBundle] imageForResource:imageName];
}
return [NSImage imageNamed:NSImageNameActionTemplate];
} }
+ (NSArray *)availableIcons { + (NSArray *)availableIcons {
@@ -30,20 +34,36 @@
} }
+ (NSDictionary *)availableIconNames { + (NSDictionary *)availableIconNames {
NSDictionary *imageNames = @{ @(MPIconKlipper): @"04_KlipperTemplate", NSDictionary *imageNames = @{
@(MPIconLanguages): @"05_LanguagesTemplate", @(MPIconPassword): @"00_PasswordTemplate",
@(MPIconPackageNetwork): @"01_PackageNetworkTemplate", @(MPIconPackageNetwork): @"01_PackageNetworkTemplate",
@(MPIconPassword): @"00_PasswordTemplate", @(MPIconWarning): @"02_MessageBoxWarningTemplate",
@(MPIconServer): @"03_ServerTemplate", @(MPIconServer): @"03_ServerTemplate",
@(MPIconWarning): @"02_MessageBoxWarningTemplate", @(MPIconKlipper): @"04_KlipperTemplate",
@(MPIconCamera): @"11_CameraTemplate", @(MPIconLanguages): @"05_LanguagesTemplate",
@(MPIconContact): @"10_ContactTemplate", @(MPIconBlockDevice): @"06_BlockDeviceTemplate",
@(MPIconIdentity): @"09_IdentityTemplate", @(MPIconNotepad): @"07_NotepadTemplate",
@(MPIconNotepad): @"07_NotepadTemplate", @(MPIconSocket): @"08_SocketTemplate",
@(MPIconSocket): @"08_SocketTemplate", @(MPIconIdentity): @"09_IdentityTemplate",
@(MPIconTrash): @"43_TrashTemplate", @(MPIconContact): @"10_ContactTemplate",
@(MPIconInfo): @"99_InfoTemplate" @(MPIconCamera): @"11_CameraTemplate",
}; @(MPIconRemote): @"12_RemoteTemplate",
@(MPIconKeys): @"13_KeysTemplate",
@(MPIconDisplay): @"18_DisplayTemplate",
@(MPIconFileSave): @"26_FileSaveTemplate",
@(MPIconTrash): @"43_TrashTemplate",
@(MPIconFolder): @"48_FolderTemplate",
@(MPIconPhone): @"68_PhoneTemplate",
@(MPIconInfo): @"99_InfoTemplate",
@(MPIconAddFolder): @"99_AddFolderTemplate",
@(MPIconHardDisk): @"99_HarddiskTemplate"
};
return imageNames; return imageNames;
} }

View File

@@ -12,6 +12,7 @@
@class KdbEntry; @class KdbEntry;
@class KdbGroup; @class KdbGroup;
@class HNHGradientView; @class HNHGradientView;
@class HNHRoundedSecureTextField;
@class MPDocumentWindowController; @class MPDocumentWindowController;
@interface MPInspectorViewController : MPViewController <NSPopoverDelegate, NSTableViewDelegate> @interface MPInspectorViewController : MPViewController <NSPopoverDelegate, NSTableViewDelegate>
@@ -22,7 +23,7 @@
@property (weak) IBOutlet NSTextField *titleTextField; @property (weak) IBOutlet NSTextField *titleTextField;
@property (weak) IBOutlet NSTextField *usernameTextField; @property (weak) IBOutlet NSTextField *usernameTextField;
@property (weak) IBOutlet NSTextField *URLTextField; @property (weak) IBOutlet NSTextField *URLTextField;
@property (weak) IBOutlet NSTextField *passwordTextField; @property (weak) IBOutlet HNHRoundedSecureTextField *passwordTextField;
@property (weak) IBOutlet NSTextField *titleOrNameLabel; @property (weak) IBOutlet NSTextField *titleOrNameLabel;
@property (weak) IBOutlet HNHGradientView *bottomBar; @property (weak) IBOutlet HNHGradientView *bottomBar;
@property (weak) IBOutlet NSTextField *createdTextField; @property (weak) IBOutlet NSTextField *createdTextField;
@@ -32,6 +33,7 @@
@property (weak) IBOutlet NSTableView *customFieldsTableView; @property (weak) IBOutlet NSTableView *customFieldsTableView;
@property (unsafe_unretained) IBOutlet NSTextView *notesTextView; @property (unsafe_unretained) IBOutlet NSTextView *notesTextView;
@property (weak) IBOutlet NSTextField *customFieldsTextField; @property (weak) IBOutlet NSTextField *customFieldsTextField;
@property (weak) IBOutlet NSButton *togglePassword;
/* Seperate call to ensure alle registered objects are in place */ /* Seperate call to ensure alle registered objects are in place */

View File

@@ -19,6 +19,7 @@
#import "MPCustomFieldView.h" #import "MPCustomFieldView.h"
#import "MPDatabaseVersion.h" #import "MPDatabaseVersion.h"
#import "MPCustomFieldTableCellView.h" #import "MPCustomFieldTableCellView.h"
#import "MPSelectedAttachmentTableCellView.h"
#import "KdbLib.h" #import "KdbLib.h"
#import "Kdb4Node.h" #import "Kdb4Node.h"
@@ -30,6 +31,8 @@
#import "NSMutableData+Base64.h" #import "NSMutableData+Base64.h"
#import "HNHGradientView.h" #import "HNHGradientView.h"
#import "HNHTableRowView.h"
#import "HNHRoundedSecureTextField.h"
enum { enum {
MPGeneralTab, MPGeneralTab,
@@ -51,6 +54,8 @@ enum {
@property (nonatomic, weak) NSDate *modificationDate; @property (nonatomic, weak) NSDate *modificationDate;
@property (nonatomic, weak) NSDate *creationDate; @property (nonatomic, weak) NSDate *creationDate;
@property (nonatomic, assign) BOOL showPassword;
@property (nonatomic, assign) NSUInteger activeTab; @property (nonatomic, assign) NSUInteger activeTab;
@property (weak) IBOutlet NSTabView *tabView; @property (weak) IBOutlet NSTabView *tabView;
@property (strong) NSArrayController *attachmentsController; @property (strong) NSArrayController *attachmentsController;
@@ -58,6 +63,9 @@ enum {
- (IBAction)addCustomField:(id)sender; - (IBAction)addCustomField:(id)sender;
- (IBAction)removeCustomField:(id)sender; - (IBAction)removeCustomField:(id)sender;
- (IBAction)saveAttachment:(id)sender;
- (IBAction)addAttachment:(id)sender;
- (IBAction)removeAttachment:(id)sender;
@end @end
@@ -70,6 +78,7 @@ enum {
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) { if (self) {
_showPassword = NO;
_selectedEntry = nil; _selectedEntry = nil;
_selectedGroup = nil; _selectedGroup = nil;
_attachmentsController = [[NSArrayController alloc] init]; _attachmentsController = [[NSArrayController alloc] init];
@@ -92,7 +101,7 @@ enum {
[_infoTabControl bind:NSSelectedIndexBinding toObject:self withKeyPath:@"activeTab" options:nil]; [_infoTabControl bind:NSSelectedIndexBinding toObject:self withKeyPath:@"activeTab" options:nil];
[_tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:@"activeTab" options:nil]; [_tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:@"activeTab" options:nil];
/* Set background to clearcolor so we can draw in the scrollview */ /* Set background to clearcolor so we can draw in the scrollview */
[_attachmentTableView setBackgroundColor:[NSColor clearColor]]; [_attachmentTableView setBackgroundColor:[NSColor clearColor]];
[_attachmentTableView bind:NSContentBinding toObject:self.attachmentsController withKeyPath:@"arrangedObjects" options:nil]; [_attachmentTableView bind:NSContentBinding toObject:self.attachmentsController withKeyPath:@"arrangedObjects" options:nil];
[_attachmentTableView setDelegate:self]; [_attachmentTableView setDelegate:self];
@@ -101,6 +110,9 @@ enum {
[_customFieldsTableView bind:NSContentBinding toObject:self.customFieldsController withKeyPath:@"arrangedObjects" options:nil]; [_customFieldsTableView bind:NSContentBinding toObject:self.customFieldsController withKeyPath:@"arrangedObjects" options:nil];
[_customFieldsTableView setDelegate:self]; [_customFieldsTableView setDelegate:self];
[self.passwordTextField bind:@"showPassword" toObject:self withKeyPath:@"showPassword" options:nil];
[self.togglePassword bind:NSValueBinding toObject:self withKeyPath:@"showPassword" options:nil];
[self _clearContent]; [self _clearContent];
} }
@@ -250,6 +262,7 @@ enum {
enabled &= (self.selectedEntry != nil); enabled &= (self.selectedEntry != nil);
[self.passwordTextField setEnabled:enabled]; [self.passwordTextField setEnabled:enabled];
[self.togglePassword setEnabled:enabled];
[self.usernameTextField setEnabled:enabled]; [self.usernameTextField setEnabled:enabled];
[self.URLTextField setEnabled:enabled]; [self.URLTextField setEnabled:enabled];
[self.generatePasswordButton setEnabled:enabled]; [self.generatePasswordButton setEnabled:enabled];
@@ -313,6 +326,50 @@ enum {
[document entry:entry removeStringField:(entry.stringFields)[index]]; [document entry:entry removeStringField:(entry.stringFields)[index]];
} }
- (IBAction)saveAttachment:(id)sender {
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
BinaryRef *reference = entry.binaries[[sender tag]];
NSSavePanel *savePanel = [NSSavePanel savePanel];
[savePanel setCanCreateDirectories:YES];
[savePanel setNameFieldStringValue:reference.key];
[savePanel beginSheetModalForWindow:[[self windowController] window] completionHandler:^(NSInteger result) {
if(result == NSFileHandlingPanelOKButton) {
MPDocument *document = [[self windowController] document];
[document saveAttachment:reference toLocation:[savePanel URL]];
}
}];
}
- (IBAction)addAttachment:(id)sender {
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseDirectories:NO];
[openPanel setCanChooseFiles:YES];
[openPanel setAllowsMultipleSelection:YES];
[openPanel beginSheetModalForWindow:[[self windowController] window] completionHandler:^(NSInteger result) {
if(result == NSFileHandlingPanelOKButton) {
MPDocument *document = [[self windowController] document];
for (NSURL *attachmentURL in [openPanel URLs]) {
[document addAttachment:attachmentURL toEntry:self.selectedEntry];
}
}
}];
}
- (IBAction)removeAttachment:(id)sender {
MPDocument *document = [[self windowController] document];
if(document.version == MPDatabaseVersion3) {
// Uhhhh :D
}
if(document.version == MPDatabaseVersion4) {
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
BinaryRef *reference = entry.binaries[[sender tag]];
[document removeAttachment:reference fromEntry:self.selectedEntry];
}
}
#pragma mark Notificiations #pragma mark Notificiations
- (void)_didChangeCurrentItem:(NSNotification *)notification { - (void)_didChangeCurrentItem:(NSNotification *)notification {
MPDocumentWindowController *sender = [notification object]; MPDocumentWindowController *sender = [notification object];
@@ -354,8 +411,20 @@ enum {
- (NSView *)_viewForAttachmentTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { - (NSView *)_viewForAttachmentTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
/* Decide what view to use */ /* Decide what view to use */
NSIndexSet *selectedIndexes = [self.attachmentTableView selectedRowIndexes]; NSIndexSet *selectedIndexes = [self.attachmentTableView selectedRowIndexes];
NSString *viewIdentifyer = [selectedIndexes containsIndex:row] ? @"SelectedCell" : @"NormalCell"; NSTableCellView *view;
NSTableCellView *view = [_attachmentTableView makeViewWithIdentifier:viewIdentifyer owner:_attachmentTableView]; 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 */ /* Bind view */
if([self.selectedEntry isKindOfClass:[Kdb4Entry class]]) { if([self.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry; Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
@@ -380,6 +449,15 @@ enum {
return view; 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 { - (void)_customFieldFrameChanged:(NSNotification *)notification {
// NSView *sender = [notification object]; // NSView *sender = [notification object];
// NSLog(@"didChangeFrameFor: %@ to: %@", sender, NSStringFromRect([sender frame])); // NSLog(@"didChangeFrameFor: %@ to: %@", sender, NSStringFromRect([sender frame]));

View File

@@ -141,14 +141,20 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
if( [self _itemIsRootNodeAdapter:item] ) { if( [self _itemIsRootNodeAdapter:item] ) {
//NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPUppsercaseStringValueTransformerName] }; //NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPUppsercaseStringValueTransformerName] };
view = [outlineView makeViewWithIdentifier:_MPOutlinveViewHeaderViewIdentifier owner:self]; view = [outlineView makeViewWithIdentifier:_MPOutlinveViewHeaderViewIdentifier owner:self];
[view.textField setStringValue:NSLocalizedString(@"GROUPS", @"")]; MPRootAdapter *rootNode = [item representedObject];
if([rootNode.tree respondsToSelector:@selector(databaseName)]) {
[view.textField bind:NSValueBinding toObject:rootNode.tree withKeyPath:@"databaseName" options:nil];
}
else {
[view.textField setStringValue:NSLocalizedString(@"GROUPS", @"")];
}
} }
else { else {
KdbGroup *group = [item representedObject]; KdbGroup *group = [item representedObject];
view = [outlineView makeViewWithIdentifier:_MPOutlineViewDataViewIdentifier owner:self]; view = [outlineView makeViewWithIdentifier:_MPOutlineViewDataViewIdentifier owner:self];
NSImage *icon = [MPIconHelper icon:(MPIconType)[group image]]; NSImage *icon = [MPIconHelper icon:(MPIconType)[group image]];
[view.imageView setImage:icon]; [view.imageView setImage:icon];
[view.textField bind:NSValueBinding toObject:group withKeyPath:@"name" options:nil]; [view.textField bind:NSValueBinding toObject:group withKeyPath:MPGroupNameUndoableKey options:nil];
[view.textField bind:@"count" toObject:group withKeyPath:@"entries.@count" options:nil]; [view.textField bind:@"count" toObject:group withKeyPath:@"entries.@count" options:nil];
} }

View File

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

View File

@@ -1,67 +0,0 @@
//
// MPPasswordEditViewController.m
// MacPass
//
// Created by Michael Starke on 29.04.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPPasswordEditViewController.h"
#import "MPKeyfilePathControlDelegate.h"
#import "MPDocumentWindowController.h"
#import "MPDocument.h"
@interface MPPasswordEditViewController ()
@property (weak) IBOutlet NSSecureTextField *passwordTextField;
@property (weak) IBOutlet NSPathControl *keyfilePathControl;
@property (strong) MPKeyfilePathControlDelegate *pathControlDelegate;
- (IBAction)_change:(id)sender;
- (IBAction)_cancel:(id)sender;
@end
@implementation MPPasswordEditViewController
- (id)init {
return [self initWithNibName:@"PasswordEditView" bundle:nil];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(self) {
_pathControlDelegate = [[MPKeyfilePathControlDelegate alloc] init];
}
return self;
}
- (NSResponder *)reconmendedFirstResponder {
return self.passwordTextField;
}
- (void)didLoadView {
[self.keyfilePathControl setDelegate:self.pathControlDelegate];
}
- (IBAction)_change:(id)sender {
MPDocument *document = [[self windowController] document];
if(document) {
document.key = [self.keyfilePathControl URL];
NSString *password = [self.passwordTextField stringValue];
if([password length] > 0) {
document.password = password;
}
else {
document.password = nil;
}
}
id mainWindowController = [[[self view] window] windowController];
[mainWindowController showEntries];
}
- (IBAction)_cancel:(id)sender {
id mainWindowController = [[[self view] window] windowController];
[mainWindowController showEntries];
}
@end

View File

@@ -11,15 +11,20 @@
#import "MPDocument.h" #import "MPDocument.h"
#import "MPKeyfilePathControlDelegate.h" #import "MPKeyfilePathControlDelegate.h"
#import "HNHRoundedSecureTextField.h"
@interface MPPasswordInputController () @interface MPPasswordInputController ()
@property (weak) IBOutlet NSTextField *passwordTextField; @property (weak) IBOutlet HNHRoundedSecureTextField *passwordTextField;
@property (weak) IBOutlet NSPathControl *keyPathControl; @property (weak) IBOutlet NSPathControl *keyPathControl;
@property (strong) MPKeyfilePathControlDelegate *pathControlDelegate; @property (strong) MPKeyfilePathControlDelegate *pathControlDelegate;
@property (weak) IBOutlet NSImageView *errorImageView; @property (weak) IBOutlet NSImageView *errorImageView;
@property (weak) IBOutlet NSTextField *errorInfoTextField; @property (weak) IBOutlet NSTextField *errorInfoTextField;
@property (weak) IBOutlet NSButton *togglePasswordButton;
@property (assign) BOOL showPassword;
- (IBAction)_decrypt:(id)sender; - (IBAction)_decrypt:(id)sender;
- (IBAction)_clearKey:(id)sender;
@end @end
@@ -33,6 +38,8 @@
- (void)didLoadView { - (void)didLoadView {
[self.keyPathControl setDelegate:self.pathControlDelegate]; [self.keyPathControl setDelegate:self.pathControlDelegate];
[self.errorImageView setImage:[NSImage imageNamed:NSImageNameCaution]]; [self.errorImageView setImage:[NSImage imageNamed:NSImageNameCaution]];
[self.passwordTextField bind:@"showPassword" toObject:self withKeyPath:@"showPassword" options:nil];
[self.togglePasswordButton bind:NSValueBinding toObject:self withKeyPath:@"showPassword" options:nil];
[self _reset]; [self _reset];
} }
@@ -44,7 +51,10 @@
// show Warnign if read-only mode! // show Warnign if read-only mode!
[self _reset]; [self _reset];
} }
#pragma mark NSTextViewDelegate
#pragma mark -
#pragma mark Private
- (IBAction)_decrypt:(id)sender { - (IBAction)_decrypt:(id)sender {
id windowController = [[[self view] window] windowController]; id windowController = [[[self view] window] windowController];
MPDocument *document = [windowController document]; MPDocument *document = [windowController document];
@@ -70,7 +80,12 @@
} }
} }
- (IBAction)_clearKey:(id)sender {
[self.keyPathControl setURL:nil];
}
- (void)_reset { - (void)_reset {
self.showPassword = NO;
[self.passwordTextField setStringValue:@""]; [self.passwordTextField setStringValue:@""];
[self.keyPathControl setURL:nil]; [self.keyPathControl setURL:nil];
[self.errorInfoTextField setHidden:YES]; [self.errorInfoTextField setHidden:YES];

View File

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

View File

@@ -0,0 +1,13 @@
//
// MPPasswordStringFormatter.m
// MacPass
//
// Created by Michael Starke on 06.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPPasswordStringFormatter.h"
@implementation MPPasswordStringFormatter
@end

View File

@@ -1,15 +0,0 @@
//
// MPResponderQuery.h
// MacPass
//
// Created by Michael Starke on 11.06.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol MPResponderQuery <NSObject>
@required
- (BOOL)containsFirstResponder;
@end

View File

@@ -12,5 +12,6 @@
@interface MPSelectedAttachmentTableCellView : NSTableCellView @interface MPSelectedAttachmentTableCellView : NSTableCellView
@property (nonatomic, weak) IBOutlet NSButton *saveButton; @property (nonatomic, weak) IBOutlet NSButton *saveButton;
@property (nonatomic, weak) IBOutlet NSButton *removeButton;
@end @end

View File

@@ -121,7 +121,7 @@ NSString *const MPToolbarItemInspector = @"TOOLBAR_INSPECTOR";
- (NSDictionary *)createToolbarImages{ - (NSDictionary *)createToolbarImages{
NSDictionary *imageDict = @{ MPToolbarItemLock: [NSImage imageNamed:NSImageNameLockUnlockedTemplate], NSDictionary *imageDict = @{ MPToolbarItemLock: [NSImage imageNamed:NSImageNameLockUnlockedTemplate],
MPToolbarItemAddEntry: [MPIconHelper icon:MPIconPassword], MPToolbarItemAddEntry: [MPIconHelper icon:MPIconPassword],
MPToolbarItemAddGroup: [MPIconHelper icon:MPIconPassword], MPToolbarItemAddGroup: [MPIconHelper icon:MPIconAddFolder],
MPToolbarItemDelete: [MPIconHelper icon:MPIconTrash], MPToolbarItemDelete: [MPIconHelper icon:MPIconTrash],
MPToolbarItemAction: [NSImage imageNamed:NSImageNameActionTemplate], MPToolbarItemAction: [NSImage imageNamed:NSImageNameActionTemplate],
MPToolbarItemInspector: [MPIconHelper icon:MPIconInfo], MPToolbarItemInspector: [MPIconHelper icon:MPIconInfo],

View File

@@ -34,7 +34,7 @@
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string> <string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string></string> <string>MacPass</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>com.hicknhacksoftware.${PRODUCT_NAME:rfc1034identifier}</string> <string>com.hicknhacksoftware.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
@@ -44,11 +44,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.2</string> <string>0.3.1</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1883</string> <string>2301</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string> <string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>

View File

@@ -57,6 +57,7 @@
<string key="NSFrame">{{7, 5}, {32, 19}}</string> <string key="NSFrame">{{7, 5}, {32, 19}}</string>
<reference key="NSSuperview" ref="789399035"/> <reference key="NSSuperview" ref="789399035"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="573415016"> <object class="NSButtonCell" key="NSCell" id="573415016">
@@ -156,7 +157,7 @@
<int key="NSfFlags">1044</int> <int key="NSfFlags">1044</int>
</object> </object>
<reference key="NSControlView" ref="920491699"/> <reference key="NSControlView" ref="920491699"/>
<object class="NSColor" key="NSBackgroundColor" id="501306061"> <object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string> <string key="NSColorName">controlBackgroundColor</string>
@@ -224,7 +225,6 @@
<reference key="NSNextKeyView" ref="920491699"/> <reference key="NSNextKeyView" ref="920491699"/>
<string key="NSReuseIdentifierKey">_NS:11</string> <string key="NSReuseIdentifierKey">_NS:11</string>
<reference key="NSDocView" ref="920491699"/> <reference key="NSDocView" ref="920491699"/>
<reference key="NSBGColor" ref="501306061"/>
<int key="NScvFlags">4</int> <int key="NScvFlags">4</int>
</object> </object>
<object class="NSScroller" id="1009004098"> <object class="NSScroller" id="1009004098">
@@ -370,6 +370,7 @@
<object class="NSImageView" id="273100869"> <object class="NSImageView" id="273100869">
<reference key="NSNextResponder" ref="980203382"/> <reference key="NSNextResponder" ref="980203382"/>
<int key="NSvFlags">268</int> <int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<set class="NSMutableSet" key="NSDragTypes"> <set class="NSMutableSet" key="NSDragTypes">
<string>Apple PDF pasteboard type</string> <string>Apple PDF pasteboard type</string>
<string>Apple PICT pasteboard type</string> <string>Apple PICT pasteboard type</string>
@@ -392,7 +393,7 @@
</object> </object>
<string key="NSCellIdentifier">_NS:71</string> <string key="NSCellIdentifier">_NS:71</string>
<int key="NSAlign">0</int> <int key="NSAlign">0</int>
<int key="NSScale">0</int> <int key="NSScale">2</int>
<int key="NSStyle">0</int> <int key="NSStyle">0</int>
<bool key="NSAnimates">NO</bool> <bool key="NSAnimates">NO</bool>
</object> </object>

View File

@@ -0,0 +1,434 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12E55</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.39</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">3084</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBNSLayoutConstraint</string>
<string>NSCustomObject</string>
<string>NSCustomView</string>
<string>NSImageCell</string>
<string>NSImageView</string>
<string>NSTextField</string>
<string>NSTextFieldCell</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">MPDocument</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomView" id="1005">
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSImageView" id="914116063">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<set class="NSMutableSet" key="NSDragTypes">
<string>Apple PDF pasteboard type</string>
<string>Apple PICT pasteboard type</string>
<string>Apple PNG pasteboard type</string>
<string>NSFilenamesPboardType</string>
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
<string>NeXT TIFF v4.0 pasteboard type</string>
</set>
<string key="NSFrame">{{36, 19}, {32, 32}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="724782086"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="869029655">
<int key="NSCellFlags">134217728</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">02_MessageBoxWarningTemplate</string>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<int key="NSAlign">0</int>
<int key="NSScale">3</int>
<int key="NSStyle">0</int>
<bool key="NSAnimates">NO</bool>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
<object class="NSTextField" id="724782086">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{73, 27}, {162, 17}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="470987877">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Database is unprotected!</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="724782086"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrameSize">{307, 71}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="914116063"/>
<string key="NSClassName">NSView</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">warningView</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="1005"/>
</object>
<int key="connectionID">24</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">warningViewImage</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="914116063"/>
</object>
<int key="connectionID">36</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="1005"/>
<array class="NSMutableArray" key="children">
<reference ref="724782086"/>
<object class="IBNSLayoutConstraint" id="723389949">
<reference key="firstItem" ref="724782086"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="914116063"/>
<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="1005"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="108837154">
<reference key="firstItem" ref="724782086"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
<int key="secondAttribute">9</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="165398105">
<reference key="firstItem" ref="914116063"/>
<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>
<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="560291886">
<reference key="firstItem" ref="914116063"/>
<int key="firstAttribute">10</int>
<int key="relation">0</int>
<reference key="secondItem" ref="724782086"/>
<int key="secondAttribute">10</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="425703234">
<reference key="firstItem" ref="914116063"/>
<int key="firstAttribute">5</int>
<int key="relation">1</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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<reference ref="914116063"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="724782086"/>
<array class="NSMutableArray" key="children">
<reference ref="470987877"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="108837154"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="470987877"/>
<reference key="parent" ref="724782086"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">25</int>
<reference key="object" ref="914116063"/>
<array class="NSMutableArray" key="children">
<reference ref="869029655"/>
<object class="IBNSLayoutConstraint" id="622632481">
<reference key="firstItem" ref="914116063"/>
<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">32</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="914116063"/>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="contentType">1</int>
</object>
<object class="IBNSLayoutConstraint" id="939990693">
<reference key="firstItem" ref="914116063"/>
<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">32</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="914116063"/>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">26</int>
<reference key="object" ref="869029655"/>
<reference key="parent" ref="914116063"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">35</int>
<reference key="object" ref="425703234"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">38</int>
<reference key="object" ref="939990693"/>
<reference key="parent" ref="914116063"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">39</int>
<reference key="object" ref="622632481"/>
<reference key="parent" ref="914116063"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">41</int>
<reference key="object" ref="560291886"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">42</int>
<reference key="object" ref="165398105"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">43</int>
<reference key="object" ref="723389949"/>
<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 class="NSMutableArray" key="1.IBNSViewMetadataConstraints">
<reference ref="425703234"/>
<reference ref="560291886"/>
<reference ref="165398105"/>
<reference ref="108837154"/>
<reference ref="723389949"/>
</array>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="2.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="25.IBNSViewMetadataConstraints">
<reference ref="939990693"/>
<reference ref="622632481"/>
</array>
<boolean value="NO" key="25.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="42.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="43.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">43</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">MPDocument</string>
<string key="superclassName">NSDocument</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="warningView">NSView</string>
<string key="warningViewImage">NSImageView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="warningView">
<string key="name">warningView</string>
<string key="candidateClassName">NSView</string>
</object>
<object class="IBToOneOutletInfo" key="warningViewImage">
<string key="name">warningViewImage</string>
<string key="candidateClassName">NSImageView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPDocument.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSLayoutConstraint</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/NSLayoutConstraint.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NS.key.0">02_MessageBoxWarningTemplate</string>
<string key="NS.object.0">{128, 128}</string>
</object>
<bool key="IBDocument.UseAutolayout">YES</bool>
</data>
</archive>

View File

@@ -26,6 +26,12 @@ You should have received a copy of the GNU General Public License along with thi
\ \
\b Credits:\ \b Credits:\
\
\b0 MacPass Icon von {\field{\*\fldinst{HYPERLINK "http://iiro.jappinen.me"}}{\fldrslt Iiro J\'e4ppinen}}
\b \
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt {\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt
\b0 \cf2 KissXML}} \b0 \cf2 KissXML}}
\b0 \cf3 \ \b0 \cf3 \
@@ -44,4 +50,9 @@ Copyright \'a9 2011, Alex Rozanski. Alle Rechte vorbehalten.\
\ \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 \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}}\ {\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 \cf3 denis2342}}} Copyright @2013, {\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\
}

View File

@@ -120,19 +120,22 @@
"298.title" = "Customize Toolbar…"; "298.title" = "Customize Toolbar…";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "490"; */ /* Class = "NSMenuItem"; title = "Help"; ObjectID = "490"; */
"490.title" = "Help"; "490.title" = "Hilfe";
/* Class = "NSMenu"; title = "Help"; ObjectID = "491"; */ /* Class = "NSMenu"; title = "Help"; ObjectID = "491"; */
"491.title" = "Help"; "491.title" = "Hilfe";
/* Class = "NSMenuItem"; title = "MacPass Help"; ObjectID = "492"; */ /* Class = "NSMenuItem"; title = "MacPass Help"; ObjectID = "492"; */
"492.title" = "MacPass Help"; "492.title" = "MacPass Hilfe";
/* Class = "NSMenuItem"; title = "Toggle Inspector"; ObjectID = "1181"; */ /* Class = "NSMenuItem"; title = "Toggle Inspector"; ObjectID = "1181"; */
"1181.title" = "Toggle Inspector"; "1181.title" = "Inspector umschalten";
/* Class = "NSMenuItem"; title = "Show Password Creator"; ObjectID = "1200"; */ /* Class = "NSMenuItem"; title = "Show Password Creator"; ObjectID = "1200"; */
"1200.title" = "Passwortgenerator anzeigen…"; "1200.title" = "Passwortgenerator";
/* Class = "NSMenuItem"; title = "Change Password…"; ObjectID = "1203"; */ /* Class = "NSMenuItem"; title = "Change Master Password…"; ObjectID = "1203"; */
"1203.title" = "Hautpassword ändern…"; "1203.title" = "Hauptpassword ändern…";
/* Class = "NSMenuItem"; title = "Database Settings…"; ObjectID = "1231"; */
"1231.title" = "Datenbankeinstellungen…";

View File

@@ -1,15 +0,0 @@
/* Class = "NSButtonCell"; title = "Change"; ObjectID = "32"; */
"32.title" = "Password ändern";
/* Class = "NSTextFieldCell"; title = "Password"; ObjectID = "33"; */
"33.title" = "Passwort";
/* Class = "NSTextFieldCell"; title = "Keyfile"; ObjectID = "37"; */
"37.title" = "Schlüsseldatei";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "38"; */
"38.title" = "Abbrechen";
/* Class = "NSTextFieldCell"; title = "Change Password/Keyfile"; ObjectID = "46"; */
"46.title" = "Password/Schlüssel ändern!";

View File

@@ -1,7 +1,7 @@
{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390
{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;\red52\green110\blue183;\red38\green38\blue38;} {\colortbl;\red255\green255\blue255;\red52\green110\blue183;\red38\green38\blue38;}
\paperw11900\paperh16840\vieww27740\viewh14060\viewkind0 \paperw11900\paperh16840\vieww25780\viewh19380\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 Project Website:\ \f0\b\fs24 \cf0 Project Website:\
@@ -23,14 +23,23 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\
\ \
You should have received a copy of the GNU General Public License along with this program. If not, see {\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/"}}{\fldrslt http://www.gnu.org/licenses/}}.\ You should have received a copy of the GNU General Public License along with this program. If not, see {\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/"}}{\fldrslt http://www.gnu.org/licenses/}}.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\cf0 \kerning1\expnd0\expndtw3
\ \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b Credits:\ \b \cf0 \kerning1\expnd0\expndtw0 Credits:\
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \cf2 KissXML}}
\b0 \cf3 \ \b0 \cf2 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\cf0 MacPass\kerning1\expnd0\expndtw3
\kerning1\expnd0\expndtw0 Icon by {\field{\*\fldinst{HYPERLINK "http://iiro.jappinen.me"}}{\fldrslt Iiro J\'e4ppinen}}\cf2 \
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt \cf2 KissXML}}\cf3 \
Copyright \'a9 2012 Robbie Hanson. All rights reserved.\ Copyright \'a9 2012 Robbie Hanson. All rights reserved.\
\ \
{\field{\*\fldinst{HYPERLINK "https://github.com/MiniKeePass/MiniKeePass"}}{\fldrslt \cf2 MiniKeePass}}\ {\field{\*\fldinst{HYPERLINK "https://github.com/MiniKeePass/MiniKeePass"}}{\fldrslt \cf2 MiniKeePass}}\
Copyright \'a9 2011 Jason Rush and John Flanagan. All rights reserved.\ Copyright \'a9 2011 Jason Rush and John Flanagan. All rights reserved.\
\ \
@@ -43,5 +52,10 @@ Copyright \'a9 2010 Qiang Yu. All rights reserved.\
Copyright \'a9 2011, Alex Rozanski. All rights reserved.\ Copyright \'a9 2011, Alex Rozanski. All rights reserved.\
\ \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 \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}}\ {\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 \cf3 denis2342}}} Copyright @2013, {\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\
}

Binary file not shown.

View File

@@ -134,5 +134,8 @@
/* Class = "NSMenuItem"; title = "Show Password Creator"; ObjectID = "1200"; */ /* Class = "NSMenuItem"; title = "Show Password Creator"; ObjectID = "1200"; */
"1200.title" = "Show Password Creator"; "1200.title" = "Show Password Creator";
/* Class = "NSMenuItem"; title = "Change Password…"; ObjectID = "1203"; */ /* Class = "NSMenuItem"; title = "Change Master Password…"; ObjectID = "1203"; */
"1203.title" = "Change Password…"; "1203.title" = "Change Master Password…";
/* Class = "NSMenuItem"; title = "Database Settings…"; ObjectID = "1231"; */
"1231.title" = "Database Settings…";

View File

@@ -1,15 +0,0 @@
/* Class = "NSButtonCell"; title = "Change"; ObjectID = "32"; */
"32.title" = "Change";
/* Class = "NSTextFieldCell"; title = "Password"; ObjectID = "33"; */
"33.title" = "Password";
/* Class = "NSTextFieldCell"; title = "Keyfile"; ObjectID = "37"; */
"37.title" = "Keyfile";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "38"; */
"38.title" = "Cancel";
/* Class = "NSTextFieldCell"; title = "Change Password/Keyfile"; ObjectID = "46"; */
"46.title" = "Change Password/Keyfile";

View File

@@ -16,7 +16,9 @@ I'm trying to upload new builds along the way for all of you that just want to t
As stated in the disclaimer, this software cannot be considered safe for work in it's current development status. As stated in the disclaimer, this software cannot be considered safe for work in it's current development status.
Use it with caution! Since I did start refactoring the KeePassLib there is even more potential broken code! Use it with caution! Since I did start refactoring the KeePassLib there is even more potential broken code!
[Download MacPass at Dropbox](https://www.dropbox.com/sh/yqgfwi7f8mnd747/NCQlJmg0f0) (build 1419 06/28/2013) [Older Version of MacPass at Dropbox](https://www.dropbox.com/sh/yqgfwi7f8mnd747/NCQlJmg0f0) (build 1882 07/04/2013)
All [new Release](https://github.com/mstarke/MacPass/releases) are server from Github.
##Known Issues ##Known Issues
@@ -82,3 +84,5 @@ This Project is based upon the following work:
[PXSourceList](https://github.com/Perspx/PXSourceList) Copyright 2011, Alex Rozanski. All rights reserved. [PXSourceList](https://github.com/Perspx/PXSourceList) Copyright 2011, Alex Rozanski. All rights reserved.
[CocoaHTTPServer](https://github.com/robbiehanson/CocoaHTTPServer ) Copyright 2011, Deusty, LLC. All rights reserved. [CocoaHTTPServer](https://github.com/robbiehanson/CocoaHTTPServer ) Copyright 2011, Deusty, LLC. All rights reserved.
[KSPasswordField](https://github.com/karelia/SecurityInterface) Copyright 2012 Mike Abdullah, Karelia Software. All rights reserved.