diff options
author | stuconnolly <stuart02@gmail.com> | 2009-11-12 23:44:09 +0000 |
---|---|---|
committer | stuconnolly <stuart02@gmail.com> | 2009-11-12 23:44:09 +0000 |
commit | a5af1bc73e296ff0b545310782a446259d896389 (patch) | |
tree | 82165af1afe69187bafd3e96c8b6e9bb41b4700b | |
parent | 64010e52c3f4bcec585b7fb2494ccf38a481b5f6 (diff) | |
download | sequelpro-a5af1bc73e296ff0b545310782a446259d896389.tar.gz sequelpro-a5af1bc73e296ff0b545310782a446259d896389.tar.bz2 sequelpro-a5af1bc73e296ff0b545310782a446259d896389.zip |
- New server processes panel, accessible via the 'Database' menu and alt+cmd+P. Includes the ability to kill queries and connections as well as live filtering support and the ability to save all processes or the current filtered set to a file. Implements issue #458.
- Reorganise 'Database' menu.
- Give 'Flush Privileges' key equivalent of shift+cmd+F.
-rw-r--r-- | Interfaces/English.lproj/DatabaseProcessList.xib | 2035 | ||||
-rw-r--r-- | Interfaces/English.lproj/MainMenu.xib | 317 | ||||
-rw-r--r-- | Source/SPConstants.h | 6 | ||||
-rw-r--r-- | Source/SPConstants.m | 4 | ||||
-rw-r--r-- | Source/SPProcessListController.h | 56 | ||||
-rw-r--r-- | Source/SPProcessListController.m | 498 | ||||
-rw-r--r-- | Source/TableDocument.h | 4 | ||||
-rw-r--r-- | Source/TableDocument.m | 36 | ||||
-rw-r--r-- | sequel-pro.xcodeproj/project.pbxproj | 19 |
9 files changed, 2914 insertions, 61 deletions
diff --git a/Interfaces/English.lproj/DatabaseProcessList.xib b/Interfaces/English.lproj/DatabaseProcessList.xib new file mode 100644 index 00000000..ba233dbb --- /dev/null +++ b/Interfaces/English.lproj/DatabaseProcessList.xib @@ -0,0 +1,2035 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">10C540</string> + <string key="IBDocument.InterfaceBuilderVersion">740</string> + <string key="IBDocument.AppKitVersion">1038.25</string> + <string key="IBDocument.HIToolboxVersion">458.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.brandonwalkin.BWToolkit</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>740</string> + <string>1.2.1</string> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="4"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">SPProcessListController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="1071072595"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{386, 500}, {586, 349}}</string> + <int key="NSWTFlags">1886912512</int> + <string key="NSWindowTitle">Processes</string> + <string key="NSWindowClass">NSWindow</string> + <object class="NSMutableString" key="NSViewClass"> + <characters key="NS.bytes">View</characters> + </object> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMinSize">{586, 200}</string> + <object class="NSView" key="NSWindowView" id="1010674838"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSScrollView" id="859424053"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">4370</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="605698422"> + <reference key="NSNextResponder" ref="859424053"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableView" id="457137758"> + <reference key="NSNextResponder" ref="605698422"/> + <int key="NSvFlags">256</int> + <string key="NSFrameSize">{575, 251}</string> + <reference key="NSSuperview" ref="605698422"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTableHeaderView" key="NSHeaderView" id="442504499"> + <reference key="NSNextResponder" ref="908569337"/> + <int key="NSvFlags">256</int> + <string key="NSFrameSize">{575, 17}</string> + <reference key="NSSuperview" ref="908569337"/> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="_NSCornerView" key="NSCornerView" id="779891178"> + <reference key="NSNextResponder" ref="859424053"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{576, 0}, {12, 17}}</string> + <reference key="NSSuperview" ref="859424053"/> + </object> + <object class="NSMutableArray" key="NSTableColumns"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableColumn" id="240146761"> + <string key="NSIdentifier">Id</string> + <double key="NSWidth">61</double> + <double key="NSMinWidth">40</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">ID</string> + <object class="NSFont" key="NSSupport" id="26"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">11</double> + <int key="NSfFlags">3100</int> + </object> + <object class="NSColor" key="NSBackgroundColor" id="955791207"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes> + </object> + <object class="NSColor" key="NSTextColor" id="958097610"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">headerTextColor</string> + <object class="NSColor" key="NSColor" id="346953463"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="50402577"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <object class="NSColor" key="NSBackgroundColor" id="499319949"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + <object class="NSColor" key="NSTextColor" id="37591332"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <reference key="NSColor" ref="346953463"/> + </object> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="1018814649"> + <string key="NSIdentifier">User</string> + <double key="NSWidth">60</double> + <double key="NSMinWidth">40</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">User</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="955791207"/> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="999821843"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <reference key="NSBackgroundColor" ref="499319949"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="916357082"> + <string key="NSIdentifier">Host</string> + <double key="NSWidth">66</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Host</string> + <reference key="NSSupport" ref="26"/> + <object class="NSColor" key="NSBackgroundColor" id="881658411"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">headerColor</string> + <reference key="NSColor" ref="499319949"/> + </object> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="1022329243"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <object class="NSColor" key="NSBackgroundColor" id="657889635"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlBackgroundColor</string> + <object class="NSColor" key="NSColor" id="466472473"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> + </object> + </object> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="900862033"> + <string key="NSIdentifier">db</string> + <double key="NSWidth">68</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Database</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="881658411"/> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="662905610"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <reference key="NSBackgroundColor" ref="657889635"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="124500548"> + <string key="NSIdentifier">Command</string> + <double key="NSWidth">97</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Command</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="881658411"/> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="717023455"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <reference key="NSBackgroundColor" ref="657889635"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="341933208"> + <string key="NSIdentifier">Time</string> + <double key="NSWidth">50</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Time</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="881658411"/> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="46527336"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <reference key="NSBackgroundColor" ref="657889635"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="938452365"> + <string key="NSIdentifier">State</string> + <double key="NSWidth">55</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">State</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="881658411"/> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="117356027"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <reference key="NSBackgroundColor" ref="657889635"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + <object class="NSTableColumn" id="1006157959"> + <string key="NSIdentifier">Info</string> + <double key="NSWidth">94</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Info</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="881658411"/> + <reference key="NSTextColor" ref="958097610"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="173872418"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="457137758"/> + <reference key="NSBackgroundColor" ref="657889635"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="457137758"/> + </object> + </object> + <double key="NSIntercellSpacingWidth">3</double> + <double key="NSIntercellSpacingHeight">2</double> + <reference key="NSBackgroundColor" ref="657889635"/> + <object class="NSColor" key="NSGridColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">gridColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC41AA</bytes> + </object> + </object> + <double key="NSRowHeight">13</double> + <int key="NSTvFlags">1514176512</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> + <int key="NSColumnAutoresizingStyle">1</int> + <int key="NSDraggingSourceMaskForLocal">15</int> + <int key="NSDraggingSourceMaskForNonLocal">0</int> + <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewDraggingDestinationStyle">0</int> + </object> + </object> + <string key="NSFrame">{{1, 17}, {575, 251}}</string> + <reference key="NSSuperview" ref="859424053"/> + <reference key="NSNextKeyView" ref="457137758"/> + <reference key="NSDocView" ref="457137758"/> + <reference key="NSBGColor" ref="657889635"/> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="971927666"> + <reference key="NSNextResponder" ref="859424053"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{576, 17}, {11, 251}}</string> + <reference key="NSSuperview" ref="859424053"/> + <int key="NSsFlags">256</int> + <reference key="NSTarget" ref="859424053"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.77368420362472534</double> + </object> + <object class="NSScroller" id="287987975"> + <reference key="NSNextResponder" ref="859424053"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{-100, -100}, {358, 11}}</string> + <reference key="NSSuperview" ref="859424053"/> + <int key="NSsFlags">257</int> + <reference key="NSTarget" ref="859424053"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.99721449613571167</double> + </object> + <object class="NSClipView" id="908569337"> + <reference key="NSNextResponder" ref="859424053"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="442504499"/> + </object> + <string key="NSFrame">{{1, 0}, {575, 17}}</string> + <reference key="NSSuperview" ref="859424053"/> + <reference key="NSNextKeyView" ref="442504499"/> + <reference key="NSDocView" ref="442504499"/> + <reference key="NSBGColor" ref="657889635"/> + <int key="NScvFlags">4</int> + </object> + <reference ref="779891178"/> + </object> + <string key="NSFrame">{{-1, 47}, {588, 269}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <reference key="NSNextKeyView" ref="605698422"/> + <int key="NSsFlags">18</int> + <reference key="NSVScroller" ref="971927666"/> + <reference key="NSHScroller" ref="287987975"/> + <reference key="NSContentView" ref="605698422"/> + <reference key="NSHeaderClipView" ref="908569337"/> + <reference key="NSCornerView" ref="779891178"/> + <bytes key="NSScrollAmts">QSAAAEEgAABBcAAAQXAAAA</bytes> + </object> + <object class="NSButton" id="11057255"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{477, 13}, {94, 28}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="569404619"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">138018816</int> + <string key="NSContents">Close</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="11057255"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">1</int> + <object class="NSFont" key="NSAlternateImage"> + <string key="NSName">Helvetica</string> + <double key="NSSize">11</double> + <int key="NSfFlags">16</int> + </object> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="97939917"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">260</int> + <string key="NSFrame">{{15, 13}, {111, 28}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="856752825"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">134348800</int> + <string key="NSContents">Save As...</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="97939917"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="BWInsetTextField" id="530590788"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{9, 324}, {117, 14}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="110248309"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272761856</int> + <string key="NSContents">Database Processes</string> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande-Bold</string> + <double key="NSSize">11</double> + <int key="NSfFlags">16</int> + </object> + <reference key="NSControlView" ref="530590788"/> + <object class="NSColor" key="NSBackgroundColor" id="596664222"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <reference key="NSColor" ref="466472473"/> + </object> + <reference key="NSTextColor" ref="37591332"/> + </object> + </object> + <object class="NSSearchField" id="872678477"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">265</int> + <string key="NSFrame">{{367, 322}, {208, 19}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <bool key="NSEnabled">YES</bool> + <object class="NSSearchFieldCell" key="NSCell" id="92933437"> + <int key="NSCellFlags">343014976</int> + <int key="NSCellFlags2">268567552</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="26"/> + <string key="NSPlaceholderString">Filter</string> + <reference key="NSControlView" ref="872678477"/> + <bool key="NSDrawsBackground">YES</bool> + <int key="NSTextBezelStyle">1</int> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <reference key="NSColor" ref="499319949"/> + </object> + <reference key="NSTextColor" ref="37591332"/> + <object class="NSButtonCell" key="NSSearchButtonCell"> + <int key="NSCellFlags">130560</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">search</string> + <reference key="NSControlView" ref="872678477"/> + <string key="NSAction">_searchFieldSearch:</string> + <reference key="NSTarget" ref="92933437"/> + <int key="NSButtonFlags">138690815</int> + <int key="NSButtonFlags2">0</int> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + </object> + <object class="NSButtonCell" key="NSCancelButtonCell"> + <int key="NSCellFlags">130560</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">clear</string> + <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableDictionary"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>AXDescription</string> + <string>NSAccessibilityEncodedAttributesValueType</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>cancel</string> + <integer value="1"/> + </object> + </object> + </object> + <reference key="NSControlView" ref="872678477"/> + <string key="NSAction">_searchFieldCancel:</string> + <reference key="NSTarget" ref="92933437"/> + <int key="NSButtonFlags">138690815</int> + <int key="NSButtonFlags2">0</int> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + </object> + <int key="NSMaximumRecents">255</int> + <bytes key="NSSearchFieldFlags">CAAAAA</bytes> + </object> + </object> + <object class="NSTextField" id="923493504"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">-2147483382</int> + <string key="NSFrame">{{128, 324}, {234, 14}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1037448022"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">71439360</int> + <string key="NSContents">0 of 0</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="923493504"/> + <reference key="NSBackgroundColor" ref="596664222"/> + <reference key="NSTextColor" ref="37591332"/> + </object> + </object> + <object class="NSButton" id="212964148"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{385, 13}, {94, 28}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="512998809"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">134348800</int> + <string key="NSContents">Refresh</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="212964148"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSProgressIndicator" id="456564741"> + <reference key="NSNextResponder" ref="1010674838"/> + <int key="NSvFlags">-2147482356</int> + <object class="NSPSMatrix" key="NSDrawMatrix"/> + <string key="NSFrame">{{366, 20}, {16, 16}}</string> + <reference key="NSSuperview" ref="1010674838"/> + <int key="NSpiFlags">20746</int> + <double key="NSMaxValue">100</double> + </object> + </object> + <string key="NSFrameSize">{586, 349}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> + <string key="NSMinSize">{586, 222}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + </object> + <object class="NSMenu" id="328428957"> + <string key="NSTitle"/> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="160052539"> + <reference key="NSMenu" ref="328428957"/> + <string key="NSTitle">Copy</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="169169667"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="30477996"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + </object> + <object class="NSMenuItem" id="503642664"> + <reference key="NSMenu" ref="328428957"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="169169667"/> + <reference key="NSMixedImage" ref="30477996"/> + </object> + <object class="NSMenuItem" id="116759459"> + <reference key="NSMenu" ref="328428957"/> + <string key="NSTitle">Kill Query</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="169169667"/> + <reference key="NSMixedImage" ref="30477996"/> + </object> + <object class="NSMenuItem" id="322366870"> + <reference key="NSMenu" ref="328428957"/> + <string key="NSTitle">Kill Connection</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="169169667"/> + <reference key="NSMixedImage" ref="30477996"/> + </object> + </object> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1071072595"/> + </object> + <int key="connectionID">40</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">closeSheet:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="11057255"/> + </object> + <int key="connectionID">41</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="872678477"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">42</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">dataSource</string> + <reference key="source" ref="457137758"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">43</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="457137758"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">44</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">processListTableView</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="457137758"/> + </object> + <int key="connectionID">45</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">refreshProcessList:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="212964148"/> + </object> + <int key="connectionID">48</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">killProcessQuery:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="116759459"/> + </object> + <int key="connectionID">59</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">killProcessConnection:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="322366870"/> + </object> + <int key="connectionID">60</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">menu</string> + <reference key="source" ref="457137758"/> + <reference key="destination" ref="328428957"/> + </object> + <int key="connectionID">61</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copy:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="160052539"/> + </object> + <int key="connectionID">62</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="328428957"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">63</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">saveProcessesButton</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="97939917"/> + </object> + <int key="connectionID">65</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">refreshProcessesButton</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="212964148"/> + </object> + <int key="connectionID">66</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">closeProcessListButton</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="11057255"/> + </object> + <int key="connectionID">67</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">filterProcessesSearchField</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="872678477"/> + </object> + <int key="connectionID">68</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">refreshProgressIndicator</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="456564741"/> + </object> + <int key="connectionID">70</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">processesCountTextField</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="923493504"/> + </object> + <int key="connectionID">71</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveServerProcesses:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="97939917"/> + </object> + <int key="connectionID">73</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="1071072595"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1010674838"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Process List</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="1010674838"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="923493504"/> + <reference ref="872678477"/> + <reference ref="530590788"/> + <reference ref="97939917"/> + <reference ref="11057255"/> + <reference ref="859424053"/> + <reference ref="456564741"/> + <reference ref="212964148"/> + </object> + <reference key="parent" ref="1071072595"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="923493504"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1037448022"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="872678477"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="92933437"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7</int> + <reference key="object" ref="859424053"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="442504499"/> + <reference ref="287987975"/> + <reference ref="971927666"/> + <reference ref="457137758"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">8</int> + <reference key="object" ref="530590788"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="110248309"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">9</int> + <reference key="object" ref="97939917"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="856752825"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="11057255"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="569404619"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="569404619"/> + <reference key="parent" ref="11057255"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="856752825"/> + <reference key="parent" ref="97939917"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="110248309"/> + <reference key="parent" ref="530590788"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="442504499"/> + <reference key="parent" ref="859424053"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">15</int> + <reference key="object" ref="287987975"/> + <reference key="parent" ref="859424053"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="971927666"/> + <reference key="parent" ref="859424053"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="457137758"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1018814649"/> + <reference ref="240146761"/> + <reference ref="916357082"/> + <reference ref="900862033"/> + <reference ref="124500548"/> + <reference ref="341933208"/> + <reference ref="938452365"/> + <reference ref="1006157959"/> + </object> + <reference key="parent" ref="859424053"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="1018814649"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="999821843"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="240146761"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="50402577"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="50402577"/> + <reference key="parent" ref="240146761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">21</int> + <reference key="object" ref="999821843"/> + <reference key="parent" ref="1018814649"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">22</int> + <reference key="object" ref="92933437"/> + <reference key="parent" ref="872678477"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="1037448022"/> + <reference key="parent" ref="923493504"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">28</int> + <reference key="object" ref="916357082"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1022329243"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="1022329243"/> + <reference key="parent" ref="916357082"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">30</int> + <reference key="object" ref="900862033"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="662905610"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">31</int> + <reference key="object" ref="662905610"/> + <reference key="parent" ref="900862033"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">32</int> + <reference key="object" ref="124500548"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="717023455"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">33</int> + <reference key="object" ref="717023455"/> + <reference key="parent" ref="124500548"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">34</int> + <reference key="object" ref="341933208"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="46527336"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">35</int> + <reference key="object" ref="46527336"/> + <reference key="parent" ref="341933208"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">36</int> + <reference key="object" ref="938452365"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="117356027"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">37</int> + <reference key="object" ref="117356027"/> + <reference key="parent" ref="938452365"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">38</int> + <reference key="object" ref="1006157959"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="173872418"/> + </object> + <reference key="parent" ref="457137758"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">39</int> + <reference key="object" ref="173872418"/> + <reference key="parent" ref="1006157959"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">46</int> + <reference key="object" ref="212964148"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="512998809"/> + </object> + <reference key="parent" ref="1010674838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">47</int> + <reference key="object" ref="512998809"/> + <reference key="parent" ref="212964148"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">51</int> + <reference key="object" ref="328428957"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="160052539"/> + <reference ref="322366870"/> + <reference ref="503642664"/> + <reference ref="116759459"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Contextual Menu</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">55</int> + <reference key="object" ref="160052539"/> + <reference key="parent" ref="328428957"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">56</int> + <reference key="object" ref="116759459"/> + <reference key="parent" ref="328428957"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">57</int> + <reference key="object" ref="322366870"/> + <reference key="parent" ref="328428957"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">58</int> + <reference key="object" ref="503642664"/> + <reference key="parent" ref="328428957"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">69</int> + <reference key="object" ref="456564741"/> + <reference key="parent" ref="1010674838"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>-3.IBPluginDependency</string> + <string>10.IBPluginDependency</string> + <string>10.ImportedFromIB2</string> + <string>11.IBPluginDependency</string> + <string>12.IBPluginDependency</string> + <string>13.IBPluginDependency</string> + <string>14.IBPluginDependency</string> + <string>14.IBShouldRemoveOnLegacySave</string> + <string>15.IBPluginDependency</string> + <string>15.IBShouldRemoveOnLegacySave</string> + <string>16.IBPluginDependency</string> + <string>16.IBShouldRemoveOnLegacySave</string> + <string>17.IBPluginDependency</string> + <string>17.ImportedFromIB2</string> + <string>18.IBPluginDependency</string> + <string>18.ImportedFromIB2</string> + <string>19.IBPluginDependency</string> + <string>19.ImportedFromIB2</string> + <string>20.IBPluginDependency</string> + <string>20.IBShouldRemoveOnLegacySave</string> + <string>21.IBPluginDependency</string> + <string>21.IBShouldRemoveOnLegacySave</string> + <string>22.IBPluginDependency</string> + <string>23.IBPluginDependency</string> + <string>28.IBPluginDependency</string> + <string>29.IBPluginDependency</string> + <string>3.IBEditorWindowLastContentRect</string> + <string>3.IBPluginDependency</string> + <string>3.IBWindowTemplateEditedContentRect</string> + <string>3.ImportedFromIB2</string> + <string>3.editorWindowContentRectSynchronizationRect</string> + <string>3.windowTemplate.hasMaxSize</string> + <string>3.windowTemplate.hasMinSize</string> + <string>3.windowTemplate.maxSize</string> + <string>3.windowTemplate.minSize</string> + <string>30.IBPluginDependency</string> + <string>31.IBPluginDependency</string> + <string>32.IBPluginDependency</string> + <string>33.IBPluginDependency</string> + <string>34.IBPluginDependency</string> + <string>35.IBPluginDependency</string> + <string>36.IBPluginDependency</string> + <string>37.IBPluginDependency</string> + <string>38.IBPluginDependency</string> + <string>39.IBPluginDependency</string> + <string>4.IBPluginDependency</string> + <string>4.ImportedFromIB2</string> + <string>46.IBPluginDependency</string> + <string>47.IBPluginDependency</string> + <string>5.IBPluginDependency</string> + <string>51.IBEditorWindowLastContentRect</string> + <string>51.IBPluginDependency</string> + <string>55.IBPluginDependency</string> + <string>56.IBPluginDependency</string> + <string>57.IBPluginDependency</string> + <string>58.IBPluginDependency</string> + <string>6.IBPluginDependency</string> + <string>69.IBPluginDependency</string> + <string>7.IBPluginDependency</string> + <string>7.ImportedFromIB2</string> + <string>8.IBPluginDependency</string> + <string>9.IBPluginDependency</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <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.brandonwalkin.BWToolkit</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <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> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{501, 384}, {586, 349}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{501, 384}, {586, 349}}</string> + <integer value="1"/> + <string>{{321, 508}, {411, 341}}</string> + <integer value="0"/> + <integer value="1"/> + <string>{3.40282e+38, 3.40282e+38}</string> + <string>{586, 200}</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> + <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> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{523, 251}, {155, 73}}</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> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">73</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPNull.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/CMImageView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPConnectionController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPContentFilterManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPNotLoaded.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPQueryFavoriteManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">toggleCollapse:</string> + <string key="NS.object.0">id</string> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/TablesList.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPWindowAdditions.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">SPProcessListController</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>closeSheet:</string> + <string>copy:</string> + <string>killProcessConnection:</string> + <string>killProcessQuery:</string> + <string>refreshProcessList:</string> + <string>saveServerProcesses:</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> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>closeProcessListButton</string> + <string>filterProcessesSearchField</string> + <string>processListTableView</string> + <string>processesCountTextField</string> + <string>refreshProcessesButton</string> + <string>refreshProgressIndicator</string> + <string>saveProcessesButton</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSButton</string> + <string>NSSearchField</string> + <string>NSTableView</string> + <string>NSTextField</string> + <string>NSButton</string> + <string>NSProgressIndicator</string> + <string>NSButton</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPProcessListController.h</string> + </object> + </object> + </object> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSActionCell</string> + <string key="superclassName">NSCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="990031507"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="266804855"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="362748490"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSButton</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSButton.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSButtonCell</string> + <string key="superclassName">NSActionCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSCell</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSControl</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="512953904"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSFormatter</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenu</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="853112308"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenuItem</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="795595359"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenuItem.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">AppKit.framework/Headers/NSAccessibility.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="990031507"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="266804855"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="362748490"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="512953904"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.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">AppKit.framework/Headers/NSDragging.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">AppKit.framework/Headers/NSFontManager.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">AppKit.framework/Headers/NSFontPanel.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">AppKit.framework/Headers/NSKeyValueBinding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="853112308"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSNibLoading.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">AppKit.framework/Headers/NSOutlineView.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">AppKit.framework/Headers/NSPasteboard.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">AppKit.framework/Headers/NSSavePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="575711638"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableView.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">AppKit.framework/Headers/NSToolbarItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="686268200"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSView.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">Foundation.framework/Headers/NSArchiver.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">Foundation.framework/Headers/NSClassDescription.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">Foundation.framework/Headers/NSError.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">Foundation.framework/Headers/NSFileManager.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">Foundation.framework/Headers/NSKeyValueCoding.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">Foundation.framework/Headers/NSKeyValueObserving.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">Foundation.framework/Headers/NSKeyedArchiver.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">Foundation.framework/Headers/NSObject.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">Foundation.framework/Headers/NSObjectScripting.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">Foundation.framework/Headers/NSPortCoder.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">Foundation.framework/Headers/NSRunLoop.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">Foundation.framework/Headers/NSScriptClassDescription.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">Foundation.framework/Headers/NSScriptKeyValueCoding.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">Foundation.framework/Headers/NSScriptObjectSpecifiers.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">Foundation.framework/Headers/NSScriptWhoseTests.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">Foundation.framework/Headers/NSThread.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">Foundation.framework/Headers/NSURL.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">Foundation.framework/Headers/NSURLConnection.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">Foundation.framework/Headers/NSURLDownload.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">Growl.framework/Headers/GrowlApplicationBridge.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> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Sparkle.framework/Headers/SUUpdater.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">WebKit.framework/Headers/WebDownload.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">WebKit.framework/Headers/WebEditingDelegate.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">WebKit.framework/Headers/WebFrameLoadDelegate.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">WebKit.framework/Headers/WebJavaPlugIn.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">WebKit.framework/Headers/WebPlugin.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">WebKit.framework/Headers/WebPluginContainer.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">WebKit.framework/Headers/WebPolicyDelegate.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">WebKit.framework/Headers/WebResourceLoadDelegate.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">WebKit.framework/Headers/WebScriptObject.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">WebKit.framework/Headers/WebUIDelegate.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSProgressIndicator</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSProgressIndicator.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScrollView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScroller</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSSearchField</string> + <string key="superclassName">NSTextField</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSearchField.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSSearchFieldCell</string> + <string key="superclassName">NSTextFieldCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSearchFieldCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableColumn</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableColumn.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableHeaderView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableHeaderView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableView</string> + <string key="superclassName">NSControl</string> + <reference key="sourceIdentifier" ref="575711638"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextField</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextFieldCell</string> + <string key="superclassName">NSActionCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <reference key="sourceIdentifier" ref="795595359"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="686268200"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindowController</string> + <string key="superclassName">NSResponder</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">showWindow:</string> + <string key="NS.object.0">id</string> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">../../sequel-pro.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/Interfaces/English.lproj/MainMenu.xib b/Interfaces/English.lproj/MainMenu.xib index 07fde2c0..177b13d6 100644 --- a/Interfaces/English.lproj/MainMenu.xib +++ b/Interfaces/English.lproj/MainMenu.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">10B504</string> + <string key="IBDocument.SystemVersion">10C540</string> <string key="IBDocument.InterfaceBuilderVersion">740</string> - <string key="IBDocument.AppKitVersion">1038.2</string> - <string key="IBDocument.HIToolboxVersion">437.00</string> + <string key="IBDocument.AppKitVersion">1038.25</string> + <string key="IBDocument.HIToolboxVersion">458.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> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="106"/> + <integer value="57"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -71,6 +71,14 @@ <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> </object> + <object class="NSMenuItem" id="615940863"> + <reference key="NSMenu" ref="90185757"/> + <string key="NSTitle">Check for Updates...</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="625762401"/> + <reference key="NSMixedImage" ref="315854375"/> + </object> <object class="NSMenuItem" id="635312828"> <reference key="NSMenu" ref="90185757"/> <bool key="NSIsDisabled">YES</bool> @@ -102,10 +110,11 @@ <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> </object> - <object class="NSMenuItem" id="615940863"> + <object class="NSMenuItem" id="257632548"> <reference key="NSMenu" ref="90185757"/> - <string key="NSTitle">Check for Updates...</string> + <string key="NSTitle">Visit Website...</string> <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> <int key="NSMnemonicLoc">2147483647</int> <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> @@ -119,15 +128,6 @@ <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> </object> - <object class="NSMenuItem" id="257632548"> - <reference key="NSMenu" ref="90185757"/> - <string key="NSTitle">Visit Website...</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="625762401"/> - <reference key="NSMixedImage" ref="315854375"/> - </object> <object class="NSMenuItem" id="1022411839"> <reference key="NSMenu" ref="90185757"/> <bool key="NSIsDisabled">YES</bool> @@ -1227,8 +1227,8 @@ <object class="NSMenuItem" id="653250987"> <reference key="NSMenu" ref="172963563"/> <string key="NSTitle">Add Database...</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> + <string key="NSKeyEquiv">A</string> + <int key="NSKeyEquivModMask">524288</int> <int key="NSMnemonicLoc">2147483647</int> <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> @@ -1253,6 +1253,15 @@ <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> </object> + <object class="NSMenuItem" id="7204100"> + <reference key="NSMenu" ref="172963563"/> + <string key="NSTitle">Flush Privileges</string> + <string key="NSKeyEquiv">F</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="625762401"/> + <reference key="NSMixedImage" ref="315854375"/> + </object> <object class="NSMenuItem" id="265095049"> <reference key="NSMenu" ref="172963563"/> <string key="NSTitle">Refresh Databases</string> @@ -1275,7 +1284,7 @@ </object> <object class="NSMenuItem" id="718573983"> <reference key="NSMenu" ref="172963563"/> - <string key="NSTitle">User Accounts</string> + <string key="NSTitle">User Accounts...</string> <string key="NSKeyEquiv">u</string> <int key="NSKeyEquivModMask">1048576</int> <int key="NSMnemonicLoc">2147483647</int> @@ -1552,7 +1561,7 @@ </object> </object> </object> - <object class="NSMenuItem" id="373468084"> + <object class="NSMenuItem" id="806896137"> <reference key="NSMenu" ref="172963563"/> <bool key="NSIsDisabled">YES</bool> <bool key="NSIsSeparator">YES</bool> @@ -1562,19 +1571,20 @@ <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> </object> - <object class="NSMenuItem" id="7204100"> + <object class="NSMenuItem" id="973684327"> <reference key="NSMenu" ref="172963563"/> - <string key="NSTitle">Flush Privileges</string> - <string key="NSKeyEquiv"/> + <string key="NSTitle">Show Server Variables...</string> + <string key="NSKeyEquiv">V</string> + <int key="NSKeyEquivModMask">1048576</int> <int key="NSMnemonicLoc">2147483647</int> <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> </object> - <object class="NSMenuItem" id="973684327"> + <object class="NSMenuItem" id="6656160"> <reference key="NSMenu" ref="172963563"/> - <string key="NSTitle">Show Server Variables...</string> - <string key="NSKeyEquiv">V</string> - <int key="NSKeyEquivModMask">1048576</int> + <string key="NSTitle">Show Server Processes...</string> + <string key="NSKeyEquiv">p</string> + <int key="NSKeyEquivModMask">1572864</int> <int key="NSMnemonicLoc">2147483647</int> <reference key="NSOnImage" ref="625762401"/> <reference key="NSMixedImage" ref="315854375"/> @@ -2827,6 +2837,14 @@ </object> <int key="connectionID">1030</int> </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showDatabaseProcessList:</string> + <reference key="source" ref="63651044"/> + <reference key="destination" ref="6656160"/> + </object> + <int key="connectionID">1032</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -3309,10 +3327,11 @@ <reference ref="14535230"/> <reference ref="197143231"/> <reference ref="973684327"/> - <reference ref="7204100"/> - <reference ref="373468084"/> <reference ref="822553772"/> <reference ref="718573983"/> + <reference ref="6656160"/> + <reference ref="806896137"/> + <reference ref="7204100"/> </object> <reference key="parent" ref="693420496"/> </object> @@ -4129,11 +4148,6 @@ <reference key="parent" ref="466354362"/> </object> <object class="IBObjectRecord"> - <int key="objectID">995</int> - <reference key="object" ref="373468084"/> - <reference key="parent" ref="172963563"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">996</int> <reference key="object" ref="718573983"/> <reference key="parent" ref="172963563"/> @@ -4186,6 +4200,16 @@ <reference key="object" ref="421783578"/> <reference key="parent" ref="1021151289"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">1031</int> + <reference key="object" ref="6656160"/> + <reference key="parent" ref="172963563"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1033</int> + <reference key="object" ref="806896137"/> + <reference key="parent" ref="172963563"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -4204,6 +4228,8 @@ <string>1029.IBPluginDependency</string> <string>103.IBPluginDependency</string> <string>103.ImportedFromIB2</string> + <string>1031.IBPluginDependency</string> + <string>1033.IBPluginDependency</string> <string>106.IBEditorWindowLastContentRect</string> <string>106.IBPluginDependency</string> <string>106.ImportedFromIB2</string> @@ -4545,7 +4571,6 @@ <string>990.IBPluginDependency</string> <string>991.IBPluginDependency</string> <string>992.IBPluginDependency</string> - <string>995.IBPluginDependency</string> <string>996.IBPluginDependency</string> <string>998.IBPluginDependency</string> </object> @@ -4563,7 +4588,9 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{796, 736}, {190, 123}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{733, 644}, {190, 123}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{561, 605}, {181, 43}}</string> @@ -4614,7 +4641,7 @@ <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{503, 227}, {280, 283}}</string> + <string>{{256, 236}, {280, 283}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{654, 613}, {157, 223}}</string> @@ -4642,11 +4669,11 @@ <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{1019, 437}, {194, 73}}</string> + <string>{{662, 694}, {194, 73}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{449, 1007}, {197, 53}}</string> - <string>{{346, 859}, {511, 20}}</string> + <string>{{108, 519}, {511, 20}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{506, 836}, {511, 20}}</string> @@ -4699,7 +4726,7 @@ <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{547, 257}, {237, 253}}</string> + <string>{{300, 266}, {237, 253}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{698, 703}, {184, 133}}</string> @@ -4717,7 +4744,7 @@ <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{367, 257}, {215, 253}}</string> + <string>{{120, 266}, {215, 253}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{518, 583}, {218, 253}}</string> @@ -4725,7 +4752,7 @@ <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> - <string>{{597, 327}, {251, 183}}</string> + <string>{{525, 564}, {255, 203}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{312, 683}, {231, 153}}</string> @@ -4794,7 +4821,7 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{678, 327}, {265, 183}}</string> + <string>{{606, 584}, {265, 183}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>{{829, 663}, {268, 173}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -4822,7 +4849,7 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{461, 177}, {235, 333}}</string> + <string>{{214, 186}, {235, 333}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>{{180, 535}, {182, 253}}</string> @@ -4955,7 +4982,6 @@ <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"> @@ -4974,7 +5000,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">1030</int> + <int key="maxID">1034</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -5078,6 +5104,13 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSDictionary</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/NSDictionary_DeepMutableCopy.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">NSMenu</string> <string key="superclassName">NSObject</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> @@ -5261,6 +5294,7 @@ <string>connectionSplitView</string> <string>connectionSplitViewButtonBar</string> <string>connectionView</string> + <string>delegate</string> <string>errorDetailText</string> <string>errorDetailWindow</string> <string>favoritesTable</string> @@ -5285,6 +5319,7 @@ <string>NSSplitView</string> <string>BWAnchoredButtonBar</string> <string>NSView</string> + <string>id</string> <string>NSTextView</string> <string>NSWindow</string> <string>NSTableView</string> @@ -5305,6 +5340,56 @@ <reference key="sourceIdentifier" ref="296977353"/> </object> <object class="IBPartialClassDescription"> + <string key="className">SPProcessListController</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>closeSheet:</string> + <string>copy:</string> + <string>killProcessConnection:</string> + <string>killProcessQuery:</string> + <string>refreshProcessList:</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> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>closeProcessListButton</string> + <string>filterProcessesSearchField</string> + <string>processListTableView</string> + <string>processesCountTextField</string> + <string>refreshProcessesButton</string> + <string>refreshProgressIndicator</string> + <string>saveProcessesButton</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSButton</string> + <string>NSSearchField</string> + <string>NSTableView</string> + <string>NSTextField</string> + <string>NSButton</string> + <string>NSProgressIndicator</string> + <string>NSButton</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPProcessListController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">SPQueryController</string> <string key="superclassName">NSWindowController</string> <object class="NSMutableDictionary" key="actions"> @@ -5373,6 +5458,56 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">SPUserManager</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>addHost:</string> + <string>addUser:</string> + <string>checkAllPrivileges:</string> + <string>doApply:</string> + <string>doCancel:</string> + <string>removeHost:</string> + <string>removeUser:</string> + <string>uncheckAllPrivileges:</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> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>outlineView</string> + <string>privsSupportedByServer</string> + <string>tabView</string> + <string>treeController</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSOutlineView</string> + <string>NSMutableDictionary</string> + <string>NSTabView</string> + <string>NSTreeController</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">Source/SPUserManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">TableDocument</string> <string key="superclassName">NSDocument</string> <object class="NSMutableDictionary" key="actions"> @@ -5387,7 +5522,6 @@ <string>checksumTable:</string> <string>chooseDatabase:</string> <string>chooseEncoding:</string> - <string>closeDatabaseSheet:</string> <string>closeErrorConnectionSheet:</string> <string>closePanelSheet:</string> <string>closePasswordSheet:</string> @@ -5412,6 +5546,7 @@ <string>saveServerVariables:</string> <string>setDatabases:</string> <string>showCreateTableSyntax:</string> + <string>showDatabaseProcessList:</string> <string>showMySQLHelp:</string> <string>showUserManager:</string> <string>showVariables:</string> @@ -5519,9 +5654,14 @@ <string>tableTabView</string> <string>tableWindow</string> <string>tablesListInstance</string> + <string>taskCancelButton</string> + <string>taskDescriptionText</string> + <string>taskProgressIndicator</string> + <string>taskProgressLayer</string> <string>titleAccessoryView</string> <string>titleImageView</string> <string>titleStringView</string> + <string>userManagerInstance</string> <string>variablesCountTextField</string> <string>variablesSearchField</string> <string>variablesSheet</string> @@ -5576,9 +5716,14 @@ <string>NSTabView</string> <string>id</string> <string>id</string> + <string>NSButton</string> + <string>id</string> + <string>id</string> + <string>NSBox</string> <string>id</string> <string>id</string> <string>id</string> + <string>SPUserManager</string> <string>NSTextField</string> <string>NSSearchField</string> <string>id</string> @@ -5660,6 +5805,14 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSBox</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSBox.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">NSBrowser</string> <string key="superclassName">NSControl</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> @@ -5684,6 +5837,36 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSController</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDictionary</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="272976720"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSDictionary.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDictionary</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="455788966"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDictionary</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="162195470"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">NSDocument</string> <string key="superclassName">NSObject</string> <object class="NSMutableDictionary" key="actions"> @@ -5785,6 +5968,15 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSMutableDictionary</string> + <string key="superclassName">NSDictionary</string> + <reference key="sourceIdentifier" ref="272976720"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMutableDictionary</string> + <reference key="sourceIdentifier" ref="162195470"/> + </object> + <object class="IBPartialClassDescription"> <string key="className">NSObject</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBFrameworkSource</string> @@ -5855,7 +6047,7 @@ </object> <object class="IBPartialClassDescription"> <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="621465764"> <string key="majorKey">IBFrameworkSource</string> <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> </object> @@ -5918,17 +6110,11 @@ </object> <object class="IBPartialClassDescription"> <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> - </object> + <reference key="sourceIdentifier" ref="455788966"/> </object> <object class="IBPartialClassDescription"> <string key="className">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBFrameworkSource</string> - <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> - </object> + <reference key="sourceIdentifier" ref="162195470"/> </object> <object class="IBPartialClassDescription"> <string key="className">NSObject</string> @@ -6120,6 +6306,19 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSObjectController</string> + <string key="superclassName">NSController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSObjectController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSOutlineView</string> + <string key="superclassName">NSTableView</string> + <reference key="sourceIdentifier" ref="621465764"/> + </object> + <object class="IBPartialClassDescription"> <string key="className">NSPopUpButton</string> <string key="superclassName">NSButton</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> @@ -6212,6 +6411,14 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSTreeController</string> + <string key="superclassName">NSObjectController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTreeController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">NSView</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBFrameworkSource</string> diff --git a/Source/SPConstants.h b/Source/SPConstants.h index aafabd73..e42b11b7 100644 --- a/Source/SPConstants.h +++ b/Source/SPConstants.h @@ -58,7 +58,7 @@ #define MAIN_TOOLBAR_TABLE_RELATIONS @"SwitchToTableRelationsToolbarItemIdentifier" #define MAIN_TOOLBAR_USER_MANAGER @"SwitchToUserManagerToolbarItemIdentifier" -// View Modes +// View modes typedef enum { SPStructureViewMode = 1, SPContentViewMode = 2, @@ -67,6 +67,10 @@ typedef enum { SPQueryEditorViewMode = 5 } SPViewMode; +// Kill mode constants +extern NSString *SPKillProcessQueryMode; +extern NSString *SPKillProcessConnectionMode; + // Preference key constants // General Prefpane extern NSString *SPDefaultFavorite; diff --git a/Source/SPConstants.m b/Source/SPConstants.m index 21b9bfe7..188a6282 100644 --- a/Source/SPConstants.m +++ b/Source/SPConstants.m @@ -25,6 +25,10 @@ #import "SPConstants.h" +// Kill mode constants +NSString *SPKillProcessQueryMode = @"SPKillProcessQueryMode"; +NSString *SPKillProcessConnectionMode = @"SPKillProcessConnectionMode"; + // Preference key constants // General Prefpane NSString *SPDefaultFavorite = @"DefaultFavorite"; diff --git a/Source/SPProcessListController.h b/Source/SPProcessListController.h new file mode 100644 index 00000000..3e93f117 --- /dev/null +++ b/Source/SPProcessListController.h @@ -0,0 +1,56 @@ +// +// $Id$ +// +// SPProcessListController.h +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on November 12, 2009 +// Copyright (c) 2009 Stuart Connolly. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at <http://code.google.com/p/sequel-pro/> + +#import <Cocoa/Cocoa.h> + +@class MCPConnection; + +@interface SPProcessListController : NSWindowController +{ + MCPConnection *connection; + + NSMutableArray *processes, *processesFiltered; + + IBOutlet NSTableView *processListTableView; + IBOutlet NSTextField *processesCountTextField; + IBOutlet NSSearchField *filterProcessesSearchField; + IBOutlet NSProgressIndicator *refreshProgressIndicator; + IBOutlet NSButton *closeProcessListButton; + IBOutlet NSButton *saveProcessesButton; + IBOutlet NSButton *refreshProcessesButton; +} + +@property (readwrite, assign) MCPConnection *connection; + +- (IBAction)copy:(id)sender; +- (IBAction)closeSheet:(id)sender; +- (IBAction)refreshProcessList:(id)sender; +- (IBAction)saveServerProcesses:(id)sender; +- (IBAction)killProcessQuery:(id)sender; +- (IBAction)killProcessConnection:(id)sender; + +- (void)displayProcessListSheetAttachedToWindow:(NSWindow *)window; + +@end diff --git a/Source/SPProcessListController.m b/Source/SPProcessListController.m new file mode 100644 index 00000000..c1f52d3c --- /dev/null +++ b/Source/SPProcessListController.m @@ -0,0 +1,498 @@ +// +// $Id$ +// +// SPProcessListController.m +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on November 12, 2009 +// Copyright (c) 2009 Stuart Connolly. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at <http://code.google.com/p/sequel-pro/> + +#import <MCPKit/MCPKit.h> + +#import "SPProcessListController.h" +#import "SPConstants.h" +#import "SPArrayAdditions.h" + +@interface SPProcessListController (PrivateAPI) + +- (void)_getDatabaseProcessList; +- (void)_killProcessQueryWithId:(NSUInteger)processId; +- (void)_killProcessConnectionWithId:(NSUInteger)processId; +- (void)_updateServerProcessesFilterForFilterString:(NSString *)filterString; + +@end + +@implementation SPProcessListController + +@synthesize connection; + +/** + * Initialisation + */ +- (id)init +{ + if ((self = [super initWithWindowNibName:@"DatabaseProcessList"])) { + processes = [[NSMutableArray alloc] init]; + } + + return self; +} + +/** + * Interface initialisation + */ +- (void)awakeFromNib +{ + // Set the process table view's vertical gridlines if required + [processListTableView setGridStyleMask:([[NSUserDefaults standardUserDefaults] boolForKey:SPDisplayTableViewVerticalGridlines]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone]; +} + +#pragma mark - +#pragma mark IBAction methods + +/** + * Copies the currently selected process(es) to the pasteboard. + */ +- (IBAction)copy:(id)sender +{ + NSResponder *firstResponder = [[self window] firstResponder]; + + if ((firstResponder == processListTableView) && ([processListTableView numberOfSelectedRows] > 0)) { + + NSMutableString *string = [NSMutableString string]; + NSIndexSet *rows = [processListTableView selectedRowIndexes]; + + NSUInteger i = [rows firstIndex]; + + while (i != NSNotFound) + { + if (i < [processesFiltered count]) { + NSDictionary *process = NSArrayObjectAtIndex(processesFiltered, i); + + NSString *stringTmp = [NSString stringWithFormat:@"%@ %@ %@ %@ %@ %@ %@ %@", + [process objectForKey:@"Id"], + [process objectForKey:@"User"], + [process objectForKey:@"Host"], + [process objectForKey:@"db"], + [process objectForKey:@"Command"], + [process objectForKey:@"Time"], + [process objectForKey:@"State"], + [process objectForKey:@"Info"]]; + + [string appendString:stringTmp]; + [string appendString:@"\n"]; + } + + i = [rows indexGreaterThanIndex:i]; + } + + NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard]; + + // Copy the string to the pasteboard + [pasteBoard declareTypes:[NSArray arrayWithObjects:NSStringPboardType, nil] owner:nil]; + [pasteBoard setString:string forType:NSStringPboardType]; + } +} + +/** + * Close the process list sheet. + */ +- (IBAction)closeSheet:(id)sender +{ + [NSApp endSheet:[self window] returnCode:[sender tag]]; + [[self window] orderOut:self]; + + // If the filtered array is allocated and it's not a reference to the processes array get rid of it + if ((processesFiltered) && (processesFiltered != processes)) { + [processesFiltered release], processesFiltered = nil; + } +} + +/** + * Refreshes the process list. + */ +- (IBAction)refreshProcessList:(id)sender +{ + // Start progress Indicator + [refreshProgressIndicator startAnimation:self]; + [refreshProgressIndicator setHidden:NO]; + + // Disable controls + [refreshProcessesButton setEnabled:NO]; + [closeProcessListButton setEnabled:NO]; + [saveProcessesButton setEnabled:NO]; + [filterProcessesSearchField setEnabled:NO]; + + [self _getDatabaseProcessList]; + + // Reapply any filters is required + if ([[filterProcessesSearchField stringValue] length] > 0) { + [self _updateServerProcessesFilterForFilterString:[filterProcessesSearchField stringValue]]; + } + + [processListTableView reloadData]; + + // Enable controls + [filterProcessesSearchField setEnabled:YES]; + [saveProcessesButton setEnabled:YES]; + [closeProcessListButton setEnabled:YES]; + [refreshProcessesButton setEnabled:YES]; + + // Stop progress Indicator + [refreshProgressIndicator stopAnimation:self]; + [refreshProgressIndicator setHidden:YES]; +} + +/** + * Saves the process list to the selected file. + */ +- (IBAction)saveServerProcesses:(id)sender +{ + NSSavePanel *panel = [NSSavePanel savePanel]; + + [panel setExtensionHidden:NO]; + [panel setAllowsOtherFileTypes:YES]; + [panel setCanSelectHiddenExtension:YES]; + + [panel beginSheetForDirectory:nil file:@"ServerProcesses" modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:) contextInfo:nil]; +} + +/** + * Kills the currently selected process' query. + */ +- (IBAction)killProcessQuery:(id)sender +{ + // No process selected. Interface validation should prevent this. + if ([processListTableView numberOfSelectedRows] != 1) return; + + NSUInteger processId = [[[processes objectAtIndex:[processListTableView selectedRow]] valueForKey:@"Id"] integerValue]; + + NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Kill query?", @"kill query message") + defaultButton:NSLocalizedString(@"Kill", @"kill button") + alternateButton:NSLocalizedString(@"Cancel", @"cancel button") + otherButton:nil + informativeTextWithFormat:[NSString stringWithFormat:NSLocalizedString(@"Are you sure you want to kill the current query executing on connection ID %d.\n\nPlease be aware that continuing to kill this query may result in data corruption. Please proceed with caution.", @"kill query informative message"), processId]]; + + NSArray *buttons = [alert buttons]; + + // Change the alert's cancel button to have the key equivalent of return + [[buttons objectAtIndex:0] setKeyEquivalent:@"k"]; + [[buttons objectAtIndex:0] setKeyEquivalentModifierMask:NSCommandKeyMask]; + [[buttons objectAtIndex:1] setKeyEquivalent:@"\r"]; + + [alert setAlertStyle:NSCriticalAlertStyle]; + + [alert beginSheetModalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:SPKillProcessQueryMode]; +} + +/** + * Kills the currently selected proceess' connection. + */ +- (IBAction)killProcessConnection:(id)sender +{ + // No process selected. Interface validation should prevent this. + if ([processListTableView numberOfSelectedRows] != 1) return; + + NSUInteger processId = [[[processes objectAtIndex:[processListTableView selectedRow]] valueForKey:@"Id"] integerValue]; + + NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Kill connection?", @"kill connection message") + defaultButton:NSLocalizedString(@"Kill", @"kill button") + alternateButton:NSLocalizedString(@"Cancel", @"cancel button") + otherButton:nil + informativeTextWithFormat:[NSString stringWithFormat:NSLocalizedString(@"Are you sure you want to kill connection ID %d.\n\nPlease be aware that continuing to kill this connection may result in data corruption. Please proceed with caution.", @"kill connection informative message"), processId]]; + + NSArray *buttons = [alert buttons]; + + // Change the alert's cancel button to have the key equivalent of return + [[buttons objectAtIndex:0] setKeyEquivalent:@"k"]; + [[buttons objectAtIndex:0] setKeyEquivalentModifierMask:NSCommandKeyMask]; + [[buttons objectAtIndex:1] setKeyEquivalent:@"\r"]; + + [alert setAlertStyle:NSCriticalAlertStyle]; + + [alert beginSheetModalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:SPKillProcessConnectionMode]; +} + +#pragma mark - +#pragma mark Other methods + +/** + * Displays the process list sheet attached to the supplied window. + */ +- (void)displayProcessListSheetAttachedToWindow:(NSWindow *)window +{ + // Weak reference + processesFiltered = processes; + + // Get the current process list + [self _getDatabaseProcessList]; + + // Reload the tableview + [processListTableView reloadData]; + + // If the search field already has value from when the panel was previously open, apply the filter. + if ([[filterProcessesSearchField stringValue] length] > 0) { + [self _updateServerProcessesFilterForFilterString:[filterProcessesSearchField stringValue]]; + } + + // Open the sheet + [NSApp beginSheet:[self window] modalForWindow:window modalDelegate:self didEndSelector:nil contextInfo:nil]; +} + +/** + * Invoked when the kill alerts are dismissed. Decide what to do based on the user's decision. + */ +- (void)sheetDidEnd:(id)sheet returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo +{ + if (returnCode == NSAlertDefaultReturn) { + NSUInteger processId = [[[processes objectAtIndex:[processListTableView selectedRow]] valueForKey:@"Id"] integerValue]; + + if ([contextInfo isEqualToString:SPKillProcessQueryMode]) { + [self _killProcessQueryWithId:processId]; + } + else if ([contextInfo isEqualToString:SPKillProcessConnectionMode]) { + [self _killProcessConnectionWithId:processId]; + } + } +} + +/** + * Invoked when the save panel is dismissed. + */ +- (void)savePanelDidEnd:(NSSavePanel *)panel returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo +{ + if (returnCode == NSAlertDefaultReturn) { + if ([processesFiltered count] > 0) { + NSMutableString *processesString = [NSMutableString string]; + + for (NSDictionary *process in processesFiltered) + { + NSString *stringTmp = [NSString stringWithFormat:@"%@ %@ %@ %@ %@ %@ %@ %@", + [process objectForKey:@"Id"], + [process objectForKey:@"User"], + [process objectForKey:@"Host"], + [process objectForKey:@"db"], + [process objectForKey:@"Command"], + [process objectForKey:@"Time"], + [process objectForKey:@"State"], + [process objectForKey:@"Info"]]; + + [processesString appendString:stringTmp]; + [processesString appendString:@"\n"]; + } + + [processesString writeToFile:[panel filename] atomically:YES encoding:NSUTF8StringEncoding error:NULL]; + } + } +} + +/** + * Menu item validation. + */ +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem +{ + SEL action = [menuItem action]; + + if (action == @selector(copy:)) { + return ([processListTableView numberOfSelectedRows] > 0); + } + + if ((action == @selector(killProcessQuery:)) || (action == @selector(killProcessConnection:))) { + return ([processListTableView numberOfSelectedRows] == 1); + } + + return YES; +} + +/** + * This method is called as part of Key Value Observing which is used to watch for prefernce changes which effect the interface. + */ +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if ([keyPath isEqualToString:SPDisplayTableViewVerticalGridlines]) { + [processListTableView setGridStyleMask:([[change objectForKey:NSKeyValueChangeNewKey] boolValue]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone]; + } +} + +#pragma mark - +#pragma mark Tableview delegate methods + +/** + * Table view delegate method. Returns the number of rows in the table veiw. + */ +- (int)numberOfRowsInTableView:(NSTableView *)tableView +{ + return [processesFiltered count]; +} + +/** + * Table view delegate method. Returns the specific object for the request column and row. + */ +- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row +{ + id object = [[processesFiltered objectAtIndex:row] valueForKey:[tableColumn identifier]]; + + return (![object isNSNull]) ? object : @"NULL"; +} + +#pragma mark - +#pragma mark Text field delegate methods + +/** + * Apply the filter string to the current process list. + */ +- (void)controlTextDidChange:(NSNotification *)notification +{ + id object = [notification object]; + + if (object == filterProcessesSearchField) { + [self _updateServerProcessesFilterForFilterString:[object stringValue]]; + } +} + +#pragma mark - + +/** + * Dealloc + */ +- (void)dealloc +{ + [processes release], processes = nil; + + [super dealloc]; +} + +@end + +@implementation SPProcessListController (PrivateAPI) + +/** + * Gets the current process list form the database; + */ +- (void)_getDatabaseProcessList +{ + NSUInteger i = 0; + + // Get processes + MCPResult *processList = [connection queryString:@"SHOW PROCESSLIST"]; + + if ([processList numOfRows]) [processList dataSeek:0]; + + [processes removeAllObjects]; + + for (i = 0; i < [processList numOfRows]; i++) + { + [processes addObject:[processList fetchRowAsDictionary]]; + } +} + +/** + * Attempts to kill the query executing on the connection associate with the supplied ID. + */ +- (void)_killProcessQueryWithId:(NSUInteger)processId +{ + // Kill the query + [connection queryString:[NSString stringWithFormat:@"KILL QUERY %d", processId]]; + + // Check for errors + if (![[connection getLastErrorMessage] isEqualToString:@""]) { + NSBeginAlertSheet(NSLocalizedString(@"Unable to kill query", @"error killing query message"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self window], self, nil, nil, nil, + [NSString stringWithFormat:NSLocalizedString(@"An error occured while attempting to kill the query associated with connection %d.\n\nMySQL said: %@", @"error killing query informative message"), processId, [connection getLastErrorMessage]]); + } + + // Refresh the process list + [self refreshProcessList:self]; +} + +/** + * Attempts the kill the connection associated with the supplied ID. + */ +- (void)_killProcessConnectionWithId:(NSUInteger)processId +{ + // Kill the connection + [connection queryString:[NSString stringWithFormat:@"KILL CONNECTION %d", processId]]; + + // Check for errors + if (![[connection getLastErrorMessage] isEqualToString:@""]) { + NSBeginAlertSheet(NSLocalizedString(@"Unable to kill connection", @"error killing connection message"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self window], self, nil, nil, nil, + [NSString stringWithFormat:NSLocalizedString(@"An error occured while attempting to kill connection %d.\n\nMySQL said: %@", @"error killing query informative message"), processId, [connection getLastErrorMessage]]); + } + + // Refresh the process list + [self refreshProcessList:self]; +} + +/** + * Filter the displayed server processes against the supplied filter string. + */ +- (void)_updateServerProcessesFilterForFilterString:(NSString *)filterString +{ + [saveProcessesButton setEnabled:NO]; + + filterString = [[filterString lowercaseString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + + // If the filtered array is allocated and its not a reference to the processes array, + // relase it to prevent memory leaks upon the next allocation. + if ((processesFiltered) && (processesFiltered != processes)) { + [processesFiltered release], processesFiltered = nil; + } + + processesFiltered = [[NSMutableArray alloc] init]; + + if ([filterString length] == 0) { + [processesFiltered release]; + processesFiltered = processes; + + [saveProcessesButton setEnabled:YES]; + [saveProcessesButton setTitle:@"Save As..."]; + [processesCountTextField setStringValue:@""]; + + [processListTableView reloadData]; + + return; + } + + // Perform filtering + for (NSDictionary *process in processes) + { + if (([[process objectForKey:@"Id"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound) || + ([[process objectForKey:@"User"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound) || + ([[process objectForKey:@"Host"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound) || + ((![[process objectForKey:@"db"] isNSNull]) && ([[process objectForKey:@"db"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound)) || + ([[process objectForKey:@"Command"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound) || + ([[process objectForKey:@"Time"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound) || + ((![[process objectForKey:@"State"] isNSNull]) && ([[process objectForKey:@"State"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound)) || + ((![[process objectForKey:@"Info"] isNSNull]) && ([[process objectForKey:@"Info"] rangeOfString:filterString options:NSCaseInsensitiveSearch].location != NSNotFound))) + { + [processesFiltered addObject:process]; + } + } + + [processListTableView reloadData]; + + [processesCountTextField setStringValue:[NSString stringWithFormat:NSLocalizedString(@"%d of %d", "filtered server processes count"), [processesFiltered count], [processes count]]]; + [processesCountTextField setHidden:NO]; + + if ([processesFiltered count] == 0) return; + + [saveProcessesButton setEnabled:YES]; + [saveProcessesButton setTitle:@"Save View As..."]; +} + +@end diff --git a/Source/TableDocument.h b/Source/TableDocument.h index 843bb9c3..ab36ffb3 100644 --- a/Source/TableDocument.h +++ b/Source/TableDocument.h @@ -29,7 +29,7 @@ #import <MCPKit/MCPKit.h> #import <WebKit/WebKit.h> -@class SPConnectionController, SPUserManager; +@class SPConnectionController, SPProcessListController, SPUserManager; enum sp_current_query_mode { @@ -120,6 +120,7 @@ enum sp_current_query_mode int passwordSheetReturnCode; SPConnectionController *connectionController; + SPProcessListController *processListController; MCPConnection *mySQLConnection; @@ -183,6 +184,7 @@ enum sp_current_query_mode - (IBAction)removeDatabase:(id)sender; - (IBAction)showMySQLHelp:(id)sender; - (IBAction)saveServerVariables:(id)sender; +- (IBAction)showDatabaseProcessList:(id)sender; - (IBAction)openCurrentConnectionInNewWindow:(id)sender; - (NSArray *)allDatabaseNames; diff --git a/Source/TableDocument.m b/Source/TableDocument.m index b8071060..683d6237 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -52,6 +52,7 @@ #import "SPEncodingPopupAccessory.h" #import "SPConstants.h" #import "YRKSpinningProgressIndicator.h" +#import "SPProcessListController.h" // Printing #import "MGTemplateEngine.h" @@ -166,8 +167,12 @@ // Set the connection controller's delegate [connectionController setDelegate:self]; + + // Set the server variables table view's vertical gridlines if required + [variablesTableView setGridStyleMask:([[NSUserDefaults standardUserDefaults] boolForKey:SPDisplayTableViewVerticalGridlines]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone]; // Register observers for when the DisplayTableViewVerticalGridlines preference changes + [prefs addObserver:self forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL]; [prefs addObserver:tableSourceInstance forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL]; [prefs addObserver:tableContentInstance forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL]; [prefs addObserver:customQueryInstance forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL]; @@ -1046,6 +1051,23 @@ } /** + * Displays the database process list sheet. + */ +- (IBAction)showDatabaseProcessList:(id)sender +{ + if (!processListController) { + processListController = [[SPProcessListController alloc] init]; + + [processListController setConnection:mySQLConnection]; + + // Register to obeserve table view vertical grid line pref changes + [prefs addObserver:processListController forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL]; + } + + [processListController displayProcessListSheetAttachedToWindow:tableWindow]; +} + +/** * Returns an array of all available database names */ - (NSArray *)allDatabaseNames @@ -2015,7 +2037,7 @@ // If it was the server variables sheet that was closed release the relevant arrays if necessary if ([sender window] == variablesSheet) { - // If the filtered array is allocated and its not a reference to the variables array get rid of it + // If the filtered array is allocated and it's not a reference to the variables array get rid of it if ((variablesFiltered) && (variablesFiltered != variables)) { [variablesFiltered release], variablesFiltered = nil; } @@ -2168,6 +2190,9 @@ if ([keyPath isEqualToString:SPConsoleEnableLogging]) { [mySQLConnection setDelegateQueryLogging:[[change objectForKey:NSKeyValueChangeNewKey] boolValue]]; } + else if ([keyPath isEqualToString:SPDisplayTableViewVerticalGridlines]) { + [variablesTableView setGridStyleMask:([[change objectForKey:NSKeyValueChangeNewKey] boolValue]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone]; + } } /* @@ -3599,7 +3624,7 @@ } #pragma mark - -#pragma mark +#pragma mark Connection controller delegate methods /** * Invoked by the connection controller when it starts the process of initiating a connection. @@ -3620,7 +3645,7 @@ } #pragma mark - -#pragma mark Database name field delegate methods +#pragma mark Text field delegate methods /** * When adding a database, enable the button only if the new name has a length. @@ -3717,12 +3742,15 @@ #pragma mark - +/** + * Dealloc + */ - (void)dealloc { - [_encoding release]; [printWebView release]; if (connectionController) [connectionController release]; + if (processListController) [processListController release]; if (mySQLConnection) [mySQLConnection release]; if (variables) [variables release]; if (selectedDatabase) [selectedDatabase release]; diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index 57559046..d037d0a6 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -15,6 +15,8 @@ 173C4366104455E0001F3A30 /* SPQueryFavoriteManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 173C4365104455E0001F3A30 /* SPQueryFavoriteManager.m */; }; 173C44D81044A6B0001F3A30 /* SPOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 173C44D71044A6B0001F3A30 /* SPOutlineView.m */; }; 1740FABB0FC4372F00CF3699 /* SPDatabaseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1740FABA0FC4372F00CF3699 /* SPDatabaseData.m */; }; + 174CE11E10AB80B5008F892B /* DatabaseProcessList.xib in Resources */ = {isa = PBXBuildFile; fileRef = 174CE11C10AB80B5008F892B /* DatabaseProcessList.xib */; }; + 174CE14210AB9281008F892B /* SPProcessListController.m in Sources */ = {isa = PBXBuildFile; fileRef = 174CE14110AB9281008F892B /* SPProcessListController.m */; }; 1761FD480EF03A6F00331368 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1761FD460EF03A6F00331368 /* MainMenu.xib */; }; 177E792E0FCB54EC00E9E122 /* database-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 177E792B0FCB54EC00E9E122 /* database-small.png */; }; 177E792F0FCB54EC00E9E122 /* dummy-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 177E792C0FCB54EC00E9E122 /* dummy-small.png */; }; @@ -356,6 +358,9 @@ 173C44D71044A6B0001F3A30 /* SPOutlineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPOutlineView.m; sourceTree = "<group>"; }; 1740FAB90FC4372F00CF3699 /* SPDatabaseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPDatabaseData.h; sourceTree = "<group>"; }; 1740FABA0FC4372F00CF3699 /* SPDatabaseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDatabaseData.m; sourceTree = "<group>"; }; + 174CE11D10AB80B5008F892B /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Interfaces/English.lproj/DatabaseProcessList.xib; sourceTree = "<group>"; }; + 174CE14010AB9281008F892B /* SPProcessListController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPProcessListController.h; sourceTree = "<group>"; }; + 174CE14110AB9281008F892B /* SPProcessListController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPProcessListController.m; sourceTree = "<group>"; }; 1761FD470EF03A6F00331368 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; }; 1761FD9D0EF0488900331368 /* build-version.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "build-version.pl"; sourceTree = "<group>"; }; 177E792B0FCB54EC00E9E122 /* database-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "database-small.png"; sourceTree = "<group>"; }; @@ -838,6 +843,8 @@ BC675A131072039C00C5ACD4 /* SPContentFilterManager.m */, BC9F087F100FCF2C00A80D32 /* SPFieldEditorController.h */, BC9F0880100FCF2C00A80D32 /* SPFieldEditorController.m */, + 174CE14010AB9281008F892B /* SPProcessListController.h */, + 174CE14110AB9281008F892B /* SPProcessListController.m */, 173C4364104455E0001F3A30 /* SPQueryFavoriteManager.h */, 173C4365104455E0001F3A30 /* SPQueryFavoriteManager.m */, BC29C37D10501EFD00DD6C6E /* SPQueryController.h */, @@ -1245,6 +1252,7 @@ B58DA7390FF8BB9E00FDDACD /* SSHQuestionDialog.xib */, 173C4360104455CA001F3A30 /* QueryFavoriteManager.xib */, 582A05A7108A5CCF0027D42B /* ProgressIndicatorLayer.xib */, + 174CE11C10AB80B5008F892B /* DatabaseProcessList.xib */, ); path = Interfaces; sourceTree = "<group>"; @@ -1661,6 +1669,7 @@ BC675A17107203BA00C5ACD4 /* ContentFilterManager.xib in Resources */, BC65C3B2107CE3EE003F7B02 /* ImportAccessory.xib in Resources */, 582A05A9108A5CCF0027D42B /* ProgressIndicatorLayer.xib in Resources */, + 174CE11E10AB80B5008F892B /* DatabaseProcessList.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1813,6 +1822,7 @@ 582A01E9107C0C170027D42B /* SPNotLoaded.m in Sources */, 173284EA1088FEDE0062E892 /* SPConstants.m in Sources */, 171312CE109D23C700FB465F /* SPTableTextFieldCell.m in Sources */, + 174CE14210AB9281008F892B /* SPProcessListController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1855,6 +1865,15 @@ name = QueryFavoriteManager.xib; sourceTree = "<group>"; }; + 174CE11C10AB80B5008F892B /* DatabaseProcessList.xib */ = { + isa = PBXVariantGroup; + children = ( + 174CE11D10AB80B5008F892B /* English */, + ); + name = DatabaseProcessList.xib; + path = ..; + sourceTree = "<group>"; + }; 1761FD460EF03A6F00331368 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( |