NSOutlineView change to use no Autolayout since it fucked up resizing

This commit is contained in:
michael starke
2013-02-19 19:59:18 +01:00
parent 1f05b0eaba
commit 7ea34a2300
21 changed files with 466 additions and 495 deletions

View File

@@ -9,6 +9,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
4C25D58516CF0F8800F6806C /* WelcomeView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58416CF0F8800F6806C /* WelcomeView.xib */; }; 4C25D58516CF0F8800F6806C /* WelcomeView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58416CF0F8800F6806C /* WelcomeView.xib */; };
4C25D58716CF0FAA00F6806C /* EntryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58616CF0FAA00F6806C /* EntryView.xib */; }; 4C25D58716CF0FAA00F6806C /* EntryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58616CF0FAA00F6806C /* EntryView.xib */; };
4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPAdditions.m */; };
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 */; };
@@ -62,7 +63,6 @@
4C77E36715B84A240093A587 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C77E36615B84A240093A587 /* Cocoa.framework */; }; 4C77E36715B84A240093A587 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C77E36615B84A240093A587 /* Cocoa.framework */; };
4C77E37115B84A240093A587 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E36F15B84A240093A587 /* InfoPlist.strings */; }; 4C77E37115B84A240093A587 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E36F15B84A240093A587 /* InfoPlist.strings */; };
4C77E37315B84A240093A587 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C77E37215B84A240093A587 /* main.m */; }; 4C77E37315B84A240093A587 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C77E37215B84A240093A587 /* main.m */; };
4C77E37715B84A240093A587 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E37515B84A240093A587 /* Credits.rtf */; };
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 */; };
4C83814215BF4677001AE468 /* MPMainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C83814115BF4677001AE468 /* MPMainWindowController.m */; }; 4C83814215BF4677001AE468 /* MPMainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C83814115BF4677001AE468 /* MPMainWindowController.m */; };
@@ -78,6 +78,7 @@
4CAD747F15B887FD00104512 /* DDXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD746115B887FD00104512 /* DDXMLNode.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 4CAD747F15B887FD00104512 /* DDXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD746115B887FD00104512 /* DDXMLNode.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
4CAD748C15B889B700104512 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CAD748B15B889B700104512 /* Security.framework */; }; 4CAD748C15B889B700104512 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CAD748B15B889B700104512 /* Security.framework */; };
4CAD748E15B88AC100104512 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CAD748D15B88AC100104512 /* libz.dylib */; }; 4CAD748E15B88AC100104512 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CAD748D15B88AC100104512 /* libz.dylib */; };
4CB9339916D3A0DD00A13B5D /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4CB9339716D3A0DD00A13B5D /* Credits.rtf */; };
4CBA981815BA0DB600721965 /* MPDatabaseDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA981715BA0DB600721965 /* MPDatabaseDocument.m */; }; 4CBA981815BA0DB600721965 /* MPDatabaseDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA981715BA0DB600721965 /* MPDatabaseDocument.m */; };
4CC6259115BA1C99002F5B11 /* MPOutlineViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6259015BA1C99002F5B11 /* MPOutlineViewDelegate.m */; }; 4CC6259115BA1C99002F5B11 /* MPOutlineViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6259015BA1C99002F5B11 /* MPOutlineViewDelegate.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 */; };
@@ -92,6 +93,8 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
4C25D58416CF0F8800F6806C /* WelcomeView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WelcomeView.xib; sourceTree = "<group>"; }; 4C25D58416CF0F8800F6806C /* WelcomeView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WelcomeView.xib; sourceTree = "<group>"; };
4C25D58616CF0FAA00F6806C /* EntryView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EntryView.xib; sourceTree = "<group>"; }; 4C25D58616CF0FAA00F6806C /* EntryView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EntryView.xib; sourceTree = "<group>"; };
4C2C4C2A16D3BE3700D49295 /* KdbGroup+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+MPAdditions.h"; sourceTree = "<group>"; };
4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+MPAdditions.m"; 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>"; };
@@ -196,7 +199,6 @@
4C77E37015B84A240093A587 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 4C77E37015B84A240093A587 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
4C77E37215B84A240093A587 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 4C77E37215B84A240093A587 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
4C77E37415B84A240093A587 /* MacPass-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MacPass-Prefix.pch"; sourceTree = "<group>"; }; 4C77E37415B84A240093A587 /* MacPass-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MacPass-Prefix.pch"; sourceTree = "<group>"; };
4C77E37615B84A240093A587 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
4C77E37815B84A240093A587 /* MPAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAppDelegate.h; sourceTree = "<group>"; }; 4C77E37815B84A240093A587 /* MPAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAppDelegate.h; sourceTree = "<group>"; };
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>"; };
4C77E37C15B84A240093A587 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; }; 4C77E37C15B84A240093A587 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
@@ -225,6 +227,7 @@
4CAD746315B887FD00104512 /* DDXMLPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDXMLPrivate.h; sourceTree = "<group>"; }; 4CAD746315B887FD00104512 /* DDXMLPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDXMLPrivate.h; sourceTree = "<group>"; };
4CAD748B15B889B700104512 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 4CAD748B15B889B700104512 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
4CAD748D15B88AC100104512 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 4CAD748D15B88AC100104512 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
4CB9339816D3A0DD00A13B5D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
4CBA981615BA0DB600721965 /* MPDatabaseDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDatabaseDocument.h; sourceTree = "<group>"; }; 4CBA981615BA0DB600721965 /* MPDatabaseDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDatabaseDocument.h; sourceTree = "<group>"; };
4CBA981715BA0DB600721965 /* MPDatabaseDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDatabaseDocument.m; sourceTree = "<group>"; }; 4CBA981715BA0DB600721965 /* MPDatabaseDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDatabaseDocument.m; sourceTree = "<group>"; };
4CC6258F15BA1C99002F5B11 /* MPOutlineViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOutlineViewDelegate.h; sourceTree = "<group>"; }; 4CC6258F15BA1C99002F5B11 /* MPOutlineViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOutlineViewDelegate.h; sourceTree = "<group>"; };
@@ -268,6 +271,15 @@
name = Views; name = Views;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C2C4C2516D3BCEA00D49295 /* KeePassLibAdditions */ = {
isa = PBXGroup;
children = (
4C2C4C2A16D3BE3700D49295 /* KdbGroup+MPAdditions.h */,
4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPAdditions.m */,
);
name = KeePassLibAdditions;
sourceTree = "<group>";
};
4C2E382016D141F700037A9D /* Helper */ = { 4C2E382016D141F700037A9D /* Helper */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -460,6 +472,7 @@
4C77E36C15B84A240093A587 /* MacPass */ = { 4C77E36C15B84A240093A587 /* MacPass */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4C2C4C2516D3BCEA00D49295 /* KeePassLibAdditions */,
4C2E382016D141F700037A9D /* Helper */, 4C2E382016D141F700037A9D /* Helper */,
4C586F9C16D07ABD00E7DB57 /* Icons */, 4C586F9C16D07ABD00E7DB57 /* Icons */,
4CA0B30F15BCB85D00654E32 /* General */, 4CA0B30F15BCB85D00654E32 /* General */,
@@ -476,11 +489,11 @@
4C77E36D15B84A240093A587 /* Supporting Files */ = { 4C77E36D15B84A240093A587 /* Supporting Files */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CB9339716D3A0DD00A13B5D /* Credits.rtf */,
4C77E36E15B84A240093A587 /* MacPass-Info.plist */, 4C77E36E15B84A240093A587 /* MacPass-Info.plist */,
4C77E36F15B84A240093A587 /* InfoPlist.strings */, 4C77E36F15B84A240093A587 /* InfoPlist.strings */,
4C77E37215B84A240093A587 /* main.m */, 4C77E37215B84A240093A587 /* main.m */,
4C77E37415B84A240093A587 /* MacPass-Prefix.pch */, 4C77E37415B84A240093A587 /* MacPass-Prefix.pch */,
4C77E37515B84A240093A587 /* Credits.rtf */,
); );
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
@@ -583,6 +596,7 @@
buildPhases = ( buildPhases = (
4C77E35E15B84A240093A587 /* Sources */, 4C77E35E15B84A240093A587 /* Sources */,
4C77E35F15B84A240093A587 /* Frameworks */, 4C77E35F15B84A240093A587 /* Frameworks */,
4CB9339616D3A04100A13B5D /* ShellScript */,
4C77E36015B84A240093A587 /* Resources */, 4C77E36015B84A240093A587 /* Resources */,
); );
buildRules = ( buildRules = (
@@ -629,7 +643,6 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
4C77E37115B84A240093A587 /* InfoPlist.strings in Resources */, 4C77E37115B84A240093A587 /* InfoPlist.strings in Resources */,
4C77E37715B84A240093A587 /* Credits.rtf in Resources */,
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */, 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */,
4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */, 4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */,
4CA0B2F015BCADC800654E32 /* GeneralSettings.xib in Resources */, 4CA0B2F015BCADC800654E32 /* GeneralSettings.xib in Resources */,
@@ -649,11 +662,28 @@
4CD78ABF16D155FF00768A1D /* 10_ContactTemplate.pdf in Resources */, 4CD78ABF16D155FF00768A1D /* 10_ContactTemplate.pdf in Resources */,
4CD78AC016D155FF00768A1D /* 11_CameraTemplate.pdf in Resources */, 4CD78AC016D155FF00768A1D /* 11_CameraTemplate.pdf in Resources */,
4C61EA0516D2FFE200AC519E /* OutlineView.xib in Resources */, 4C61EA0516D2FFE200AC519E /* OutlineView.xib in Resources */,
4CB9339916D3A0DD00A13B5D /* Credits.rtf in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
4CB9339616D3A04100A13B5D /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "#!/bin/bash\nbuildNumber=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" \"$INFOPLIST_FILE\")\nbuildNumber=$((0x$buildNumber))\nbuildNumber=$(($buildNumber + 1))\nbuildNumber=$(printf \"%X\" $buildNumber)\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $buildNumber\" \"$INFOPLIST_FILE\"";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
4C77E35E15B84A240093A587 /* Sources */ = { 4C77E35E15B84A240093A587 /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
@@ -715,6 +745,7 @@
4C3BD51516D276F800389F1F /* MPToolbarDelegate.m in Sources */, 4C3BD51516D276F800389F1F /* MPToolbarDelegate.m in Sources */,
4CAC6F7816D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m in Sources */, 4CAC6F7816D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m in Sources */,
4C61EA0316D2FD0800AC519E /* MPOutlineViewController.m in Sources */, 4C61EA0316D2FD0800AC519E /* MPOutlineViewController.m in Sources */,
4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPAdditions.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -729,14 +760,6 @@
name = InfoPlist.strings; name = InfoPlist.strings;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C77E37515B84A240093A587 /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
4C77E37615B84A240093A587 /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
4C77E37B15B84A240093A587 /* MainMenu.xib */ = { 4C77E37B15B84A240093A587 /* MainMenu.xib */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
@@ -745,6 +768,14 @@
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4CB9339716D3A0DD00A13B5D /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
4CB9339816D3A0DD00A13B5D /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */ /* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */

View File

@@ -50,7 +50,7 @@
<string key="NSFrameSize">{703, 547}</string> <string key="NSFrameSize">{703, 547}</string>
<reference key="NSSuperview" ref="262664416"/> <reference key="NSSuperview" ref="262664416"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="737075944"/> <reference key="NSNextKeyView" ref="1037276411"/>
<string key="NSReuseIdentifierKey">_NS:13</string> <string key="NSReuseIdentifierKey">_NS:13</string>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -214,6 +214,7 @@
<string key="NSFrame">{{1, 119}, {223, 15}}</string> <string key="NSFrame">{{1, 119}, {223, 15}}</string>
<reference key="NSSuperview" ref="613995671"/> <reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:60</string> <string key="NSReuseIdentifierKey">_NS:60</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int> <int key="NSsFlags">1</int>
@@ -240,7 +241,7 @@
<string key="NSFrameSize">{703, 564}</string> <string key="NSFrameSize">{703, 564}</string>
<reference key="NSSuperview"/> <reference key="NSSuperview"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="262664416"/> <reference key="NSNextKeyView" ref="737075944"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSsFlags">133680</int> <int key="NSsFlags">133680</int>
<reference key="NSVScroller" ref="1037276411"/> <reference key="NSVScroller" ref="1037276411"/>
@@ -371,7 +372,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">85</int> <int key="maxID">110</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">

View File

@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data> <data>
<int key="IBDocument.SystemTarget">1070</int> <int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">11E53</string> <string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string> <string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1138.47</string> <string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">569.00</string> <string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2182</string> <string key="NS.object.0">3084</string>
</object> </object>
<array key="IBDocument.IntegratedClassDependencies"> <array key="IBDocument.IntegratedClassDependencies">
<string>NSTextField</string> <string>IBNSLayoutConstraint</string>
<string>NSCustomObject</string> <string>NSCustomObject</string>
<string>NSCustomView</string>
<string>NSMenu</string> <string>NSMenu</string>
<string>NSMenuItem</string> <string>NSMenuItem</string>
<string>NSPopUpButton</string> <string>NSPopUpButton</string>
<string>NSCustomView</string>
<string>NSPopUpButtonCell</string> <string>NSPopUpButtonCell</string>
<string>IBNSLayoutConstraint</string> <string>NSTextField</string>
<string>NSTextFieldCell</string> <string>NSTextFieldCell</string>
</array> </array>
<array key="IBDocument.PluginDependencies"> <array key="IBDocument.PluginDependencies">
@@ -48,12 +48,11 @@
<string key="NSFrame">{{146, 292}, {127, 26}}</string> <string key="NSFrame">{{146, 292}, {127, 26}}</string>
<reference key="NSSuperview" ref="1005"/> <reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{750, 751}</string> <string key="NSAntiCompressionPriority">{750, 751}</string>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="161510884"> <object class="NSPopUpButtonCell" key="NSCell" id="161510884">
<int key="NSCellFlags">-2076049856</int> <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int> <int key="NSCellFlags2">2048</int>
<object class="NSFont" key="NSSupport" id="874940307"> <object class="NSFont" key="NSSupport" id="874940307">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
@@ -62,7 +61,7 @@
</object> </object>
<string key="NSCellIdentifier">_NS:9</string> <string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="421904700"/> <reference key="NSControlView" ref="421904700"/>
<int key="NSButtonFlags">109199615</int> <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">65</int> <int key="NSButtonFlags2">65</int>
<string key="NSAlternateContents"/> <string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/> <string key="NSKeyEquivalent"/>
@@ -121,6 +120,7 @@
<bool key="NSAltersState">YES</bool> <bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int> <int key="NSArrowPosition">2</int>
</object> </object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object> </object>
<object class="NSTextField" id="637214120"> <object class="NSTextField" id="637214120">
<reference key="NSNextResponder" ref="1005"/> <reference key="NSNextResponder" ref="1005"/>
@@ -132,7 +132,7 @@
<string key="NSReuseIdentifierKey">_NS:1505</string> <string key="NSReuseIdentifierKey">_NS:1505</string>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1050281039"> <object class="NSTextFieldCell" key="NSCell" id="1050281039">
<int key="NSCellFlags">68288064</int> <int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">71304192</int> <int key="NSCellFlags2">71304192</int>
<string key="NSContents">Password Encoding</string> <string key="NSContents">Password Encoding</string>
<reference key="NSSupport" ref="874940307"/> <reference key="NSSupport" ref="874940307"/>
@@ -157,6 +157,7 @@
</object> </object>
</object> </object>
</object> </object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object> </object>
</array> </array>
<string key="NSFrameSize">{290, 336}</string> <string key="NSFrameSize">{290, 336}</string>
@@ -217,101 +218,21 @@
<array class="NSMutableArray" key="children"> <array class="NSMutableArray" key="children">
<reference ref="421904700"/> <reference ref="421904700"/>
<reference ref="637214120"/> <reference ref="637214120"/>
<object class="IBNSLayoutConstraint" id="180695068"> <object class="IBNSLayoutConstraint" id="835508122">
<reference key="firstItem" ref="637214120"/>
<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>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
<reference key="containingView" ref="1005"/>
</object>
<object class="IBNSLayoutConstraint" id="989429017">
<reference key="firstItem" ref="637214120"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
</object>
<float key="priority">1000</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
<reference key="containingView" ref="1005"/>
</object>
<object class="IBNSLayoutConstraint" id="704304955">
<reference key="firstItem" ref="421904700"/> <reference key="firstItem" ref="421904700"/>
<int key="firstAttribute">5</int> <int key="firstAttribute">11</int>
<int key="relation">0</int> <int key="relation">0</int>
<reference key="secondItem" ref="637214120"/> <reference key="secondItem" ref="637214120"/>
<int key="secondAttribute">6</int> <int key="secondAttribute">11</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">8</double>
</object>
<float key="priority">1000</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
<reference key="containingView" ref="1005"/>
</object>
<object class="IBNSLayoutConstraint" id="106372279">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">6</int>
<int key="relation">1</int>
<reference key="secondItem" ref="421904700"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
</object>
<float key="priority">1000</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
<reference key="containingView" ref="1005"/>
</object>
<object class="IBNSLayoutConstraint" id="850330857">
<reference key="firstItem" ref="421904700"/>
<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>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
<reference key="containingView" ref="1005"/>
</object>
<object class="IBNSLayoutConstraint" id="689515169">
<reference key="firstItem" ref="637214120"/>
<int key="firstAttribute">7</int>
<int key="relation">0</int>
<reference key="secondItem" ref="421904700"/>
<int key="secondAttribute">7</int>
<float key="multiplier">1</float> <float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant"> <object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double> <double key="value">0.0</double>
</object> </object>
<float key="priority">1000</float> <float key="priority">1000</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">5</int>
<reference key="containingView" ref="1005"/> <reference key="containingView" ref="1005"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object> </object>
<object class="IBNSLayoutConstraint" id="215335887"> <object class="IBNSLayoutConstraint" id="215335887">
<reference key="firstItem" ref="1005"/> <reference key="firstItem" ref="1005"/>
@@ -324,26 +245,106 @@
<double key="value">20</double> <double key="value">20</double>
</object> </object>
<float key="priority">1000</float> <float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">8</int> <int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float> <float key="scoringTypeFloat">29</float>
<int key="contentType">3</int> <int key="contentType">3</int>
<reference key="containingView" ref="1005"/>
</object> </object>
<object class="IBNSLayoutConstraint" id="835508122"> <object class="IBNSLayoutConstraint" id="850330857">
<reference key="firstItem" ref="421904700"/> <reference key="firstItem" ref="421904700"/>
<int key="firstAttribute">11</int> <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="106372279">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">6</int>
<int key="relation">1</int>
<reference key="secondItem" ref="421904700"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="704304955">
<reference key="firstItem" ref="421904700"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int> <int key="relation">0</int>
<reference key="secondItem" ref="637214120"/> <reference key="secondItem" ref="637214120"/>
<int key="secondAttribute">11</int> <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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="689515169">
<reference key="firstItem" ref="637214120"/>
<int key="firstAttribute">7</int>
<int key="relation">0</int>
<reference key="secondItem" ref="421904700"/>
<int key="secondAttribute">7</int>
<float key="multiplier">1</float> <float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant"> <object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double> <double key="value">0.0</double>
</object> </object>
<float key="priority">1000</float> <float key="priority">1000</float>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
<reference key="containingView" ref="1005"/> <reference key="containingView" ref="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">5</int>
</object>
<object class="IBNSLayoutConstraint" id="989429017">
<reference key="firstItem" ref="637214120"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1005"/>
<int key="secondAttribute">5</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="180695068">
<reference key="firstItem" ref="637214120"/>
<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> </object>
</array> </array>
<reference key="parent" ref="0"/> <reference key="parent" ref="0"/>
@@ -451,10 +452,10 @@
<array class="NSMutableArray" key="1.IBNSViewMetadataConstraints"> <array class="NSMutableArray" key="1.IBNSViewMetadataConstraints">
<reference ref="180695068"/> <reference ref="180695068"/>
<reference ref="989429017"/> <reference ref="989429017"/>
<reference ref="689515169"/>
<reference ref="704304955"/> <reference ref="704304955"/>
<reference ref="106372279"/> <reference ref="106372279"/>
<reference ref="850330857"/> <reference ref="850330857"/>
<reference ref="689515169"/>
<reference ref="215335887"/> <reference ref="215335887"/>
<reference ref="835508122"/> <reference ref="835508122"/>
</array> </array>
@@ -482,7 +483,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">131</int> <int key="maxID">142</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">

View File

@@ -0,0 +1,18 @@
//
// KdbGroup+MPAdditions.h
// MacPass
//
// Created by michael starke on 19.02.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "KdbLib.h"
@interface KdbGroup (MPAdditions)
+ (KdbGroup *)group;
+ (KdbGroup *)groupWithName:(NSString *)name;
+ (void)refreshModificationTime;
@end

View File

@@ -0,0 +1,24 @@
//
// KdbGroup+MPAdditions.m
// MacPass
//
// Created by michael starke on 19.02.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "KdbGroup+MPAdditions.h"
@implementation KdbGroup (MPAdditions)
+ (KdbGroup *)group {
KdbGroup *group = [[KdbGroup alloc] init];
[group setName:@"Default"];
return [group autorelease];
}
+ (KdbGroup *)groupWithName:(NSString *)name {
KdbGroup *group = [KdbGroup group];
[group setName:name];
return group;
}
@end

View File

@@ -36,17 +36,6 @@
[self.settingsController showWindow:_settingsController.window]; [self.settingsController showWindow:_settingsController.window];
} }
- (void)newDocument:(id)sender {
}
- (void)performClose:(id)sender {
NSLog(@"Close");
}
- (void)openDocument:(id)sender {
[self.mainWindowController openDocument];
}
- (void)toolbarItemPressed:(id)sender { - (void)toolbarItemPressed:(id)sender {
NSLog(@"Pressed %@", sender); NSLog(@"Pressed %@", sender);
} }

View File

@@ -20,10 +20,6 @@ APPKIT_EXTERN NSString *const MPDatabaseControllerDidCloseDatabaseNotification;
*/ */
APPKIT_EXTERN NSString *const MPDatabaseControllerDatabaseKey; APPKIT_EXTERN NSString *const MPDatabaseControllerDatabaseKey;
typedef enum{
MPDatabaseVersion1,
MPDatabaseVersion2
} MPDatabaseVersion;
@class MPDatabaseDocument; @class MPDatabaseDocument;
@@ -33,7 +29,7 @@ typedef enum{
+ (MPDatabaseController *)defaultController; + (MPDatabaseController *)defaultController;
- (MPDatabaseDocument *)createDatabase:(MPDatabaseVersion )version password:(NSString *)password keyfile:(NSURL *)key; //- (MPDatabaseDocument *)createDatabase:(MPDatabaseVersion )version password:(NSString *)password keyfile:(NSURL *)key;
- (MPDatabaseDocument *)openDatabase:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key; - (MPDatabaseDocument *)openDatabase:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key;
@end @end

View File

@@ -11,6 +11,11 @@
APPKIT_EXTERN NSString *const MPDidLoadDataBaseNotification; APPKIT_EXTERN NSString *const MPDidLoadDataBaseNotification;
APPKIT_EXTERN NSString *const MPDataBaseDocumentDocumentKey; APPKIT_EXTERN NSString *const MPDataBaseDocumentDocumentKey;
typedef enum {
MPDatabaseVersion3,
MPDatabaseVersion4
} MPDatabaseVersion;
@class KdbPassword; @class KdbPassword;
@class KdbGroup; @class KdbGroup;
@@ -18,10 +23,13 @@ APPKIT_EXTERN NSString *const MPDataBaseDocumentDocumentKey;
@property (retain, readonly) KdbGroup *root; @property (retain, readonly) KdbGroup *root;
@property (retain, readonly) NSURL *file; @property (retain, readonly) NSURL *file;
@property (retain, readonly) KdbPassword *password; @property (nonatomic,retain) NSString *password;
@property (nonatomic, retain) NSURL *key;
@property (assign, readonly) MPDatabaseVersion version;
+ (id)documentWithFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key; + (id)documentWithFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key;
- (id)initWithFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key; - (id)initWithFile:(NSURL *)file password:(NSString *)password keyfile:(NSURL *)key;
- (id)initWithNewDatabase:(MPDatabaseVersion)version;
/* /*
Saves the current database to the filesystem Saves the current database to the filesystem
Tries to use the stored password and file path Tries to use the stored password and file path

View File

@@ -8,6 +8,8 @@
#import "MPDatabaseDocument.h" #import "MPDatabaseDocument.h"
#import "KdbLib.h" #import "KdbLib.h"
#import "Kdb4Node.h"
#import "Kdb3Node.h"
NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification"; NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification";
@@ -15,7 +17,8 @@ NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification";
@property (retain) KdbTree *tree; @property (retain) KdbTree *tree;
@property (retain) NSURL *file; @property (retain) NSURL *file;
@property (retain) KdbPassword *password; @property (nonatomic, readonly) KdbPassword *passwordHash;
@property (assign) MPDatabaseVersion version;
@end @end
@@ -29,6 +32,27 @@ NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification";
// create empty document // create empty document
return [self initWithFile:nil password:nil keyfile:nil]; return [self initWithFile:nil password:nil keyfile:nil];
} }
- (id)initWithNewDatabaseVersion:(MPDatabaseVersion)version {
self = [super init];
if(self) {
switch(version) {
case MPDatabaseVersion3:
self.tree = [[[Kdb3Tree alloc] init] autorelease];
break;
case MPDatabaseVersion4:
self.tree = [[[Kdb4Tree alloc] init] autorelease];
break;
default:
[self release];
return nil;
}
KdbGroup *newGroup = [self.tree createGroup:self.tree.root];
newGroup.name = @"Default";
}
return self;
}
/* /*
Designated initalizeder Designated initalizeder
*/ */
@@ -39,50 +63,29 @@ NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification";
/* /*
Create an empty file Create an empty file
*/ */
if(!file) {
self.tree = [[[KdbTree alloc] init] autorelease];
self.tree.root = [[[KdbGroup alloc] init] autorelease];
[self.tree.root setName:NSLocalizedString(@"INITIAL_GROUP", @"")];
}
/*
Try to load a given file
*/
else {
self.file = file; self.file = file;
const BOOL hasPassword = (password != nil); self.key = key;
const BOOL hasKeyfile = (key != nil); self.password = password;
// Create the password for the given parameters
if( hasPassword && hasKeyfile) {
self.password = [[[KdbPassword alloc] initWithPassword:password encoding:NSUTF8StringEncoding keyfile:[key path]] autorelease];
}
else if( hasPassword ) {
self.password = [[[KdbPassword alloc] initWithPassword:password encoding:NSUTF8StringEncoding] autorelease];
}
else if( hasKeyfile ) {
self.password = [[[KdbPassword alloc] initWithKeyfile:[key path]] autorelease];
}
else {
NSLog(@"Error: No password or keyfile given!");
}
@try { @try {
self.tree = [KdbReaderFactory load:[self.file path] withPassword:self.password]; self.tree = [KdbReaderFactory load:[self.file path] withPassword:self.passwordHash];
} }
@catch (NSException *exception) { @catch (NSException *exception) {
NSLog(@"%@", [exception description]); NSLog(@"%@", [exception description]);
[self release];
return self;
} }
if([self.tree isKindOfClass:[Kdb4Tree class]]) {
self.version = MPDatabaseVersion4;
} }
else if( [self.tree isKindOfClass:[Kdb3Tree class]]) {
self.version = MPDatabaseVersion3;
} }
// Test if something went wrong and nil out if so
if( self.tree == nil) {
[self release];
self = nil;
} }
return self; return self;
} }
- (void)dealloc - (void)dealloc
{ {
self.tree = nil; self.tree = nil;
@@ -98,9 +101,9 @@ NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification";
- (BOOL)save { - (BOOL)save {
NSError *fileError; NSError *fileError;
if( self.password && [self.file checkResourceIsReachableAndReturnError:&fileError] ) { if( [self.file checkResourceIsReachableAndReturnError:&fileError] ) {
@try { @try {
[KdbWriterFactory persist:self.tree file:[self.file path] withPassword:self.password]; [KdbWriterFactory persist:self.tree file:[self.file path] withPassword:self.passwordHash];
} }
@catch (NSException *exception) { @catch (NSException *exception) {
NSLog(@"%@", [exception description]); NSLog(@"%@", [exception description]);
@@ -113,4 +116,24 @@ NSString *const MPDidLoadDataBaseNotification = @"DidLoadDataBaseNotification";
- (BOOL)saveAsFile:(NSURL *)file withPassword:(NSString *)password keyfile:(NSURL *)key { - (BOOL)saveAsFile:(NSURL *)file withPassword:(NSString *)password keyfile:(NSURL *)key {
return NO; return NO;
} }
- (KdbPassword *)passwordHash {
// Create the password for the given parameters
if( self.password && self.key) {
return [[[KdbPassword alloc] initWithPassword:self.password encoding:NSUTF8StringEncoding keyfile:[self.key path]] autorelease];
}
if( self.password ) {
return [[[KdbPassword alloc] initWithPassword:self.password encoding:NSUTF8StringEncoding] autorelease];
}
if( self.key ) {
return [[[KdbPassword alloc] initWithKeyfile:[self.key path]] autorelease];
}
NSLog(@"Error: No password or keyfile given!");
return nil;
}
@end @end

View File

@@ -12,7 +12,6 @@
@interface MPMainWindowController : NSWindowController @interface MPMainWindowController : NSWindowController
- (void)openDocument;
- (void)showEntries; - (void)showEntries;
/* /*
Sets the content View controller Sets the content View controller

View File

@@ -12,21 +12,24 @@
#import "MPEntryViewController.h" #import "MPEntryViewController.h"
#import "MPToolbarDelegate.h" #import "MPToolbarDelegate.h"
#import "MPOutlineViewController.h" #import "MPOutlineViewController.h"
#import "MPMainWindowSplitViewDelegate.h"
@interface MPMainWindowController () @interface MPMainWindowController ()
@property (assign) IBOutlet NSToolbar *toolbar;
@property (assign) IBOutlet NSView *outlineView; @property (assign) IBOutlet NSView *outlineView;
@property (assign) IBOutlet NSSplitView *splitView; @property (assign) IBOutlet NSSplitView *splitView;
@property (assign) IBOutlet NSView *contentView; @property (assign) IBOutlet NSView *contentView;
@property (retain) IBOutlet NSView *welcomeView; @property (retain) IBOutlet NSView *welcomeView;
@property (retain) NSToolbar *toolbar;
@property (retain) MPPasswordInputController *passwordInputController; @property (retain) MPPasswordInputController *passwordInputController;
@property (retain) MPEntryViewController *entryViewController; @property (retain) MPEntryViewController *entryViewController;
@property (retain) MPOutlineViewController *outlineViewController; @property (retain) MPOutlineViewController *outlineViewController;
@property (retain) MPToolbarDelegate *toolbarDelegate; @property (retain) MPToolbarDelegate *toolbarDelegate;
@property (retain) MPMainWindowSplitViewDelegate *splitViewDelegate;
@end @end
@@ -35,8 +38,9 @@
-(id)init { -(id)init {
self = [super initWithWindowNibName:@"MainWindow" owner:self]; self = [super initWithWindowNibName:@"MainWindow" owner:self];
if( self ) { if( self ) {
self.toolbarDelegate = [[[MPToolbarDelegate alloc] init] autorelease]; _toolbarDelegate = [[MPToolbarDelegate alloc] init];
self.outlineViewController = [[[MPOutlineViewController alloc] init] autorelease]; _outlineViewController = [[MPOutlineViewController alloc] init];
_splitViewDelegate = [[MPMainWindowSplitViewDelegate alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"WelcomeView" owner:self topLevelObjects:NULL]; [[NSBundle mainBundle] loadNibNamed:@"WelcomeView" owner:self topLevelObjects:NULL];
[self.welcomeView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; [self.welcomeView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
@@ -57,15 +61,23 @@
- (void)windowDidLoad - (void)windowDidLoad
{ {
[super windowDidLoad]; [super windowDidLoad];
const CGFloat minimumWindowWidth = MPMainWindowSplitViewDelegateMinimumContentWidth + MPMainWindowSplitViewDelegateMinimumOutlineWidth + [self.splitView dividerThickness];
[self.window setMinSize:NSMakeSize( minimumWindowWidth, 400)];
_toolbar = [[NSToolbar alloc] initWithIdentifier:@"MainWindowToolbar"];
[self.toolbar setAllowsUserCustomization:YES];
[self.toolbar setDelegate:self.toolbarDelegate]; [self.toolbar setDelegate:self.toolbarDelegate];
[self.window setToolbar:self.toolbar];
[self.splitView setDelegate:self.splitViewDelegate];
NSRect frame = [self.outlineView frame]; NSRect frame = [self.outlineView frame];
frame.size.height -= 1; // frame.size.height -= 1;
frame.origin.y = 10; // frame.origin.y = 10;
[self.outlineViewController.view setFrame:frame]; [self.outlineViewController.view setFrame:frame];
[self.outlineViewController.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; [self.outlineViewController.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[self.splitView replaceSubview:self.outlineView with:self.outlineViewController.view]; [self.splitView replaceSubview:self.outlineView with:[self.outlineViewController view]];
[self.splitView adjustSubviews];
[self setContentViewController:nil]; [self setContentViewController:nil];
} }
@@ -94,18 +106,16 @@
else { else {
[self.contentView addSubview:newContentView]; [self.contentView addSubview:newContentView];
} }
[self.splitView adjustSubviews];
/* /*
Set focus AFTER having added the view Set focus AFTER having added the view
*/ */
[self.window makeFirstResponder:[viewController reconmendedFirstResponder]]; [self.window makeFirstResponder:[viewController reconmendedFirstResponder]];
} }
- (void)didOpenDocument:(NSNotification *)notification { #pragma mark Actions
[self showEntries];
}
- (void)openDocument:(id)sender {
- (void)openDocument {
if(!self.passwordInputController) { if(!self.passwordInputController) {
self.passwordInputController = [[[MPPasswordInputController alloc] init] autorelease]; self.passwordInputController = [[[MPPasswordInputController alloc] init] autorelease];
@@ -125,9 +135,15 @@
}]; }];
} }
#pragma mark Notifications
- (void)didOpenDocument:(NSNotification *)notification {
[self showEntries];
}
- (void)showEntries { - (void)showEntries {
if(!self.entryViewController) { if(!self.entryViewController) {
self.entryViewController = [[[MPEntryViewController alloc] init] autorelease]; _entryViewController = [[MPEntryViewController alloc] init];
} }
[self setContentViewController:self.entryViewController]; [self setContentViewController:self.entryViewController];
} }

View File

@@ -8,6 +8,10 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
extern const CGFloat MPMainWindowSplitViewDelegateMinimumOutlineWidth;
extern const CGFloat MPMainWindowSplitViewDelegateMaximumOutlineWidth;
extern const CGFloat MPMainWindowSplitViewDelegateMinimumContentWidth;
@interface MPMainWindowSplitViewDelegate : NSObject <NSSplitViewDelegate> @interface MPMainWindowSplitViewDelegate : NSObject <NSSplitViewDelegate>

View File

@@ -8,19 +8,56 @@
#import "MPMainWindowSplitViewDelegate.h" #import "MPMainWindowSplitViewDelegate.h"
const CGFloat _minimumSplitterWidth = 10.0; const CGFloat MPMainWindowSplitViewDelegateMinimumOutlineWidth = 150.0;
const CGFloat MPMainWindowSplitViewDelegateMaximumOutlineWidth = 400.0;
const CGFloat MPMainWindowSplitViewDelegateMinimumContentWidth = 400.0;
@interface MPMainWindowSplitViewDelegate ()
- (NSView *)leftView:(NSSplitView *)splitView;
- (NSView *)rightView:(NSSplitView *)splitView;
@end
@implementation MPMainWindowSplitViewDelegate @implementation MPMainWindowSplitViewDelegate
- (NSView *)leftView:(NSSplitView *)splitView {
return [splitView subviews][0];
}
- (NSView *)rightView:(NSSplitView *)splitView {
return [splitView subviews][1];
}
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex { - (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex {
return _minimumSplitterWidth; return (proposedMinimumPosition < MPMainWindowSplitViewDelegateMinimumOutlineWidth) ? MPMainWindowSplitViewDelegateMinimumOutlineWidth : proposedMinimumPosition;
} }
- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex { - (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex {
NSView *otherView= [splitView subviews][(dividerIndex + 1) % 2]; CGFloat availableWidth = [splitView frame].size.width - [splitView dividerThickness];
return (availableWidth - MPMainWindowSplitViewDelegateMinimumOutlineWidth);
CGFloat maximumWidth = [splitView frame].size.width - ( [splitView dividerThickness] + [otherView frame].size.width + _minimumSplitterWidth );
return maximumWidth;
} }
- (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize {
NSSize newSize = [splitView frame].size;
const CGFloat dividierThickness = [splitView dividerThickness];
NSView *leftView = [self leftView:splitView];
NSView *rightView = [self rightView:splitView];
CGFloat leftRelativeWidth = [leftView frame].size.width / oldSize.width;
CGFloat newLeftWidth = floor(newSize.width * leftRelativeWidth);
if( newLeftWidth < MPMainWindowSplitViewDelegateMinimumOutlineWidth && newSize.width > MPMainWindowSplitViewDelegateMinimumOutlineWidth ) {
newLeftWidth = MPMainWindowSplitViewDelegateMinimumOutlineWidth;
}
if( newLeftWidth > MPMainWindowSplitViewDelegateMaximumOutlineWidth ) {
newLeftWidth = MPMainWindowSplitViewDelegateMaximumOutlineWidth;
}
NSRect newLeftFrame = NSMakeRect(0, 0, newLeftWidth, newSize.height);
NSRect newRightFrame = NSMakeRect(newLeftWidth + dividierThickness, 0, newSize.width - newLeftWidth - dividierThickness, newSize.height);
[leftView setFrame:newLeftFrame];
[rightView setFrame:newRightFrame];
};
@end @end

View File

@@ -23,6 +23,7 @@
- (void)didOpenDocument:(NSNotification *)notification; - (void)didOpenDocument:(NSNotification *)notification;
- (void)setupMenu; - (void)setupMenu;
- (void)addEntry:(id)sender;
@end @end
@@ -69,11 +70,19 @@
- (void)setupMenu { - (void)setupMenu {
NSMenu *menu = [[NSMenu allocWithZone:[NSMenu menuZone]] init]; NSMenu *menu = [[NSMenu allocWithZone:[NSMenu menuZone]] init];
[menu addItemWithTitle:@"Add Group" action:NULL keyEquivalent:@""]; [menu addItemWithTitle:@"Add Group" action:@selector(addEntry:) keyEquivalent:@""];
[menu addItem: [NSMenuItem separatorItem]]; [menu addItem: [NSMenuItem separatorItem]];
[menu addItemWithTitle:@"Delete" action:NULL keyEquivalent:@""]; [menu addItemWithTitle:@"Delete" action:NULL keyEquivalent:@""];
for(NSMenuItem *item in [menu itemArray]) {
[item setTarget:self];
}
self.menu = menu; self.menu = menu;
[menu release]; [menu release];
} }
- (void)addEntry:(id)sender {
NSLog(@"Add Entry");
}
@end @end

View File

@@ -13,6 +13,7 @@ NSString *const MPToolbarItemAddGroup = @"AddGroup";
NSString *const MPToolbarItemAddEntry = @"AddEntry"; NSString *const MPToolbarItemAddEntry = @"AddEntry";
NSString *const MPToolbarItemEdit = @"Edit"; NSString *const MPToolbarItemEdit = @"Edit";
NSString *const MPToolbarItemDelete =@"Delete"; NSString *const MPToolbarItemDelete =@"Delete";
NSString *const MPToolbarItemAction = @"Action";
@interface MPToolbarDelegate() @interface MPToolbarDelegate()
@@ -29,7 +30,7 @@ NSString *const MPToolbarItemDelete =@"Delete";
{ {
self = [super init]; self = [super init];
if (self) { if (self) {
self.toolbarIdentifiers = @[ MPToolbarItemAddEntry, MPToolbarItemDelete, MPToolbarItemEdit, MPToolbarItemAddGroup ]; self.toolbarIdentifiers = @[ MPToolbarItemAddEntry, MPToolbarItemDelete, MPToolbarItemEdit, MPToolbarItemAddGroup, MPToolbarItemAction ];
self.toolbarItems = [NSMutableDictionary dictionaryWithCapacity:[self.toolbarItems count]]; self.toolbarItems = [NSMutableDictionary dictionaryWithCapacity:[self.toolbarItems count]];
self.toolbarImages = [self createToolbarImages]; self.toolbarImages = [self createToolbarImages];
} }
@@ -40,15 +41,54 @@ NSString *const MPToolbarItemDelete =@"Delete";
NSToolbarItem *item = self.toolbarItems[ itemIdentifier ]; NSToolbarItem *item = self.toolbarItems[ itemIdentifier ];
if( !item ) { if( !item ) {
item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier]; item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier];
NSButton *button;
if([itemIdentifier isEqualToString:MPToolbarItemAction]) {
NSPopUpButton *popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 32) pullsDown:YES];
[[popupButton cell] setBezelStyle:NSTexturedRoundedBezelStyle];
[[popupButton cell] setImageScaling:NSImageScaleProportionallyDown];
[popupButton setTitle:@""];
/*
Built menu
*/
NSMenu *menu = [NSMenu allocWithZone:[NSMenu menuZone]];
NSMenuItem *item = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:@"" action:NULL keyEquivalent:@""];
[item setImage:self.toolbarImages[itemIdentifier]]; [item setImage:self.toolbarImages[itemIdentifier]];
[menu addItem:item];
[menu addItemWithTitle:@"Foo" action:NULL keyEquivalent:@""];
[menu addItemWithTitle:@"Bar" action:NULL keyEquivalent:@""];
[popupButton setMenu:menu];
/*
Cleanup
*/
[item release];
[menu release];
button = popupButton;
}
else {
button = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 32, 32)];
[[button cell] setBezelStyle:NSTexturedRoundedBezelStyle];
[[button cell] setImageScaling:NSImageScaleProportionallyDown];
[button setTitle:@""];
[button setButtonType:NSMomentaryPushInButton];
NSImage *image = self.toolbarImages[itemIdentifier];
[button setImage:image];
[button setImagePosition:NSImageOnly];
}
[button sizeToFit];
NSString *label = NSLocalizedString(itemIdentifier, @""); NSString *label = NSLocalizedString(itemIdentifier, @"");
[item setLabel:label]; [item setLabel:label];
[item setView:button];
[item setAction:@selector(toolbarItemPressed:)]; [item setAction:@selector(toolbarItemPressed:)];
self.toolbarItems[itemIdentifier] = item; self.toolbarItems[itemIdentifier] = item;
[item release]; [item release];
[button release];
return item;
} }
return item; return item;
@@ -64,12 +104,14 @@ NSString *const MPToolbarItemDelete =@"Delete";
} }
- (NSDictionary *)createToolbarImages{ - (NSDictionary *)createToolbarImages{
NSDictionary *imageDict = @{ MPToolbarItemAddEntry: [MPIconHelper icon:MPIconCamera], NSDictionary *imageDict = @{ MPToolbarItemAddEntry: [MPIconHelper icon:MPIconPassword],
MPToolbarItemAddGroup: [MPIconHelper icon:MPIconPassword], MPToolbarItemAddGroup: [MPIconHelper icon:MPIconPassword],
MPToolbarItemDelete: [MPIconHelper icon:MPIconServer], MPToolbarItemDelete: [NSImage imageNamed:NSImageNameRemoveTemplate],
MPToolbarItemEdit: [MPIconHelper icon:MPIconNotepad] MPToolbarItemEdit: [MPIconHelper icon:MPIconNotepad],
MPToolbarItemAction: [NSImage imageNamed:NSImageNameActionTemplate]
}; };
return imageDict; return imageDict;
} }
@end @end

