More work on Recylcebin support #24

Document settings display tree to chose recycle bin location
This commit is contained in:
michael starke
2013-07-02 00:48:48 +02:00
parent d5e40721dd
commit f3001b35e1
21 changed files with 477 additions and 220 deletions

View File

@@ -162,6 +162,8 @@
4CC299FF176F99E50050C939 /* MPRequestHandlerService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC299FE176F99E50050C939 /* MPRequestHandlerService.m */; };
4CC29A02176F9D140050C939 /* MPTestAssociateRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC29A01176F9D140050C939 /* MPTestAssociateRequestHandler.m */; };
4CC3AABD175F4983003EF01B /* HNHRoundedTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC3AAB9175F4983003EF01B /* HNHRoundedTextFieldCell.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 */; };
4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */; };
4CD5D702177A5EE400100649 /* DocumentSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */; };
4CD5D705177A5F3300100649 /* MPDocumentSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */; };
@@ -500,6 +502,10 @@
4CC29A01176F9D140050C939 /* MPTestAssociateRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestAssociateRequestHandler.m; sourceTree = "<group>"; };
4CC3AAB8175F4983003EF01B /* HNHRoundedTextFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundedTextFieldCell.h; sourceTree = "<group>"; };
4CC3AAB9175F4983003EF01B /* HNHRoundedTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundedTextFieldCell.m; sourceTree = "<group>"; };
4CC672771781D0C0006DEDCF /* KdbGroup+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+MPAdditions.h"; sourceTree = "<group>"; };
4CC672781781D0C0006DEDCF /* KdbGroup+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+MPAdditions.m"; sourceTree = "<group>"; };
4CC6727A1781D0D2006DEDCF /* KdbEntry+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbEntry+MPAdditions.h"; 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>"; };
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>"; };
@@ -755,6 +761,10 @@
4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */,
4CC1AEBC16D4467C006D2AAB /* KdbTree+MPAdditions.h */,
4CC1AEBD16D4467C006D2AAB /* KdbTree+MPAdditions.m */,
4CC672771781D0C0006DEDCF /* KdbGroup+MPAdditions.h */,
4CC672781781D0C0006DEDCF /* KdbGroup+MPAdditions.m */,
4CC6727A1781D0D2006DEDCF /* KdbEntry+MPAdditions.h */,
4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */,
4C01C23D1764D2980016D5D0 /* KdbEntry+Undo.h */,
4C01C23E1764D2980016D5D0 /* KdbEntry+Undo.m */,
4C22040B1746ED160054C916 /* KdbGroup+Undo.h */,
@@ -1480,6 +1490,8 @@
4C0D9B37177F84D700D0857C /* HNHSecureTextView.m in Sources */,
4C0D9B3A177F867100D0857C /* HNHSecureLayoutManager.m in Sources */,
4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */,
4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */,
4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@@ -69,6 +69,7 @@
<string key="NSFrame">{{378, 13}, {75, 32}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="800358251">
@@ -97,6 +98,7 @@
<string key="NSFrame">{{13, 41}, {441, 246}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="627437575"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<array class="NSMutableArray" key="NSTabViewItems">
<object class="NSTabViewItem" id="993610707">
@@ -147,6 +149,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{50, 121}, {81, 17}}</string>
<reference key="NSSuperview" ref="161117556"/>
<reference key="NSNextKeyView" ref="781083309"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="164178519">
@@ -299,6 +302,7 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{193, 1}, {16, 121}}</string>
<reference key="NSSuperview" ref="781083309"/>
<reference key="NSNextKeyView" ref="86072074"/>
<string key="NSReuseIdentifierKey">_NS:83</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="781083309"/>
@@ -343,7 +347,7 @@
</object>
<object class="NSTabViewItem" id="961038136">
<object class="NSView" key="NSView" id="830804879">
<reference key="NSNextResponder" ref="86072074"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="156220187">
@@ -351,7 +355,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{69, 130}, {68, 17}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="527618216"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -372,7 +375,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{142, 128}, {164, 22}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="653570365"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -398,7 +400,6 @@
</set>
<string key="NSFrame">{{139, 67}, {170, 22}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="484114537"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -427,7 +428,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{86, 71}, {51, 17}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="562503982"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -448,7 +448,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{142, 44}, {164, 19}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="321202844"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -477,7 +476,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{142, 96}, {164, 22}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="323392534"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -499,7 +497,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{22, 98}, {115, 17}}</string>
<reference key="NSSuperview" ref="830804879"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="596828"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -517,8 +514,6 @@
</object>
</array>
<string key="NSFrame">{{10, 33}, {421, 200}}</string>
<reference key="NSSuperview" ref="86072074"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="156220187"/>
</object>
<string key="NSLabel">Protection</string>
@@ -644,7 +639,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{138, 38}, {107, 18}}</string>
<reference key="NSSuperview" ref="915152531"/>
<reference key="NSNextKeyView" ref="321202844"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="621059375">
@@ -675,7 +669,7 @@
</object>
<object class="NSTabViewItem" id="5938958">
<object class="NSView" key="NSView" id="627437575">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder" ref="86072074"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="802671964">
@@ -683,6 +677,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 154}, {149, 18}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="928085070"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -709,6 +704,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 55}, {138, 18}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="515943809"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -735,6 +731,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{43, 35}, {187, 18}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="321202844"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -761,6 +758,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{42, 131}, {94, 17}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="841263489"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -781,6 +779,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{42, 106}, {142, 17}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="312118872"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -801,6 +800,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{187, 101}, {122, 26}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="23176483"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -876,6 +876,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{189, 129}, {96, 22}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="272306362"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -897,6 +898,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{290, 126}, {19, 27}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="694724669"/>
<string key="NSReuseIdentifierKey">_NS:1099</string>
<bool key="NSEnabled">YES</bool>
@@ -914,10 +916,12 @@
<object class="NSPopUpButton" id="515943809">
<reference key="NSNextResponder" ref="627437575"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{187, 54}, {122, 26}}</string>
<string key="NSFrame">{{187, 54}, {220, 26}}</string>
<reference key="NSSuperview" ref="627437575"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="929442684"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{750, 750}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="272342426">
<int key="NSCellFlags">-2076180416</int>
@@ -931,28 +935,27 @@
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="623907764">
<reference key="NSMenu" ref="1073562715"/>
<string key="NSTitle">Item 1</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
<reference key="NSOnImage" ref="401691260"/>
<reference key="NSMixedImage" ref="479156406"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="272342426"/>
</object>
<nil key="NSMenuItem"/>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="1073562715">
<string key="NSTitle">OtherViews</string>
<array class="NSMutableArray" key="NSMenuItems">
<reference ref="623907764"/>
<object class="NSMenuItem" id="623907764">
<reference key="NSMenu" ref="1073562715"/>
<string key="NSTitle">A Folder</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
<reference key="NSOnImage" ref="401691260"/>
<reference key="NSMixedImage" ref="479156406"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="272342426"/>
</object>
<object class="NSMenuItem" id="206087551">
<reference key="NSMenu" ref="1073562715"/>
<string key="NSTitle">Item 2</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="401691260"/>
<reference key="NSMixedImage" ref="479156406"/>
@@ -973,6 +976,7 @@
</array>
<reference key="NSMenuFont" ref="481048132"/>
</object>
<int key="NSSelectedIndex">-1</int>
<int key="NSPreferredEdge">1</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
@@ -982,6 +986,8 @@
</object>
</array>
<string key="NSFrame">{{10, 33}, {421, 200}}</string>
<reference key="NSSuperview" ref="86072074"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="802671964"/>
</object>
<string key="NSLabel">Advanced</string>
@@ -989,13 +995,13 @@
<reference key="NSTabView" ref="86072074"/>
</object>
</array>
<reference key="NSSelectedTabViewItem" ref="961038136"/>
<reference key="NSSelectedTabViewItem" ref="5938958"/>
<reference key="NSFont" ref="481048132"/>
<int key="NSTvFlags">0</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<array class="NSMutableArray" key="NSSubviews">
<reference ref="830804879"/>
<reference ref="627437575"/>
</array>
</object>
</array>
@@ -1004,7 +1010,7 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="86072074"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
@@ -1091,14 +1097,6 @@
</object>
<int key="connectionID">677</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">useRecycleBinCheckButton</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="23176483"/>
</object>
<int key="connectionID">688</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">emptyRecycleBinOnQuitCheckButton</string>
@@ -1131,6 +1129,14 @@
</object>
<int key="connectionID">707</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">enableRecycleBinCheckButton</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="23176483"/>
</object>
<int key="connectionID">815</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1246,8 +1252,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="195261135">
@@ -1262,12 +1268,12 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<reference ref="86072074"/>
<reference ref="321202844"/>
<reference ref="86072074"/>
</array>
<reference key="parent" ref="1005"/>
</object>
@@ -1524,6 +1530,22 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="456177732">
<reference key="firstItem" ref="627437575"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="515943809"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">17</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="627437575"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="316316973">
<reference key="firstItem" ref="515943809"/>
<int key="firstAttribute">5</int>
@@ -1536,8 +1558,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="662964313">
@@ -1557,22 +1579,6 @@
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="821261981">
<reference key="firstItem" ref="312118872"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="515943809"/>
<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="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="1042942101">
<reference key="firstItem" ref="312118872"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
@@ -1616,8 +1622,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="995495772">
@@ -1684,6 +1690,22 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="164419555">
<reference key="firstItem" ref="929442684"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="694724669"/>
<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="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="891999853">
<reference key="firstItem" ref="23176483"/>
<int key="firstAttribute">5</int>
@@ -1716,22 +1738,6 @@
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="164419555">
<reference key="firstItem" ref="694724669"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="929442684"/>
<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="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="253266470">
<reference key="firstItem" ref="694724669"/>
<int key="firstAttribute">5</int>
@@ -1744,8 +1750,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="603572468">
@@ -1776,8 +1782,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="627437575"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="826829209">
@@ -1792,8 +1798,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="627437575"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="886063893">
@@ -1813,13 +1819,13 @@
<int key="contentType">3</int>
</object>
<reference ref="23176483"/>
<reference ref="929442684"/>
<reference ref="928085070"/>
<reference ref="694724669"/>
<reference ref="312118872"/>
<reference ref="841263489"/>
<reference ref="272306362"/>
<reference ref="515943809"/>
<reference ref="929442684"/>
</array>
<reference key="parent" ref="5938958"/>
</object>
@@ -2058,16 +2064,6 @@
<reference key="object" ref="3470984"/>
<reference key="parent" ref="322366428"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">365</int>
<reference key="object" ref="195261135"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">374</int>
<reference key="object" ref="880810841"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">425</int>
<reference key="object" ref="449798296"/>
@@ -2242,16 +2238,6 @@
<reference key="object" ref="428663088"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">390</int>
<reference key="object" ref="1054156999"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">552</int>
<reference key="object" ref="117571712"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">557</int>
<reference key="object" ref="928085070"/>
@@ -2280,6 +2266,22 @@
<reference key="object" ref="694724669"/>
<array class="NSMutableArray" key="children">
<reference ref="514211079"/>
<object class="IBNSLayoutConstraint" id="809612668">
<reference key="firstItem" ref="694724669"/>
<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">136</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="694724669"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="627437575"/>
</object>
@@ -2293,11 +2295,6 @@
<reference key="object" ref="253266470"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">567</int>
<reference key="object" ref="164419555"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">568</int>
<reference key="object" ref="703849112"/>
@@ -2421,11 +2418,6 @@
<reference key="object" ref="578414441"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">603</int>
<reference key="object" ref="1042942101"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">527</int>
<reference key="object" ref="458219550"/>
@@ -2784,6 +2776,22 @@
<reference key="object" ref="515943809"/>
<array class="NSMutableArray" key="children">
<reference ref="272342426"/>
<object class="IBNSLayoutConstraint" id="631142839">
<reference key="firstItem" ref="515943809"/>
<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">215</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="515943809"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="627437575"/>
</object>
@@ -2820,31 +2828,11 @@
<reference key="object" ref="165265102"/>
<reference key="parent" ref="1073562715"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">685</int>
<reference key="object" ref="662964313"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">686</int>
<reference key="object" ref="316316973"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">687</int>
<reference key="object" ref="821261981"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">708</int>
<reference key="object" ref="300990439"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">556</int>
<reference key="object" ref="551703787"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">710</int>
<reference key="object" ref="395189341"/>
@@ -3063,6 +3051,66 @@
<reference key="object" ref="908771696"/>
<reference key="parent" ref="527618216"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">685</int>
<reference key="object" ref="662964313"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">374</int>
<reference key="object" ref="880810841"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">708</int>
<reference key="object" ref="300990439"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">365</int>
<reference key="object" ref="195261135"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">390</int>
<reference key="object" ref="1054156999"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">842</int>
<reference key="object" ref="809612668"/>
<reference key="parent" ref="694724669"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">843</int>
<reference key="object" ref="456177732"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">844</int>
<reference key="object" ref="631142839"/>
<reference key="parent" ref="515943809"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">845</int>
<reference key="object" ref="164419555"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">848</int>
<reference key="object" ref="117571712"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">849</int>
<reference key="object" ref="551703787"/>
<reference key="parent" ref="627437575"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">850</int>
<reference key="object" ref="821261981"/>
<reference key="parent" ref="627437575"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -3122,19 +3170,19 @@
<reference ref="1057722854"/>
<reference ref="603572468"/>
<reference ref="253266470"/>
<reference ref="164419555"/>
<reference ref="703849112"/>
<reference ref="891999853"/>
<reference ref="164419555"/>
<reference ref="117571712"/>
<reference ref="551703787"/>
<reference ref="1260617"/>
<reference ref="995495772"/>
<reference ref="447178899"/>
<reference ref="91575695"/>
<reference ref="1042942101"/>
<reference ref="821261981"/>
<reference ref="662964313"/>
<reference ref="316316973"/>
<reference ref="456177732"/>
<reference ref="565766365"/>
<reference ref="578414441"/>
</array>
@@ -3196,18 +3244,18 @@
<boolean value="NO" key="539.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="539.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="540.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="552.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="556.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="557.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="557.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="558.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="561.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="562.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="564.IBNSViewMetadataConstraints">
<reference ref="809612668"/>
</array>
<boolean value="NO" key="564.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="564.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="565.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="566.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="567.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="568.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="579.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="579.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3232,7 +3280,6 @@
<string key="600.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="601.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="602.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="603.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="619.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="620.IBNSViewMetadataConstraints">
<reference ref="426906662"/>
@@ -3262,7 +3309,7 @@
</array>
<boolean value="NO" key="625.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="625.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="626.CustomClassName">HNHRoundedSecureTextFieldCell</string>
<string key="626.CustomClassName">HNHRoundedTextFieldCell</string>
<string key="626.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="638.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="638.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3271,7 +3318,6 @@
<string key="648.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="650.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="650.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="651.CustomClassName">HNHRoundedSecureTextFieldCell</string>
<string key="651.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="657.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="665.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
@@ -3284,6 +3330,9 @@
<string key="673.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="674.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="675.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="678.IBNSViewMetadataConstraints">
<reference ref="631142839"/>
</array>
<boolean value="NO" key="678.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="678.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="679.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3293,7 +3342,6 @@
<string key="683.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="685.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="686.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="687.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="708.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="710.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="731.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
@@ -3303,7 +3351,7 @@
<string key="735.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="742.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="742.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="744.CustomClassName">HNHRoundedSecureTextFieldCell</string>
<string key="744.CustomClassName">HNHRoundedTextFieldCell</string>
<string key="744.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="748.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="749.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3323,41 +3371,38 @@
<string key="775.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="776.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="777.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="842.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="843.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="844.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="845.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="848.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="849.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="850.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">814</int>
<int key="maxID">850</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">HNHRoundedSecureTextFieldCell</string>
<string key="superclassName">NSSecureTextFieldCell</string>
<string key="className">HNHRoundedTextFieldCell</string>
<string key="superclassName">NSTextFieldCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/HNHRoundedSecureTextFieldCell.h</string>
<string key="minorKey">./Classes/HNHRoundedTextFieldCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPDocumentSettingsWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">close:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">close:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">close:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="databaseDescriptionTextView">NSTextView</string>
<string key="databaseNameTextField">NSTextField</string>
<string key="emptyRecycleBinOnQuitCheckButton">NSButton</string>
<string key="enableRecycleBinCheckButton">NSButton</string>
<string key="keyfilePathControl">NSPathControl</string>
<string key="passwordTextField">NSTextField</string>
<string key="protectNotesCheckButton">NSButton</string>
@@ -3367,7 +3412,6 @@
<string key="protectUserNameCheckButton">NSButton</string>
<string key="sectionTabView">NSTabView</string>
<string key="selectRecycleBinGroupPopUpButton">NSPopUpButton</string>
<string key="useRecycleBinCheckButton">NSButton</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="databaseDescriptionTextView">
@@ -3382,6 +3426,10 @@
<string key="name">emptyRecycleBinOnQuitCheckButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="enableRecycleBinCheckButton">
<string key="name">enableRecycleBinCheckButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="keyfilePathControl">
<string key="name">keyfilePathControl</string>
<string key="candidateClassName">NSPathControl</string>
@@ -3418,10 +3466,6 @@
<string key="name">selectRecycleBinGroupPopUpButton</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo" key="useRecycleBinCheckButton">
<string key="name">useRecycleBinCheckButton</string>
<string key="candidateClassName">NSButton</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>

