diff options
author | rowanbeentje <rowan@beent.je> | 2010-09-08 21:36:11 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2010-09-08 21:36:11 +0000 |
commit | f7a69e2454ca3dd1f1a62875522e9fb3dea572b3 (patch) | |
tree | 847d2a915dfd496382977fc64799222057a923e3 | |
parent | 3f6aa841dd77af2cf8f2818c91cd186aec2ca5e0 (diff) | |
download | sequelpro-f7a69e2454ca3dd1f1a62875522e9fb3dea572b3.tar.gz sequelpro-f7a69e2454ca3dd1f1a62875522e9fb3dea572b3.tar.bz2 sequelpro-f7a69e2454ca3dd1f1a62875522e9fb3dea572b3.zip |
- Add support for SSH identity files (public keys) in custom locations
- Update localisable strings
- Fix initial window position
-rw-r--r-- | Interfaces/English.lproj/ConnectionView.xib | 633 | ||||
-rw-r--r-- | Interfaces/English.lproj/MainWindow.xib | 156 | ||||
-rw-r--r-- | Interfaces/English.lproj/Preferences.xib | 797 | ||||
-rw-r--r-- | Resources/English.lproj/ConnectionView.strings | bin | 27074 -> 27316 bytes | |||
-rw-r--r-- | Resources/English.lproj/DataMigrationDialog.strings | bin | 18292 -> 19638 bytes | |||
-rw-r--r-- | Resources/English.lproj/Localizable.strings | bin | 169886 -> 171424 bytes | |||
-rw-r--r-- | Resources/English.lproj/Preferences.strings | bin | 50300 -> 50496 bytes | |||
-rw-r--r-- | Resources/Images/KeyTemplate.pdf | 67 | ||||
-rw-r--r-- | Source/SPConnectionController.h | 8 | ||||
-rw-r--r-- | Source/SPConnectionController.m | 61 | ||||
-rw-r--r-- | Source/SPDatabaseDocument.m | 8 | ||||
-rw-r--r-- | Source/SPPreferenceController.h | 2 | ||||
-rw-r--r-- | Source/SPPreferenceController.m | 44 | ||||
-rw-r--r-- | Source/SPSSHTunnel.h | 2 | ||||
-rw-r--r-- | Source/SPSSHTunnel.m | 19 | ||||
-rw-r--r-- | sequel-pro.xcodeproj/project.pbxproj | 4 |
16 files changed, 1256 insertions, 545 deletions
diff --git a/Interfaces/English.lproj/ConnectionView.xib b/Interfaces/English.lproj/ConnectionView.xib index 89382d47..eeac316b 100644 --- a/Interfaces/English.lproj/ConnectionView.xib +++ b/Interfaces/English.lproj/ConnectionView.xib @@ -21,12 +21,12 @@ </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="4888"/> + <integer value="5166"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.brandonwalkin.BWToolkit</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.brandonwalkin.BWToolkit</string> </object> <object class="NSMutableDictionary" key="IBDocument.Metadata"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -359,7 +359,6 @@ </object> </object> </object> - <int key="NSSelectedIndex">1</int> <bool key="NSPullDown">YES</bool> <int key="NSPreferredEdge">1</int> <bool key="NSUsesItemFromMenu">YES</bool> @@ -407,7 +406,7 @@ <string key="NSColorName">controlColor</string> <object class="NSColor" key="NSColor" id="355746054"> <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> </object> </object> <reference key="NSTextColor" ref="434026568"/> @@ -1117,7 +1116,7 @@ <object class="NSTextField" id="21480939"> <reference key="NSNextResponder" ref="326102394"/> <int key="NSvFlags">268</int> - <string key="NSFrame">{{110, 47}, {226, 22}}</string> + <string key="NSFrame">{{110, 47}, {198, 22}}</string> <reference key="NSSuperview" ref="326102394"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="944931136"> @@ -1125,7 +1124,6 @@ <int key="NSCellFlags2">272630784</int> <string key="NSContents"/> <reference key="NSSupport" ref="807120225"/> - <string key="NSPlaceholderString">optional if public key is available</string> <reference key="NSControlView" ref="21480939"/> <bool key="NSDrawsBackground">YES</bool> <reference key="NSBackgroundColor" ref="211632616"/> @@ -1216,6 +1214,66 @@ <reference key="NSTextColor" ref="434026568"/> </object> </object> + <object class="NSButton" id="183948302"> + <reference key="NSNextResponder" ref="326102394"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{307, 46}, {29, 24}}</string> + <reference key="NSSuperview" ref="326102394"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="510891456"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="807120225"/> + <reference key="NSControlView" ref="183948302"/> + <int key="NSButtonFlags">-922992385</int> + <int key="NSButtonFlags2">34</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">KeyTemplate</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + </object> + </object> + <object class="NSTextField" id="797420065"> + <reference key="NSNextResponder" ref="326102394"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{7, 49}, {98, 17}}</string> + <reference key="NSSuperview" ref="326102394"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1004204108"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">71304192</int> + <string key="NSContents">SSH Key:</string> + <reference key="NSSupport" ref="807120225"/> + <reference key="NSControlView" ref="797420065"/> + <reference key="NSBackgroundColor" ref="644242225"/> + <reference key="NSTextColor" ref="434026568"/> + </object> + </object> + <object class="NSTextField" id="357022441"> + <reference key="NSNextResponder" ref="326102394"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{110, 47}, {198, 22}}</string> + <reference key="NSSuperview" ref="326102394"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="31454463"> + <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags2">272631296</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="807120225"/> + <reference key="NSControlView" ref="357022441"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="211632616"/> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC40OTU5Njc3NDE5AA</bytes> + </object> + </object> + </object> </object> <string key="NSFrame">{{6, 6}, {356, 382}}</string> <reference key="NSSuperview" ref="159800861"/> @@ -1364,7 +1422,7 @@ <string key="NSWindowTitle">Error Detail</string> <string key="NSWindowClass">NSPanel</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSWindowContentMinSize">{100, 100}</string> <object class="NSView" key="NSWindowView" id="536120400"> <nil key="NSNextResponder"/> @@ -1404,9 +1462,9 @@ </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSColor" id="646863217"> + <object class="NSColor" id="47423510"> <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA</bytes> + <bytes key="NSRGB">MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA</bytes> </object> <object class="NSFont"> <string key="NSName">LucidaGrande</string> @@ -1527,7 +1585,7 @@ </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="646863217"/> + <reference ref="47423510"/> <object class="NSFont"> <string key="NSName">LucidaGrande-Bold</string> <double key="NSSize">10</double> @@ -1690,7 +1748,7 @@ </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{100, 119}</string> - <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSFrameAutosaveName"/> </object> <object class="NSUserDefaultsController" id="642702582"> @@ -2622,35 +2680,6 @@ <int key="connectionID">5448</int> </object> <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: sshPassword</string> - <reference key="source" ref="21480939"/> - <reference key="destination" ref="545410097"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="21480939"/> - <reference key="NSDestination" ref="545410097"/> - <string key="NSLabel">value: sshPassword</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">sshPassword</string> - <object class="NSDictionary" key="NSOptions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>NSContinuouslyUpdatesValue</string> - <string>NSNullPlaceholder</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <boolean value="YES"/> - <string>optional if public key is available</string> - </object> - </object> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">5450</int> - </object> - <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> <string key="label">helpButton</string> <reference key="source" ref="545410097"/> @@ -2778,6 +2807,230 @@ </object> <int key="connectionID">5491</int> </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">sshSSHKeyButton</string> + <reference key="source" ref="545410097"/> + <reference key="destination" ref="183948302"/> + </object> + <int key="connectionID">5494</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">chooseSSHKey:</string> + <reference key="source" ref="545410097"/> + <reference key="destination" ref="183948302"/> + </object> + <int key="connectionID">5495</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: sshPassword</string> + <reference key="source" ref="21480939"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="21480939"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">value: sshPassword</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">sshPassword</string> + <object class="NSDictionary" key="NSOptions"> + <string key="NS.key.0">NSContinuouslyUpdatesValue</string> + <boolean value="YES" key="NS.object.0"/> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5504</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: sshKeyLocationEnabled</string> + <reference key="source" ref="627782947"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="627782947"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">hidden: sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5549</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: sshKeyLocationEnabled</string> + <reference key="source" ref="183948302"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="183948302"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">value: sshKeyLocationEnabled</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5551</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: sshKeyLocationEnabled</string> + <reference key="source" ref="21480939"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="21480939"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">hidden: sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">sshKeyLocationEnabled</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5559</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: sshKeyLocationEnabled</string> + <reference key="source" ref="797420065"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="797420065"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">hidden: sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSValueTransformerName</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <string>NSNegateBoolean</string> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5561</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: sshKeyLocationEnabled</string> + <reference key="source" ref="357022441"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="357022441"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">hidden: sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSValueTransformerName</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <string>NSNegateBoolean</string> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5562</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: sshKeyLocation</string> + <reference key="source" ref="357022441"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="357022441"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">value: sshKeyLocation</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">sshKeyLocation</string> + <object class="NSDictionary" key="NSOptions"> + <string key="NS.key.0">NSContinuouslyUpdatesValue</string> + <boolean value="YES" key="NS.object.0"/> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5563</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">toolTip: sshKeyLocation</string> + <reference key="source" ref="357022441"/> + <reference key="destination" ref="545410097"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="357022441"/> + <reference key="NSDestination" ref="545410097"/> + <string key="NSLabel">toolTip: sshKeyLocation</string> + <string key="NSBinding">toolTip</string> + <string key="NSKeyPath">sshKeyLocation</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">5570</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -2974,6 +3227,106 @@ <reference key="parent" ref="699163511"/> </object> <object class="IBObjectRecord"> + <int key="objectID">5455</int> + <reference key="object" ref="642702582"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5468</int> + <reference key="object" ref="9858888"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="471954922"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Context Menu</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5469</int> + <reference key="object" ref="471954922"/> + <reference key="parent" ref="9858888"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5475</int> + <reference key="object" ref="221133754"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="270183415"/> + </object> + <reference key="parent" ref="805249222"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5476</int> + <reference key="object" ref="270183415"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="949612237"/> + </object> + <reference key="parent" ref="221133754"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5477</int> + <reference key="object" ref="949612237"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="751753648"/> + <reference ref="623685715"/> + </object> + <reference key="parent" ref="270183415"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5478</int> + <reference key="object" ref="751753648"/> + <reference key="parent" ref="949612237"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5479</int> + <reference key="object" ref="623685715"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="455108754"/> + </object> + <reference key="parent" ref="949612237"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5481</int> + <reference key="object" ref="455108754"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="536740264"/> + <reference ref="965148975"/> + <reference ref="997359603"/> + <reference ref="43427774"/> + <reference ref="513442721"/> + </object> + <reference key="parent" ref="623685715"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5482</int> + <reference key="object" ref="536740264"/> + <reference key="parent" ref="455108754"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5483</int> + <reference key="object" ref="965148975"/> + <reference key="parent" ref="455108754"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5484</int> + <reference key="object" ref="997359603"/> + <reference key="parent" ref="455108754"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5485</int> + <reference key="object" ref="43427774"/> + <reference key="parent" ref="455108754"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5486</int> + <reference key="object" ref="513442721"/> + <reference key="parent" ref="455108754"/> + </object> + <object class="IBObjectRecord"> <int key="objectID">5168</int> <reference key="object" ref="456162506"/> <object class="NSMutableArray" key="children"> @@ -3039,6 +3392,9 @@ <reference key="object" ref="326102394"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="797420065"/> + <reference ref="357022441"/> + <reference ref="183948302"/> <reference ref="1030226140"/> <reference ref="615962367"/> <reference ref="358903996"/> @@ -3063,6 +3419,48 @@ <reference key="parent" ref="159800861"/> </object> <object class="IBObjectRecord"> + <int key="objectID">5525</int> + <reference key="object" ref="797420065"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1004204108"/> + </object> + <reference key="parent" ref="326102394"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5526</int> + <reference key="object" ref="1004204108"/> + <reference key="parent" ref="797420065"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5523</int> + <reference key="object" ref="357022441"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="31454463"/> + </object> + <reference key="parent" ref="326102394"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5524</int> + <reference key="object" ref="31454463"/> + <reference key="parent" ref="357022441"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5492</int> + <reference key="object" ref="183948302"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="510891456"/> + </object> + <reference key="parent" ref="326102394"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5493</int> + <reference key="object" ref="510891456"/> + <reference key="parent" ref="183948302"/> + </object> + <object class="IBObjectRecord"> <int key="objectID">5264</int> <reference key="object" ref="1030226140"/> <object class="NSMutableArray" key="children"> @@ -3785,106 +4183,6 @@ <reference key="object" ref="757039715"/> <reference key="parent" ref="990947983"/> </object> - <object class="IBObjectRecord"> - <int key="objectID">5455</int> - <reference key="object" ref="642702582"/> - <reference key="parent" ref="0"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5468</int> - <reference key="object" ref="9858888"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="471954922"/> - </object> - <reference key="parent" ref="0"/> - <string key="objectName">Context Menu</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5469</int> - <reference key="object" ref="471954922"/> - <reference key="parent" ref="9858888"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5475</int> - <reference key="object" ref="221133754"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="270183415"/> - </object> - <reference key="parent" ref="805249222"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5476</int> - <reference key="object" ref="270183415"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="949612237"/> - </object> - <reference key="parent" ref="221133754"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5477</int> - <reference key="object" ref="949612237"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="751753648"/> - <reference ref="623685715"/> - </object> - <reference key="parent" ref="270183415"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5478</int> - <reference key="object" ref="751753648"/> - <reference key="parent" ref="949612237"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5479</int> - <reference key="object" ref="623685715"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="455108754"/> - </object> - <reference key="parent" ref="949612237"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5481</int> - <reference key="object" ref="455108754"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="536740264"/> - <reference ref="965148975"/> - <reference ref="997359603"/> - <reference ref="43427774"/> - <reference ref="513442721"/> - </object> - <reference key="parent" ref="623685715"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5482</int> - <reference key="object" ref="536740264"/> - <reference key="parent" ref="455108754"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5483</int> - <reference key="object" ref="965148975"/> - <reference key="parent" ref="455108754"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5484</int> - <reference key="object" ref="997359603"/> - <reference key="parent" ref="455108754"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5485</int> - <reference key="object" ref="43427774"/> - <reference key="parent" ref="455108754"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5486</int> - <reference key="object" ref="513442721"/> - <reference key="parent" ref="455108754"/> - </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -4077,12 +4375,19 @@ <string>5484.IBPluginDependency</string> <string>5485.IBPluginDependency</string> <string>5486.IBPluginDependency</string> + <string>5492.IBAttributePlaceholdersKey</string> + <string>5492.IBPluginDependency</string> + <string>5493.IBPluginDependency</string> + <string>5523.IBPluginDependency</string> + <string>5524.IBPluginDependency</string> + <string>5525.IBPluginDependency</string> + <string>5526.IBPluginDependency</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{564, 184}, {882, 563}}</string> + <string>{{120, 184}, {882, 563}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> @@ -4440,6 +4745,20 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableDictionary"> + <string key="NS.key.0">ToolTip</string> + <object class="IBToolTipAttribute" key="NS.object.0"> + <string key="name">ToolTip</string> + <reference key="object" ref="183948302"/> + <string key="toolTip">Choose a custom SSH key file to use with this connection. Standard locations like ~/.ssh are checked automatically.</string> + </object> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> </object> </object> <object class="NSMutableDictionary" key="unlocalizedProperties"> @@ -4458,7 +4777,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">5491</int> + <int key="maxID">5575</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -4697,6 +5016,8 @@ <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>addFavorite:</string> + <string>cancelMySQLConnection:</string> + <string>chooseSSHKey:</string> <string>editFavorites:</string> <string>initiateConnection:</string> <string>reverseSortFavorites:</string> @@ -4713,6 +5034,8 @@ <string>id</string> <string>id</string> <string>id</string> + <string>id</string> + <string>id</string> </object> </object> <object class="NSMutableDictionary" key="actionInfosByName"> @@ -4720,6 +5043,8 @@ <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>addFavorite:</string> + <string>cancelMySQLConnection:</string> + <string>chooseSSHKey:</string> <string>editFavorites:</string> <string>initiateConnection:</string> <string>reverseSortFavorites:</string> @@ -4734,6 +5059,14 @@ <string key="candidateClassName">id</string> </object> <object class="IBActionInfo"> + <string key="name">cancelMySQLConnection:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">chooseSSHKey:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> <string key="name">editFavorites:</string> <string key="candidateClassName">id</string> </object> @@ -4782,6 +5115,7 @@ <string>sshConnectionFormContainer</string> <string>sshPasswordField</string> <string>sshSQLHostField</string> + <string>sshSSHKeyButton</string> <string>sshSSHPasswordField</string> <string>standardConnectionFormContainer</string> <string>standardPasswordField</string> @@ -4808,6 +5142,7 @@ <string>NSView</string> <string>NSSecureTextField</string> <string>NSTextField</string> + <string>NSButton</string> <string>NSSecureTextField</string> <string>NSView</string> <string>NSSecureTextField</string> @@ -4837,6 +5172,7 @@ <string>sshConnectionFormContainer</string> <string>sshPasswordField</string> <string>sshSQLHostField</string> + <string>sshSSHKeyButton</string> <string>sshSSHPasswordField</string> <string>standardConnectionFormContainer</string> <string>standardPasswordField</string> @@ -4921,6 +5257,10 @@ <string key="candidateClassName">NSTextField</string> </object> <object class="IBToOneOutletInfo"> + <string key="name">sshSSHKeyButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> <string key="name">sshSSHPasswordField</string> <string key="candidateClassName">NSSecureTextField</string> </object> @@ -5410,6 +5750,13 @@ <string key="className">NSObject</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> <string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string> </object> </object> @@ -5720,6 +6067,7 @@ <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> + <string>KeyTemplate</string> <string>NSActionTemplate</string> <string>NSMenuCheckmark</string> <string>NSMenuMixedState</string> @@ -5727,6 +6075,7 @@ </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> + <string>{16, 8}</string> <string>{10, 10}</string> <string>{9, 8}</string> <string>{7, 2}</string> diff --git a/Interfaces/English.lproj/MainWindow.xib b/Interfaces/English.lproj/MainWindow.xib index afd57750..de15d592 100644 --- a/Interfaces/English.lproj/MainWindow.xib +++ b/Interfaces/English.lproj/MainWindow.xib @@ -2,17 +2,17 @@ <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> <data> <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">10D573</string> - <string key="IBDocument.InterfaceBuilderVersion">740</string> + <string key="IBDocument.SystemVersion">10F569</string> + <string key="IBDocument.InterfaceBuilderVersion">788</string> <string key="IBDocument.AppKitVersion">1038.29</string> - <string key="IBDocument.HIToolboxVersion">460.00</string> + <string key="IBDocument.HIToolboxVersion">461.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="NS.object.0">740</string> + <string key="NS.object.0">788</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="2"/> + <integer value="1"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -41,7 +41,7 @@ <object class="NSWindowTemplate" id="1005"> <int key="NSWindowStyleMask">15</int> <int key="NSWindowBacking">2</int> - <string key="NSWindowRect">{{196, -45}, {948, 555}}</string> + <string key="NSWindowRect">{{238, 168}, {948, 555}}</string> <int key="NSWTFlags">544735232</int> <string key="NSWindowTitle">Window</string> <string key="NSWindowClass">NSWindow</string> @@ -80,7 +80,7 @@ <string key="NSFrameSize">{948, 555}</string> <reference key="NSSuperview"/> </object> - <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> + <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{780, 528}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> </object> @@ -341,6 +341,13 @@ <string key="NS.key.0">toggleCollapse:</string> <string key="NS.object.0">id</string> </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">toggleCollapse:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">toggleCollapse:</string> + <string key="candidateClassName">id</string> + </object> + </object> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> <string key="minorKey">Source/SPTablesList.h</string> @@ -384,6 +391,35 @@ <string>NSTabView</string> </object> </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>delegate</string> + <string>partnerView</string> + <string>style</string> + <string>tabView</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">delegate</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">partnerView</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">style</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tabView</string> + <string key="candidateClassName">NSTabView</string> + </object> + </object> + </object> <reference key="sourceIdentifier" ref="868226831"/> </object> <object class="IBPartialClassDescription"> @@ -406,8 +442,10 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>addNewConnection:</string> <string>closeTab:</string> + <string>moveSelectedTabInNewWindow:</string> <string>selectNextDocumentTab:</string> <string>selectPreviousDocumentTab:</string> + <string>toggleTabBarShown:</string> <string>updateAllTabTitles:</string> </object> <object class="NSMutableArray" key="dict.values"> @@ -417,6 +455,52 @@ <string>id</string> <string>id</string> <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addNewConnection:</string> + <string>closeTab:</string> + <string>moveSelectedTabInNewWindow:</string> + <string>selectNextDocumentTab:</string> + <string>selectPreviousDocumentTab:</string> + <string>toggleTabBarShown:</string> + <string>updateAllTabTitles:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">addNewConnection:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">closeTab:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">moveSelectedTabInNewWindow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">selectNextDocumentTab:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">selectPreviousDocumentTab:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">toggleTabBarShown:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">updateAllTabTitles:</string> + <string key="candidateClassName">id</string> + </object> </object> </object> <object class="NSMutableDictionary" key="outlets"> @@ -432,6 +516,25 @@ <string>NSTabView</string> </object> </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>tabBar</string> + <string>tabView</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">tabBar</string> + <string key="candidateClassName">PSMTabBarControl</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tabView</string> + <string key="candidateClassName">NSTabView</string> + </object> + </object> + </object> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> <string key="minorKey">Source/SPWindowController.h</string> @@ -790,6 +893,13 @@ <string key="className">NSObject</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> <string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string> </object> </object> @@ -962,6 +1072,13 @@ <string key="NS.key.0">showWindow:</string> <string key="NS.object.0">id</string> </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">showWindow:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">showWindow:</string> + <string key="candidateClassName">id</string> + </object> + </object> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBFrameworkSource</string> <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string> @@ -989,6 +1106,30 @@ <string>NSTabView</string> </object> </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>delegate</string> + <string>partnerView</string> + <string>tabView</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">delegate</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">partnerView</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tabView</string> + <string key="candidateClassName">NSTabView</string> + </object> + </object> + </object> <reference key="sourceIdentifier" ref="331302854"/> </object> <object class="IBPartialClassDescription"> @@ -1001,6 +1142,7 @@ </object> </object> <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> <integer value="1050" key="NS.object.0"/> diff --git a/Interfaces/English.lproj/Preferences.xib b/Interfaces/English.lproj/Preferences.xib index 75cab4bf..449711bf 100644 --- a/Interfaces/English.lproj/Preferences.xib +++ b/Interfaces/English.lproj/Preferences.xib @@ -22,11 +22,12 @@ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> <integer value="1717"/> + <integer value="1176"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.brandonwalkin.BWToolkit</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.brandonwalkin.BWToolkit</string> </object> <object class="NSMutableDictionary" key="IBDocument.Metadata"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -56,7 +57,7 @@ <string key="NSWindowTitle">Preferences</string> <string key="NSWindowClass">NSWindow</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSWindowContentMinSize">{580, 50}</string> <object class="NSView" key="NSWindowView" id="1006"> <nil key="NSNextResponder"/> @@ -65,7 +66,7 @@ </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{580, 72}</string> - <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> </object> <object class="NSCustomView" id="594324362"> <nil key="NSNextResponder"/> @@ -478,7 +479,7 @@ <string key="NSColorName">controlColor</string> <object class="NSColor" key="NSColor" id="432854223"> <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> </object> </object> <object class="NSColor" key="NSTextColor" id="1035618107"> @@ -604,7 +605,7 @@ <reference key="NSNextResponder" ref="594324362"/> <int key="NSvFlags">12</int> <string key="NSFrame">{{202.5, 176}, {360, 5}}</string> - <string key="NSBounds">{{7, 0}, {346, 5}}</string> + <string key="NSBounds">{{7.5, 0}, {345, 5}}</string> <reference key="NSSuperview" ref="594324362"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> @@ -1497,7 +1498,7 @@ <string key="NSClassName">NSView</string> </object> <object class="NSCustomView" id="593732956"> - <nil key="NSNextResponder"/> + <reference key="NSNextResponder"/> <int key="NSvFlags">274</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -2217,6 +2218,66 @@ <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTextField" id="723511019"> + <reference key="NSNextResponder" ref="404987940"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{119, 33}, {159, 19}}</string> + <reference key="NSSuperview" ref="404987940"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="449219317"> + <int key="NSCellFlags">-2073952703</int> + <int key="NSCellFlags2">4326912</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="723511019"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="1001357688"/> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC41MDQwMzIyNTgxAA</bytes> + </object> + </object> + </object> + <object class="NSTextField" id="586801007"> + <reference key="NSNextResponder" ref="404987940"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{5, 35}, {109, 14}}</string> + <reference key="NSSuperview" ref="404987940"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="104958740"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">71304192</int> + <string key="NSContents">SSH Key:</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="586801007"/> + <reference key="NSBackgroundColor" ref="700609571"/> + <reference key="NSTextColor" ref="1035618107"/> + </object> + </object> + <object class="NSButton" id="339449226"> + <reference key="NSNextResponder" ref="404987940"/> + <int key="NSvFlags">265</int> + <string key="NSFrame">{{277, 32}, {25, 21}}</string> + <reference key="NSSuperview" ref="404987940"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="447774753"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134348800</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="339449226"/> + <int key="NSButtonFlags">-926138113</int> + <int key="NSButtonFlags2">162</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">KeyTemplate</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + </object> + </object> <object class="NSTextField" id="1041581151"> <reference key="NSNextResponder" ref="404987940"/> <int key="NSvFlags">266</int> @@ -2237,7 +2298,7 @@ <object class="NSTextField" id="663701836"> <reference key="NSNextResponder" ref="404987940"/> <int key="NSvFlags">266</int> - <string key="NSFrame">{{119, 33}, {183, 19}}</string> + <string key="NSFrame">{{119, 33}, {159, 19}}</string> <reference key="NSSuperview" ref="404987940"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="996160392"> @@ -2667,6 +2728,7 @@ </object> </object> <string key="NSFrameSize">{580, 381}</string> + <reference key="NSSuperview"/> <string key="NSClassName">NSView</string> </object> <object class="NSCustomView" id="1041614321"> @@ -4161,10 +4223,6 @@ AQAAAAA</bytes> <string key="NSClassName">NSView</string> </object> <object class="NSUserDefaultsController" id="151174232"> - <object class="NSMutableArray" key="NSDeclaredKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>_dummy</string> - </object> <bool key="NSSharedInstance">YES</bool> </object> <object class="NSArrayController" id="937123943"> @@ -4187,6 +4245,8 @@ AQAAAAA</bytes> <string>DisplayTableViewVerticalGridlines</string> <string>type</string> <string>TableRowCountQueryLevel</string> + <string>sshKeyLocationEnabled</string> + <string>sshKeyLocation</string> </object> <bool key="NSEditable">YES</bool> <bool key="NSAutomaticallyPreparesContent">YES</bool> @@ -7047,6 +7107,206 @@ AQAAAAA</bytes> </object> <int key="connectionID">1834</int> </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.sshKeyLocationEnabled</string> + <reference key="source" ref="339449226"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="339449226"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">value: selection.sshKeyLocationEnabled</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.sshKeyLocationEnabled</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1838</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: selection.sshKeyLocationEnabled</string> + <reference key="source" ref="663701836"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="663701836"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">hidden: selection.sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">selection.sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1844</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: selection.sshKeyLocationEnabled</string> + <reference key="source" ref="459575305"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="459575305"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">hidden: selection.sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">selection.sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + <integer value="0"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1850</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: selection.sshKeyLocationEnabled</string> + <reference key="source" ref="586801007"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="586801007"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">hidden: selection.sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">selection.sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSValueTransformerName</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <string>NSNegateBoolean</string> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1858</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="723511019"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">1862</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">hidden: selection.sshKeyLocationEnabled</string> + <reference key="source" ref="723511019"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="723511019"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">hidden: selection.sshKeyLocationEnabled</string> + <string key="NSBinding">hidden</string> + <string key="NSKeyPath">selection.sshKeyLocationEnabled</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMultipleValuesPlaceholder</string> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSValueTransformerName</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <integer value="1"/> + <string>NSNegateBoolean</string> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1867</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.sshKeyLocation</string> + <reference key="source" ref="723511019"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="723511019"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">value: selection.sshKeyLocation</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.sshKeyLocation</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1869</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">toolTip: selection.sshKeyLocation</string> + <reference key="source" ref="723511019"/> + <reference key="destination" ref="937123943"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="723511019"/> + <reference key="NSDestination" ref="937123943"/> + <string key="NSLabel">toolTip: selection.sshKeyLocation</string> + <string key="NSBinding">toolTip</string> + <string key="NSKeyPath">selection.sshKeyLocation</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">1871</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">chooseSSHKey:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="339449226"/> + </object> + <int key="connectionID">1872</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -8391,6 +8651,9 @@ AQAAAAA</bytes> <reference ref="578376935"/> <reference ref="623079900"/> <reference ref="981807110"/> + <reference ref="339449226"/> + <reference ref="586801007"/> + <reference ref="723511019"/> </object> <reference key="parent" ref="682271284"/> </object> @@ -9978,6 +10241,48 @@ AQAAAAA</bytes> <reference key="object" ref="803513953"/> <reference key="parent" ref="202566886"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">1835</int> + <reference key="object" ref="339449226"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="447774753"/> + </object> + <reference key="parent" ref="404987940"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1836</int> + <reference key="object" ref="447774753"/> + <reference key="parent" ref="339449226"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1851</int> + <reference key="object" ref="586801007"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="104958740"/> + </object> + <reference key="parent" ref="404987940"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1852</int> + <reference key="object" ref="104958740"/> + <reference key="parent" ref="586801007"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1859</int> + <reference key="object" ref="723511019"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="449219317"/> + </object> + <reference key="parent" ref="404987940"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1860</int> + <reference key="object" ref="449219317"/> + <reference key="parent" ref="723511019"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -10302,6 +10607,15 @@ AQAAAAA</bytes> <string>1824.IBPluginDependency</string> <string>1824.ImportedFromIB2</string> <string>1825.IBPluginDependency</string> + <string>1835.IBPluginDependency</string> + <string>1835.notes</string> + <string>1836.IBPluginDependency</string> + <string>1851.IBPluginDependency</string> + <string>1851.ImportedFromIB2</string> + <string>1852.IBPluginDependency</string> + <string>1859.IBPluginDependency</string> + <string>1859.ImportedFromIB2</string> + <string>1860.IBPluginDependency</string> <string>2.IBPluginDependency</string> <string>24.IBPluginDependency</string> <string>24.ImportedFromIB2</string> @@ -10923,6 +11237,39 @@ AQAAAAA</bytes> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableAttributedString"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes">Choose a custom SSH key file to use with this connection. Standard locations like ~/.ssh are checked automatically.</characters> + </object> + <object class="NSDictionary" key="NSAttributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSColor</string> + <string>NSFont</string> + <string>NSOriginalFont</string> + <string>NSParagraphStyle</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="6928728"/> + <reference ref="26"/> + <reference ref="26"/> + <object class="NSParagraphStyle"> + <int key="NSAlignment">4</int> + <nil key="NSTabStops"/> + </object> + </object> + </object> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -11255,7 +11602,7 @@ AQAAAAA</bytes> </object> </object> <nil key="sourceID"/> - <int key="maxID">1834</int> + <int key="maxID">1872</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -11387,382 +11734,7 @@ AQAAAAA</bytes> <bool key="EncodedWithXMLCoder">YES</bool> <string>addFavorite:</string> <string>changeFont:</string> - <string>displayAutoUpdatePreferences:</string> - <string>displayEditorPreferences:</string> - <string>displayFavoritePreferences:</string> - <string>displayGeneralPreferences:</string> - <string>displayNetworkPreferences:</string> - <string>displayNotificationPreferences:</string> - <string>displayTablePreferences:</string> - <string>duplicateFavorite:</string> - <string>favoriteTypeDidChange:</string> - <string>makeSelectedFavoriteDefault:</string> - <string>removeFavorite:</string> - <string>reverseFavoritesSortOrder:</string> - <string>setDefaultColors:</string> - <string>showCustomQueryFontPanel:</string> - <string>showGlobalResultTableFontPanel:</string> - <string>sortFavorites:</string> - <string>updateDefaultFavorite:</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - </object> - </object> - <object class="NSMutableDictionary" key="actionInfosByName"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>addFavorite:</string> - <string>changeFont:</string> - <string>displayAutoUpdatePreferences:</string> - <string>displayEditorPreferences:</string> - <string>displayFavoritePreferences:</string> - <string>displayGeneralPreferences:</string> - <string>displayNetworkPreferences:</string> - <string>displayNotificationPreferences:</string> - <string>displayTablePreferences:</string> - <string>duplicateFavorite:</string> - <string>favoriteTypeDidChange:</string> - <string>makeSelectedFavoriteDefault:</string> - <string>removeFavorite:</string> - <string>reverseFavoritesSortOrder:</string> - <string>setDefaultColors:</string> - <string>showCustomQueryFontPanel:</string> - <string>showGlobalResultTableFontPanel:</string> - <string>sortFavorites:</string> - <string>updateDefaultFavorite:</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBActionInfo"> - <string key="name">addFavorite:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">changeFont:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayAutoUpdatePreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayEditorPreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayFavoritePreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayGeneralPreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayNetworkPreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayNotificationPreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">displayTablePreferences:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">duplicateFavorite:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">favoriteTypeDidChange:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">makeSelectedFavoriteDefault:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">removeFavorite:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">reverseFavoritesSortOrder:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">setDefaultColors:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">showCustomQueryFontPanel:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">showGlobalResultTableFontPanel:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">sortFavorites:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> - <string key="name">updateDefaultFavorite:</string> - <string key="candidateClassName">id</string> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="outlets"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>autoUpdateView</string> - <string>defaultFavoritePopup</string> - <string>editorFontName</string> - <string>editorView</string> - <string>favoriteHostTextField</string> - <string>favoriteHostTextFieldSSH</string> - <string>favoriteNameTextField</string> - <string>favoriteUserTextField</string> - <string>favoriteUserTextFieldSSH</string> - <string>favoriteUserTextFieldSocket</string> - <string>favoritesController</string> - <string>favoritesSortByMenuItem</string> - <string>favoritesTabView</string> - <string>favoritesTableView</string> - <string>favoritesView</string> - <string>generalView</string> - <string>globalResultTableFontName</string> - <string>networkView</string> - <string>notificationsView</string> - <string>preferencesWindow</string> - <string>socketPasswordField</string> - <string>splitViewButtonBar</string> - <string>sshPasswordField</string> - <string>sshSQLPasswordField</string> - <string>standardPasswordField</string> - <string>tableCell</string> - <string>tablesView</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>NSView</string> - <string>NSPopUpButton</string> - <string>NSTextField</string> - <string>NSView</string> - <string>NSTextField</string> - <string>NSTextField</string> - <string>NSTextField</string> - <string>NSTextField</string> - <string>NSTextField</string> - <string>NSTextField</string> - <string>NSArrayController</string> - <string>NSMenuItem</string> - <string>NSTabView</string> - <string>NSTableView</string> - <string>NSView</string> - <string>NSView</string> - <string>NSTextField</string> - <string>NSView</string> - <string>NSView</string> - <string>NSWindow</string> - <string>NSSecureTextField</string> - <string>BWAnchoredButtonBar</string> - <string>NSSecureTextField</string> - <string>NSSecureTextField</string> - <string>NSSecureTextField</string> - <string>id</string> - <string>NSView</string> - </object> - </object> - <object class="NSMutableDictionary" key="toOneOutletInfosByName"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>autoUpdateView</string> - <string>defaultFavoritePopup</string> - <string>editorFontName</string> - <string>editorView</string> - <string>favoriteHostTextField</string> - <string>favoriteHostTextFieldSSH</string> - <string>favoriteNameTextField</string> - <string>favoriteUserTextField</string> - <string>favoriteUserTextFieldSSH</string> - <string>favoriteUserTextFieldSocket</string> - <string>favoritesController</string> - <string>favoritesSortByMenuItem</string> - <string>favoritesTabView</string> - <string>favoritesTableView</string> - <string>favoritesView</string> - <string>generalView</string> - <string>globalResultTableFontName</string> - <string>networkView</string> - <string>notificationsView</string> - <string>preferencesWindow</string> - <string>socketPasswordField</string> - <string>splitViewButtonBar</string> - <string>sshPasswordField</string> - <string>sshSQLPasswordField</string> - <string>standardPasswordField</string> - <string>tableCell</string> - <string>tablesView</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBToOneOutletInfo"> - <string key="name">autoUpdateView</string> - <string key="candidateClassName">NSView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">defaultFavoritePopup</string> - <string key="candidateClassName">NSPopUpButton</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">editorFontName</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">editorView</string> - <string key="candidateClassName">NSView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoriteHostTextField</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoriteHostTextFieldSSH</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoriteNameTextField</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoriteUserTextField</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoriteUserTextFieldSSH</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoriteUserTextFieldSocket</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoritesController</string> - <string key="candidateClassName">NSArrayController</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoritesSortByMenuItem</string> - <string key="candidateClassName">NSMenuItem</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoritesTabView</string> - <string key="candidateClassName">NSTabView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoritesTableView</string> - <string key="candidateClassName">NSTableView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">favoritesView</string> - <string key="candidateClassName">NSView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">generalView</string> - <string key="candidateClassName">NSView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">globalResultTableFontName</string> - <string key="candidateClassName">NSTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">networkView</string> - <string key="candidateClassName">NSView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">notificationsView</string> - <string key="candidateClassName">NSView</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">preferencesWindow</string> - <string key="candidateClassName">NSWindow</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">socketPasswordField</string> - <string key="candidateClassName">NSSecureTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">splitViewButtonBar</string> - <string key="candidateClassName">BWAnchoredButtonBar</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">sshPasswordField</string> - <string key="candidateClassName">NSSecureTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">sshSQLPasswordField</string> - <string key="candidateClassName">NSSecureTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">standardPasswordField</string> - <string key="candidateClassName">NSSecureTextField</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">tableCell</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBToOneOutletInfo"> - <string key="name">tablesView</string> - <string key="candidateClassName">NSView</string> - </object> - </object> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">Source/SPPreferenceController.h</string> - </object> - </object> - </object> - <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier" id="211715013"> - <string key="majorKey">IBDocumentRelativeSource</string> - <string key="minorKey">../../Frameworks/Sparkle.framework/Versions/A/Headers/SUUpdater.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">SPPreferenceController</string> - <string key="superclassName">NSWindowController</string> - <object class="NSMutableDictionary" key="actions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>addFavorite:</string> - <string>changeFont:</string> + <string>chooseSSHKey:</string> <string>closePanelSheet:</string> <string>displayAutoUpdatePreferences:</string> <string>displayEditorPreferences:</string> @@ -11816,6 +11788,7 @@ AQAAAAA</bytes> <string>id</string> <string>id</string> <string>id</string> + <string>id</string> </object> </object> <object class="NSMutableDictionary" key="actionInfosByName"> @@ -11824,6 +11797,7 @@ AQAAAAA</bytes> <bool key="EncodedWithXMLCoder">YES</bool> <string>addFavorite:</string> <string>changeFont:</string> + <string>chooseSSHKey:</string> <string>closePanelSheet:</string> <string>displayAutoUpdatePreferences:</string> <string>displayEditorPreferences:</string> @@ -11860,6 +11834,10 @@ AQAAAAA</bytes> <string key="candidateClassName">id</string> </object> <object class="IBActionInfo"> + <string key="name">chooseSSHKey:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> <string key="name">closePanelSheet:</string> <string key="candidateClassName">id</string> </object> @@ -12263,8 +12241,18 @@ AQAAAAA</bytes> </object> </object> <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPPreferenceController.h</string> + </object> + </object> + </object> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="211715013"> <string key="majorKey">IBDocumentRelativeSource</string> - <string key="minorKey">../../Source/SPPreferenceController.h</string> + <string key="minorKey">../../Frameworks/Sparkle.framework/Versions/A/Headers/SUUpdater.h</string> </object> </object> <object class="IBPartialClassDescription"> @@ -12298,6 +12286,14 @@ AQAAAAA</bytes> <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBPartialClassDescription"> + <string key="className">BWAnchoredButton</string> + <string key="superclassName">NSButton</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">BWToolkitFramework.framework/Headers/BWAnchoredButton.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">BWAnchoredButtonBar</string> <string key="superclassName">NSView</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> @@ -12306,6 +12302,14 @@ AQAAAAA</bytes> </object> </object> <object class="IBPartialClassDescription"> + <string key="className">BWAnchoredButtonCell</string> + <string key="superclassName">NSButtonCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">BWToolkitFramework.framework/Headers/BWAnchoredButtonCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">BWAnchoredPopUpButton</string> <string key="superclassName">NSPopUpButton</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> @@ -12753,6 +12757,13 @@ AQAAAAA</bytes> <string key="className">NSObject</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> <string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string> </object> </object> @@ -13106,6 +13117,7 @@ AQAAAAA</bytes> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> + <string>KeyTemplate</string> <string>NSActionTemplate</string> <string>NSAdvanced</string> <string>NSMenuCheckmark</string> @@ -13117,14 +13129,15 @@ AQAAAAA</bytes> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>{15, 15}</string> + <string>{16, 8}</string> + <string>{10, 10}</string> <string>{32, 32}</string> <string>{9, 8}</string> <string>{7, 2}</string> <string>{15, 15}</string> <string>{32, 23}</string> - <string>{128, 128}</string> - <string>{128, 128}</string> + <string>{33, 23}</string> + <string>{32, 23}</string> </object> </object> </data> diff --git a/Resources/English.lproj/ConnectionView.strings b/Resources/English.lproj/ConnectionView.strings Binary files differindex ef71e217..55c903c5 100644 --- a/Resources/English.lproj/ConnectionView.strings +++ b/Resources/English.lproj/ConnectionView.strings diff --git a/Resources/English.lproj/DataMigrationDialog.strings b/Resources/English.lproj/DataMigrationDialog.strings Binary files differindex 1280b4cd..9d54140c 100644 --- a/Resources/English.lproj/DataMigrationDialog.strings +++ b/Resources/English.lproj/DataMigrationDialog.strings diff --git a/Resources/English.lproj/Localizable.strings b/Resources/English.lproj/Localizable.strings Binary files differindex 88766593..273cff5d 100644 --- a/Resources/English.lproj/Localizable.strings +++ b/Resources/English.lproj/Localizable.strings diff --git a/Resources/English.lproj/Preferences.strings b/Resources/English.lproj/Preferences.strings Binary files differindex 97922977..ef3dbb53 100644 --- a/Resources/English.lproj/Preferences.strings +++ b/Resources/English.lproj/Preferences.strings diff --git a/Resources/Images/KeyTemplate.pdf b/Resources/Images/KeyTemplate.pdf new file mode 100644 index 00000000..fbb344d5 --- /dev/null +++ b/Resources/Images/KeyTemplate.pdf @@ -0,0 +1,67 @@ +%PDF-1.4 +% +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xeP[n!9A1zj~t?_V8*tsғg̃UhvNہ.xE(`n%#e쓂=w`",+F\nU^;CiNb-hmd^tl)vcia h\bmנ1;wtGIf{&D҉r]Df=4ΉcˎRI/W]~ΛjY +endstream +endobj +4 0 obj + 253 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 16 8 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.8.10 (http://cairographics.org)) + /Producer (cairo 1.8.10 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000635 00000 n +0000000366 00000 n +0000000015 00000 n +0000000344 00000 n +0000000438 00000 n +0000000700 00000 n +0000000827 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +879 +%%EOF diff --git a/Source/SPConnectionController.h b/Source/SPConnectionController.h index 4c8a0a9d..67bdb77b 100644 --- a/Source/SPConnectionController.h +++ b/Source/SPConnectionController.h @@ -80,8 +80,10 @@ NSString *sshHost; NSString *sshUser; NSString *sshPassword; + int sshKeyLocationEnabled; + NSString *sshKeyLocation; NSString *sshPort; -@private NSString *favoritesPBoardType; + @private NSString *favoritesPBoardType; NSString *connectionKeychainItemName; NSString *connectionKeychainItemAccount; @@ -109,6 +111,7 @@ IBOutlet NSSecureTextField *socketPasswordField; IBOutlet NSSecureTextField *sshPasswordField; IBOutlet NSSecureTextField *sshSSHPasswordField; + IBOutlet NSButton *sshSSHKeyButton; IBOutlet NSButton *addToFavoritesButton; IBOutlet NSButton *connectButton; @@ -135,6 +138,8 @@ @property (readwrite, retain) NSString *sshHost; @property (readwrite, retain) NSString *sshUser; @property (readwrite, retain) NSString *sshPassword; +@property (readwrite, assign) int sshKeyLocationEnabled; +@property (readwrite, retain) NSString *sshKeyLocation; @property (readwrite, retain) NSString *sshPort; @property (readwrite, retain) NSString *connectionKeychainItemName; @@ -158,6 +163,7 @@ - (void)addConnectionToDocument; // Interface interaction +- (IBAction)chooseSSHKey:(id)sender; - (IBAction)editFavorites:(id)sender; - (IBAction)showHelp:(id)sender; - (void)resizeTabViewToConnectionType:(NSUInteger)theType animating:(BOOL)animate; diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m index 9c7abe57..7937ef99 100644 --- a/Source/SPConnectionController.m +++ b/Source/SPConnectionController.m @@ -54,6 +54,8 @@ @synthesize sshHost; @synthesize sshUser; @synthesize sshPassword; +@synthesize sshKeyLocationEnabled; +@synthesize sshKeyLocation; @synthesize sshPort; @synthesize connectionKeychainItemName; @@ -181,6 +183,15 @@ return; } + // If an SSH key has been provided, verify it exists + if ([self type] == SPSSHTunnelConnection && sshKeyLocationEnabled && sshKeyLocation) { + if (![[NSFileManager defaultManager] fileExistsAtPath:[sshKeyLocation stringByExpandingTildeInPath]]) { + [self setSshKeyLocationEnabled:NSOffState]; + SPBeginAlertSheet(NSLocalizedString(@"SSH Key not found", @"SSH key check error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocument parentWindow], self, nil, nil, NSLocalizedString(@"A SSH key location was specified, but no file was found in the specified location. Please re-select the key and try again.", @"SSH key not found message")); + return; + } + } + // Ensure that a socket connection is not inadvertently used if (![self checkHost]) return; @@ -283,6 +294,11 @@ [sshTunnel setPassword:[self sshPassword]]; } + // Set the public key path if appropriate + if (sshKeyLocationEnabled && sshKeyLocation) { + [sshTunnel setKeyFilePath:sshKeyLocation]; + } + // Set the callback function on the tunnel [sshTunnel setConnectionStateChangeSelector:@selector(sshTunnelCallback:) delegate:self]; @@ -461,6 +477,47 @@ #pragma mark Interface interaction /** + * Opens the SSH key selection window, ready to select a SSH key. + */ +- (IBAction)chooseSSHKey:(id)sender +{ + [favoritesTable deselectAll:self]; + NSString *directoryPath = nil; + NSString *filePath = nil; + + // If the custom key location is currently disabled - after the button + // action - leave it disabled and return without showing the sheet. + if (!sshKeyLocationEnabled) { + return; + } + + // Otherwise open a panel at the last or default location + if (sshKeyLocation && [sshKeyLocation length]) { + filePath = [sshKeyLocation lastPathComponent]; + directoryPath = [sshKeyLocation stringByDeletingLastPathComponent]; + } + [[NSOpenPanel openPanel] beginSheetForDirectory:directoryPath + file:filePath + types:[NSArray arrayWithObjects:@"pem", @"", nil] + modalForWindow:[tableDocument parentWindow] + modalDelegate:self + didEndSelector:@selector(chooseSSHKeySheetDidEnd:returnCode:contextInfo:) + contextInfo:nil]; +} + +/** + * Called after closing the SSH key selection sheet. + */ +- (void)chooseSSHKeySheetDidEnd:(NSOpenPanel *)openPanel returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo +{ + if (returnCode == NSCancelButton) { + [self setSshKeyLocationEnabled:NSOffState]; + return; + } + [self setSshKeyLocation:[[openPanel filename] stringByAbbreviatingWithTildeInPath]]; +} + +/** * Opens the preferences window, or brings it to the front, and switch to the favorites tab. * If a favorite is selected in the connection sheet, it is also select in the prefs window. */ @@ -679,6 +736,8 @@ [self setDatabase:([self valueForKeyPath:@"selectedFavorite.database"] ? [self valueForKeyPath:@"selectedFavorite.database"] : @"")]; [self setSshHost:([self valueForKeyPath:@"selectedFavorite.sshHost"] ? [self valueForKeyPath:@"selectedFavorite.sshHost"] : @"")]; [self setSshUser:([self valueForKeyPath:@"selectedFavorite.sshUser"] ? [self valueForKeyPath:@"selectedFavorite.sshUser"] : @"")]; + [self setSshKeyLocationEnabled:([self valueForKeyPath:@"selectedFavorite.sshKeyLocationEnabled"] ? [[self valueForKeyPath:@"selectedFavorite.sshKeyLocationEnabled"] intValue] : NSOffState)]; + [self setSshKeyLocation:([self valueForKeyPath:@"selectedFavorite.sshKeyLocation"] ? [self valueForKeyPath:@"selectedFavorite.sshKeyLocation"] : @"")]; [self setSshPort:([self valueForKeyPath:@"selectedFavorite.sshPort"] ? [self valueForKeyPath:@"selectedFavorite.sshPort"] : @"")]; // Check whether the password exists in the keychain, and if so add it; also record the @@ -773,6 +832,8 @@ if ([self database]) [newFavorite setObject:[self database] forKey:@"database"]; if ([self sshHost]) [newFavorite setObject:[self sshHost] forKey:@"sshHost"]; if ([self sshUser]) [newFavorite setObject:[self sshUser] forKey:@"sshUser"]; + [newFavorite setObject:[NSNumber numberWithInt:[self sshKeyLocationEnabled]] forKey:@"sshKeyLocationEnabled"]; + if ([self sshKeyLocation]) [newFavorite setObject:[self sshKeyLocation] forKey:@"sshKeyLocation"]; if ([self sshPort]) [newFavorite setObject:[self sshPort] forKey:@"sshPort"]; // Add the new favorite to the user defaults array diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index 7632d50a..47f915c3 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -268,6 +268,8 @@ [connectionController setSocket:@""]; [connectionController setSshHost:@""]; [connectionController setSshUser:@""]; + [connectionController setSshKeyLocationEnabled:NSOffState]; + [connectionController setSshKeyLocation:@""]; [connectionController setSshPort:@""]; [connectionController setDatabase:@""]; [connectionController setPassword:nil]; @@ -485,6 +487,10 @@ [connectionController setSshHost:[connection objectForKey:@"ssh_host"]]; if([connection objectForKey:@"ssh_user"]) [connectionController setSshUser:[connection objectForKey:@"ssh_user"]]; + if([connection objectForKey:@"ssh_keyLocationEnabled"]) + [connectionController setSshKeyLocationEnabled:[[connection objectForKey:@"ssh_keyLocationEnabled"] intValue]]; + if([connection objectForKey:@"ssh_keyLocation"]) + [connectionController setSshKeyLocation:[connection objectForKey:@"ssh_keyLocation"]]; if([connection objectForKey:@"ssh_port"]) [connectionController setSshPort:[NSString stringWithFormat:@"%ld", (long)[[connection objectForKey:@"ssh_port"] integerValue]]]; @@ -3293,6 +3299,8 @@ aString = @"SPSSHTunnelConnection"; [connection setObject:[connectionController sshHost] forKey:@"ssh_host"]; [connection setObject:[connectionController sshUser] forKey:@"ssh_user"]; + [connection setObject:[NSNumber numberWithInt:[connectionController sshKeyLocationEnabled]] forKey:@"ssh_keyLocationEnabled"]; + [connection setObject:[connectionController sshKeyLocation] forKey:@"ssh_keyLocation"]; if([connectionController sshPort] && [[connectionController sshPort] length]) [connection setObject:[NSNumber numberWithInteger:[[connectionController sshPort] integerValue]] forKey:@"ssh_port"]; break; diff --git a/Source/SPPreferenceController.h b/Source/SPPreferenceController.h index 39c5f58e..1683db65 100644 --- a/Source/SPPreferenceController.h +++ b/Source/SPPreferenceController.h @@ -132,7 +132,7 @@ - (IBAction)closePanelSheet:(id)sender; - (IBAction)duplicateTheme:(id)sender; - (IBAction)removeTheme:(id)sender; - +- (IBAction)chooseSSHKey:(id)sender; // Toolbar item IBAction methods - (IBAction)displayGeneralPreferences:(id)sender; diff --git a/Source/SPPreferenceController.m b/Source/SPPreferenceController.m index 9f09ac2c..42503649 100644 --- a/Source/SPPreferenceController.m +++ b/Source/SPPreferenceController.m @@ -409,8 +409,8 @@ NSNumber *favoriteid = [NSNumber numberWithInteger:[[NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]] hash]]; // Create default favorite - NSMutableDictionary *favorite = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"New Favorite", [NSNumber numberWithInteger:0], @"", @"", @"", @"", @"", @"", @"", @"", favoriteid, nil] - forKeys:[NSArray arrayWithObjects:@"name", @"type", @"host", @"socket", @"user", @"port", @"database", @"sshHost", @"sshUser", @"sshPort", @"id", nil]]; + NSMutableDictionary *favorite = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"New Favorite", [NSNumber numberWithInteger:0], @"", @"", @"", @"", @"", @"", @"", [NSNumber numberWithInt:NSOffState], @"", @"", favoriteid, nil] + forKeys:[NSArray arrayWithObjects:@"name", @"type", @"host", @"socket", @"user", @"port", @"database", @"sshHost", @"sshUser", @"sshKeyLocationEnabled", @"sshKeyLocation", @"sshPort", @"id", nil]]; [favoritesController addObject:favorite]; [favoritesController setSelectedObjects:[NSArray arrayWithObject:favorite]]; @@ -685,6 +685,46 @@ [[sender window] orderOut:self]; } +/** + * Opens the SSH key selection window, ready to select a SSH key. + */ +- (IBAction)chooseSSHKey:(id)sender +{ + NSString *directoryPath = nil; + NSString *filePath = nil; + + // If the custom key location is currently disabled - after the button + // action - leave it disabled and return without showing the sheet. + if (![[favoritesController valueForKeyPath:@"selection.sshKeyLocationEnabled"] intValue]) { + return; + } + + // Otherwise open a panel at the last or default location + if ([favoritesController valueForKeyPath:@"selection.sshKeyLocation"] && [[favoritesController valueForKeyPath:@"selection.sshKeyLocation"] length]) { + filePath = [[favoritesController valueForKeyPath:@"selection.sshKeyLocation"] lastPathComponent]; + directoryPath = [[favoritesController valueForKeyPath:@"selection.sshKeyLocation"] stringByDeletingLastPathComponent]; + } + [[NSOpenPanel openPanel] beginSheetForDirectory:directoryPath + file:filePath + types:[NSArray arrayWithObjects:@"pem", @"", nil] + modalForWindow:preferencesWindow + modalDelegate:self + didEndSelector:@selector(chooseSSHKeySheetDidEnd:returnCode:contextInfo:) + contextInfo:nil]; +} + +/** + * Called after closing the SSH key selection sheet. + */ +- (void)chooseSSHKeySheetDidEnd:(NSOpenPanel *)openPanel returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo +{ + if (returnCode == NSCancelButton) { + [favoritesController setValue:[NSNumber numberWithInt:NSOffState] forKeyPath:@"selection.sshKeyLocationEnabled"]; + return; + } + [favoritesController setValue:[[openPanel filename] stringByAbbreviatingWithTildeInPath] forKeyPath:@"selection.sshKeyLocation"]; +} + #pragma mark - #pragma mark Toolbar item IBAction methods diff --git a/Source/SPSSHTunnel.h b/Source/SPSSHTunnel.h index 9230f7e1..3af537c6 100644 --- a/Source/SPSSHTunnel.h +++ b/Source/SPSSHTunnel.h @@ -51,6 +51,7 @@ NSString *keychainName; NSString *keychainAccount; NSString *requestedPassphrase; + NSString *identityFilePath; NSMutableArray *debugMessages; NSLock *debugMessagesLock; BOOL useHostFallback; @@ -71,6 +72,7 @@ - (void) setParentWindow:(NSWindow *)theWindow; - (BOOL) setPasswordKeychainName:(NSString *)theName account:(NSString *)theAccount; - (BOOL) setPassword:(NSString *)thePassword; +- (BOOL) setKeyFilePath:(NSString *)thePath; - (NSInteger) state; - (NSString *) lastError; - (NSString *) debugMessages; diff --git a/Source/SPSSHTunnel.m b/Source/SPSSHTunnel.m index 5cc833fd..807d507e 100644 --- a/Source/SPSSHTunnel.m +++ b/Source/SPSSHTunnel.m @@ -72,6 +72,7 @@ } parentWindow = nil; + identityFilePath = nil; sshQuestionDialog = nil; sshPasswordDialog = nil; password = nil; @@ -128,6 +129,19 @@ return YES; } +/** + * Sets the path of an identity file, or public key file, to use when connecting. + */ +- (BOOL) setKeyFilePath:(NSString *)thePath +{ + NSString *expandedPath = [thePath stringByExpandingTildeInPath]; + if (![[NSFileManager defaultManager] fileExistsAtPath:expandedPath]) return NO; + + if (identityFilePath) [identityFilePath release]; + identityFilePath = [[NSString alloc] initWithString:expandedPath]; + return YES; +} + /* * Sets the keychain name to use to retrieve the password. This is the recommended and * secure way of supplying a password to the SSH tunnel. @@ -282,6 +296,10 @@ [taskArguments addObject:@"-o ExitOnForwardFailure=yes"]; [taskArguments addObject:[NSString stringWithFormat:@"-o ConnectTimeout=%ld", (long)connectionTimeout]]; [taskArguments addObject:@"-o NumberOfPasswordPrompts=3"]; + if (identityFilePath) { + [taskArguments addObject:@"-i"]; + [taskArguments addObject:identityFilePath]; + } if (useKeepAlive && keepAliveInterval) { [taskArguments addObject:@"-o TCPKeepAlive=no"]; [taskArguments addObject:[NSString stringWithFormat:@"-o ServerAliveInterval=%ld", (long)ceil(keepAliveInterval)]]; @@ -652,6 +670,7 @@ if (password) [password release]; if (keychainName) [keychainName release]; if (keychainAccount) [keychainAccount release]; + if (identityFilePath) [identityFilePath release]; // As this object is not a NSWindowController, use manual top-level nib item management if (sshQuestionDialog) [sshQuestionDialog release], sshQuestionDialog = nil; diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index 34cbcfd5..011b5723 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -272,6 +272,7 @@ 58D2E22F101222870063EF1D /* link-arrow-highlighted-clicked.png in Resources */ = {isa = PBXBuildFile; fileRef = 58D2E22C101222870063EF1D /* link-arrow-highlighted-clicked.png */; }; 58D2E230101222870063EF1D /* link-arrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 58D2E22D101222870063EF1D /* link-arrow.png */; }; 58DA8863103E15B5000B98DF /* SPLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 58DA8862103E15B5000B98DF /* SPLogger.m */; }; + 58E205FC1234FE4F00A97059 /* KeyTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 58E205FB1234FE4F00A97059 /* KeyTemplate.pdf */; }; 58FEF16D0F23D66600518E8E /* SPSQLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 58FEF16C0F23D66600518E8E /* SPSQLParser.m */; }; 58FEF57E0F3B4E9700518E8E /* SPTableData.m in Sources */ = {isa = PBXBuildFile; fileRef = 58FEF57D0F3B4E9700518E8E /* SPTableData.m */; }; 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; @@ -899,6 +900,7 @@ 58D2E22D101222870063EF1D /* link-arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "link-arrow.png"; sourceTree = "<group>"; }; 58DA8861103E15B5000B98DF /* SPLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPLogger.h; sourceTree = "<group>"; }; 58DA8862103E15B5000B98DF /* SPLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPLogger.m; sourceTree = "<group>"; }; + 58E205FB1234FE4F00A97059 /* KeyTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = KeyTemplate.pdf; sourceTree = "<group>"; }; 58FEF16B0F23D66600518E8E /* SPSQLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPSQLParser.h; sourceTree = "<group>"; }; 58FEF16C0F23D66600518E8E /* SPSQLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPSQLParser.m; sourceTree = "<group>"; }; 58FEF57C0F3B4E9700518E8E /* SPTableData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPTableData.h; sourceTree = "<group>"; }; @@ -1764,6 +1766,7 @@ 17E6419D0EF02036001BC333 /* grabber-horizontal.png */, 17E6419E0EF02036001BC333 /* grabber-vertical.png */, 17E6419F0EF02036001BC333 /* hideconsole.tiff */, + 58E205FB1234FE4F00A97059 /* KeyTemplate.pdf */, 58D2E22D101222870063EF1D /* link-arrow.png */, 58D2E22B101222870063EF1D /* link-arrow-clicked.png */, 581068B51015411B0068C6E2 /* link-arrow-highlighted.png */, @@ -2527,6 +2530,7 @@ 58A8A72711A0149100B95749 /* MainWindow.xib in Resources */, 17A7773811C52E61001E27B4 /* IndexesView.xib in Resources */, 17D3649811DFE61B00CC9413 /* blue-tick.tiff in Resources */, + 58E205FC1234FE4F00A97059 /* KeyTemplate.pdf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; |