2
0

Open at Login and initial window improvements.

[ADDED]     Mac: Open at Login.
[UPDATED]   Mac: Mark users menu item when no user selected.
[ADDED]     Mac: Toggle open-at-login and enable-cloud from initial window.
This commit is contained in:
Maarten Billemont 2013-06-08 18:12:49 -04:00
parent c400868026
commit 86758b498c
19 changed files with 1985 additions and 1037 deletions

View File

@ -1,846 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12D78</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.37</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">3084</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBNSLayoutConstraint</string>
<string>NSButton</string>
<string>NSButtonCell</string>
<string>NSCustomObject</string>
<string>NSImageCell</string>
<string>NSImageView</string>
<string>NSTextField</string>
<string>NSTextFieldCell</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">MPMacAppDelegate</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">3</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 240}, {1000, 600}}</string>
<int key="NSWTFlags">544735232</int>
<string key="NSWindowTitle"/>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<string key="NSWindowContentMaxSize">{1000, 600}</string>
<string key="NSWindowContentMinSize">{1000, 600}</string>
<object class="NSView" key="NSWindowView" id="1006">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSImageView" id="239017458">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<set class="NSMutableSet" key="NSDragTypes">
<string>Apple PDF pasteboard type</string>
<string>Apple PICT pasteboard type</string>
<string>Apple PNG pasteboard type</string>
<string>NSFilenamesPboardType</string>
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
<string>NeXT TIFF v4.0 pasteboard type</string>
</set>
<string key="NSFrameSize">{1000, 600}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSNextKeyView" ref="646244955"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="261194757">
<int key="NSCellFlags">134217728</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">shot-laptop-leaning-iphone</string>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<int key="NSAlign">0</int>
<int key="NSScale">0</int>
<int key="NSStyle">0</int>
<bool key="NSAnimates">NO</bool>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
<object class="NSButton" id="869795111">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{18, 18}, {964, 18}}</string>
<reference key="NSSuperview" ref="1006"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="19333287">
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Don't Show Again</string>
<object class="NSFont" key="NSSupport" id="1068244176">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="869795111"/>
<int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
<object class="NSButtonImageSource" key="NSAlternateImage">
<string key="NSImageName">NSSwitch</string>
</object>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="559793353">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{425, 42}, {150, 44}}</string>
<reference key="NSSuperview" ref="1006"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="346744143">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="1068244176"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="559793353"/>
<int key="NSButtonFlags">-2039201792</int>
<int key="NSButtonFlags2">6</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">appstore</string>
</object>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="646244955">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 508}, {966, 72}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSNextKeyView" ref="720386320"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="724372590">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string type="base64-UTF8" key="NSContents">QWNjZXNzIHlvdXIgcGFzc3dvcmRzCmZyb20gYW55d2hlcmUuA</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">MyriadPro-Bold</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="646244955"/>
<object class="NSColor" key="NSBackgroundColor" id="77040629">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="866494792">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="720386320">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{357, 94}, {286, 24}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSNextKeyView" ref="559793353"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="978143820">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">138413056</int>
<string key="NSContents">Master Password for iPhone</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">MyriadPro-Regular</string>
<double key="NSSize">24</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="720386320"/>
<reference key="NSBackgroundColor" ref="77040629"/>
<reference key="NSTextColor" ref="866494792"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrameSize">{1000, 600}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="239017458"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSMinSize">{1000, 622}</string>
<string key="NSMaxSize">{1000, 622}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">iphoneAppStore:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="559793353"/>
</object>
<int key="connectionID">206</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">appWindowDontShow</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="869795111"/>
</object>
<int key="connectionID">207</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="1005"/>
<array class="NSMutableArray" key="children">
<reference ref="1006"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="1006"/>
<array class="NSMutableArray" key="children">
<object class="IBNSLayoutConstraint" id="260492827">
<reference key="firstItem" ref="559793353"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="720386320"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">8</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="282049682">
<reference key="firstItem" ref="1006"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="559793353"/>
<int key="secondAttribute">9</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="280699439">
<reference key="firstItem" ref="720386320"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="559793353"/>
<int key="secondAttribute">9</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="748612765">
<reference key="firstItem" ref="869795111"/>
<int key="firstAttribute">3</int>
<int key="relation">0</int>
<reference key="secondItem" ref="559793353"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">8</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="304799569">
<reference key="firstItem" ref="1006"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="869795111"/>
<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="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="41926540">
<reference key="firstItem" ref="1006"/>
<int key="firstAttribute">4</int>
<int key="relation">0</int>
<reference key="secondItem" ref="869795111"/>
<int key="secondAttribute">4</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="207300727">
<reference key="firstItem" ref="869795111"/>
<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="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</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="683384389">
<reference key="firstItem" ref="1006"/>
<int key="firstAttribute">6</int>
<int key="relation">0</int>
<reference key="secondItem" ref="646244955"/>
<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="1006"/>
<int key="scoringType">8</int>
<float key="scoringTypeFloat">29</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="279398232">
<reference key="firstItem" ref="646244955"/>
<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="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</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="685994169">
<reference key="firstItem" ref="646244955"/>
<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="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">20</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="495160699">
<reference key="firstItem" ref="239017458"/>
<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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="427260073">
<reference key="firstItem" ref="239017458"/>
<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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="584151918">
<reference key="firstItem" ref="239017458"/>
<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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="750578605">
<reference key="firstItem" ref="239017458"/>
<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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="1022859555">
<reference key="firstItem" ref="239017458"/>
<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">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="509574700">
<reference key="firstItem" ref="1006"/>
<int key="firstAttribute">9</int>
<int key="relation">0</int>
<reference key="secondItem" ref="239017458"/>
<int key="secondAttribute">9</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1006"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<reference ref="869795111"/>
<reference ref="239017458"/>
<reference ref="559793353"/>
<reference ref="646244955"/>
<reference ref="720386320"/>
</array>
<reference key="parent" ref="1005"/>
<string key="objectName">Container</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="239017458"/>
<array class="NSMutableArray" key="children">
<reference ref="261194757"/>
<object class="IBNSLayoutConstraint" id="671750653">
<reference key="firstItem" ref="239017458"/>
<int key="firstAttribute">8</int>
<int key="relation">0</int>
<nil key="secondItem"/>
<int key="secondAttribute">0</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">600</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="239017458"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
<object class="IBNSLayoutConstraint" id="740394773">
<reference key="firstItem" ref="239017458"/>
<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">1000</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="239017458"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="1006"/>
<string key="objectName">Image</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="261194757"/>
<reference key="parent" ref="239017458"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">59</int>
<reference key="object" ref="869795111"/>
<array class="NSMutableArray" key="children">
<reference ref="19333287"/>
<object class="IBNSLayoutConstraint" id="487682114">
<reference key="firstItem" ref="869795111"/>
<int key="firstAttribute">8</int>
<int key="relation">0</int>
<nil key="secondItem"/>
<int key="secondAttribute">0</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">14</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="869795111"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
</array>
<reference key="parent" ref="1006"/>
<string key="objectName">Check</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">60</int>
<reference key="object" ref="19333287"/>
<reference key="parent" ref="869795111"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">77</int>
<reference key="object" ref="487682114"/>
<reference key="parent" ref="869795111"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">149</int>
<reference key="object" ref="207300727"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">173</int>
<reference key="object" ref="559793353"/>
<array class="NSMutableArray" key="children">
<reference ref="346744143"/>
</array>
<reference key="parent" ref="1006"/>
<string key="objectName">Store</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">174</int>
<reference key="object" ref="346744143"/>
<reference key="parent" ref="559793353"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">219</int>
<reference key="object" ref="41926540"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">220</int>
<reference key="object" ref="304799569"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">226</int>
<reference key="object" ref="740394773"/>
<reference key="parent" ref="239017458"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">227</int>
<reference key="object" ref="671750653"/>
<reference key="parent" ref="239017458"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">268</int>
<reference key="object" ref="646244955"/>
<array class="NSMutableArray" key="children">
<reference ref="724372590"/>
</array>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">269</int>
<reference key="object" ref="724372590"/>
<reference key="parent" ref="646244955"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">280</int>
<reference key="object" ref="685994169"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">281</int>
<reference key="object" ref="279398232"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">283</int>
<reference key="object" ref="720386320"/>
<array class="NSMutableArray" key="children">
<reference ref="978143820"/>
</array>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">284</int>
<reference key="object" ref="978143820"/>
<reference key="parent" ref="720386320"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">231</int>
<reference key="object" ref="282049682"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">298</int>
<reference key="object" ref="280699439"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">299</int>
<reference key="object" ref="683384389"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">230</int>
<reference key="object" ref="1022859555"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">265</int>
<reference key="object" ref="584151918"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">266</int>
<reference key="object" ref="427260073"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">229</int>
<reference key="object" ref="509574700"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">267</int>
<reference key="object" ref="495160699"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">264</int>
<reference key="object" ref="750578605"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">260</int>
<reference key="object" ref="748612765"/>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">291</int>
<reference key="object" ref="260492827"/>
<reference key="parent" ref="1006"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="1.IBNSWindowAutoPositionCentersHorizontal"/>
<boolean value="YES" key="1.IBNSWindowAutoPositionCentersVertical"/>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
<boolean value="YES" key="1.NSWindowTemplate.visibleAtLaunch"/>
<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="173.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="173.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="174.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="2.IBNSViewMetadataConstraints">
<reference ref="509574700"/>
<reference ref="1022859555"/>
<reference ref="750578605"/>
<reference ref="584151918"/>
<reference ref="427260073"/>
<reference ref="495160699"/>
<reference ref="685994169"/>
<reference ref="279398232"/>
<reference ref="683384389"/>
<reference ref="207300727"/>
<reference ref="41926540"/>
<reference ref="304799569"/>
<reference ref="748612765"/>
<reference ref="280699439"/>
<reference ref="282049682"/>
<reference ref="260492827"/>
</array>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="219.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="220.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="226.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="227.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="229.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="230.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="231.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="260.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="264.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="265.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="266.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="267.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="268.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="268.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="269.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="280.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="281.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="283.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="283.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="284.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="291.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="298.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="299.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array key="3.IBNSViewMetadataConstraints">
<reference ref="740394773"/>
<reference ref="671750653"/>
</array>
<boolean value="NO" key="3.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="59.IBNSViewMetadataConstraints">
<reference ref="487682114"/>
</array>
<boolean value="NO" key="59.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="59.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="60.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="77.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">337</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSSwitch">{15, 15}</string>
<string key="appstore">{150, 44}</string>
<string key="shot-laptop-leaning-iphone">{1000, 600}</string>
</dictionary>
<bool key="IBDocument.UseAutolayout">YES</bool>
</data>
</archive>