View File

@@ -0,0 +1,15 @@
//
// KdbEntry+MPAdditions.h
// MacPass
//
// Created by Michael Starke on 01.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "Kdb.h"
@interface KdbEntry (MPAdditions)
@property (nonatomic, readonly) NSImage *icon;
@end

View File

@@ -0,0 +1,19 @@
//
// KdbEntry+MPAdditions.m
// MacPass
//
// Created by Michael Starke on 01.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "KdbEntry+MPAdditions.h"
#import "MPIconHelper.h"
@implementation KdbEntry (MPAdditions)
- (NSImage *)icon {
return [MPIconHelper icon:(MPIconType)self.image];
}
@end

View File

@@ -0,0 +1,22 @@
//
// KdbGroup+MPAdditions.h
// MacPass
//
// Created by Michael Starke on 01.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "Kdb.h"
@interface KdbGroup (MPAdditions)
/* Adapter to load images based on icon index */
@property (nonatomic, readonly) NSImage *icon;
/* Walks the tree up to the root element */
- (KdbGroup *)root;
/* Removes all Groups and Entries from this group*/
- (void)clear;
@end

View File

@@ -0,0 +1,36 @@
//
// KdbGroup+MPAdditions.m
// MacPass
//
// Created by Michael Starke on 01.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "KdbGroup+MPAdditions.h"
#import "KdbGroup+KVOAdditions.h"
#import "MPIconHelper.h"
@implementation KdbGroup (MPAdditions)
- (NSImage *)icon {
return [MPIconHelper icon:(MPIconType)self.image];
}
- (KdbGroup *)root {
if(self.parent) {
return [self.parent root];
}
return self;
}
- (void)clear {
NSUInteger groupCount = [_groups count];
for(NSInteger index = (groupCount - 1); index > -1; index--) {
[self removeObjectFromGroupsAtIndex:index];
}
NSUInteger entryCount = [_entries count];
for(NSInteger index = (entryCount - 1); index > -1; index--) {
[self removeObjectFromEntriesAtIndex:index];
}
}
@end