View File

@@ -12,6 +12,12 @@
- (void)loadView { - (void)loadView {
[super loadView]; [super loadView];
/* Insert ourselfs in the responder chain */
NSResponder *nextResponder = [[self view] nextResponder];
[[self view] setNextResponder:self];
[self setNextResponder:nextResponder];
[self didLoadView]; [self didLoadView];
} }

View File

@@ -21,7 +21,7 @@
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1</string> <string>76</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

@@ -11,13 +11,9 @@
<string key="NS.object.0">3084</string> <string key="NS.object.0">3084</string>
</object> </object>
<array key="IBDocument.IntegratedClassDependencies"> <array key="IBDocument.IntegratedClassDependencies">
<string>IBNSLayoutConstraint</string>
<string>NSCustomObject</string> <string>NSCustomObject</string>
<string>NSCustomView</string> <string>NSCustomView</string>
<string>NSSplitView</string> <string>NSSplitView</string>
<string>NSToolbar</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>NSToolbarSpaceItem</string>
<string>NSView</string> <string>NSView</string>
<string>NSWindowTemplate</string> <string>NSWindowTemplate</string>
</array> </array>
@@ -41,105 +37,26 @@
<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}, {611, 449}}</string> <string key="NSWindowRect">{{196, 240}, {727, 630}}</string>
<int key="NSWTFlags">544735232</int> <int key="NSWTFlags">544735232</int>
<string key="NSWindowTitle">Window</string> <string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">NSWindow</string> <string key="NSWindowClass">NSWindow</string>
<object class="NSToolbar" key="NSViewClass" id="279945319"> <nil key="NSViewClass"/>
<object class="NSMutableString" key="NSToolbarIdentifier">
<characters key="NS.bytes">04E515E6-01C4-49D0-9F18-CF8CB81C135F</characters>
</object>
<nil key="NSToolbarDelegate"/>
<bool key="NSToolbarPrefersToBeShown">YES</bool>
<bool key="NSToolbarShowsBaselineSeparator">YES</bool>
<bool key="NSToolbarAllowsUserCustomization">YES</bool>
<bool key="NSToolbarAutosavesConfiguration">NO</bool>
<int key="NSToolbarDisplayMode">1</int>
<int key="NSToolbarSizeMode">1</int>
<dictionary class="NSMutableDictionary" key="NSToolbarIBIdentifiedItems">
<object class="NSToolbarFlexibleSpaceItem" key="NSToolbarFlexibleSpaceItem" id="57284363">
<string key="NSToolbarItemIdentifier">NSToolbarFlexibleSpaceItem</string>
<string key="NSToolbarItemLabel"/>
<string key="NSToolbarItemPaletteLabel">Flexible Space</string>
<nil key="NSToolbarItemToolTip"/>
<nil key="NSToolbarItemView"/>
<nil key="NSToolbarItemImage"/>
<nil key="NSToolbarItemTarget"/>
<nil key="NSToolbarItemAction"/>
<string key="NSToolbarItemMinSize">{1, 5}</string>
<string key="NSToolbarItemMaxSize">{20000, 32}</string>
<bool key="NSToolbarItemEnabled">YES</bool>
<bool key="NSToolbarItemAutovalidates">YES</bool>
<int key="NSToolbarItemTag">-1</int>
<bool key="NSToolbarIsUserRemovable">YES</bool>
<int key="NSToolbarItemVisibilityPriority">0</int>
<object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation">
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="181532310">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="523583328">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
</object>
</object>
<object class="NSToolbarSpaceItem" key="NSToolbarSpaceItem" id="702869406">
<string key="NSToolbarItemIdentifier">NSToolbarSpaceItem</string>
<string key="NSToolbarItemLabel"/>
<string key="NSToolbarItemPaletteLabel">Space</string>
<nil key="NSToolbarItemToolTip"/>
<nil key="NSToolbarItemView"/>
<nil key="NSToolbarItemImage"/>
<nil key="NSToolbarItemTarget"/>
<nil key="NSToolbarItemAction"/>
<string key="NSToolbarItemMinSize">{32, 5}</string>
<string key="NSToolbarItemMaxSize">{32, 32}</string>
<bool key="NSToolbarItemEnabled">YES</bool>
<bool key="NSToolbarItemAutovalidates">YES</bool>
<int key="NSToolbarItemTag">-1</int>
<bool key="NSToolbarIsUserRemovable">YES</bool>
<int key="NSToolbarItemVisibilityPriority">0</int>
<object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation">
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="181532310"/>
<reference key="NSMixedImage" ref="523583328"/>
</object>
</object>
</dictionary>
<array key="NSToolbarIBAllowedItems">
<reference ref="702869406"/>
<reference ref="57284363"/>
</array>
<array class="NSMutableArray" key="NSToolbarIBDefaultItems">
<reference ref="57284363"/>
</array>
<array key="NSToolbarIBSelectableItems" id="0"/>
</object>
<nil key="NSUserInterfaceItemIdentifier"/> <nil key="NSUserInterfaceItemIdentifier"/>
<string key="NSWindowContentMinSize">{400, 400}</string>
<object class="NSView" key="NSWindowView" id="1006"> <object class="NSView" key="NSWindowView" id="1006">
<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">
<object class="NSSplitView" id="947682332"> <object class="NSSplitView" id="947682332">
<reference key="NSNextResponder" ref="1006"/> <reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int> <int key="NSvFlags">319</int>
<array class="NSMutableArray" key="NSSubviews"> <array class="NSMutableArray" key="NSSubviews">
<object class="NSCustomView" id="425088172"> <object class="NSCustomView" id="425088172">
<reference key="NSNextResponder" ref="947682332"/> <reference key="NSNextResponder" ref="947682332"/>
<int key="NSvFlags">268</int> <int key="NSvFlags">268</int>
<string key="NSFrameSize">{151, 449}</string> <array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{256, 630}</string>
<reference key="NSSuperview" ref="947682332"/> <reference key="NSSuperview" ref="947682332"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="938782220"/> <reference key="NSNextKeyView" ref="938782220"/>
@@ -149,7 +66,8 @@
<object class="NSCustomView" id="938782220"> <object class="NSCustomView" id="938782220">
<reference key="NSNextResponder" ref="947682332"/> <reference key="NSNextResponder" ref="947682332"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{152, 0}, {459, 449}}</string> <array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{257, 0}, {470, 630}}</string>
<reference key="NSSuperview" ref="947682332"/> <reference key="NSSuperview" ref="947682332"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView"/> <reference key="NSNextKeyView"/>
@@ -157,7 +75,7 @@
<string key="NSClassName">NSView</string> <string key="NSClassName">NSView</string>
</object> </object>
</array> </array>
<string key="NSFrameSize">{611, 449}</string> <string key="NSFrameSize">{727, 630}</string>
<reference key="NSSuperview" ref="1006"/> <reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="425088172"/> <reference key="NSNextKeyView" ref="425088172"/>
@@ -166,12 +84,13 @@
<int key="NSDividerStyle">2</int> <int key="NSDividerStyle">2</int>
</object> </object>
</array> </array>
<string key="NSFrameSize">{611, 449}</string> <string key="NSFrameSize">{727, 630}</string>
<reference key="NSSuperview"/> <reference key="NSSuperview"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="947682332"/> <reference key="NSNextKeyView" ref="947682332"/>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string> <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMinSize">{400, 422}</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>
@@ -186,14 +105,6 @@
</object> </object>
<int key="connectionID">501</int> <int key="connectionID">501</int>
</object> </object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">toolbar</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="279945319"/>
</object>
<int key="connectionID">597</int>
</object>
<object class="IBConnectionRecord"> <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection"> <object class="IBOutletConnection" key="connection">
<string key="label">contentView</string> <string key="label">contentView</string>
@@ -223,7 +134,7 @@
<array key="orderedObjects"> <array key="orderedObjects">
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">0</int> <int key="objectID">0</int>
<reference key="object" ref="0"/> <array key="object" id="0"/>
<reference key="children" ref="1000"/> <reference key="children" ref="1000"/>
<nil key="parent"/> <nil key="parent"/>
</object> </object>
@@ -250,7 +161,6 @@
<reference key="object" ref="1005"/> <reference key="object" ref="1005"/>
<array class="NSMutableArray" key="children"> <array class="NSMutableArray" key="children">
<reference ref="1006"/> <reference ref="1006"/>
<reference ref="279945319"/>
</array> </array>
<reference key="parent" ref="0"/> <reference key="parent" ref="0"/>
</object> </object>
@@ -258,93 +168,10 @@
<int key="objectID">2</int> <int key="objectID">2</int>
<reference key="object" ref="1006"/> <reference key="object" ref="1006"/>
<array class="NSMutableArray" key="children"> <array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="540625459">
<reference key="firstItem" ref="947682332"/>
<int key="firstAttribute">4</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1006"/>
<int key="secondAttribute">4</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="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="678836472">
<reference key="firstItem" ref="947682332"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1006"/>
<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="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="393506505">
<reference key="firstItem" ref="947682332"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1006"/>
<int key="secondAttribute">3</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="595643757">
<reference key="firstItem" ref="947682332"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="1006"/>
<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="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<reference ref="947682332"/> <reference ref="947682332"/>
</array> </array>
<reference key="parent" ref="1005"/> <reference key="parent" ref="1005"/>
</object> </object>
<object class="IBObjectRecord">
<int key="objectID">591</int>
<reference key="object" ref="279945319"/>
<array class="NSMutableArray" key="children">
<reference ref="702869406"/>
<reference ref="57284363"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">592</int>
<reference key="object" ref="702869406"/>
<reference key="parent" ref="279945319"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">595</int>
<reference key="object" ref="57284363"/>
<reference key="parent" ref="279945319"/>
</object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">603</int> <int key="objectID">603</int>
<reference key="object" ref="947682332"/> <reference key="object" ref="947682332"/>
@@ -355,35 +182,16 @@
<reference key="parent" ref="1006"/> <reference key="parent" ref="1006"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">619</int> <int key="objectID">605</int>
<reference key="object" ref="678836472"/> <reference key="object" ref="938782220"/>
<reference key="parent" ref="1006"/> <array class="NSMutableArray" key="children"/>
</object> <reference key="parent" ref="947682332"/>
<object class="IBObjectRecord">
<int key="objectID">615</int>
<reference key="object" ref="393506505"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">614</int>
<reference key="object" ref="595643757"/>
<reference key="parent" ref="1006"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">628</int> <int key="objectID">628</int>
<reference key="object" ref="425088172"/> <reference key="object" ref="425088172"/>
<reference key="parent" ref="947682332"/> <reference key="parent" ref="947682332"/>
</object> </object>
<object class="IBObjectRecord">
<int key="objectID">605</int>
<reference key="object" ref="938782220"/>
<reference key="parent" ref="947682332"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">643</int>
<reference key="object" ref="540625459"/>
<reference key="parent" ref="1006"/>
</object>
</array> </array>
</object> </object>
<dictionary class="NSMutableDictionary" key="flattenedProperties"> <dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -395,24 +203,10 @@
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string> <string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
<integer value="1" key="1.NSWindowTemplate.visibleAtLaunch"/> <integer value="1" key="1.NSWindowTemplate.visibleAtLaunch"/>
<array class="NSMutableArray" key="2.IBNSViewMetadataConstraints">
<reference ref="595643757"/>
<reference ref="393506505"/>
<reference ref="678836472"/>
<reference ref="540625459"/>
</array>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="591.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="592.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="595.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="603.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="603.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="603.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="605.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="605.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="614.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="615.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="619.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="628.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="628.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="643.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary> </dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
@@ -429,7 +223,6 @@
<string key="contentView">NSView</string> <string key="contentView">NSView</string>
<string key="outlineView">NSView</string> <string key="outlineView">NSView</string>
<string key="splitView">NSSplitView</string> <string key="splitView">NSSplitView</string>
<string key="toolbar">NSToolbar</string>
<string key="welcomeView">NSView</string> <string key="welcomeView">NSView</string>
</dictionary> </dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -445,10 +238,6 @@
<string key="name">splitView</string> <string key="name">splitView</string>
<string key="candidateClassName">NSSplitView</string> <string key="candidateClassName">NSSplitView</string>
</object> </object>
<object class="IBToOneOutletInfo" key="toolbar">
<string key="name">toolbar</string>
<string key="candidateClassName">NSToolbar</string>
</object>
<object class="IBToOneOutletInfo" key="welcomeView"> <object class="IBToOneOutletInfo" key="welcomeView">
<string key="name">welcomeView</string> <string key="name">welcomeView</string>
<string key="candidateClassName">NSView</string> <string key="candidateClassName">NSView</string>
@@ -459,24 +248,11 @@
<string key="minorKey">./Classes/MPMainWindowController.h</string> <string key="minorKey">./Classes/MPMainWindowController.h</string>
</object> </object>
</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> </array>
</object> </object>
<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>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{11, 11}</string>
<string key="NSMenuMixedState">{10, 3}</string>
</dictionary>
<bool key="IBDocument.UseAutolayout">YES</bool>
</data> </data>
</archive> </archive>