File diff suppressed because it is too large Load Diff

View File

@ -18,17 +18,19 @@
@property(nonatomic, weak) IBOutlet NSMenuItem *lockItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *showItem;
@property(nonatomic, strong) IBOutlet NSMenu *statusMenu;
@property(nonatomic, weak) IBOutlet NSMenuItem *useICloudItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *useCloudItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *rememberPasswordItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *openAtLoginItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *savePasswordItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *createUserItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *usersItem;
@property(nonatomic, weak) IBOutlet NSMenuItem *dialogStyleRegular;
@property(nonatomic, weak) IBOutlet NSMenuItem *dialogStyleHUD;
@property(nonatomic, weak) IBOutlet NSButton *appWindowDontShow;
@property(nonatomic, weak) IBOutlet NSButton *openAtLoginButton;
@property(nonatomic, weak) IBOutlet NSButton *enableCloudButton;
- (IBAction)showPasswordWindow:(id)sender;
- (IBAction)togglePreference:(NSMenuItem *)sender;
- (IBAction)togglePreference:(id)sender;
- (IBAction)newUser:(NSMenuItem *)sender;
- (IBAction)lock:(id)sender;
- (IBAction)rebuildCloud:(id)sender;

View File

@ -10,10 +10,13 @@
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Store.h"
#import <Carbon/Carbon.h>
#import <ServiceManagement/ServiceManagement.h>
#define LOGIN_HELPER_BUNDLE_ID @"com.lyndir.lhunath.MasterPassword.Mac.LoginHelper"
@interface MPMacAppDelegate()
@property(nonatomic, strong) NSWindowController *appsWindow;
@property(nonatomic, strong) NSWindowController *initialWindow;
@end
@implementation MPMacAppDelegate
@ -101,7 +104,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
if (!activeUser && [user.name isEqualToString:[MPMacConfig get].usedUserName])
[self selectUser:userItem];
}
[self updateMenuItems];
}
@ -124,12 +127,18 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
[self.statusView popUpMenu];
}
- (IBAction)togglePreference:(NSMenuItem *)sender {
- (IBAction)togglePreference:(id)sender {
if (sender == self.useICloudItem)
[self storeManager].cloudEnabled = !(sender.state == NSOnState);
if (sender == self.enableCloudButton)
[self storeManager].cloudEnabled = (self.enableCloudButton.state == NSOnState);
if (sender == self.useCloudItem)
[self storeManager].cloudEnabled = !(self.useCloudItem.state == NSOnState);
if (sender == self.rememberPasswordItem)
[MPConfig get].rememberLogin = [NSNumber numberWithBool:![[MPConfig get].rememberLogin boolValue]];
if (sender == self.openAtLoginButton)
[self setLoginItemEnabled:(self.openAtLoginButton.state == NSOnState)];
if (sender == self.openAtLoginItem)
[self setLoginItemEnabled:!(self.openAtLoginItem.state == NSOnState)];
if (sender == self.savePasswordItem) {
[MPMacAppDelegate managedObjectContextPerformBlockAndWait:^(NSManagedObjectContext *context) {
MPUserEntity *activeUser = [[MPMacAppDelegate get] activeUserInContext:context];
@ -151,8 +160,8 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
NSAlert *alert = [NSAlert alertWithMessageText:@"New User"
defaultButton:@"Create User" alternateButton:nil otherButton:@"Cancel"
informativeTextWithFormat:@"To begin, enter your full name.\n\n"
@"IMPORTANT: Enter your name correctly, including the right capitalization, "
@"as you would on an official document."];
@"IMPORTANT: Enter your name correctly, including the right capitalization, "
@"as you would on an official document."];
NSTextField *nameField = [[NSTextField alloc] initWithFrame:NSMakeRect( 0, 0, 200, 22 )];
[alert setAccessoryView:nameField];
[alert layout];
@ -195,10 +204,10 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
- (IBAction)terminate:(id)sender {
NSLog(@"Closing: Terminating");
NSLog( @"Closing: Terminating" );
[self.passwordWindow close];
self.passwordWindow = nil;
[NSApp terminate:nil];
}
@ -206,9 +215,9 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://itunes.apple.com/app/id510296984"]];
NSLog(@"Closing: App Store");
[self.appWindowDontShow.window close];
self.appWindowDontShow = nil;
NSLog( @"Closing: App Store" );
[self.initialWindow close];
self.initialWindow = nil;
}
- (void)didUpdateConfigForKey:(SEL)configKey fromValue:(id)oldValue {
@ -236,7 +245,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
// Status item.
self.statusView = [[RHStatusItemView alloc] initWithStatusBarItem:
[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]];
[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]];
self.statusView.image = [NSImage imageNamed:@"menu-icon"];
self.statusView.menu = self.statusMenu;
self.statusView.target = self;
@ -257,12 +266,12 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
self.savePasswordItem.state = [[MPMacAppDelegate get] activeUserForThread].saveKey? NSOnState: NSOffState;
self.dialogStyleRegular.state = ![[MPMacConfig get].dialogStyleHUD boolValue]? NSOnState: NSOffState;
self.dialogStyleHUD.state = [[MPMacConfig get].dialogStyleHUD boolValue]? NSOnState: NSOffState;
if ([note.object isEqual:NSStringFromSelector( @selector(dialogStyleHUD) )]) {
if (![self.passwordWindow.window isVisible])
self.passwordWindow = nil;
else {
NSLog(@"Closing: dialogStyleHUD && passwordWindow.isVisible");
NSLog( @"Closing: dialogStyleHUD && passwordWindow.isVisible" );
[self.passwordWindow close];
self.passwordWindow = nil;
[self showPasswordWindow:nil];
@ -275,7 +284,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
EventHotKeyRef hotKeyRef;
EventTypeSpec hotKeyEvents[1] = { { .eventClass = kEventClassKeyboard, .eventKind = kEventHotKeyPressed } };
OSStatus status = InstallApplicationEventHandler(NewEventHandlerUPP( MPHotKeyHander ), GetEventTypeCount( hotKeyEvents ),
hotKeyEvents, (__bridge void *)self, NULL);
hotKeyEvents, (__bridge void *)self, NULL);
if (status != noErr)
err(@"Error installing application event handler: %d", status);
status = RegisterEventHotKey( 35 /* p */, controlKey + cmdKey, MPShowHotKey, GetApplicationEventTarget(), 0, &hotKeyRef );
@ -284,43 +293,37 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
status = RegisterEventHotKey( 35 /* p */, controlKey + optionKey + cmdKey, MPLockHotKey, GetApplicationEventTarget(), 0, &hotKeyRef );
if (status != noErr)
err(@"Error registering 'lock' hotkey: %d", status);
// Initial display.
[NSApp activateIgnoringOtherApps:YES];
if (YES || [[MPMacConfig get].showAppWindow boolValue]) {
[self.appsWindow = [[NSWindowController alloc] initWithWindowNibName:@"MPAppsWindow" owner:self] showWindow:self];
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification object:self.appsWindow.window queue:nil
usingBlock:^(NSNotification *note) {
[MPMacConfig get].showAppWindow = @(self.appWindowDontShow.state == NSOffState);
}];
}
[[NSOperationQueue mainQueue] addOperation:[NSBlockOperation blockOperationWithBlock:^{
if (YES || [[MPMacConfig get].firstRun boolValue]) {
[self showMenu];
}
}]];
if ([[MPMacConfig get].firstRun boolValue])
[self.initialWindow = [[NSWindowController alloc] initWithWindowNibName:@"MPInitialWindow" owner:self] showWindow:self];
}
- (void)setActiveUser:(MPUserEntity *)activeUser {
BOOL reopenPasswordWindow = [self.passwordWindow.window isVisible];
if (![[self activeUserForThread].objectID isEqual:activeUser.objectID]) {
NSLog(@"Closing: activeUser changed: %@ -> %@, reopening: %d", [self activeUserForThread].objectID, activeUser.objectID, reopenPasswordWindow);
NSLog( @"Closing: activeUser changed: %@ -> %@, reopening: %d", [self activeUserForThread].objectID, activeUser.objectID,
reopenPasswordWindow );
[self.passwordWindow close];
self.passwordWindow = nil;
[super setActiveUser:activeUser];
}
self.usersItem.state = NSMixedState;
[[[self.usersItem submenu] itemArray] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([[obj representedObject] isEqual:[activeUser objectID]])
if ([[obj representedObject] isEqual:[activeUser objectID]]) {
[obj setState:NSOnState];
self.usersItem.state = NSOffState;
}
else
[obj setState:NSOffState];
}];
[MPMacConfig get].usedUserName = activeUser.name;
if (reopenPasswordWindow)
[self showPasswordWindow:nil];
}
@ -352,6 +355,9 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
self.lockItem.toolTip = @"Master Password is currently locked.";
}
BOOL loginItemEnabled = [self loginItemEnabled];
self.openAtLoginItem.state = loginItemEnabled? NSOnState: NSOffState;
self.openAtLoginButton.state = loginItemEnabled? NSOnState: NSOffState;
self.rememberPasswordItem.state = [[MPConfig get].rememberLogin boolValue]? NSOnState: NSOffState;
self.savePasswordItem.state = activeUser.saveKey? NSOnState: NSOffState;
@ -371,35 +377,68 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
self.savePasswordItem.toolTip = nil;
}
self.useICloudItem.state = self.storeManager.cloudEnabled? NSOnState: NSOffState;
self.useICloudItem.enabled = self.storeManager.cloudAvailable;
self.useCloudItem.state = self.storeManager.cloudEnabled? NSOnState: NSOffState;
self.enableCloudButton.state = self.storeManager.cloudEnabled? NSOnState: NSOffState;
self.useCloudItem.enabled = self.storeManager.cloudAvailable;
if (self.storeManager.cloudAvailable) {
self.useICloudItem.title = @"Use iCloud";
self.useICloudItem.toolTip = nil;
self.useCloudItem.title = @"Use iCloud";
self.useCloudItem.toolTip = nil;
}
else {
self.useICloudItem.title = @"Use iCloud (Unavailable)";
self.useICloudItem.toolTip = @"iCloud is not set up for your Mac user.";
self.useCloudItem.title = @"Use iCloud (Unavailable)";
self.useCloudItem.toolTip = @"iCloud is not set up for your Mac user.";
}
}
- (IBAction)showPasswordWindow:(id)sender {
[NSApp activateIgnoringOtherApps:YES];
// If no user, can't activate.
if (![self activeUserForThread]) {
[[NSAlert alertWithMessageText:@"No User Selected" defaultButton:[PearlStrings get].commonButtonOkay alternateButton:nil otherButton:nil informativeTextWithFormat:@"Begin by selecting or creating your user from the status menu (●●●|) next to the clock.", nil] runModal];
[[NSAlert alertWithMessageText:@"No User Selected" defaultButton:[PearlStrings get].commonButtonOkay alternateButton:nil
otherButton:nil informativeTextWithFormat:
@"Begin by selecting or creating your user from the status menu (●●●|) next to the clock."]
runModal];
return;
}
// Don't show window if we weren't already running (ie. if we haven't been activated before).
if (!self.passwordWindow)
self.passwordWindow = [[MPPasswordWindowController alloc] initWithWindowNibName:@"MPPasswordWindowController"];
[self.passwordWindow showWindow:self];
}
- (void)setLoginItemEnabled:(BOOL)enabled {
BOOL loginItemEnabled = [self loginItemEnabled];
if (loginItemEnabled != enabled) {
if (SMLoginItemSetEnabled( (__bridge CFStringRef)LOGIN_HELPER_BUNDLE_ID, (Boolean)enabled ) == true)
loginItemEnabled = enabled;
else
wrn(@"Failed to set login item.");
}
self.openAtLoginItem.state = loginItemEnabled? NSOnState: NSOffState;
self.openAtLoginButton.state = loginItemEnabled? NSOnState: NSOffState;
}
- (BOOL)loginItemEnabled {
// The easy and sane method (SMJobCopyDictionary) can pose problems when the app is sandboxed. -_-
NSArray *jobs = (__bridge_transfer NSArray *)SMCopyAllJobDictionaries( kSMDomainUserLaunchd );
for (NSDictionary *job in jobs)
if ([LOGIN_HELPER_BUNDLE_ID isEqualToString:[job objectForKey:@"Label"]]) {
dbg(@"loginItemEnabled: %@", @([[job objectForKey:@"OnDemand"] boolValue]));
return [[job objectForKey:@"OnDemand"] boolValue];
}
dbg(@"loginItemEnabled: not found");
return NO;
}
- (void)applicationWillResignActive:(NSNotification *)notification {
if (![[MPConfig get].rememberLogin boolValue])

View File

@ -12,6 +12,5 @@
@property(nonatomic, retain) NSString *usedUserName;
@property(nonatomic, retain) NSNumber *dialogStyleHUD;
@property(nonatomic, strong) NSNumber *showAppWindow;
@end

View File

@ -10,7 +10,6 @@
@dynamic usedUserName;
@dynamic dialogStyleHUD;
@dynamic showAppWindow;
- (id)init {
@ -20,7 +19,6 @@
[self.defaults registerDefaults:@{
NSStringFromSelector( @selector(iTunesID) ) : @"510296984",
NSStringFromSelector( @selector(dialogStyleHUD) ) : @NO,
NSStringFromSelector( @selector(showAppWindow) ) : @YES
}];
return self;

View File

@ -84,6 +84,18 @@
[super windowDidLoad];
}
- (BOOL)shouldCloseDocument {
NSLog(@"shouldCloseDocument:\n%@", [NSThread callStackSymbols]);
return [super shouldCloseDocument];
}
- (void)close {
NSLog(@"close:\n%@", [NSThread callStackSymbols]);
[super close];
}
- (void)handleUnloadedOrLocked {
if (!self.inProgress && ![MPMacAppDelegate get].key) {

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ATSApplicationFontsPath</key>
<string>.</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
@ -14,6 +16,8 @@
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleDisplayName</key>
<string>Master Password</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@ -34,7 +38,5 @@
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>ATSApplicationFontsPath</key>
<string>.</string>
</dict>
</plist>

View File

@ -0,0 +1,316 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
DAD9B5CF176299B9001835F9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAD9B5CD176299B9001835F9 /* InfoPlist.strings */; };
DAD9B5D1176299B9001835F9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DAD9B5D0176299B9001835F9 /* main.m */; };
DAD9B5D8176299B9001835F9 /* MPLoginAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DAD9B5D7176299B9001835F9 /* MPLoginAppDelegate.m */; };
DAD9B5EC1762AAA6001835F9 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD9B5EB1762AAA6001835F9 /* AppKit.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
DAD9B5C1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MasterPassword-Mac-LoginHelper.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DAD9B5CC176299B9001835F9 /* MasterPassword-Mac-LoginHelper-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MasterPassword-Mac-LoginHelper-Info.plist"; sourceTree = "<group>"; };
DAD9B5CE176299B9001835F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
DAD9B5D0176299B9001835F9 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
DAD9B5D6176299B9001835F9 /* MPLoginAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPLoginAppDelegate.h; sourceTree = "<group>"; };
DAD9B5D7176299B9001835F9 /* MPLoginAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPLoginAppDelegate.m; sourceTree = "<group>"; };
DAD9B5EA17629C56001835F9 /* MasterPassword-Mac-LoginHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "MasterPassword-Mac-LoginHelper.entitlements"; sourceTree = "<group>"; };
DAD9B5EB1762AAA6001835F9 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
DAD9B5BE176299B9001835F9 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
DAD9B5EC1762AAA6001835F9 /* AppKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
DAD9B5B8176299B9001835F9 = {
isa = PBXGroup;
children = (
DAD9B5CA176299B9001835F9 /* MasterPassword-Mac-LoginHelper */,
DAD9B5C3176299B9001835F9 /* Frameworks */,
DAD9B5C2176299B9001835F9 /* Products */,
);
sourceTree = "<group>";
};
DAD9B5C2176299B9001835F9 /* Products */ = {
isa = PBXGroup;
children = (
DAD9B5C1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.app */,
);
name = Products;
sourceTree = "<group>";
};
DAD9B5C3176299B9001835F9 /* Frameworks */ = {
isa = PBXGroup;
children = (
DAD9B5EB1762AAA6001835F9 /* AppKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
DAD9B5CA176299B9001835F9 /* MasterPassword-Mac-LoginHelper */ = {
isa = PBXGroup;
children = (
DAD9B5EA17629C56001835F9 /* MasterPassword-Mac-LoginHelper.entitlements */,
DAD9B5D6176299B9001835F9 /* MPLoginAppDelegate.h */,
DAD9B5D7176299B9001835F9 /* MPLoginAppDelegate.m */,
DAD9B5CB176299B9001835F9 /* Supporting Files */,
);
path = "MasterPassword-Mac-LoginHelper";
sourceTree = "<group>";
};
DAD9B5CB176299B9001835F9 /* Supporting Files */ = {
isa = PBXGroup;
children = (
DAD9B5CC176299B9001835F9 /* MasterPassword-Mac-LoginHelper-Info.plist */,
DAD9B5CD176299B9001835F9 /* InfoPlist.strings */,
DAD9B5D0176299B9001835F9 /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
DAD9B5C0176299B9001835F9 /* MasterPassword-Mac-LoginHelper */ = {
isa = PBXNativeTarget;
buildConfigurationList = DAD9B5DE176299B9001835F9 /* Build configuration list for PBXNativeTarget "MasterPassword-Mac-LoginHelper" */;
buildPhases = (
DAD9B5BD176299B9001835F9 /* Sources */,
DAD9B5BE176299B9001835F9 /* Frameworks */,
DAD9B5BF176299B9001835F9 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "MasterPassword-Mac-LoginHelper";
productName = "MasterPassword-Mac-LoginHelper";
productReference = DAD9B5C1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
DAD9B5B9176299B9001835F9 /* Project object */ = {
isa = PBXProject;
attributes = {
CLASSPREFIX = MP;
LastUpgradeCheck = 0460;
ORGANIZATIONNAME = "Maarten Billemont";
};
buildConfigurationList = DAD9B5BC176299B9001835F9 /* Build configuration list for PBXProject "MasterPassword-Mac-LoginHelper" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = DAD9B5B8176299B9001835F9;
productRefGroup = DAD9B5C2176299B9001835F9 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
DAD9B5C0176299B9001835F9 /* MasterPassword-Mac-LoginHelper */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
DAD9B5BF176299B9001835F9 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DAD9B5CF176299B9001835F9 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
DAD9B5BD176299B9001835F9 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DAD9B5D1176299B9001835F9 /* main.m in Sources */,
DAD9B5D8176299B9001835F9 /* MPLoginAppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
DAD9B5CD176299B9001835F9 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
DAD9B5CE176299B9001835F9 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
DAD9B5DC176299B9001835F9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES;
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_CXX0X_EXTENSIONS = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
CODE_SIGN_IDENTITY = "Developer ID Application: Maarten Billemont";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNKNOWN_PRAGMAS = YES;
GCC_WARN_UNUSED_LABEL = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "${TARGET_NAME}";
PROVISIONING_PROFILE = "";
SDKROOT = macosx;
SKIP_INSTALL = YES;
};
name = Debug;
};
DAD9B5DD176299B9001835F9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES;
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_CXX0X_EXTENSIONS = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
CODE_SIGN_IDENTITY = "Developer ID Application: Maarten Billemont";
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNKNOWN_PRAGMAS = YES;
GCC_WARN_UNUSED_LABEL = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_NAME = "${TARGET_NAME}";
PROVISIONING_PROFILE = "";
SDKROOT = macosx;
SKIP_INSTALL = YES;
};
name = Release;
};
DAD9B5DF176299B9001835F9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "MasterPassword-Mac-LoginHelper/MasterPassword-Mac-LoginHelper.entitlements";
CODE_SIGN_IDENTITY = "Developer ID Application: Maarten Billemont";
INFOPLIST_FILE = "$(SRCROOT)/MasterPassword-Mac-LoginHelper/MasterPassword-Mac-LoginHelper-Info.plist";
PROVISIONING_PROFILE = "";
};
name = Debug;
};
DAD9B5E0176299B9001835F9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "MasterPassword-Mac-LoginHelper/MasterPassword-Mac-LoginHelper.entitlements";
INFOPLIST_FILE = "$(SRCROOT)/MasterPassword-Mac-LoginHelper/MasterPassword-Mac-LoginHelper-Info.plist";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
DAD9B5BC176299B9001835F9 /* Build configuration list for PBXProject "MasterPassword-Mac-LoginHelper" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DAD9B5DC176299B9001835F9 /* Debug */,
DAD9B5DD176299B9001835F9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DAD9B5DE176299B9001835F9 /* Build configuration list for PBXNativeTarget "MasterPassword-Mac-LoginHelper" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DAD9B5DF176299B9001835F9 /* Debug */,
DAD9B5E0176299B9001835F9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = DAD9B5B9176299B9001835F9 /* Project object */;
}

View File

@ -0,0 +1,13 @@
//
// MPAppDelegate.h
// MasterPassword-Mac-LoginHelper
//
// Created by Maarten Billemont on 2013-06-07.
// Copyright (c) 2013 Maarten Billemont. All rights reserved.
//
#import <AppKit/AppKit.h>
@interface MPLoginAppDelegate : NSObject <NSApplicationDelegate>
@end

View File

@ -0,0 +1,39 @@
//
// MPAppDelegate.m
// MasterPassword-Mac-LoginHelper
//
// Created by Maarten Billemont on 2013-06-07.
// Copyright (c) 2013 Maarten Billemont. All rights reserved.
//
#import "MPLoginAppDelegate.h"
@implementation MPLoginAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSLog(@"LoginHelper did start");
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications])
if ([[app bundleIdentifier] isEqualToString:@"com.lyndir.lhunath.MasterPassword.Mac"]) {
NSLog(@"Already running.");
[NSApp terminate:nil];
return;
}
NSString *path = [[NSBundle mainBundle] bundlePath];
NSLog(@"Path: %@", path);
NSArray *p = [path pathComponents];
NSLog(@"PathComponents: %@", p);
NSMutableArray *pathComponents = [NSMutableArray arrayWithArray:p];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
[pathComponents addObject:@"MacOS"];
[pathComponents addObject:@"MasterPassword"];
NSLog(@"PathComponents modified: %@", pathComponents);
NSString *newPath = [NSString pathWithComponents:pathComponents];
NSLog(@"newPath: %@", newPath);
NSLog(@"launchApplication: %@", @([[NSWorkspace sharedWorkspace] launchApplication:newPath]));
}
@end

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.lyndir.lhunath.MasterPassword.Mac.LoginHelper</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSBackgroundOnly</key>
<true/>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2013 Maarten Billemont. All rights reserved.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

View File

@ -0,0 +1,14 @@
//
// main.m
// MasterPassword-Mac-LoginHelper
//
// Created by Maarten Billemont on 2013-06-07.
// Copyright (c) 2013 Maarten Billemont. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **)argv);
}

View File

@ -11,7 +11,7 @@
93D395F08A087F8A24689347 /* NSArray+Indexing.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D39067C0AFDC581794E2B8 /* NSArray+Indexing.m */; };
93D39C34FE35830EF5BE1D2A /* NSArray+Indexing.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D396D04E57792A54D437AC /* NSArray+Indexing.h */; };
93D39E281E3658B30550CB55 /* NSDictionary+Indexing.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D39AA1EE2E1E7B81372240 /* NSDictionary+Indexing.m */; };
DA0933CA1747A56A00DE1CEF /* MPAppsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA0933C91747A56A00DE1CEF /* MPAppsWindow.xib */; };
DA0933CA1747A56A00DE1CEF /* MPInitialWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA0933C91747A56A00DE1CEF /* MPInitialWindow.xib */; };
DA0933CC1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0933CB1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png */; };
DA0933D01747B91B00DE1CEF /* appstore.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0933CF1747B91B00DE1CEF /* appstore.png */; };
DA16B33F170661D4000A0EAB /* libUbiquityStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */; };
@ -130,6 +130,8 @@
DACA29741705E1A8002C6C22 /* dictionary.lst in Resources */ = {isa = PBXBuildFile; fileRef = DACA29721705E1A8002C6C22 /* dictionary.lst */; };
DACA298D1705E2BD002C6C22 /* JRSwizzle.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA29771705E2BD002C6C22 /* JRSwizzle.h */; };
DACA299A1705E2BD002C6C22 /* JRSwizzle.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA298C1705E2BD002C6C22 /* JRSwizzle.m */; };
DAD9B5F01762CAA4001835F9 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD9B5EF1762CAA4001835F9 /* ServiceManagement.framework */; };
DAD9B5F11762CAB9001835F9 /* MasterPassword-Mac-LoginHelper.app in Copy LoginHelper */ = {isa = PBXBuildFile; fileRef = DAD9B5E6176299BA001835F9 /* MasterPassword-Mac-LoginHelper.app */; };
DAFE4A1315039824003ABA7C /* NSObject+PearlExport.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFE45D815039823003ABA7C /* NSObject+PearlExport.h */; };
DAFE4A1415039824003ABA7C /* NSObject+PearlExport.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFE45D915039823003ABA7C /* NSObject+PearlExport.m */; };
DAFE4A1515039824003ABA7C /* NSString+PearlNSArrayFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFE45DA15039823003ABA7C /* NSString+PearlNSArrayFormat.h */; };
@ -189,16 +191,25 @@
remoteGlobalIDString = DAC6326B148680650075AEA5;
remoteInfo = jrswizzle;
};
DAD9B5E5176299BA001835F9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DAD9B5E1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = DAD9B5C1176299B9001835F9;
remoteInfo = "MasterPassword-Mac-LoginHelper";
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
DABC6BFF175D8C85000C15D4 /* CopyFiles */ = {
DAD9B5EE1762CA3A001835F9 /* Copy LoginHelper */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "include/${PRODUCT_NAME}";
dstSubfolderSpec = 16;
dstPath = Contents/Library/LoginItems;
dstSubfolderSpec = 1;
files = (
DAD9B5F11762CAB9001835F9 /* MasterPassword-Mac-LoginHelper.app in Copy LoginHelper */,
);
name = "Copy LoginHelper";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
@ -208,7 +219,7 @@
93D393B97158D7BE9332EA53 /* NSDictionary+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Indexing.h"; sourceTree = "<group>"; };
93D396D04E57792A54D437AC /* NSArray+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Indexing.h"; sourceTree = "<group>"; };
93D39AA1EE2E1E7B81372240 /* NSDictionary+Indexing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Indexing.m"; sourceTree = "<group>"; };
DA0933C91747A56A00DE1CEF /* MPAppsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPAppsWindow.xib; sourceTree = "<group>"; };
DA0933C91747A56A00DE1CEF /* MPInitialWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPInitialWindow.xib; sourceTree = "<group>"; };
DA0933CB1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shot-laptop-leaning-iphone.png"; sourceTree = "<group>"; };
DA0933CF1747B91B00DE1CEF /* appstore.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = appstore.png; sourceTree = "<group>"; };
DA16B340170661DB000A0EAB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
@ -226,7 +237,7 @@
DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libUbiquityStoreManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
DA4C45F2173B57B700745CC5 /* NSURL+UbiquityStoreManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+UbiquityStoreManager.h"; sourceTree = "<group>"; };
DA4C45F3173B57B700745CC5 /* NSURL+UbiquityStoreManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+UbiquityStoreManager.m"; sourceTree = "<group>"; };
DA5BFA44147E415C00F98B1E /* Master Password.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Master Password.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DA5BFA44147E415C00F98B1E /* MasterPassword.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MasterPassword.app; sourceTree = BUILT_PRODUCTS_DIR; };
DA5BFA4A147E415C00F98B1E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
DA5BFA4C147E415C00F98B1E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
DA5BFA4E147E415C00F98B1E /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
@ -356,6 +367,8 @@
DACA29771705E2BD002C6C22 /* JRSwizzle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JRSwizzle.h; sourceTree = "<group>"; };
DACA298C1705E2BD002C6C22 /* JRSwizzle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JRSwizzle.m; sourceTree = "<group>"; };
DAD312C01552A20800A3F9ED /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
DAD9B5E1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MasterPassword-Mac-LoginHelper.xcodeproj"; path = "MasterPassword-Mac-LoginHelper/MasterPassword-Mac-LoginHelper.xcodeproj"; sourceTree = "<group>"; };
DAD9B5EF1762CAA4001835F9 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; };
DAEBC45214F6364500987BF6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
DAFE45D815039823003ABA7C /* NSObject+PearlExport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+PearlExport.h"; sourceTree = "<group>"; };
DAFE45D915039823003ABA7C /* NSObject+PearlExport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+PearlExport.m"; sourceTree = "<group>"; };
@ -425,6 +438,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
DAD9B5F01762CAA4001835F9 /* ServiceManagement.framework in Frameworks */,
DABC6C16175D8E3A000C15D4 /* libRHStatusItemView.a in Frameworks */,
DA16B33F170661D4000A0EAB /* libUbiquityStoreManager.a in Frameworks */,
DA16B341170661DB000A0EAB /* Carbon.framework in Frameworks */,
@ -477,7 +491,7 @@
DA5BFA45147E415C00F98B1E /* Products */ = {
isa = PBXGroup;
children = (
DA5BFA44147E415C00F98B1E /* Master Password.app */,
DA5BFA44147E415C00F98B1E /* MasterPassword.app */,
DAC77CAD148291A600BCF976 /* libPearl.a */,
DAC6326C148680650075AEA5 /* libjrswizzle.a */,
DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */,
@ -490,6 +504,7 @@
DA5BFA47147E415C00F98B1E /* Frameworks */ = {
isa = PBXGroup;
children = (
DAD9B5EF1762CAA4001835F9 /* ServiceManagement.framework */,
DA16B343170661EE000A0EAB /* Cocoa.framework */,
DA16B340170661DB000A0EAB /* Carbon.framework */,
DA6701DD16406B7300B61001 /* Social.framework */,
@ -572,6 +587,7 @@
DA5E5CB21724A667003798D8 /* Mac */ = {
isa = PBXGroup;
children = (
DAD9B5E1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.xcodeproj */,
DA5E5CB31724A667003798D8 /* MPMacAppDelegate.h */,
DA5E5CB41724A667003798D8 /* MPMacAppDelegate.m */,
DA5E5CB51724A667003798D8 /* MPMacConfig.h */,
@ -586,7 +602,7 @@
DA5E5CC21724A667003798D8 /* InfoPlist.strings */,
DA5E5CC41724A667003798D8 /* MainMenu.xib */,
DA5E5CC61724A667003798D8 /* main.m */,
DA0933C91747A56A00DE1CEF /* MPAppsWindow.xib */,
DA0933C91747A56A00DE1CEF /* MPInitialWindow.xib */,
);
path = Mac;
sourceTree = "<group>";
@ -766,6 +782,14 @@
path = Pearl/External/jrswizzle;
sourceTree = "<group>";
};
DAD9B5E2176299B9001835F9 /* Products */ = {
isa = PBXGroup;
children = (
DAD9B5E6176299BA001835F9 /* MasterPassword-Mac-LoginHelper.app */,
);
name = Products;
sourceTree = "<group>";
};
DAFE45D715039823003ABA7C /* Pearl */ = {
isa = PBXGroup;
children = (
@ -948,23 +972,24 @@
productReference = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */;
productType = "com.apple.product-type.library.static";
};
DA5BFA43147E415C00F98B1E /* Master Password */ = {
DA5BFA43147E415C00F98B1E /* MasterPassword */ = {
isa = PBXNativeTarget;
buildConfigurationList = DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "Master Password" */;
buildConfigurationList = DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "MasterPassword" */;
buildPhases = (
DA5BFA40147E415C00F98B1E /* Sources */,
DA5BFA41147E415C00F98B1E /* Frameworks */,
DA5BFA42147E415C00F98B1E /* Resources */,
DA6556E314D55F3000841C99 /* Run Script: GIT version -> Info.plist */,
DAD3125D155288AA00A3F9ED /* Run Script: Crashlytics */,
DAD9B5EE1762CA3A001835F9 /* Copy LoginHelper */,
);
buildRules = (
);
dependencies = (
);
name = "Master Password";
name = MasterPassword;
productName = MasterPassword;
productReference = DA5BFA44147E415C00F98B1E /* Master Password.app */;
productReference = DA5BFA44147E415C00F98B1E /* MasterPassword.app */;
productType = "com.apple.product-type.application";
};
DABC6C00175D8C85000C15D4 /* RHStatusItemView */ = {
@ -973,7 +998,6 @@
buildPhases = (
DABC6BFD175D8C85000C15D4 /* Sources */,
DABC6BFE175D8C85000C15D4 /* Frameworks */,
DABC6BFF175D8C85000C15D4 /* CopyFiles */,
);
buildRules = (
);
@ -1041,9 +1065,15 @@
mainGroup = DA5BFA39147E415C00F98B1E;
productRefGroup = DA5BFA45147E415C00F98B1E /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = DAD9B5E2176299B9001835F9 /* Products */;
ProjectRef = DAD9B5E1176299B9001835F9 /* MasterPassword-Mac-LoginHelper.xcodeproj */;
},
);
projectRoot = "";
targets = (
DA5BFA43147E415C00F98B1E /* Master Password */,
DA5BFA43147E415C00F98B1E /* MasterPassword */,
DAC77CAC148291A600BCF976 /* Pearl */,
DAC6326B148680650075AEA5 /* jrswizzle */,
DA4425CA1557BED40052177D /* UbiquityStoreManager */,
@ -1053,6 +1083,16 @@
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
DAD9B5E6176299BA001835F9 /* MasterPassword-Mac-LoginHelper.app */ = {
isa = PBXReferenceProxy;
fileType = wrapper.application;
path = "MasterPassword-Mac-LoginHelper.app";
remoteRef = DAD9B5E5176299BA001835F9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
DA3EF17615A47744003ABF4E /* Resources */ = {
isa = PBXResourcesBuildPhase;
@ -1124,7 +1164,7 @@
DA5E5D0A1724A667003798D8 /* InfoPlist.strings in Resources */,
DA5E5D0B1724A667003798D8 /* MainMenu.xib in Resources */,
DA5E5D551724F9C8003798D8 /* MasterPassword.iconset in Resources */,
DA0933CA1747A56A00DE1CEF /* MPAppsWindow.xib in Resources */,
DA0933CA1747A56A00DE1CEF /* MPInitialWindow.xib in Resources */,
DA0933CC1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png in Resources */,
DA0933D01747B91B00DE1CEF /* appstore.png in Resources */,
);
@ -1275,7 +1315,7 @@
/* Begin PBXTargetDependency section */
DA3EF19E15A47AEB003ABF4E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = DA5BFA43147E415C00F98B1E /* Master Password */;
target = DA5BFA43147E415C00F98B1E /* MasterPassword */;
targetProxy = DA3EF19D15A47AEB003ABF4E /* PBXContainerItemProxy */;
};
DAC63286148681200075AEA5 /* PBXTargetDependency */ = {
@ -1518,6 +1558,7 @@
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(inherit)",
"\"$(SRCROOT)/../../../External\"",
@ -1567,6 +1608,7 @@
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "${TARGET_NAME}";
PROVISIONING_PROFILE = "";
RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = macosx;
SKIP_INSTALL = YES;
VALIDATE_PRODUCT = YES;
@ -1820,7 +1862,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "AdHoc-Mac";
};
DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "Master Password" */ = {
DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "MasterPassword" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DA5BFA6E147E415C00F98B1E /* Debug-Mac */,
@ -1838,6 +1880,7 @@
DABC6C0D175D8C85000C15D4 /* AppStore-Mac */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "AdHoc-Mac";
};
DAC63274148680650075AEA5 /* Build configuration list for PBXNativeTarget "jrswizzle" */ = {
isa = XCConfigurationList;

View File

@ -15,8 +15,8 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "Master Password.app"
BlueprintName = "Master Password"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword-Mac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
@ -43,8 +43,8 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "Master Password.app"
BlueprintName = "Master Password"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword-Mac.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
@ -61,8 +61,8 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "Master Password.app"
BlueprintName = "Master Password"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword-Mac.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>

View File

@ -15,8 +15,8 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "Master Password.app"
BlueprintName = "Master Password"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword-Mac.xcodeproj">
</BuildableReference>
</BuildActionEntry>
@ -43,15 +43,15 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "Master Password.app"
BlueprintName = "Master Password"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword-Mac.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "-com.apple.coredata.ubiquity.logLevel 3"
isEnabled = "YES">
isEnabled = "NO">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>
@ -74,8 +74,8 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "Master Password.app"
BlueprintName = "Master Password"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword-Mac.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>

View File

@ -128,6 +128,27 @@
</dictionary>
</object>
</object>
<object class="NSMenuItem" id="362714849">
<reference key="NSMenu" ref="800575174"/>
<string key="NSTitle">Open At Login</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="269450960"/>
<reference key="NSMixedImage" ref="977440657"/>
</object>
<object class="NSMenuItem" id="409463580">
<reference key="NSMenu" ref="800575174"/>
<bool key="NSIsDisabled">YES</bool>
<string key="NSTitle">Always open Master Password at start-up.</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="269450960"/>
<reference key="NSMixedImage" ref="977440657"/>
<object class="NSAttributedString" key="NSAttributedTitle">
<string key="NSString">Always open Master Password at start-up.</string>
<reference key="NSAttributes" ref="583461090"/>
</object>
</object>
<object class="NSMenuItem" id="290760748">
<reference key="NSMenu" ref="800575174"/>
<string key="NSTitle">Remember Password</string>
@ -310,7 +331,7 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">useICloudItem</string>
<string key="label">useCloudItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="14397049"/>
</object>
@ -452,6 +473,22 @@
</object>
<int key="connectionID">784</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">togglePreference:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="362714849"/>
</object>
<int key="connectionID">787</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">openAtLoginItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="362714849"/>
</object>
<int key="connectionID">788</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -548,6 +585,8 @@
<reference ref="123831322"/>
<reference ref="123543264"/>
<reference ref="939693094"/>
<reference ref="409463580"/>
<reference ref="362714849"/>
</array>
<reference key="parent" ref="851296005"/>
</object>
@ -662,6 +701,16 @@
<reference key="object" ref="946018575"/>
<reference key="parent" ref="534220172"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">785</int>
<reference key="object" ref="362714849"/>
<reference key="parent" ref="800575174"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">786</int>
<reference key="object" ref="409463580"/>
<reference key="parent" ref="800575174"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -704,121 +753,16 @@
<string key="777.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="778.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="779.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="785.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="786.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">784</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">MPAppDelegate_Shared</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPAppDelegate_Shared.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MPMacAppDelegate</string>
<string key="superclassName">MPAppDelegate_Shared</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="lock:">id</string>
<string key="newUser:">NSMenuItem</string>
<string key="rebuildCloud:">id</string>
<string key="showPasswordWindow:">id</string>
<string key="terminate:">id</string>
<string key="togglePreference:">NSMenuItem</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="lock:">
<string key="name">lock:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="newUser:">
<string key="name">newUser:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBActionInfo" key="rebuildCloud:">
<string key="name">rebuildCloud:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showPasswordWindow:">
<string key="name">showPasswordWindow:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="terminate:">
<string key="name">terminate:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="togglePreference:">
<string key="name">togglePreference:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="createUserItem">NSMenuItem</string>
<string key="dialogStyleHUD">NSMenuItem</string>
<string key="dialogStyleRegular">NSMenuItem</string>
<string key="lockItem">NSMenuItem</string>
<string key="rememberPasswordItem">NSMenuItem</string>
<string key="savePasswordItem">NSMenuItem</string>
<string key="showItem">NSMenuItem</string>
<string key="statusMenu">NSMenu</string>
<string key="useICloudItem">NSMenuItem</string>
<string key="usersItem">NSMenuItem</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="createUserItem">
<string key="name">createUserItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="dialogStyleHUD">
<string key="name">dialogStyleHUD</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="dialogStyleRegular">
<string key="name">dialogStyleRegular</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="lockItem">
<string key="name">lockItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="rememberPasswordItem">
<string key="name">rememberPasswordItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="savePasswordItem">
<string key="name">savePasswordItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="showItem">
<string key="name">showItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="statusMenu">
<string key="name">statusMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="useICloudItem">
<string key="name">useICloudItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="usersItem">
<string key="name">usersItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MPMacAppDelegate.h</string>
</object>
</object>
</array>
<int key="maxID">788</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">