View File

@@ -19,6 +19,7 @@ typedef NS_ENUM(NSUInteger, MPActionType) {
MPActionOpenURL, // open url in default browser
MPActionToggleInspector,
MPActionLock, // show the lock screen
MPActionEmptyTrash // empties the trashcan, if there is one
};
@interface MPActionHelper : NSObject

View File

@@ -24,7 +24,8 @@
@(MPActionEdit) : @"editEntry:",
@(MPActionOpenURL) : @"openURL:",
@(MPActionToggleInspector) : @"toggleInspector:",
@(MPActionLock) : @"lock:"
@(MPActionLock) : @"lock:",
@(MPActionEmptyTrash) : @"emptyTrash:"
} retain];
});
return NSSelectorFromString(actionDict[@(type)]);

View File

@@ -8,13 +8,15 @@
#import <Cocoa/Cocoa.h>
typedef enum {
MPContextMenuCreate = 1<<0,
MPContextMenuDelete = 1<<1,
MPContextMenuCopy = 1<<2,
MPContextMenuMinimal = MPContextMenuCreate | MPContextMenuDelete,
MPContextMenuFull = MPContextMenuMinimal | MPContextMenuCopy,
} MPContextMenuItemsFlags;
typedef NS_OPTIONS(NSUInteger, MPContextMenuItemsFlags) {
MPContextMenuCreate = 1 << 0,
MPContextMenuDelete = 1 << 1,
MPContextMenuCopy = 1 << 2,
MPContextMenuTrash = 1 << 3,
MPContextMenuMinimal = MPContextMenuCreate | MPContextMenuDelete,
MPContextMenuFull = MPContextMenuMinimal | MPContextMenuCopy,
MPContextMenuExtended = MPContextMenuFull | MPContextMenuTrash
};
@interface MPContextMenuHelper : NSTableCellView