View File

@@ -152,7 +152,7 @@
<bytes key="NSWhite">MC41AA</bytes> <bytes key="NSWhite">MC41AA</bytes>
</object> </object>
</object> </object>
<double key="NSRowHeight">17</double> <double key="NSRowHeight">24</double>
<int key="NSTvFlags">-767557632</int> <int key="NSTvFlags">-767557632</int>
<reference key="NSDelegate"/> <reference key="NSDelegate"/>
<reference key="NSDataSource"/> <reference key="NSDataSource"/>
@@ -196,7 +196,6 @@
<string key="NSFrame">{{1, 119}, {238, 15}}</string> <string key="NSFrame">{{1, 119}, {238, 15}}</string>
<reference key="NSSuperview" ref="946871415"/> <reference key="NSSuperview" ref="946871415"/>
<reference key="NSWindow"/> <reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:60</string> <string key="NSReuseIdentifierKey">_NS:60</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int> <int key="NSsFlags">1</int>
@@ -760,27 +759,24 @@
<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">188</int> <int key="maxID">194</int>
</object> </object>
<object class="IBClassDescriber" key="IBDocument.Classes"> <object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions"> <array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">MPOutlineViewController</string> <string key="className">MPOutlineViewController</string>
<string key="superclassName">MPViewController</string> <string key="superclassName">MPViewController</string>
<dictionary class="NSMutableDictionary" key="outlets"> <object class="NSMutableDictionary" key="outlets">
<string key="itemMenu">NSMenu</string> <string key="NS.key.0">outlineView</string>
<string key="outlineView">NSOutlineView</string> <string key="NS.object.0">NSOutlineView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="itemMenu">
<string key="name">itemMenu</string>
<string key="candidateClassName">NSMenu</string>
</object> </object>
<object class="IBToOneOutletInfo" key="outlineView"> <object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">outlineView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">outlineView</string> <string key="name">outlineView</string>
<string key="candidateClassName">NSOutlineView</string> <string key="candidateClassName">NSOutlineView</string>
</object> </object>
</dictionary> </object>
<object class="IBClassDescriptionSource" key="sourceIdentifier"> <object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string> <string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPOutlineViewController.h</string> <string key="minorKey">./Classes/MPOutlineViewController.h</string>

