diff options
-rw-r--r-- | Interfaces/English.lproj/BundleEditor.xib | 1236 | ||||
-rw-r--r-- | Source/SPBundleEditorController.h | 7 | ||||
-rw-r--r-- | Source/SPBundleEditorController.m | 315 |
3 files changed, 817 insertions, 741 deletions
diff --git a/Interfaces/English.lproj/BundleEditor.xib b/Interfaces/English.lproj/BundleEditor.xib index dafcc959..fe0dfdbc 100644 --- a/Interfaces/English.lproj/BundleEditor.xib +++ b/Interfaces/English.lproj/BundleEditor.xib @@ -23,7 +23,7 @@ </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="737"/> + <integer value="962"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -60,7 +60,7 @@ <string key="NSWindowClass">NSWindow</string> <nil key="NSViewClass"/> <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> - <string key="NSWindowContentMinSize">{726, 444}</string> + <string key="NSWindowContentMinSize">{655, 444}</string> <object class="NSView" key="NSWindowView" id="391663674"> <reference key="NSNextResponder"/> <int key="NSvFlags">256</int> @@ -76,6 +76,156 @@ <int key="NSvFlags">272</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSScrollView" id="802985400"> + <reference key="NSNextResponder" ref="69213598"/> + <int key="NSvFlags">4370</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="34907435"> + <reference key="NSNextResponder" ref="802985400"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSOutlineView" id="472206854"> + <reference key="NSNextResponder" ref="34907435"/> + <int key="NSvFlags">4370</int> + <string key="NSFrameSize">{146, 420}</string> + <reference key="NSSuperview" ref="34907435"/> + <bool key="NSEnabled">YES</bool> + <object class="_NSCornerView" key="NSCornerView"> + <nil key="NSNextResponder"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{224, 0}, {16, 17}}</string> + </object> + <object class="NSMutableArray" key="NSTableColumns"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableColumn" id="685938371"> + <string key="NSIdentifier">bundleName</string> + <double key="NSWidth">143</double> + <double key="NSMinWidth">16</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents"/> + <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"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">headerTextColor</string> + <object class="NSColor" key="NSColor" id="760623067"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="205919728"> + <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="472206854"/> + <object class="NSColor" key="NSBackgroundColor" id="255000212"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlBackgroundColor</string> + <object class="NSColor" key="NSColor" id="752361275"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor" id="576381864"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <reference key="NSColor" ref="760623067"/> + </object> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="472206854"/> + </object> + </object> + <double key="NSIntercellSpacingWidth">3</double> + <double key="NSIntercellSpacingHeight">0.0</double> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">_sourceListBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MC44MzkyMTU2OTU5IDAuODY2NjY2Njc0NiAwLjg5ODAzOTIyMTgAA</bytes> + </object> + </object> + <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">20</double> + <int key="NSTvFlags">1262485504</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> + <string key="NSAutosaveName">SPBundleEditorOutlineView</string> + <int key="NSColumnAutoresizingStyle">5</int> + <int key="NSDraggingSourceMaskForLocal">15</int> + <int key="NSDraggingSourceMaskForNonLocal">0</int> + <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewSelectionHighlightStyle">1</int> + <int key="NSTableViewDraggingDestinationStyle">1</int> + <float key="NSOutlineViewIndentationPerLevelKey">14</float> + <bool key="NSOutlineViewAutosaveExpandedItemsKey">YES</bool> + </object> + </object> + <string key="NSFrame">{{1, 1}, {146, 420}}</string> + <reference key="NSSuperview" ref="802985400"/> + <reference key="NSNextKeyView" ref="472206854"/> + <reference key="NSDocView" ref="472206854"/> + <reference key="NSBGColor" ref="255000212"/> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="769403162"> + <reference key="NSNextResponder" ref="802985400"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{224, 17}, {15, 102}}</string> + <reference key="NSSuperview" ref="802985400"/> + <reference key="NSTarget" ref="802985400"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.99585062265396118</double> + </object> + <object class="NSScroller" id="124076675"> + <reference key="NSNextResponder" ref="802985400"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{1, 406}, {192, 15}}</string> + <reference key="NSSuperview" ref="802985400"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="802985400"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.98947370052337646</double> + </object> + </object> + <string key="NSFrame">{{0, 22}, {148, 422}}</string> + <reference key="NSSuperview" ref="69213598"/> + <reference key="NSNextKeyView" ref="34907435"/> + <int key="NSsFlags">562</int> + <reference key="NSVScroller" ref="769403162"/> + <reference key="NSHScroller" ref="124076675"/> + <reference key="NSContentView" ref="34907435"/> + <bytes key="NSScrollAmts">QSAAAEEgAABBoAAAQaAAAA</bytes> + </object> <object class="BWAnchoredButtonBar" id="78837987"> <reference key="NSNextResponder" ref="69213598"/> <int key="NSvFlags">290</int> @@ -210,7 +360,7 @@ <string key="NSAction">_popUpItemAction:</string> <reference key="NSTarget" ref="998795499"/> </object> - <object class="NSMenuItem" id="636076631"> + <object class="NSMenuItem" id="454224452"> <reference key="NSMenu" ref="973574710"/> <bool key="NSIsDisabled">YES</bool> <bool key="NSIsSeparator">YES</bool> @@ -222,7 +372,7 @@ <string key="NSAction">_popUpItemAction:</string> <reference key="NSTarget" ref="998795499"/> </object> - <object class="NSMenuItem" id="526418762"> + <object class="NSMenuItem" id="642604110"> <reference key="NSMenu" ref="973574710"/> <string key="NSTitle">Reload Bundles</string> <string key="NSKeyEquiv"/> @@ -249,180 +399,6 @@ <bool key="BWABBHandleIsRightAligned">NO</bool> <int key="BWABBSelectedIndex">0</int> </object> - <object class="NSScrollView" id="411849888"> - <reference key="NSNextResponder" ref="69213598"/> - <int key="NSvFlags">4370</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSClipView" id="731156573"> - <reference key="NSNextResponder" ref="411849888"/> - <int key="NSvFlags">2304</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSTableView" id="586526060"> - <reference key="NSNextResponder" ref="731156573"/> - <int key="NSvFlags">4370</int> - <string key="NSFrameSize">{143, 405}</string> - <reference key="NSSuperview" ref="731156573"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTableHeaderView" key="NSHeaderView" id="413965492"> - <reference key="NSNextResponder" ref="525273426"/> - <int key="NSvFlags">4352</int> - <string key="NSFrameSize">{143, 17}</string> - <reference key="NSSuperview" ref="525273426"/> - <reference key="NSTableView" ref="586526060"/> - </object> - <object class="_NSCornerView" key="NSCornerView" id="713749920"> - <reference key="NSNextResponder" ref="411849888"/> - <int key="NSvFlags">-2147483392</int> - <string key="NSFrame">{{198, 0}, {12, 17}}</string> - <reference key="NSSuperview" ref="411849888"/> - </object> - <object class="NSMutableArray" key="NSTableColumns"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSTableColumn" id="256079468"> - <string key="NSIdentifier">name</string> - <double key="NSWidth">140</double> - <double key="NSMinWidth">20</double> - <double key="NSMaxWidth">2000</double> - <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> - <int key="NSCellFlags2">2048</int> - <string key="NSContents">Bundles</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"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes> - </object> - <object class="NSColor" key="NSTextColor"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">headerTextColor</string> - <object class="NSColor" key="NSColor" id="760623067"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MAA</bytes> - </object> - </object> - </object> - <object class="NSTextFieldCell" key="NSDataCell" id="644916474"> - <int key="NSCellFlags">337772097</int> - <int key="NSCellFlags2">133120</int> - <string key="NSContents">Text Cell</string> - <reference key="NSSupport" ref="26"/> - <reference key="NSControlView" ref="586526060"/> - <object class="NSColor" key="NSBackgroundColor" id="255000212"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">controlBackgroundColor</string> - <object class="NSColor" key="NSColor" id="752361275"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> - </object> - </object> - <object class="NSColor" key="NSTextColor" id="576381864"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">controlTextColor</string> - <reference key="NSColor" ref="760623067"/> - </object> - </object> - <int key="NSResizingMask">3</int> - <bool key="NSIsResizeable">YES</bool> - <bool key="NSIsEditable">YES</bool> - <reference key="NSTableView" ref="586526060"/> - </object> - </object> - <double key="NSIntercellSpacingWidth">3</double> - <double key="NSIntercellSpacingHeight">2</double> - <object class="NSColor" key="NSBackgroundColor"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">_sourceListBackgroundColor</string> - <object class="NSColor" key="NSColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC44MzkyMTU2OTU5IDAuODY2NjY2Njc0NiAwLjg5ODAzOTIyMTgAA</bytes> - </object> - </object> - <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">16</double> - <int key="NSTvFlags">1262485504</int> - <reference key="NSDelegate"/> - <reference key="NSDataSource"/> - <string key="NSAutosaveName">SPQueryFavoriteManagerTable</string> - <int key="NSColumnAutoresizingStyle">5</int> - <int key="NSDraggingSourceMaskForLocal">15</int> - <int key="NSDraggingSourceMaskForNonLocal">0</int> - <bool key="NSAllowsTypeSelect">YES</bool> - <int key="NSTableViewSelectionHighlightStyle">1</int> - <int key="NSTableViewDraggingDestinationStyle">1</int> - </object> - </object> - <string key="NSFrame">{{0, 17}, {143, 405}}</string> - <reference key="NSSuperview" ref="411849888"/> - <reference key="NSNextKeyView" ref="586526060"/> - <reference key="NSDocView" ref="586526060"/> - <reference key="NSBGColor" ref="255000212"/> - <int key="NScvFlags">4</int> - </object> - <object class="NSScroller" id="100868916"> - <reference key="NSNextResponder" ref="411849888"/> - <int key="NSvFlags">-2147483392</int> - <string key="NSFrame">{{198, 17}, {11, 322}}</string> - <reference key="NSSuperview" ref="411849888"/> - <int key="NSsFlags">256</int> - <reference key="NSTarget" ref="411849888"/> - <string key="NSAction">_doScroller:</string> - <double key="NSPercent">0.94985252618789673</double> - </object> - <object class="NSScroller" id="948707975"> - <reference key="NSNextResponder" ref="411849888"/> - <int key="NSvFlags">-2147483392</int> - <string key="NSFrame">{{-100, -100}, {311, 15}}</string> - <reference key="NSSuperview" ref="411849888"/> - <int key="NSsFlags">1</int> - <reference key="NSTarget" ref="411849888"/> - <string key="NSAction">_doScroller:</string> - <double key="NSPercent">0.99532711505889893</double> - </object> - <object class="NSClipView" id="525273426"> - <reference key="NSNextResponder" ref="411849888"/> - <int key="NSvFlags">2304</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="413965492"/> - </object> - <string key="NSFrameSize">{143, 17}</string> - <reference key="NSSuperview" ref="411849888"/> - <reference key="NSNextKeyView" ref="413965492"/> - <reference key="NSDocView" ref="413965492"/> - <reference key="NSBGColor" ref="255000212"/> - <int key="NScvFlags">4</int> - </object> - <reference ref="713749920"/> - </object> - <string key="NSFrame">{{0, 22}, {143, 422}}</string> - <reference key="NSSuperview" ref="69213598"/> - <reference key="NSNextKeyView" ref="731156573"/> - <int key="NSsFlags">528</int> - <reference key="NSVScroller" ref="100868916"/> - <reference key="NSHScroller" ref="948707975"/> - <reference key="NSContentView" ref="731156573"/> - <reference key="NSHeaderClipView" ref="525273426"/> - <reference key="NSCornerView" ref="713749920"/> - <bytes key="NSScrollAmts">QSAAAEEgAABBkAAAQZAAAA</bytes> - </object> </object> <string key="NSFrameSize">{142, 444}</string> <reference key="NSSuperview" ref="358491109"/> @@ -1079,31 +1055,21 @@ <reference key="NSSuperview"/> </object> <string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string> - <string key="NSMinSize">{726, 466}</string> + <string key="NSMinSize">{655, 466}</string> <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSFrameAutosaveName">SPBundleEditor</string> </object> - <object class="NSArrayController" id="707140570"> + <object class="NSTreeController" id="645644012"> <object class="NSMutableArray" key="NSDeclaredKeys"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>command</string> - <string>name</string> - <string>category</string> - <string>tooltip</string> - <string>disabled</string> <string>bundleName</string> - <string>editor</string> - <string>datatable</string> - <string>inputfield</string> - <string>internalKeyEquivalent</string> </object> <bool key="NSEditable">YES</bool> <object class="_NSManagedProxy" key="_NSManagedProxy"/> <bool key="NSAvoidsEmptySelection">YES</bool> <bool key="NSPreservesSelection">YES</bool> <bool key="NSSelectsInsertedObjects">YES</bool> - <bool key="NSFilterRestrictsInsertion">YES</bool> - <bool key="NSClearsFilterPredicateOnInsertion">YES</bool> + <string key="NSTreeContentChildrenKey">children</string> </object> <object class="NSMenu" id="655873624"> <string key="NSTitle"/> @@ -1179,14 +1145,6 @@ <int key="connectionID">819</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">commandBundleArrayController</string> - <reference key="source" ref="1001"/> - <reference key="destination" ref="707140570"/> - </object> - <int key="connectionID">826</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">addCommandBundle:</string> <reference key="source" ref="1001"/> @@ -1212,30 +1170,6 @@ </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">dataSource</string> - <reference key="source" ref="586526060"/> - <reference key="destination" ref="1001"/> - </object> - <int key="connectionID">830</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">delegate</string> - <reference key="source" ref="586526060"/> - <reference key="destination" ref="1001"/> - </object> - <int key="connectionID">831</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">commandsTableView</string> - <reference key="source" ref="1001"/> - <reference key="destination" ref="586526060"/> - </object> - <int key="connectionID">832</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> <string key="label">delegate</string> <reference key="source" ref="209604501"/> <reference key="destination" ref="1001"/> @@ -1323,70 +1257,6 @@ <int key="connectionID">853</int> </object> <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: selection.name</string> - <reference key="source" ref="209604501"/> - <reference key="destination" ref="707140570"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="209604501"/> - <reference key="NSDestination" ref="707140570"/> - <string key="NSLabel">value: selection.name</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">selection.name</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">865</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: selection.category</string> - <reference key="source" ref="233794614"/> - <reference key="destination" ref="707140570"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="233794614"/> - <reference key="NSDestination" ref="707140570"/> - <string key="NSLabel">value: selection.category</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">selection.category</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">866</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: selection.tooltip</string> - <reference key="source" ref="70452502"/> - <reference key="destination" ref="707140570"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="70452502"/> - <reference key="NSDestination" ref="707140570"/> - <string key="NSLabel">value: selection.tooltip</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">selection.tooltip</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">867</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: arrangedObjects.bundleName</string> - <reference key="source" ref="256079468"/> - <reference key="destination" ref="707140570"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="256079468"/> - <reference key="NSDestination" ref="707140570"/> - <string key="NSLabel">value: arrangedObjects.bundleName</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">arrangedObjects.bundleName</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">874</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">saveAndCloseWindow:</string> <reference key="source" ref="1001"/> @@ -1443,14 +1313,6 @@ <int key="connectionID">906</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">menu</string> - <reference key="source" ref="586526060"/> - <reference key="destination" ref="655873624"/> - </object> - <int key="connectionID">907</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">removeCommandBundle:</string> <reference key="source" ref="1001"/> @@ -1475,22 +1337,6 @@ <int key="connectionID">916</int> </object> <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: selection.internalKeyEquivalent</string> - <reference key="source" ref="62695080"/> - <reference key="destination" ref="707140570"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="62695080"/> - <reference key="NSDestination" ref="707140570"/> - <string key="NSLabel">value: selection.internalKeyEquivalent</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">selection.internalKeyEquivalent</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">919</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">saveBundle:</string> <reference key="source" ref="1001"/> @@ -1507,22 +1353,6 @@ <int key="connectionID">925</int> </object> <object class="IBConnectionRecord"> - <object class="IBBindingConnection" key="connection"> - <string key="label">value: selection.command</string> - <reference key="source" ref="965862131"/> - <reference key="destination" ref="707140570"/> - <object class="NSNibBindingConnector" key="connector"> - <reference key="NSSource" ref="965862131"/> - <reference key="NSDestination" ref="707140570"/> - <string key="NSLabel">value: selection.command</string> - <string key="NSBinding">value</string> - <string key="NSKeyPath">selection.command</string> - <int key="NSNibBindingConnectorVersion">2</int> - </object> - </object> - <int key="connectionID">927</int> - </object> - <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> <string key="label">delegate</string> <reference key="source" ref="965862131"/> @@ -1541,14 +1371,6 @@ <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> <string key="label">nextKeyView</string> - <reference key="source" ref="586526060"/> - <reference key="destination" ref="209604501"/> - </object> - <int key="connectionID">940</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">nextKeyView</string> <reference key="source" ref="209604501"/> <reference key="destination" ref="904079305"/> </object> @@ -1643,14 +1465,6 @@ <int key="connectionID">953</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">nextKeyView</string> - <reference key="source" ref="972789208"/> - <reference key="destination" ref="586526060"/> - </object> - <int key="connectionID">954</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">scopeButtonChanged:</string> <reference key="source" ref="1001"/> @@ -1670,10 +1484,146 @@ <object class="IBActionConnection" key="connection"> <string key="label">reloadBundles:</string> <reference key="source" ref="1001"/> - <reference key="destination" ref="526418762"/> + <reference key="destination" ref="642604110"/> </object> <int key="connectionID">959</int> </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">commandsOutlineView</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="472206854"/> + </object> + <int key="connectionID">971</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">dataSource</string> + <reference key="source" ref="472206854"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">976</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="472206854"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">977</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">commandBundleTreeController</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="645644012"/> + </object> + <int key="connectionID">983</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.bundleName</string> + <reference key="source" ref="685938371"/> + <reference key="destination" ref="645644012"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="685938371"/> + <reference key="NSDestination" ref="645644012"/> + <string key="NSLabel">value: arrangedObjects.bundleName</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.bundleName</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">985</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.name</string> + <reference key="source" ref="209604501"/> + <reference key="destination" ref="645644012"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="209604501"/> + <reference key="NSDestination" ref="645644012"/> + <string key="NSLabel">value: selection.name</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.name</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">986</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.command</string> + <reference key="source" ref="965862131"/> + <reference key="destination" ref="645644012"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="965862131"/> + <reference key="NSDestination" ref="645644012"/> + <string key="NSLabel">value: selection.command</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.command</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">987</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.category</string> + <reference key="source" ref="233794614"/> + <reference key="destination" ref="645644012"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="233794614"/> + <reference key="NSDestination" ref="645644012"/> + <string key="NSLabel">value: selection.category</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.category</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">988</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.tooltip</string> + <reference key="source" ref="70452502"/> + <reference key="destination" ref="645644012"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="70452502"/> + <reference key="NSDestination" ref="645644012"/> + <string key="NSLabel">value: selection.tooltip</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.tooltip</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">989</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.internalKeyEquivalent</string> + <reference key="source" ref="62695080"/> + <reference key="destination" ref="645644012"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="62695080"/> + <reference key="NSDestination" ref="645644012"/> + <string key="NSLabel">value: selection.internalKeyEquivalent</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.internalKeyEquivalent</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">990</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">menu</string> + <reference key="source" ref="472206854"/> + <reference key="destination" ref="655873624"/> + </object> + <int key="connectionID">991</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -1736,25 +1686,13 @@ <reference key="object" ref="69213598"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="411849888"/> <reference ref="78837987"/> + <reference ref="802985400"/> </object> <reference key="parent" ref="358491109"/> <string key="objectName">Bundle Table View</string> </object> <object class="IBObjectRecord"> - <int key="objectID">729</int> - <reference key="object" ref="411849888"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="413965492"/> - <reference ref="586526060"/> - <reference ref="100868916"/> - <reference ref="948707975"/> - </object> - <reference key="parent" ref="69213598"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">730</int> <reference key="object" ref="78837987"/> <object class="NSMutableArray" key="children"> @@ -1820,8 +1758,8 @@ <reference ref="204686633"/> <reference ref="946837148"/> <reference ref="18029675"/> - <reference ref="636076631"/> - <reference ref="526418762"/> + <reference ref="454224452"/> + <reference ref="642604110"/> </object> <reference key="parent" ref="998795499"/> </object> @@ -1836,234 +1774,228 @@ <reference key="parent" ref="973574710"/> </object> <object class="IBObjectRecord"> - <int key="objectID">748</int> - <reference key="object" ref="413965492"/> - <reference key="parent" ref="411849888"/> + <int key="objectID">876</int> + <reference key="object" ref="946837148"/> + <reference key="parent" ref="973574710"/> </object> <object class="IBObjectRecord"> - <int key="objectID">749</int> - <reference key="object" ref="586526060"/> + <int key="objectID">899</int> + <reference key="object" ref="655873624"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="256079468"/> + <reference ref="863740680"/> + <reference ref="819763369"/> + <reference ref="845290196"/> + <reference ref="1055471998"/> </object> - <reference key="parent" ref="411849888"/> + <reference key="parent" ref="0"/> + <string key="objectName">Gear Menu</string> </object> <object class="IBObjectRecord"> - <int key="objectID">750</int> - <reference key="object" ref="100868916"/> - <reference key="parent" ref="411849888"/> + <int key="objectID">903</int> + <reference key="object" ref="863740680"/> + <reference key="parent" ref="655873624"/> </object> <object class="IBObjectRecord"> - <int key="objectID">751</int> - <reference key="object" ref="948707975"/> - <reference key="parent" ref="411849888"/> + <int key="objectID">904</int> + <reference key="object" ref="819763369"/> + <reference key="parent" ref="655873624"/> </object> <object class="IBObjectRecord"> - <int key="objectID">753</int> - <reference key="object" ref="256079468"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="644916474"/> - </object> - <reference key="parent" ref="586526060"/> + <int key="objectID">908</int> + <reference key="object" ref="845290196"/> + <reference key="parent" ref="655873624"/> </object> <object class="IBObjectRecord"> - <int key="objectID">754</int> - <reference key="object" ref="644916474"/> - <reference key="parent" ref="256079468"/> + <int key="objectID">909</int> + <reference key="object" ref="1055471998"/> + <reference key="parent" ref="655873624"/> </object> <object class="IBObjectRecord"> - <int key="objectID">686</int> - <reference key="object" ref="338542681"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="570587248"/> - <reference ref="994416682"/> - <reference ref="1032857532"/> - <reference ref="209604501"/> - <reference ref="411989314"/> - <reference ref="931989616"/> - <reference ref="1013555552"/> - <reference ref="233794614"/> - <reference ref="430446404"/> - <reference ref="70452502"/> - <reference ref="334638351"/> - <reference ref="117047836"/> - <reference ref="62695080"/> - <reference ref="679408795"/> - <reference ref="277233496"/> - <reference ref="552615839"/> - <reference ref="669651343"/> - <reference ref="904079305"/> - <reference ref="864339274"/> - <reference ref="179792134"/> - </object> - <reference key="parent" ref="358491109"/> - <string key="objectName">Bundle Content View</string> + <int key="objectID">920</int> + <reference key="object" ref="18029675"/> + <reference key="parent" ref="973574710"/> </object> <object class="IBObjectRecord"> - <int key="objectID">774</int> - <reference key="object" ref="570587248"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="299353121"/> - </object> - <reference key="parent" ref="338542681"/> - <string key="objectName">Pop Up Button (Output)</string> + <int key="objectID">957</int> + <reference key="object" ref="454224452"/> + <reference key="parent" ref="973574710"/> </object> <object class="IBObjectRecord"> - <int key="objectID">775</int> - <reference key="object" ref="299353121"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="47835238"/> - </object> - <reference key="parent" ref="570587248"/> + <int key="objectID">958</int> + <reference key="object" ref="642604110"/> + <reference key="parent" ref="973574710"/> </object> <object class="IBObjectRecord"> - <int key="objectID">776</int> - <reference key="object" ref="47835238"/> + <int key="objectID">982</int> + <reference key="object" ref="645644012"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">962</int> + <reference key="object" ref="802985400"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="472206854"/> + <reference ref="124076675"/> + <reference ref="769403162"/> </object> - <reference key="parent" ref="299353121"/> + <reference key="parent" ref="69213598"/> </object> <object class="IBObjectRecord"> - <int key="objectID">788</int> - <reference key="object" ref="994416682"/> + <int key="objectID">965</int> + <reference key="object" ref="472206854"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="849546250"/> + <reference ref="685938371"/> </object> - <reference key="parent" ref="338542681"/> + <reference key="parent" ref="802985400"/> </object> <object class="IBObjectRecord"> - <int key="objectID">789</int> - <reference key="object" ref="849546250"/> - <reference key="parent" ref="994416682"/> + <int key="objectID">964</int> + <reference key="object" ref="124076675"/> + <reference key="parent" ref="802985400"/> </object> <object class="IBObjectRecord"> - <int key="objectID">693</int> - <reference key="object" ref="1032857532"/> + <int key="objectID">963</int> + <reference key="object" ref="769403162"/> + <reference key="parent" ref="802985400"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">967</int> + <reference key="object" ref="685938371"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="434303900"/> + <reference ref="205919728"/> </object> - <reference key="parent" ref="338542681"/> + <reference key="parent" ref="472206854"/> </object> <object class="IBObjectRecord"> - <int key="objectID">700</int> - <reference key="object" ref="434303900"/> - <reference key="parent" ref="1032857532"/> + <int key="objectID">970</int> + <reference key="object" ref="205919728"/> + <reference key="parent" ref="685938371"/> </object> <object class="IBObjectRecord"> - <int key="objectID">695</int> - <reference key="object" ref="209604501"/> + <int key="objectID">686</int> + <reference key="object" ref="338542681"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="1025501303"/> + <reference ref="179792134"/> + <reference ref="864339274"/> + <reference ref="904079305"/> + <reference ref="669651343"/> + <reference ref="552615839"/> + <reference ref="277233496"/> + <reference ref="679408795"/> + <reference ref="62695080"/> + <reference ref="117047836"/> + <reference ref="334638351"/> + <reference ref="70452502"/> + <reference ref="430446404"/> + <reference ref="233794614"/> + <reference ref="1013555552"/> + <reference ref="931989616"/> + <reference ref="411989314"/> + <reference ref="209604501"/> + <reference ref="1032857532"/> + <reference ref="994416682"/> + <reference ref="570587248"/> </object> - <reference key="parent" ref="338542681"/> - <string key="objectName">Text Field (Menu Label)</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">696</int> - <reference key="object" ref="1025501303"/> - <reference key="parent" ref="209604501"/> + <reference key="parent" ref="358491109"/> + <string key="objectName">Bundle Content View</string> </object> <object class="IBObjectRecord"> - <int key="objectID">795</int> - <reference key="object" ref="411989314"/> + <int key="objectID">820</int> + <reference key="object" ref="179792134"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="679867674"/> + <reference ref="965862131"/> + <reference ref="724741922"/> + <reference ref="414961522"/> </object> <reference key="parent" ref="338542681"/> + <string key="objectName">Bordered Scroll View (Command Text View)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">796</int> - <reference key="object" ref="679867674"/> - <reference key="parent" ref="411989314"/> + <int key="objectID">823</int> + <reference key="object" ref="965862131"/> + <reference key="parent" ref="179792134"/> </object> <object class="IBObjectRecord"> - <int key="objectID">797</int> - <reference key="object" ref="931989616"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="370999655"/> - </object> - <reference key="parent" ref="338542681"/> + <int key="objectID">822</int> + <reference key="object" ref="724741922"/> + <reference key="parent" ref="179792134"/> </object> <object class="IBObjectRecord"> - <int key="objectID">798</int> - <reference key="object" ref="370999655"/> - <reference key="parent" ref="931989616"/> + <int key="objectID">821</int> + <reference key="object" ref="414961522"/> + <reference key="parent" ref="179792134"/> </object> <object class="IBObjectRecord"> - <int key="objectID">804</int> - <reference key="object" ref="62695080"/> + <int key="objectID">938</int> + <reference key="object" ref="864339274"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="670400760"/> + <reference ref="553916693"/> </object> <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">780</int> - <reference key="object" ref="1013555552"/> + <int key="objectID">939</int> + <reference key="object" ref="553916693"/> + <reference key="parent" ref="864339274"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">932</int> + <reference key="object" ref="904079305"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="4363123"/> + <reference ref="886363818"/> </object> <reference key="parent" ref="338542681"/> - <string key="objectName">Pop Up Button (Input Fallback)</string> + <string key="objectName">Pop Up Button (Input)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">781</int> - <reference key="object" ref="4363123"/> + <int key="objectID">933</int> + <reference key="object" ref="886363818"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="730171686"/> + <reference ref="416241867"/> </object> - <reference key="parent" ref="1013555552"/> + <reference key="parent" ref="904079305"/> </object> <object class="IBObjectRecord"> - <int key="objectID">782</int> - <reference key="object" ref="730171686"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="parent" ref="4363123"/> + <int key="objectID">934</int> + <reference key="object" ref="416241867"/> + <reference key="parent" ref="886363818"/> </object> <object class="IBObjectRecord"> - <int key="objectID">691</int> - <reference key="object" ref="233794614"/> + <int key="objectID">936</int> + <reference key="object" ref="669651343"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="748268806"/> + <reference ref="44795332"/> </object> <reference key="parent" ref="338542681"/> - <string key="objectName">Text Field (Menu Category)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">702</int> - <reference key="object" ref="748268806"/> - <reference key="parent" ref="233794614"/> + <int key="objectID">937</int> + <reference key="object" ref="44795332"/> + <reference key="parent" ref="669651343"/> </object> <object class="IBObjectRecord"> - <int key="objectID">692</int> - <reference key="object" ref="430446404"/> + <int key="objectID">859</int> + <reference key="object" ref="552615839"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="622343774"/> + <reference ref="1051503991"/> </object> <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">701</int> - <reference key="object" ref="622343774"/> - <reference key="parent" ref="430446404"/> + <int key="objectID">860</int> + <reference key="object" ref="1051503991"/> + <reference key="parent" ref="552615839"/> </object> <object class="IBObjectRecord"> <int key="objectID">690</int> @@ -2080,33 +2012,32 @@ <reference key="parent" ref="277233496"/> </object> <object class="IBObjectRecord"> - <int key="objectID">799</int> - <reference key="object" ref="70452502"/> + <int key="objectID">817</int> + <reference key="object" ref="679408795"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="43525095"/> + <reference ref="697434956"/> </object> <reference key="parent" ref="338542681"/> - <string key="objectName">Text Field (Tooltip)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">802</int> - <reference key="object" ref="43525095"/> - <reference key="parent" ref="70452502"/> + <int key="objectID">818</int> + <reference key="object" ref="697434956"/> + <reference key="parent" ref="679408795"/> </object> <object class="IBObjectRecord"> - <int key="objectID">800</int> - <reference key="object" ref="334638351"/> + <int key="objectID">804</int> + <reference key="object" ref="62695080"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="627233937"/> + <reference ref="670400760"/> </object> <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">801</int> - <reference key="object" ref="627233937"/> - <reference key="parent" ref="334638351"/> + <int key="objectID">824</int> + <reference key="object" ref="670400760"/> + <reference key="parent" ref="62695080"/> </object> <object class="IBObjectRecord"> <int key="objectID">768</int> @@ -2130,181 +2061,184 @@ <object class="IBObjectRecord"> <int key="objectID">770</int> <reference key="object" ref="378188111"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> <reference key="parent" ref="131002945"/> </object> <object class="IBObjectRecord"> - <int key="objectID">817</int> - <reference key="object" ref="679408795"/> + <int key="objectID">800</int> + <reference key="object" ref="334638351"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="697434956"/> + <reference ref="627233937"/> </object> <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">818</int> - <reference key="object" ref="697434956"/> - <reference key="parent" ref="679408795"/> + <int key="objectID">801</int> + <reference key="object" ref="627233937"/> + <reference key="parent" ref="334638351"/> </object> <object class="IBObjectRecord"> - <int key="objectID">820</int> - <reference key="object" ref="179792134"/> + <int key="objectID">799</int> + <reference key="object" ref="70452502"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="414961522"/> - <reference ref="724741922"/> - <reference ref="965862131"/> + <reference ref="43525095"/> </object> <reference key="parent" ref="338542681"/> - <string key="objectName">Bordered Scroll View (Command Text View)</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">821</int> - <reference key="object" ref="414961522"/> - <reference key="parent" ref="179792134"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">822</int> - <reference key="object" ref="724741922"/> - <reference key="parent" ref="179792134"/> + <string key="objectName">Text Field (Tooltip)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">823</int> - <reference key="object" ref="965862131"/> - <reference key="parent" ref="179792134"/> + <int key="objectID">802</int> + <reference key="object" ref="43525095"/> + <reference key="parent" ref="70452502"/> </object> <object class="IBObjectRecord"> - <int key="objectID">824</int> - <reference key="object" ref="670400760"/> - <reference key="parent" ref="62695080"/> + <int key="objectID">692</int> + <reference key="object" ref="430446404"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="622343774"/> + </object> + <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">825</int> - <reference key="object" ref="707140570"/> - <reference key="parent" ref="0"/> - <string key="objectName">Bundle Commands</string> + <int key="objectID">701</int> + <reference key="object" ref="622343774"/> + <reference key="parent" ref="430446404"/> </object> <object class="IBObjectRecord"> - <int key="objectID">859</int> - <reference key="object" ref="552615839"/> + <int key="objectID">691</int> + <reference key="object" ref="233794614"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="1051503991"/> + <reference ref="748268806"/> </object> <reference key="parent" ref="338542681"/> + <string key="objectName">Text Field (Menu Category)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">860</int> - <reference key="object" ref="1051503991"/> - <reference key="parent" ref="552615839"/> + <int key="objectID">702</int> + <reference key="object" ref="748268806"/> + <reference key="parent" ref="233794614"/> </object> <object class="IBObjectRecord"> - <int key="objectID">876</int> - <reference key="object" ref="946837148"/> - <reference key="parent" ref="973574710"/> + <int key="objectID">780</int> + <reference key="object" ref="1013555552"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="4363123"/> + </object> + <reference key="parent" ref="338542681"/> + <string key="objectName">Pop Up Button (Input Fallback)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">899</int> - <reference key="object" ref="655873624"/> + <int key="objectID">781</int> + <reference key="object" ref="4363123"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="863740680"/> - <reference ref="819763369"/> - <reference ref="845290196"/> - <reference ref="1055471998"/> + <reference ref="730171686"/> </object> - <reference key="parent" ref="0"/> - <string key="objectName">Gear Menu</string> + <reference key="parent" ref="1013555552"/> </object> <object class="IBObjectRecord"> - <int key="objectID">903</int> - <reference key="object" ref="863740680"/> - <reference key="parent" ref="655873624"/> + <int key="objectID">782</int> + <reference key="object" ref="730171686"/> + <reference key="parent" ref="4363123"/> </object> <object class="IBObjectRecord"> - <int key="objectID">904</int> - <reference key="object" ref="819763369"/> - <reference key="parent" ref="655873624"/> + <int key="objectID">797</int> + <reference key="object" ref="931989616"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="370999655"/> + </object> + <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">908</int> - <reference key="object" ref="845290196"/> - <reference key="parent" ref="655873624"/> + <int key="objectID">798</int> + <reference key="object" ref="370999655"/> + <reference key="parent" ref="931989616"/> </object> <object class="IBObjectRecord"> - <int key="objectID">909</int> - <reference key="object" ref="1055471998"/> - <reference key="parent" ref="655873624"/> + <int key="objectID">795</int> + <reference key="object" ref="411989314"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="679867674"/> + </object> + <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">920</int> - <reference key="object" ref="18029675"/> - <reference key="parent" ref="973574710"/> + <int key="objectID">796</int> + <reference key="object" ref="679867674"/> + <reference key="parent" ref="411989314"/> </object> <object class="IBObjectRecord"> - <int key="objectID">932</int> - <reference key="object" ref="904079305"/> + <int key="objectID">695</int> + <reference key="object" ref="209604501"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="886363818"/> + <reference ref="1025501303"/> </object> <reference key="parent" ref="338542681"/> - <string key="objectName">Pop Up Button (Input)</string> + <string key="objectName">Text Field (Menu Label)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">933</int> - <reference key="object" ref="886363818"/> + <int key="objectID">696</int> + <reference key="object" ref="1025501303"/> + <reference key="parent" ref="209604501"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">693</int> + <reference key="object" ref="1032857532"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="416241867"/> + <reference ref="434303900"/> </object> - <reference key="parent" ref="904079305"/> + <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">934</int> - <reference key="object" ref="416241867"/> - <reference key="parent" ref="886363818"/> + <int key="objectID">700</int> + <reference key="object" ref="434303900"/> + <reference key="parent" ref="1032857532"/> </object> <object class="IBObjectRecord"> - <int key="objectID">936</int> - <reference key="object" ref="669651343"/> + <int key="objectID">788</int> + <reference key="object" ref="994416682"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="44795332"/> + <reference ref="849546250"/> </object> <reference key="parent" ref="338542681"/> </object> <object class="IBObjectRecord"> - <int key="objectID">937</int> - <reference key="object" ref="44795332"/> - <reference key="parent" ref="669651343"/> + <int key="objectID">789</int> + <reference key="object" ref="849546250"/> + <reference key="parent" ref="994416682"/> </object> <object class="IBObjectRecord"> - <int key="objectID">938</int> - <reference key="object" ref="864339274"/> + <int key="objectID">774</int> + <reference key="object" ref="570587248"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="553916693"/> + <reference ref="299353121"/> </object> <reference key="parent" ref="338542681"/> + <string key="objectName">Pop Up Button (Output)</string> </object> <object class="IBObjectRecord"> - <int key="objectID">939</int> - <reference key="object" ref="553916693"/> - <reference key="parent" ref="864339274"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">957</int> - <reference key="object" ref="636076631"/> - <reference key="parent" ref="973574710"/> + <int key="objectID">775</int> + <reference key="object" ref="299353121"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="47835238"/> + </object> + <reference key="parent" ref="570587248"/> </object> <object class="IBObjectRecord"> - <int key="objectID">958</int> - <reference key="object" ref="526418762"/> - <reference key="parent" ref="973574710"/> + <int key="objectID">776</int> + <reference key="object" ref="47835238"/> + <reference key="parent" ref="299353121"/> </object> </object> </object> @@ -2336,8 +2270,6 @@ <string>701.IBPluginDependency</string> <string>702.IBPluginDependency</string> <string>703.IBPluginDependency</string> - <string>729.IBPluginDependency</string> - <string>729.ImportedFromIB2</string> <string>730.IBPluginDependency</string> <string>731.IBAttributePlaceholdersKey</string> <string>731.IBPluginDependency</string> @@ -2352,19 +2284,6 @@ <string>737.IBPluginDependency</string> <string>738.IBPluginDependency</string> <string>741.IBPluginDependency</string> - <string>748.IBPluginDependency</string> - <string>749.CustomClassName</string> - <string>749.IBPluginDependency</string> - <string>749.ImportedFromIB2</string> - <string>750.IBPluginDependency</string> - <string>750.IBShouldRemoveOnLegacySave</string> - <string>751.IBPluginDependency</string> - <string>751.IBShouldRemoveOnLegacySave</string> - <string>753.IBPluginDependency</string> - <string>753.ImportedFromIB2</string> - <string>754.CustomClassName</string> - <string>754.IBPluginDependency</string> - <string>754.ImportedFromIB2</string> <string>768.IBAttributePlaceholdersKey</string> <string>768.IBPluginDependency</string> <string>769.IBPluginDependency</string> @@ -2403,7 +2322,6 @@ <string>822.IBPluginDependency</string> <string>823.CustomClassName</string> <string>823.IBPluginDependency</string> - <string>825.IBPluginDependency</string> <string>859.IBAttributePlaceholdersKey</string> <string>859.IBPluginDependency</string> <string>860.IBPluginDependency</string> @@ -2426,16 +2344,23 @@ <string>939.IBPluginDependency</string> <string>957.IBPluginDependency</string> <string>958.IBPluginDependency</string> + <string>962.IBPluginDependency</string> + <string>963.IBPluginDependency</string> + <string>964.IBPluginDependency</string> + <string>965.IBPluginDependency</string> + <string>967.IBPluginDependency</string> + <string>970.IBPluginDependency</string> + <string>982.IBPluginDependency</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{295, 369}, {655, 444}}</string> + <string>{{226, 478}, {655, 444}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{295, 369}, {655, 444}}</string> + <string>{{226, 478}, {655, 444}}</string> <boolean value="NO"/> <boolean value="YES"/> - <string>{726, 444}</string> + <string>{655, 444}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.brandonwalkin.BWToolkit</string> <string>com.brandonwalkin.BWToolkit</string> @@ -2474,8 +2399,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> - <integer value="1"/> <string>com.brandonwalkin.BWToolkit</string> <object class="NSMutableDictionary"> <string key="NS.key.0">ToolTip</string> @@ -2507,23 +2430,10 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.brandonwalkin.BWToolkit</string> - <string>{{345, 294}, {204, 98}}</string> + <string>{{239, 290}, {204, 98}}</string> <string>com.brandonwalkin.BWToolkit</string> <string>com.brandonwalkin.BWToolkit</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>SPTableView</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>ImageAndTextCell</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <integer value="1"/> <object class="NSMutableDictionary"> <string key="NS.key.0">ToolTip</string> <object class="IBToolTipAttribute" key="NS.object.0"> @@ -2617,7 +2527,6 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>SPBundleCommandTextView</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <object class="NSMutableDictionary"> <string key="NS.key.0">ToolTip</string> <object class="IBToolTipAttribute" key="NS.object.0"> @@ -2654,6 +2563,13 @@ <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> </object> </object> <object class="NSMutableDictionary" key="unlocalizedProperties"> @@ -2672,7 +2588,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">959</int> + <int key="maxID">991</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -2686,14 +2602,6 @@ </object> </object> <object class="IBPartialClassDescription"> - <string key="className">ImageAndTextCell</string> - <string key="superclassName">NSTextFieldCell</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBUserSource</string> - <string key="minorKey"/> - </object> - </object> - <object class="IBPartialClassDescription"> <string key="className">NSApplication</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> @@ -2795,14 +2703,6 @@ <string key="minorKey">Source/SPWindowAdditions.h</string> </object> </object> - <object class="IBPartialClassDescription"> - <string key="className">SPTableView</string> - <string key="superclassName">NSTableView</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBUserSource</string> - <string key="minorKey"/> - </object> - </object> </object> <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -2936,7 +2836,9 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>categoryTextField</string> <string>commandBundleArrayController</string> + <string>commandBundleTreeController</string> <string>commandTextView</string> + <string>commandsOutlineView</string> <string>commandsTableView</string> <string>duplicateMenuItem</string> <string>fallbackLabelField</string> @@ -2954,6 +2856,8 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>NSTextField</string> <string>NSArrayController</string> + <string>NSTreeController</string> + <string>id</string> <string>id</string> <string>NSTableView</string> <string>NSMenuItem</string> @@ -2975,7 +2879,9 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>categoryTextField</string> <string>commandBundleArrayController</string> + <string>commandBundleTreeController</string> <string>commandTextView</string> + <string>commandsOutlineView</string> <string>commandsTableView</string> <string>duplicateMenuItem</string> <string>fallbackLabelField</string> @@ -3000,10 +2906,18 @@ <string key="candidateClassName">NSArrayController</string> </object> <object class="IBToOneOutletInfo"> + <string key="name">commandBundleTreeController</string> + <string key="candidateClassName">NSTreeController</string> + </object> + <object class="IBToOneOutletInfo"> <string key="name">commandTextView</string> <string key="candidateClassName">id</string> </object> <object class="IBToOneOutletInfo"> + <string key="name">commandsOutlineView</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> <string key="name">commandsTableView</string> <string key="candidateClassName">NSTableView</string> </object> diff --git a/Source/SPBundleEditorController.h b/Source/SPBundleEditorController.h index a6566e07..b5001e0c 100644 --- a/Source/SPBundleEditorController.h +++ b/Source/SPBundleEditorController.h @@ -25,6 +25,7 @@ #import <Cocoa/Cocoa.h> #import <ShortcutRecorder/ShortcutRecorder.h> #import "SPBundleCommandTextView.h" +#import "SPOutlineView.h" @class SRRecorderControl; @@ -32,6 +33,7 @@ IBOutlet id commandTextView; IBOutlet NSTableView* commandsTableView; + IBOutlet id commandsOutlineView; IBOutlet NSTextField* nameTextField; IBOutlet NSTextField* tootlipTextField; IBOutlet NSTextField* categoryTextField; @@ -45,9 +47,10 @@ IBOutlet NSMenuItem *revealInFinderMenuItem; IBOutlet SRRecorderControl *keyEquivalentField; - IBOutlet NSArrayController *commandBundleArrayController; + IBOutlet NSTreeController *commandBundleTreeController; NSMutableArray *commandBundleArray; - + NSMutableDictionary *commandBundleTree; + NSString *bundlePath; NSString *draggedFilePath; NSString *oldBundleName; diff --git a/Source/SPBundleEditorController.m b/Source/SPBundleEditorController.m index 11c8ad87..b137de13 100644 --- a/Source/SPBundleEditorController.m +++ b/Source/SPBundleEditorController.m @@ -23,6 +23,7 @@ // More info at <http://code.google.com/p/sequel-pro/> #import "SPBundleEditorController.h" +#import "SPArrayAdditions.h" @interface SPBundleEditorController (PrivateAPI) @@ -74,6 +75,7 @@ [inputFallbackInputFieldScopeArray release]; if(commandBundleArray) [commandBundleArray release], commandBundleArray = nil; + if(commandBundleTree) [commandBundleTree release], commandBundleTree = nil; if(bundlePath) [bundlePath release], bundlePath = nil; [super dealloc]; @@ -84,6 +86,13 @@ { commandBundleArray = [[NSMutableArray alloc] initWithCapacity:1]; + commandBundleTree = [[NSMutableDictionary alloc] initWithCapacity:1]; + + [commandBundleTree setObject:[NSMutableArray array] forKey:@"children"]; + [commandBundleTree setObject:@"Bundles" forKey:@"bundleName"]; + [[commandBundleTree objectForKey:@"children"] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableArray array], @"children", NSLocalizedString(@"Input Field", @"input field scope menu label"), @"bundleName", nil]]; + [[commandBundleTree objectForKey:@"children"] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableArray array], @"children", NSLocalizedString(@"Data Table", @"data table scope menu label"), @"bundleName", nil]]; + [[commandBundleTree objectForKey:@"children"] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableArray array], @"children", NSLocalizedString(@"General", @"general scope menu label"), @"bundleName", nil]]; // Init all needed menus inputGeneralScopePopUpMenu = [[NSMenu alloc] initWithTitle:@""]; @@ -224,7 +233,7 @@ - (IBAction)inputPopupButtonChanged:(id)sender { - id currentDict = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + id currentDict = [[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject]; NSMenu* senderMenu = [sender menu]; @@ -248,7 +257,7 @@ - (IBAction)inputFallbackPopupButtonChanged:(id)sender { - id currentDict = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + id currentDict = [[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject]; NSMenu* senderMenu = [sender menu]; @@ -264,7 +273,7 @@ - (IBAction)outputPopupButtonChanged:(id)sender { - id currentDict = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + id currentDict = [[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject]; NSMenu* senderMenu = [sender menu]; @@ -284,7 +293,7 @@ - (IBAction)scopeButtonChanged:(id)sender { - id currentDict = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + id currentDict = [[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject]; NSInteger selectedTag = [sender tag]; @@ -308,7 +317,7 @@ - (IBAction)duplicateCommandBundle:(id)sender { - if ([commandsTableView numberOfSelectedRows] == 1) + if ([commandsOutlineView numberOfSelectedRows] == 1) [self addCommandBundle:self]; else NSBeep(); @@ -324,7 +333,7 @@ // Duplicate a selected Bundle if sender == self if (sender == self) { - NSDictionary *currentDict = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + NSDictionary *currentDict = [[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject]; bundle = [NSMutableDictionary dictionaryWithDictionary:currentDict]; NSString *bundleFileName = [bundle objectForKey:@"bundleName"]; @@ -350,7 +359,7 @@ } if(!copyingWasSuccessful) { - [commandsTableView reloadData]; + [commandsOutlineView reloadData]; NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Error", @"error") defaultButton:NSLocalizedString(@"OK", @"OK button") @@ -372,8 +381,8 @@ bundle = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"New Bundle", @"New Name", @"", SPBundleScopeGeneral, nil] forKeys:[NSArray arrayWithObjects:@"bundleName", SPBundleFileNameKey, SPBundleFileCommandKey, SPBundleFileScopeKey, nil]]; } - if ([commandsTableView numberOfSelectedRows] > 0) { - insertIndex = [[commandsTableView selectedRowIndexes] lastIndex]+1; + if ([commandsOutlineView numberOfSelectedRows] > 0) { + insertIndex = [[commandsOutlineView selectedRowIndexes] lastIndex]+1; [commandBundleArray insertObject:bundle atIndex:insertIndex]; } else { @@ -381,18 +390,18 @@ insertIndex = [commandBundleArray count] - 1; } - [commandBundleArrayController rearrangeObjects]; - [commandsTableView reloadData]; + [commandBundleTreeController rearrangeObjects]; + [commandsOutlineView reloadData]; - [commandsTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:insertIndex] byExtendingSelection:NO]; + [commandsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:insertIndex] byExtendingSelection:NO]; - [commandsTableView scrollRowToVisible:[commandsTableView selectedRow]]; + [commandsOutlineView scrollRowToVisible:[commandsOutlineView selectedRow]]; - [removeButton setEnabled:([commandsTableView numberOfSelectedRows] > 0)]; + [removeButton setEnabled:([[commandBundleTreeController selectedObjects] count] > 0)]; [self _updateInputPopupButton]; - [[self window] makeFirstResponder:commandsTableView]; + [[self window] makeFirstResponder:commandsOutlineView]; } @@ -420,10 +429,10 @@ - (IBAction)revealCommandBundleInFinder:(id)sender { - if([commandsTableView numberOfSelectedRows] != 1) return; + if([commandsOutlineView numberOfSelectedRows] != 1) return; [[NSWorkspace sharedWorkspace] selectFile:[NSString stringWithFormat:@"%@/%@.%@/%@", - bundlePath, [[commandBundleArray objectAtIndex:[commandsTableView selectedRow]] objectForKey:@"bundleName"], SPUserBundleFileExtension, SPBundleFileName] inFileViewerRootedAtPath:nil]; + bundlePath, [[[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject] objectForKey:@"bundleName"], SPUserBundleFileExtension, SPBundleFileName] inFileViewerRootedAtPath:nil]; } @@ -438,7 +447,7 @@ [panel setCanSelectHiddenExtension:YES]; [panel setCanCreateDirectories:YES]; - [panel beginSheetForDirectory:nil file:[[commandBundleArray objectAtIndex:[commandsTableView selectedRow]] objectForKey:@"bundleName"] modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:@"saveBundle"]; + [panel beginSheetForDirectory:nil file:[[[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject] objectForKey:@"bundleName"] modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:@"saveBundle"]; } - (IBAction)showHelp:(id)sender @@ -467,7 +476,10 @@ // Re-init commandBundleArray [commandBundleArray removeAllObjects]; - [commandsTableView reloadData]; + [[[commandBundleTree objectForKey:@"children"] objectAtIndex:0] setObject:[NSMutableArray array] forKey:@"children"]; + [[[commandBundleTree objectForKey:@"children"] objectAtIndex:1] setObject:[NSMutableArray array] forKey:@"children"]; + [[[commandBundleTree objectForKey:@"children"] objectAtIndex:2] setObject:[NSMutableArray array] forKey:@"children"]; + [commandsOutlineView reloadData]; // Load all installed bundle items if(bundlePath) { @@ -499,7 +511,72 @@ [bundleCommand setObject:[bundle stringByDeletingPathExtension] forKey:@"bundleName"]; [commandBundleArray addObject:bundleCommand]; - + if([[cmdData objectForKey:SPBundleFileScopeKey] isEqualToString:SPBundleScopeInputField]) { + if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length]) { + BOOL catExists = NO; + id children = [[[commandBundleTree objectForKey:@"children"] objectAtIndex:0] objectForKey:@"children"]; + for(id child in children) { + if([child isKindOfClass:[NSDictionary class]] && [child objectForKey:@"children"] && [[child objectForKey:@"bundleName"] isEqualToString:[cmdData objectForKey:SPBundleFileCategoryKey]]) { + [[child objectForKey:@"children"] addObject:bundleCommand]; + catExists = YES; + break; + } + } + if(!catExists) { + NSMutableDictionary *aDict = [NSMutableDictionary dictionary]; + [aDict setObject:[cmdData objectForKey:SPBundleFileCategoryKey] forKey:@"bundleName"]; + [aDict setObject:[NSMutableArray array] forKey:@"children"]; + [[aDict objectForKey:@"children"] addObject:bundleCommand]; + [[[[commandBundleTree objectForKey:@"children"] objectAtIndex:0] objectForKey:@"children"] addObject:aDict]; + } + } else { + [[[[commandBundleTree objectForKey:@"children"] objectAtIndex:0] objectForKey:@"children"] addObject:bundleCommand]; + } + } + else if([[cmdData objectForKey:SPBundleFileScopeKey] isEqualToString:SPBundleScopeDataTable]) { + if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length]) { + BOOL catExists = NO; + id children = [[[commandBundleTree objectForKey:@"children"] objectAtIndex:1] objectForKey:@"children"]; + for(id child in children) { + if([child isKindOfClass:[NSDictionary class]] && [child objectForKey:@"children"] && [[child objectForKey:@"bundleName"] isEqualToString:[cmdData objectForKey:SPBundleFileCategoryKey]]) { + [[child objectForKey:@"children"] addObject:bundleCommand]; + catExists = YES; + break; + } + } + if(!catExists) { + NSMutableDictionary *aDict = [NSMutableDictionary dictionary]; + [aDict setObject:[cmdData objectForKey:SPBundleFileCategoryKey] forKey:@"bundleName"]; + [aDict setObject:[NSMutableArray array] forKey:@"children"]; + [[aDict objectForKey:@"children"] addObject:bundleCommand]; + [[[[commandBundleTree objectForKey:@"children"] objectAtIndex:1] objectForKey:@"children"] addObject:aDict]; + } + } else { + [[[[commandBundleTree objectForKey:@"children"] objectAtIndex:1] objectForKey:@"children"] addObject:bundleCommand]; + } + } + else if([[cmdData objectForKey:SPBundleFileScopeKey] isEqualToString:SPBundleScopeGeneral]) { + if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length]) { + BOOL catExists = NO; + id children = [[[commandBundleTree objectForKey:@"children"] objectAtIndex:2] objectForKey:@"children"]; + for(id child in children) { + if([child isKindOfClass:[NSDictionary class]] && [child objectForKey:@"children"] && [[child objectForKey:@"bundleName"] isEqualToString:[cmdData objectForKey:SPBundleFileCategoryKey]]) { + [[child objectForKey:@"children"] addObject:bundleCommand]; + catExists = YES; + break; + } + } + if(!catExists) { + NSMutableDictionary *aDict = [NSMutableDictionary dictionary]; + [aDict setObject:[cmdData objectForKey:SPBundleFileCategoryKey] forKey:@"bundleName"]; + [aDict setObject:[NSMutableArray array] forKey:@"children"]; + [[aDict objectForKey:@"children"] addObject:bundleCommand]; + [[[[commandBundleTree objectForKey:@"children"] objectAtIndex:2] objectForKey:@"children"] addObject:aDict]; + } + } else { + [[[[commandBundleTree objectForKey:@"children"] objectAtIndex:2] objectForKey:@"children"] addObject:bundleCommand]; + } + } } if (cmdData) [cmdData release]; } @@ -507,11 +584,12 @@ } } - [removeButton setEnabled:([commandsTableView numberOfSelectedRows] > 0)]; + [removeButton setEnabled:([[commandBundleTreeController selectedObjects] count] > 0)]; - [commandBundleArrayController setContent:commandBundleArray]; - [commandBundleArrayController rearrangeObjects]; - [commandsTableView reloadData]; + [commandBundleTreeController setContent:commandBundleTree]; + [commandBundleTreeController rearrangeObjects]; + [commandsOutlineView reloadData]; + [commandsOutlineView expandItem:nil expandChildren:YES]; } @@ -519,7 +597,7 @@ { // Commit all pending edits - if([commandBundleArrayController commitEditing]) { + if([commandBundleTreeController commitEditing]) { // Make the bundleNames unique since they represent folder names NSMutableDictionary *allNames = [NSMutableDictionary dictionary]; @@ -617,15 +695,14 @@ if([contextInfo isEqualToString:@"removeSelectedBundles"]) { if (returnCode == NSAlertDefaultReturn) { - NSIndexSet *indexes = [commandsTableView selectedRowIndexes]; - - // get last index - NSUInteger currentIndex = [indexes lastIndex]; + + NSArray *selObjects = [commandBundleTreeController selectedObjects]; + NSArray *selIndexPaths = [commandBundleTreeController selectionIndexPaths]; - while (currentIndex != NSNotFound) { + for(id obj in selObjects) { // Move already installed Bundles to Trash - NSString *bundleName = [[commandBundleArray objectAtIndex:currentIndex] objectForKey:@"bundleName"]; + NSString *bundleName = [obj objectForKey:@"bundleName"]; NSString *thePath = [NSString stringWithFormat:@"%@/%@.%@", bundlePath, bundleName, SPUserBundleFileExtension]; if([[NSFileManager defaultManager] fileExistsAtPath:thePath isDirectory:nil]) { NSError *error = nil; @@ -647,23 +724,19 @@ break; } } - [commandBundleArray removeObjectAtIndex:currentIndex]; - // get next index (beginning from the end) - currentIndex = [indexes indexLessThanIndex:currentIndex]; } - [commandBundleArrayController rearrangeObjects]; - [commandsTableView reloadData]; + [self reloadBundles:self]; // Set focus to table view to avoid an unstable state - [[self window] makeFirstResponder:commandsTableView]; + [[self window] makeFirstResponder:commandsOutlineView]; - [removeButton setEnabled:([commandsTableView numberOfSelectedRows] > 0)]; + [removeButton setEnabled:([[commandBundleTreeController selectedObjects] count] > 0)]; } } else if([contextInfo isEqualToString:@"saveBundle"]) { if (returnCode == NSOKButton) { - id aBundle = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + id aBundle = [commandBundleArray objectAtIndex:[commandsOutlineView selectedRow]]; NSString *bundleFileName = [aBundle objectForKey:@"bundleName"]; NSString *possibleExisitingBundleFilePath = [NSString stringWithFormat:@"%@/%@.%@", bundlePath, bundleFileName, SPUserBundleFileExtension]; @@ -702,9 +775,9 @@ { if(isTableCellEditing) { - [commandsTableView abortEditing]; + [commandsOutlineView abortEditing]; isTableCellEditing = NO; - [[self window] makeFirstResponder:commandsTableView]; + [[self window] makeFirstResponder:commandsOutlineView]; return NO; } return YES; @@ -715,7 +788,10 @@ { // Clear commandBundleArray if window will close to save memory [commandBundleArray removeAllObjects]; - [commandsTableView reloadData]; + [[[commandBundleTree objectForKey:@"children"] objectAtIndex:0] setObject:[NSMutableArray array] forKey:@"children"]; + [[[commandBundleTree objectForKey:@"children"] objectAtIndex:1] setObject:[NSMutableArray array] forKey:@"children"]; + [[[commandBundleTree objectForKey:@"children"] objectAtIndex:2] setObject:[NSMutableArray array] forKey:@"children"]; + [commandsOutlineView reloadData]; // Remove temporary drag file if any if(draggedFilePath) { @@ -734,7 +810,7 @@ - (void)shortcutRecorder:(SRRecorderControl *)aRecorder keyComboDidChange:(KeyCombo)newKeyCombo { - if([commandsTableView selectedRow] < 0 || [commandsTableView selectedRow] > [commandBundleArray count]) return; + if([commandsOutlineView selectedRow] < 0 || [commandsOutlineView selectedRow] > [commandBundleArray count]) return; // Transform KeyCombo struct to KeyBinding.dict format for NSMenuItems NSMutableString *keyEq = [NSMutableString string]; @@ -753,65 +829,148 @@ [keyEq appendString:@"@"]; [keyEq appendString:theChar]; } - [[commandBundleArray objectAtIndex:[commandsTableView selectedRow]] setObject:keyEq forKey:SPBundleFileKeyEquivalentKey]; + [[[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject] setObject:keyEq forKey:SPBundleFileKeyEquivalentKey]; } #pragma mark - -#pragma mark TableView data source and delegate +#pragma mark outline delegates -/** - * Returns the number of query commandBundleArray. - */ -- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView + +- (BOOL)outlineView:(id)outlineView isItemExpandable:(id)item { - return [commandBundleArray count]; + if([item isKindOfClass:[NSDictionary class]] && [item objectForKey:@"children"]) + return YES; + + return NO; } -- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +- (NSInteger)outlineView:(id)outlineView numberOfChildrenOfItem:(id)item { - if(oldBundleName) [oldBundleName release], oldBundleName = nil; - oldBundleName = [[[commandBundleArray objectAtIndex:rowIndex] objectForKey:@"bundleName"] retain]; - isTableCellEditing = YES; - return YES; + + if(item == nil) + item = commandBundleTree; + + if([item isKindOfClass:[NSDictionary class]]) + if([item objectForKey:@"children"]) + return [[item objectForKey:@"children"] count]; + else + return [item count]; + + if([item isKindOfClass:[NSArray class]]) + return [item count]; + + return 0; } -/** - * Returns the value for the requested table column and row index. - */ -- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +- (id)outlineView:(id)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { - if(![commandBundleArray count]) return @""; + if(item && [item respondsToSelector:@selector(objectForKey:)]) + return [item objectForKey:@"bundleName"]; + return @""; - if([[aTableColumn identifier] isEqualToString:@"name"]) { - if(![[commandBundleArray objectAtIndex:rowIndex] objectForKey:@"name"]) return @"..."; - return [[commandBundleArray objectAtIndex:rowIndex] objectForKey:@"bundleName"]; - } +} - return @""; +- (BOOL)outlineView:outlineView isGroupItem:(id)item +{ + return (![item isLeaf]); +} +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item +{ + return (![item isLeaf]); } -- (void)tableViewSelectionDidChange:(NSNotification *)aNotification +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item { - if([aNotification object] != commandsTableView) return; + return YES; +} + +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + return ([item isLeaf]); +} + +- (void)outlineViewSelectionDidChange:(NSNotification *)aNotification +{ + if([aNotification object] != commandsOutlineView) return; [self _updateInputPopupButton]; + } +// - (void)outlineView:(NSOutlineView *)outlineView didClickTableColumn:(NSTableColumn *)tableColumn +// { +// if(outlineView == outlineSchema2) { +// [schemaStatusSplitView setPosition:1000 ofDividerAtIndex:0]; +// [schema12SplitView setPosition:0 ofDividerAtIndex:0]; +// } +// } +// +// - (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard +// { +// // Provide data for our custom type, and simple NSStrings. +// [pboard declareTypes:[NSArray arrayWithObjects:DragTableDataFromNavigatorPboardType, DragFromNavigatorPboardType, NSStringPboardType, nil] owner:self]; +// +// // Collect the actual schema paths without leading connection ID +// NSMutableArray *draggedItems = [NSMutableArray array]; +// for(id item in items) { +// id parentObject = [outlineView parentForItem:item] ? [outlineView parentForItem:item] : schemaData; +// if(!parentObject) return NO; +// id parentKeys = [parentObject allKeysForObject:item]; +// if(parentKeys && [parentKeys count] == 1) +// [draggedItems addObject:[[[parentKeys objectAtIndex:0] description] stringByReplacingOccurrencesOfRegex:[NSString stringWithFormat:@"^.*?%@", SPUniqueSchemaDelimiter] withString:@""]]; +// } +// +// // Drag the array with schema paths +// NSMutableData *arraydata = [[[NSMutableData alloc] init] autorelease]; +// NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:arraydata] autorelease]; +// [archiver encodeObject:draggedItems forKey:@"itemdata"]; +// [archiver finishEncoding]; +// [pboard setData:arraydata forType:DragFromNavigatorPboardType]; +// +// if([draggedItems count] == 1) { +// NSArray *pathComponents = [[draggedItems objectAtIndex:0] componentsSeparatedByString:SPUniqueSchemaDelimiter]; +// // Is a table? +// if([pathComponents count] == 2) { +// [pboard setString:[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ SELECT * FROM %@", +// [[pathComponents lastObject] backtickQuotedString], +// [pathComponents componentsJoinedByPeriodAndBacktickQuoted] +// ] forType:DragTableDataFromNavigatorPboardType]; +// } +// } +// // For external destinations provide a comma separated string +// NSMutableString *dragString = [NSMutableString string]; +// for(id item in draggedItems) { +// if([dragString length]) [dragString appendString:@", "]; +// [dragString appendString:[[item componentsSeparatedByString:SPUniqueSchemaDelimiter] componentsJoinedByPeriodAndBacktickQuotedAndIgnoreFirst]]; +// } +// +// if(![dragString length]) return NO; +// +// [pboard setString:dragString forType:NSStringPboardType]; +// return YES; +// } + + +#pragma mark - +#pragma mark TableView data source and delegate + +/** + * Returns the number of query commandBundleArray. + */ + /* * Save spBundle name if inline edited (suppress empty names) and check for renaming and / in the name */ - (void)controlTextDidEndEditing:(NSNotification *)aNotification { - if([aNotification object] != commandsTableView) return; + if([aNotification object] != commandsOutlineView) return; NSString *newBundleName = [[[aNotification userInfo] objectForKey:@"NSFieldEditor"] string]; - NSInteger selectedTableRow = [commandsTableView selectedRow]; - BOOL isValid = YES; if(newBundleName && [newBundleName length] && ![newBundleName rangeOfString:@"/"].length) { @@ -840,10 +999,10 @@ // If not valid reset name to the old one if(!isValid) { if(!oldBundleName) oldBundleName = @"New Name"; - [[commandBundleArray objectAtIndex:selectedTableRow] setObject:oldBundleName forKey:@"bundleName"]; + [[[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject] setObject:oldBundleName forKey:@"bundleName"]; } - [commandsTableView reloadData]; + [commandsOutlineView reloadData]; isTableCellEditing = NO; @@ -867,13 +1026,13 @@ { // Allow to record short-cuts used by the Bundle Editor if([[NSApp mainWindow] firstResponder] == keyEquivalentField) return NO; - return ([commandsTableView numberOfSelectedRows] == 1); + return ([[commandBundleTreeController selectedObjects] count] == 1); } else if ( (action == @selector(removeCommandBundle:)) ) { // Allow to record short-cuts used by the Bundle Editor if([[NSApp mainWindow] firstResponder] == keyEquivalentField) return NO; - return ([commandsTableView numberOfSelectedRows] > 0); + return ([[commandBundleTreeController selectedObjects] count] > 0); } return YES; @@ -898,7 +1057,7 @@ - (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rows toPasteboard:(NSPasteboard*)aPboard { - if([commandsTableView numberOfSelectedRows] != 1 || [rows count] != 1) return NO; + if([commandsOutlineView numberOfSelectedRows] != 1 || [rows count] != 1) return NO; // Remove old temporary drag file if any if(draggedFilePath) { @@ -910,7 +1069,7 @@ NSImage *dragImage; NSPoint dragPosition; - NSDictionary *bundleDict = [commandBundleArray objectAtIndex:[rows firstIndex]]; + NSDictionary *bundleDict = [commandsOutlineView itemAtRow:[rows firstIndex]]; NSString *bundleFileName = [bundleDict objectForKey:@"bundleName"]; NSString *possibleExisitingBundleFilePath = [NSString stringWithFormat:@"%@/%@.%@", bundlePath, bundleFileName, SPUserBundleFileExtension]; @@ -1043,9 +1202,9 @@ NSInteger anIndex; - if([commandsTableView selectedRow] < 0 || [commandsTableView selectedRow] > [commandBundleArray count]) return; + if([commandsOutlineView selectedRow] < 0 || [commandsOutlineView selectedRow] > [commandBundleArray count]) return; - NSDictionary *currentDict = [commandBundleArray objectAtIndex:[commandsTableView selectedRow]]; + NSDictionary *currentDict = [[commandsOutlineView itemAtRow:[commandsOutlineView selectedRow]] representedObject]; NSString *input = [currentDict objectForKey:SPBundleFileInputSourceKey]; if(!input || ![input length]) input = SPBundleInputSourceNone; |