View File

@@ -15,8 +15,9 @@
BOOL insertCreate = (0 != (flags & MPContextMenuCreate));
BOOL insertDelete = (0 != (flags & MPContextMenuDelete));
BOOL insertCopy = (0 != (flags & MPContextMenuCopy));
BOOL insertTrash = (0 != (flags & MPContextMenuTrash));
NSMutableArray *items = [NSMutableArray arrayWithCapacity:7];
NSMutableArray *items = [NSMutableArray arrayWithCapacity:10];
if(insertCreate) {
NSMenuItem *newGroup = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"ADD_GROUP", @"")
@@ -30,20 +31,30 @@
[newEntry release];
[newGroup release];
}
if(insertDelete) {
if([items count] > 0) {
[items addObject:[NSMenuItem separatorItem]];
if(insertDelete || insertTrash) {
[self _beginSection:items];
if(insertDelete) {
NSMenuItem *delete = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"DELETE", @"")
action:[MPActionHelper actionOfType:MPActionDelete]
keyEquivalent:@""];
[items addObject:delete];
[delete release];
}
if(insertTrash) {
NSMenuItem *emptyTrash = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"EMPTY_TRASH", @"")
action:[MPActionHelper actionOfType:MPActionEmptyTrash]
keyEquivalent:@""];
[emptyTrash setKeyEquivalentModifierMask:(NSShiftKeyMask | NSCommandKeyMask)];
unichar backSpace = NSBackspaceCharacter;
[emptyTrash setKeyEquivalent:[NSString stringWithCharacters:&backSpace length:1]];
[items addObject:emptyTrash];
[emptyTrash release];
}
NSMenuItem *delete = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"DELETE", @"")
action:[MPActionHelper actionOfType:MPActionDelete]
keyEquivalent:@""];
[items addObject:delete];
[delete release];
}
if(insertCopy) {
if([items count] > 0) {
[items addObject:[NSMenuItem separatorItem]];
}
[self _beginSection:items];
NSMenuItem *copyUsername = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"COPY_USERNAME", @"")
action:[MPActionHelper actionOfType:MPActionCopyUsername]
keyEquivalent:@"C"];
@@ -74,8 +85,14 @@
[copyPassword release];
[copyUsername release];
}
return items;
}
+ (void)_beginSection:(NSMutableArray *)items {
if([items count] > 0) {
[items addObject:[NSMenuItem separatorItem]];
}
}
@end