View File

@@ -1,29 +1,24 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
{\colortbl;\red255\green255\blue255;} {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
\paperw9840\paperh8400 {\colortbl;\red255\green255\blue255;\red52\green110\blue183;\red38\green38\blue38;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural \paperw11900\paperh16840\vieww15320\viewh13520\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 Engineering: \f0\b\fs24 \cf0 Project Website:\
{\field{\*\fldinst{HYPERLINK "https://github.com/mstarke/MacPass"}}{\fldrslt
\b0 MacPass}}
\b0 \ \b0 \
Some people\
\
\b Human Interface Design: \b \
\b0 \ Credits:\
Some other people\ {\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt
\ \b0 \cf2 KissXML}}
\b0 \cf3 \
\b Testing: by Robbie Hanson\
\b0 \ \
Hopefully not nobody\ {\field{\*\fldinst{HYPERLINK "https://github.com/MiniKeePass/MiniKeePass"}}{\fldrslt \cf2 MiniKeePass}}\
\ by Jason Rush and John Flanagan\
\
\b Documentation: \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \ \cf2 {\field{\*\fldinst{HYPERLINK "https://github.com/mpowrie/KeePassLib"}}{\fldrslt KeePass Database Library}}\cf3 \
Whoever\ by Qiang Yu}
\
\b With special thanks to:
\b0 \
Mom\
}

View File

@@ -2,18 +2,18 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data> <data>
<int key="IBDocument.SystemTarget">1070</int> <int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11E53</string> <string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string> <string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1138.47</string> <string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">569.00</string> <string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2182</string> <string key="NS.object.0">3084</string>
</object> </object>
<array key="IBDocument.IntegratedClassDependencies"> <array key="IBDocument.IntegratedClassDependencies">
<string>NSCustomObject</string>
<string>NSMenu</string> <string>NSMenu</string>
<string>NSMenuItem</string> <string>NSMenuItem</string>
<string>NSCustomObject</string>
</array> </array>
<array key="IBDocument.PluginDependencies"> <array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>