View File

@@ -44,6 +44,7 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
@property (readonly, retain) MPRootAdapter *rootAdapter;
@property (nonatomic, retain) NSString *password;
@property (nonatomic, retain) NSURL *key;
@property (assign, readonly) MPDatabaseVersion version;
@property (assign, readonly, getter = isReadOnly) BOOL readOnly;
@@ -69,7 +70,6 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
- (KdbGroup *)createGroup:(KdbGroup *)parent;
- (KdbEntry *)createEntry:(KdbGroup *)parent;
- (StringField *)createStringField:(KdbEntry *)entry;
/*
All non-setter undoable actions
*/
@@ -86,4 +86,6 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
- (void)entry:(Kdb4Entry *)entry addStringField:(StringField *)field atIndex:(NSUInteger)index;
- (void)entry:(Kdb4Entry *)entry removeStringField:(StringField *)field;
- (void)emptyTrash:(id)sender;
@end

View File

@@ -12,6 +12,7 @@
#import "MPDatabaseVersion.h"
#import "MPRootAdapter.h"
#import "MPIconHelper.h"
#import "MPActionHelper.h"
#import "KdbLib.h"
#import "Kdb3Node.h"
@@ -21,6 +22,7 @@
#import "KdbGroup+KVOAdditions.h"
#import "Kdb4Entry+KVOAdditions.h"
#import "KdbGroup+MPTreeTools.h"
#import "KdbGroup+MPAdditions.h"
#import "KdbEntry+Undo.h"
#import "Kdb3Tree+NewTree.h"
#import "Kdb4Tree+NewTree.h"
@@ -51,8 +53,9 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
@property (assign) BOOL readOnly;
@property (retain) NSURL *lockFileURL;
@property (readonly, assign, nonatomic) KdbGroup *recyleBin;
@property (readonly) BOOL useRecylceBin;
@property (readonly) BOOL useTrash;
@property (readonly) KdbGroup *trash;
@end
@@ -258,20 +261,21 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
}
}
- (BOOL)useRecylceBin {
- (BOOL)useTrash {
if(self.treeV4) {
return self.treeV4.recycleBinEnabled;
}
return NO;
}
- (KdbGroup *)recyleBin {
static KdbGroup *_recycleBin;
if(self.useRecylceBin) {
if(!_recycleBin) {
_recycleBin = [self findGroup:self.treeV4.recycleBinUuid];
- (KdbGroup *)trash {
static KdbGroup *_trash = nil;
if(self.useTrash) {
BOOL trashValid = [((Kdb4Group *)_trash).uuid isEqual:self.treeV4.recycleBinUuid];
if(!trashValid) {
_trash = [self findGroup:self.treeV4.recycleBinUuid];
}
return _recycleBin;
return _trash;
}
return nil;
}
@@ -322,7 +326,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
return; // No changes
}
[[[self undoManager] prepareWithInvocationTarget:self] moveGroup:group toGroup:group.parent index:oldIndex];
if(self.recyleBin == target) {
if(self.trash == target) {
[[self undoManager] setActionName:@"UNDO_DELETE_GROUP"];
}
else {
@@ -358,7 +362,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
return; // No changes
}
[[[self undoManager] prepareWithInvocationTarget:self] moveEntry:entry toGroup:entry.parent index:oldIndex];
if(self.recyleBin == target || self.recyleBin == entry.parent) {
if(self.trash == target || self.trash == entry.parent) {
[[self undoManager] setActionName:@"UNDO_DELETE_ENTRY"];
}
else {
@@ -388,11 +392,11 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
if(NSNotFound == index) {
return; // No object found;
}
if(self.useRecylceBin) {
if(!self.recyleBin) {
[self _createRecylceBin];
if(self.useTrash) {
if(!self.trash) {
[self _createTrashGroup];
}
[self moveEntry:entry toGroup:self.recyleBin index:[self.recyleBin.entries count]];
[self moveEntry:entry toGroup:self.trash index:[self.trash.entries count]];
return;
}
[[[self undoManager] prepareWithInvocationTarget:self] group:group addEntry:entry atIndex:index];
@@ -405,15 +409,19 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
if(NSNotFound == index) {
return; // No object found
}
if(self.trash == aGroup) {
return;
// delete Trash?
}
/*
Cleaning the recyclebin is not undoable
So we do this in a separate action
*/
if(self.useRecylceBin) {
if(!self.recyleBin) {
[self _createRecylceBin];
if(self.useTrash) {
if(!self.trash) {
[self _createTrashGroup];
}
[self moveGroup:aGroup toGroup:self.recyleBin index:[self.recyleBin.groups count]];
[self moveGroup:aGroup toGroup:self.trash index:[self.trash.groups count]];
return; // Done!
}
[[[self undoManager] prepareWithInvocationTarget:self] group:group addGroup:aGroup atIndex:index];
@@ -437,6 +445,20 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
[entry removeObjectFromStringFieldsAtIndex:index];
}
#pragma mark Actions
- (void)emptyTrash:(id)sender {
[self.trash clear];
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
if([menuItem action] == [MPActionHelper actionOfType:MPActionEmptyTrash]) {
BOOL hasGroups = [self.trash.groups count] > 0;
BOOL hasEntries = [self.trash.entries count] > 0;
return (hasEntries || hasGroups);
}
return YES;
}
#pragma mark Private
- (void)_cleanupLock {
@@ -446,19 +468,22 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
}
}
- (void)_createRecylceBin {
- (KdbGroup *)_createTrashGroup {
/* Maybe push the stuff to the Tree? */
if(self.version == MPDatabaseVersion3) {
return nil;
}
else if(self.version == MPDatabaseVersion4) {
KdbGroup *recycleBin = [self.tree createGroup:self.tree.root];
recycleBin.name = NSLocalizedString(@"RECYLEBIN", @"Name for the recycle bin group");
recycleBin.image = MPIconTrash;
[self.tree.root insertObject:recycleBin inGroupsAtIndex:[self.tree.root.groups count]];
self.treeV4.recycleBinUuid = ((Kdb4Group *)recycleBin).uuid;
KdbGroup *trash = [self.tree createGroup:self.tree.root];
trash.name = NSLocalizedString(@"RECYLEBIN", @"Name for the recycle bin group");
trash.image = MPIconTrash;
[self.tree.root insertObject:trash inGroupsAtIndex:[self.tree.root.groups count]];
self.treeV4.recycleBinUuid = ((Kdb4Group *)trash).uuid;
return trash;
}
else {
NSAssert(NO, @"Database with unknown version: %ld", _version);
return nil;
}
}

View File

@@ -18,6 +18,7 @@
/* General Tab */
@property (assign) IBOutlet NSTextField *databaseNameTextField;
@property (assign) IBOutlet NSTextView *databaseDescriptionTextView;
/* Protection */
@property (assign) IBOutlet NSTextField *passwordTextField;
@property (assign) IBOutlet NSPathControl *keyfilePathControl;
@@ -31,12 +32,11 @@
/* Advanced Tab*/
@property (assign) IBOutlet NSButton *useRecycleBinCheckButton;
@property (assign) IBOutlet NSButton *enableRecycleBinCheckButton;
@property (assign) IBOutlet NSButton *emptyRecycleBinOnQuitCheckButton;
@property (assign) IBOutlet NSPopUpButton *selectRecycleBinGroupPopUpButton;
- (id)initWithDocument:(MPDocument *)document;
- (void)update;
@end

View File

@@ -10,7 +10,11 @@
#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;
@@ -34,12 +38,14 @@
- (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 _setupHistoryTab:tree];
[self _setupAdvancedTab:tree];
[self _setupPasswordTab:tree];
}
else {
@@ -52,6 +58,15 @@
[[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];
@@ -65,12 +80,52 @@
[self.protectUserNameCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectUserName" options:nil];
}
- (void)_setupHistoryTab:(Kdb4Tree *)tree {
- (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([menuItem representedObject]) {
}
}
- (void)_updateTrashFolders:(Kdb4Tree *)tree {
NSMenu *menu = [self _buildTreeMenu:tree];
[self.selectRecycleBinGroupPopUpButton setMenu:menu];
}
- (NSMenu *)_buildTreeMenu:(Kdb4Tree *)tree {
NSMenu *menu = [[NSMenu alloc] init];
BOOL foundTrash = NO;
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]) {
foundTrash = YES;
[groupItem setState:NSOnState];
}
[menu addItem:groupItem];
[groupItem release];
}
if(!foundTrash) {
NSMenuItem *selectItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SELECT_RECYCLEBIN", @"Menu item if no reycleBin is selected") action:NULL keyEquivalent:@""];
[selectItem setEnabled:NO];
[menu insertItem:selectItem atIndex:0];
[selectItem release];
}
return [menu autorelease];
}
@end

View File

@@ -224,6 +224,7 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur
if(!self.documentSettingsWindowController) {
_documentSettingsWindowController = [[MPDocumentSettingsWindowController alloc] initWithDocument:[self document]];
}
[_documentSettingsWindowController update];
[[NSApplication sharedApplication] beginSheet:[_documentSettingsWindowController window] modalForWindow:[self window] modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
}

View File

@@ -14,5 +14,7 @@
@property (readonly, retain) NSArray *groups;
@property (nonatomic, retain) KdbTree *tree;
/* Subs to support interface */
@property (readonly, nonatomic) NSArray *entries;
@end

View File

@@ -30,4 +30,7 @@
}
}
- (NSArray *)entries {
return nil;
}
@end

View File

@@ -76,7 +76,7 @@ NSString *const MPToolbarItemInspector = @"TOOLBAR_INSPECTOR";
[actionImageItem setImage:self.toolbarImages[MPToolbarItemAction]];
[menu addItem:actionImageItem];
[actionImageItem release];
NSArray *menuItems = [MPContextMenuHelper contextMenuItemsWithItems:MPContextMenuFull];
NSArray *menuItems = [MPContextMenuHelper contextMenuItemsWithItems:MPContextMenuExtended];
for(NSMenuItem *item in menuItems) {
[menu addItem:item];
}

View File

@@ -48,7 +48,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1706</string>
<string>1782</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>

Binary file not shown.

Binary file not shown.