# HG changeset patch # User tz # Date 889476164 -3600 # Node ID f94e58bb44ac9c5caea2dc5f46194cf40bc13863 # Parent bf8aa59e82b6542ae681a1e64164698cc2de15a4 some changes for the docu diff -r bf8aa59e82b6 -r f94e58bb44ac UIPainter.st --- a/UIPainter.st Mon Mar 09 21:41:42 1998 +0100 +++ b/UIPainter.st Mon Mar 09 21:42:44 1998 +0100 @@ -105,6 +105,15 @@ ^'GUI Builder' ! ! +!UIPainter class methodsFor:'accessing-defaults'! + +defaultNameOfCanvas + "returns the default name (id) of the application + " + ^'NewApplication' + +! ! + !UIPainter class methodsFor:'help specs'! helpSpec @@ -117,119 +126,149 @@ ^ super helpSpec addPairsFrom:#( -#accept -'Writes back changes.' - #alignSelectionBottom -'Aligns selected widgets to the bottom edge of the dominant widget.' +'Aligns the selected widgets to the bottom edge of the dominant widget.' #alignSelectionCenterHor -'Aligns selected widgets vertical to the center of the dominant widget.' +'Aligns the selected widgets vertically to the center of the dominant widget.' #alignSelectionCenterVer -'Aligns selected widgets horizontal to the center of the dominant widget.' +'Aligns the selected widgets horizontally to the center of the dominant widget.' #alignSelectionLeft -'Aligns selected widgets to the left edge of the dominant widget.' +'Aligns the selected widgets to the left edge of the dominant widget.' #alignSelectionLeftAndRight -'Aligns selected widgets to the right and left edge of the dominant widget.' +'Aligns the selected widgets to the right and left edge of the dominant widget.' #alignSelectionRight -'Aligns selected widgets to the right edge of the dominant widget.' +'Aligns the selected widgets to the right edge of the dominant widget.' #alignSelectionTop -'Aligns selected widgets to the top edge of the dominant widget.' +'Aligns the selected widgets to the top edge of the dominant widget.' #alignSelectionTopAndBottom -'Aligns selected widgets to the top and bottom edge of the dominant widget.' - -#cancel -'Rereads specification and layout.' +'Aligns the selected widgets to the top and bottom edge of the dominant widget.' #centerSelectionHor -'Centers widgets horizontal to their top widget.' +'Centers the selected widgets horizontally to their contained widget.' #centerSelectionVer -'Centers vertical horizontal in contained view.' - -#copyExtent -'Copies extent of the selected widget.' - -#copyLayout -'Copies layout of the selected widget.' +'Centers the selected widgets vertically in their contained widget.' + +#changePositionDown +'Changes the position of the widgets to the bottom.' + +#changePositionLeft +'Changes the position of the widgets to the left.' + +#changePositionRight +'Changes the position of the widgets to the right.' + +#changePositionUp +'Changes the position of the widgets to the top.' + +#editDimensionCopyExtent +'Copies the extent of the selected widgets.' + +#editDimensionCopyLayout +'Copies the layout of the selected widgets.' + +#editDimensionDefaultExtent +'Sets the selected widgets to their default extent.' + +#editDimensionDefaultHeight +'Sets the selected widgets to their default height.' + +#editDimensionDefaultWidth +'Sets the selected widgets to their default width.' + +#editDimensionPasteExtent +'Sets the extent of the selected widgets to the last copied extent.' + +#editDimensionPasteHeight +'Sets the height of the selected widgets to the height of the last copied layout/extent.' + +#editDimensionPasteLayout +'Sets the layout of the selected widgets to the last copied layout.' + +#editDimensionPasteWidth +'Sets the width of the selected widgets to the width of the last copied layout/extent.' + +#fileBrowseAspectMethods +'Opens a System Browser to browse the aspect methods.' #fileLoad -'Opens dialog to load an interface from a class.' +'Opens a dialog to load a window spec from a class.' #fileLoadSubspec -'Opens dialog to load an subspec interface from a class.' +'Opens a dialog to load an sub spec from a class.' #fileNew -'Creates new interface.' +'Creates a new window spec.' #filePickAnInterface -'Changes the cursor for moving it over another view to load its interface.' +'Changes the cursor for moving it over another interface application to load its window spec.' #fileSave -'Saves current interface.' - -#galleryShown -'Shows or hide gallery view.' - -#menuAlignment -'Provides a set of alignment operation on the current selected widgets.' - -#moveSelectionDown -'Moves selected widgets down.' - -#moveSelectionLeft -'Moves selected widgets out of parent widget.' - -#moveSelectionRight -'Moves selected widgets into next widget as child.' - -#moveSelectionUp -'Moves selected widgets up.' - -#painterShown -'Shows or hide painter view.' +'Saves current window spec on current class and if modified the help spec.' + +#fileSaveAs +'Opens a dialog to select or create a class and selector in order to save current window spec.' + +#fileShowWindowSpec +'Opens a Workspace showing the current window spec.' + +#generateAspectMethods +'Generates aspect methods for defined aspect selectors of the widgets.' + +#generateHookMethods +'Generates startup/release methods. (#closeRequest, #postBuildWith:, #postOpenWith:)' + +#moveWidgetDown +'Moves the selected widget one step down.' + +#moveWidgetInto +'Moves the selected widget into next widget as child widget.' + +#moveWidgetOut +'Moves the selected widget out of its parent widget.' + +#moveWidgetUp +'Moves the selected widget one step up.' #pasteBuffer -'Pastes widgets at current mouse position.' - -#pasteExtent -'Changes extent of all selected widgets to the last copied extent.' - -#pasteHeight -'Changes height of all selected widgets to the last copied extent height.' - -#pasteLayout -'Changes layout of all selected widgets to the last copied layout.' - -#pasteWidth -'Changes width of all selected widgets to the last copied extent width.' +'Pastes the widgets of the clipboard at current mouse position.' #pasteWithLayout -'Pastes widgets without changing their layouts.' - -#setToDefaultExtent -'Sets selected widgets to their default extent.' - -#setToDefaultHeight -'Sets selected widgets to their default height.' - -#setToDefaultWidth -'Sets selected widgets to their default width.' +'Pastes the widgets of the clipboard without a changing of their layouts.' + +#settingsCanvas +'Shows or hides the canvas window.' + +#settingsGallery +'Shows or hides the gallery window.' + +#settingsGridManager +'Opens a dialog to show/hide the grid points or to change the distances between them.' + +#settingsRedefineAspectMethods +'Turns on/off the permission of redefinition of the aspect methods.' + +#settingsUndoManager +'Opens a dialog to reverse a certain number of last edit action.' #spreadSelectionHor -'Sets horizontal spaces between selected widgets as the same.' +'Sets the horizontal spaces between the selected widgets as the same.' #spreadSelectionVer -'Sets vertical spaces between selected widgets as the same.' +'Sets the vertical spaces between the selected widgets as the same.' + +#testGeometryTestMode +'Turns on/off the geometry test mode in order to define ratios of variable panels.' #testStartApplication -'Starts current application on loaded interface.' +'Starts current application on current window spec.' ) ! ! @@ -315,75 +354,75 @@ ^ #(#FullSpec - #'window:' + #window: #(#WindowSpec - #'name:' 'GUI Builder' - #'layout:' #(#LayoutFrame 44 0 416 0 325 0 613 0) - #'label:' 'GUI Builder' - #'min:' #(#Point 10 10) - #'max:' #(#Point 1280 1024) - #'bounds:' #(#Rectangle 44 416 326 614) - #'usePreferredExtent:' false + #name: 'GUI Painter' + #layout: #(#LayoutFrame 171 0 570 0 452 0 767 0) + #label: 'GUI Painter' + #min: #(#Point 10 10) + #max: #(#Point 1280 1024) + #bounds: #(#Rectangle 171 570 453 768) + #usePreferredExtent: false ) - #'component:' + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#FramedBoxSpec - #'name:' 'framedBox' - #'layout:' #(#LayoutFrame 0 0.0 3 0.0 0 1.0 -35 1.0) - #'component:' + #name: 'FramedBox' + #layout: #(#LayoutFrame 0 0.0 3 0.0 0 1.0 -35 1.0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#CheckBoxSpec - #'name:' 'show' - #'layout:' #(#Point 23 24) - #'model:' #showGrid - #'label:' 'Show grid' + #name: 'ShowGridCheckBox' + #layout: #(#Point 23 24) + #model: #showGrid + #label: 'Show Grid' ) #(#CheckBoxSpec - #'name:' 'align' - #'layout:' #(#Point 23 52) - #'model:' #alignToGrid - #'label:' 'Align to Grid' + #name: 'AlignCheckBox' + #layout: #(#Point 23 52) + #model: #alignToGrid + #label: 'Align to Grid' ) #(#LabelSpec - #'name:' 'hrzLabel' - #'layout:' #(#AlignmentOrigin 148 0 99 0 1 0.5) - #'label:' 'Horizontal Pixels:' - #'adjust:' #right - #'resizeForLabel:' true + #name: 'HorizontalPixelsLabel' + #layout: #(#AlignmentOrigin 148 0 99 0 1 0.5) + #label: 'Horizontal Pixels:' + #adjust: #right + #resizeForLabel: true ) #(#InputFieldSpec - #'name:' 'hrzField' - #'layout:' #(#LayoutFrame 154 0 87 0 207 0 109 0) - #'model:' #hspace - #'type:' #numberOrNil + #name: 'HorizontalPixelsField' + #layout: #(#LayoutFrame 154 0 87 0 207 0 109 0) + #model: #hspace + #type: #numberOrNil ) #(#LabelSpec - #'name:' 'vrtLabel' - #'layout:' #(#AlignmentOrigin 149 0 124 0 1 0.5) - #'label:' 'Vertical Pixels:' - #'adjust:' #right - #'resizeForLabel:' true + #name: 'VerticalPixelsLabel' + #layout: #(#AlignmentOrigin 149 0 124 0 1 0.5) + #label: 'Vertical Pixels:' + #adjust: #right + #resizeForLabel: true ) #(#InputFieldSpec - #'name:' 'vrtField' - #'layout:' #(#LayoutFrame 154 0 112 0 207 0 134 0) - #'model:' #vspace - #'type:' #numberOrNil + #name: 'VerticalPixelsField' + #layout: #(#LayoutFrame 154 0 112 0 207 0 134 0) + #model: #vspace + #type: #numberOrNil ) ) ) - #'label:' 'Grid Parameter' - #'labelPosition:' #topLeft + #label: 'Grid Parameter' + #labelPosition: #topLeft ) #(#UISubSpecification - #'name:' 'uISubSpecifica1' - #'layout:' #(#LayoutFrame 0 0.0 -29 1 0 1.0 -5 1) - #'majorKey:' #ToolApplicationModel - #'minorKey:' #windowSpecForCommitWithoutChannels + #name: 'CommitButtonsSubSpecView' + #layout: #(#LayoutFrame 0 0.0 -29 1 0 1.0 -5 1) + #majorKey: #ToolApplicationModel + #minorKey: #windowSpecForCommitWithoutChannels ) ) ) @@ -404,7 +443,7 @@ ^ - + #(#FullSpec #'window:' #(#WindowSpec @@ -469,7 +508,7 @@ ) ) ) - #'label:' 'Class and selector for interface' + #'label:' 'Define Class And Selector' #'labelPosition:' #topLeft ) #(#UISubSpecification @@ -481,6 +520,7 @@ ) ) ) + ! windowSpec @@ -500,213 +540,182 @@ ^ #(#FullSpec - #'window:' + #window: #(#WindowSpec - #'name:' 'Tree-View' - #'layout:' #(#LayoutFrame 340 0 328 0 892 0 853 0) - #'label:' 'Tree-View' - #'min:' #(#Point 10 10) - #'max:' #(#Point 1160 870) - #'bounds:' #(#Rectangle 340 328 893 854) - #'menu:' #menu - #'usePreferredExtent:' false + #name: 'GUI Painter' + #layout: #(#LayoutFrame 282 0 281 0 834 0 818 0) + #label: 'GUI Painter' + #min: #(#Point 10 10) + #max: #(#Point 1160 870) + #bounds: #(#Rectangle 282 281 835 819) + #menu: #menu + #usePreferredExtent: false ) - #'component:' + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#MenuPanelSpec - #'name:' 'menuToolbarView' - #'layout:' #(#LayoutFrame -1 0.0 0 0 -1 1.0 32 0) - #'tabable:' true - #'menu:' #menuToolbar - #'showSeparatingLines:' true + #name: 'menuToolbarView' + #layout: #(#LayoutFrame -1 0.0 0 0 -1 1.0 32 0) + #tabable: true + #menu: #menuToolbar ) #(#VariableVerticalPanelSpec - #'name:' 'vpanel' - #'layout:' #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0) - #'component:' + #name: 'vpanel' + #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#VariableHorizontalPanelSpec - #'name:' 'hpanel' - #'component:' + #name: 'hpanel' + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ArbitraryComponentSpec - #'name:' 'treeView' - #'tabable:' true - #'menu:' #menuEdit - #'hasHorizontalScrollBar:' true - #'hasVerticalScrollBar:' true - #'miniScrollerHorizontal:' true - #'miniScrollerVertical:' true - #'component:' #treeView - #'hasBorder:' false + #name: 'treeView' + #tabable: true + #menu: #menuEdit + #hasHorizontalScrollBar: true + #hasVerticalScrollBar: true + #miniScrollerHorizontal: true + #miniScrollerVertical: true + #component: #treeView + #hasBorder: false ) #(#ViewSpec - #'name:' 'specHolderView' - #'component:' + #name: 'specHolderView' + #component: #(#SpecCollection - #'collection:' + #collection: #( - #(#ViewSpec - #'name:' 'View' - #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 28 0) - #'component:' + #(#MenuPanelSpec + #name: 'menuToolbar2View' + #layout: #(#LayoutFrame -1 0.0 -2 0 -1 1.0 30 0) + #enableChannel: #canMoveOrAlignSelection + #tabable: true + #menu: #menuToolbar2 + ) + #(#NoteBookViewSpec + #name: 'noteBook' + #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -30 1.0) + #enableChannel: #enableChannel + #tabable: true + #model: #tabModel + #menu: #tabList + #style: #(#FontDescription #helvetica #medium #roman 10) + #canvas: #noteBookView + ) + #(#HorizontalPanelViewSpec + #name: 'horizontalPanelView1' + #layout: #(#LayoutFrame -128 1 -1 0 0 1.0 31 0) + #component: #(#SpecCollection - #'collection:' + #collection: #( - #(#HorizontalPanelViewSpec - #'name:' 'panelViewButtons' - #'layout:' #(#LayoutFrame 0 0.0 2 0 0 0.5 26 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#CheckBoxSpec - #'name:' 'checkBox1' - #'model:' #galleryShown - #'label:' 'Gallery' - #'extent:' #(#Point 82 22) - ) - #(#CheckBoxSpec - #'name:' 'checkBox2' - #'model:' #painterShown - #'label:' 'Canvas' - #'extent:' #(#Point 119 22) - ) - ) - ) - #'horizontalLayout:' #left - #'verticalLayout:' #top - #'horizontalSpace:' 4 - #'verticalSpace:' 4 + #(#ArrowButtonSpec + #name: 'MoveLeftButton' + #activeHelpKey: #changePositionLeft + #tabable: true + #model: #moveSelectionLeft + #enableChannel: #canMoveOrAlignSelection + #isTriggerOnDown: true + #direction: #left + #extent: #(#Point 32 32) ) - #(#HorizontalPanelViewSpec - #'name:' 'horizontalPanelView1' - #'layout:' #(#LayoutFrame 0 0.5 2 0 0 1.0 26 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#ArrowButtonSpec - #'name:' 'arrowButton1' - #'activeHelpKey:' #moveSelectionLeft - #'tabable:' true - #'model:' #moveSelectionLeft - #'enableChannel:' #canMoveOrAlignSelection - #'isTriggerOnDown:' true - #'direction:' #left - #'extent:' #(#Point 22 22) - ) - #(#ArrowButtonSpec - #'name:' 'arrowButton2' - #'activeHelpKey:' #moveSelectionRight - #'model:' #moveSelectionRight - #'enableChannel:' #canMoveOrAlignSelection - #'isTriggerOnDown:' true - #'direction:' #right - #'extent:' #(#Point 22 22) - ) - #(#ArrowButtonSpec - #'name:' 'arrowButton3' - #'activeHelpKey:' #moveSelectionDown - #'model:' #moveSelectionDown - #'enableChannel:' #canMoveOrAlignSelection - #'isTriggerOnDown:' true - #'direction:' #down - #'extent:' #(#Point 22 22) - ) - #(#ArrowButtonSpec - #'name:' 'arrowButton4' - #'activeHelpKey:' #moveSelectionUp - #'model:' #moveSelectionUp - #'enableChannel:' #canMoveOrAlignSelection - #'isTriggerOnDown:' true - #'direction:' #up - #'extent:' #(#Point 22 22) - ) - ) - ) - #'horizontalLayout:' #right - #'verticalLayout:' #top - #'horizontalSpace:' 4 - #'verticalSpace:' 4 + #(#ArrowButtonSpec + #name: 'MoveRightButton' + #activeHelpKey: #changePositionRight + #model: #moveSelectionRight + #enableChannel: #canMoveOrAlignSelection + #isTriggerOnDown: true + #direction: #right + #extent: #(#Point 32 32) + ) + #(#ArrowButtonSpec + #name: 'MoveDownButton' + #activeHelpKey: #changePositionDown + #model: #moveSelectionDown + #enableChannel: #canMoveOrAlignSelection + #isTriggerOnDown: true + #direction: #down + #extent: #(#Point 32 32) + ) + #(#ArrowButtonSpec + #name: 'MoveUpButton' + #activeHelpKey: #changePositionUp + #model: #moveSelectionUp + #enableChannel: #canMoveOrAlignSelection + #isTriggerOnDown: true + #direction: #up + #extent: #(#Point 32 32) ) ) ) - #'level:' 1 - ) - #(#NoteBookViewSpec - #'name:' 'noteBook' - #'layout:' #(#LayoutFrame 0 0.0 29 0.0 0 1.0 -30 1.0) - #'enableChannel:' #enableChannel - #'tabable:' true - #'model:' #tabModel - #'menu:' #tabList - #'style:' #(#FontDescription #helvetica #medium #roman 10) - #'canvas:' #noteBookView + #horizontalLayout: #fit + #verticalLayout: #fit + #horizontalSpace: 0 + #verticalSpace: 0 ) #(#HorizontalPanelViewSpec - #'name:' 'modifyPanel' - #'layout:' #(#LayoutFrame 0 0.0 -30 1.0 0 1.0 0 1.0) - #'component:' + #name: 'modifyPanel' + #layout: #(#LayoutFrame 0 0.0 -30 1.0 0 1.0 0 1.0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ActionButtonSpec - #'name:' 'cancelButton' - #'activeHelpKey:' #cancel - #'label:' 'Cancel' - #'tabable:' true - #'model:' #cancel - #'enableChannel:' #modifiedChannel - #'extent:' #(#Point 179 24) + #name: 'cancelButton' + #activeHelpKey: #cancel + #label: 'Cancel' + #tabable: true + #model: #cancel + #enableChannel: #modifiedChannel + #extent: #(#Point 183 24) ) #(#ActionButtonSpec - #'name:' 'acceptButton' - #'activeHelpKey:' #accept - #'label:' 'OK' - #'tabable:' true - #'model:' #accept - #'enableChannel:' #modifiedChannel - #'extent:' #(#Point 180 24) + #name: 'acceptButton' + #activeHelpKey: #accept + #label: 'OK' + #tabable: true + #model: #accept + #enableChannel: #modifiedChannel + #extent: #(#Point 183 24) ) ) ) - #'horizontalLayout:' #fitSpace - #'verticalLayout:' #fitSpace - #'horizontalSpace:' 3 - #'verticalSpace:' 3 + #horizontalLayout: #fitSpace + #verticalLayout: #fitSpace + #horizontalSpace: 3 + #verticalSpace: 3 ) ) ) - #'borderWidth:' 1 + #borderWidth: 1 ) ) ) - #'level:' 1 - #'handles:' #(#Any 0.329435 1.0) + #level: 1 + #handles: #(#Any 0.318264 1.0) ) #(#TextEditorSpec - #'name:' 'Transcript' - #'hasHorizontalScrollBar:' true - #'hasVerticalScrollBar:' true - #'miniScrollerHorizontal:' true - #'miniScrollerVertical:' true + #name: 'Transcript' + #hasHorizontalScrollBar: true + #hasVerticalScrollBar: true + #miniScrollerHorizontal: true + #miniScrollerVertical: true ) ) ) - #'handles:' #(#Any 0.880597 1.0) + #handles: #(#Any 0.880597 1.0) ) #(#UISubSpecification - #'name:' 'infoBarSubSpec' - #'layout:' #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) - #'majorKey:' #ToolApplicationModel - #'minorKey:' #windowSpecForInfoBarWithClock + #name: 'infoBarSubSpec' + #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) + #majorKey: #ToolApplicationModel + #minorKey: #windowSpecForInfoBar ) ) ) @@ -740,7 +749,6 @@ ) #(#MenuItem #label: 'File' - #value: #file #enabled: #enableChannel #submenu: #(#Menu @@ -756,12 +764,12 @@ ) #(#MenuItem #label: 'Load...' - #value: #doFromClass + #value: #doLoad #activeHelpKey: #fileLoad ) #(#MenuItem #label: 'Load Subspec...' - #value: #loadSubspec + #value: #doLoadSubspec #activeHelpKey: #fileLoadSubspec ) #(#MenuItem @@ -769,34 +777,24 @@ ) #(#MenuItem #label: 'Save' - #value: #doInstallSpec + #value: #doSave #activeHelpKey: #fileSave ) #(#MenuItem - #label: '-' + #label: 'Save As...' + #value: #doSaveAs + #activeHelpKey: #fileSaveAs ) #(#MenuItem #label: 'Define Class And Selector...' #value: #defineClassAndSelector + #activeHelpKey: #fileSaveAs ) #(#MenuItem #label: '-' ) #(#MenuItem - #label: 'Create Aspect Methods' - #value: #doInstallAspects - #enabled: #hasSpecClass - ) - #(#MenuItem - #label: 'Create Hook Methods' - #value: #doInstallHooks - #enabled: #hasSpecClass - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Pick An Interface' + #label: 'Pick A Window Spec...' #value: #doPickAView #activeHelpKey: #filePickAnInterface ) @@ -804,17 +802,20 @@ #label: '-' ) #(#MenuItem - #label: 'Show Interface Spec' + #label: 'Show Window Spec' #value: #doWindowSpec + #activeHelpKey: #fileShowWindowSpec ) #(#MenuItem - #label: 'Browse Interface Class' - #value: #doBrowseAppClass + #label: 'Browse Class' + #value: #doBrowseClass + #activeHelpKey: #fileBrowseClass #enabled: #hasSpecClass ) #(#MenuItem #label: 'Browse Aspect Methods' #value: #doBrowseAspectMethods + #activeHelpKey: #fileBrowseAspectMethods #enabled: #hasSpecClass ) #(#MenuItem @@ -838,6 +839,31 @@ #submenuChannel: #menuAlign ) #(#MenuItem + #label: 'Generate' + #submenu: + #(#Menu + + #( + #(#MenuItem + #label: 'Aspect Methods' + #value: #doInstallAspects + #activeHelpKey: #generateAspectMethods + #enabled: #hasSpecClass + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Hook Methods' + #value: #doInstallHooks + #activeHelpKey: #generateHookMethods + #enabled: #hasSpecClass + ) + ) nil + nil + ) + ) + #(#MenuItem #label: 'Test' #submenu: #(#Menu @@ -853,6 +879,7 @@ ) #(#MenuItem #label: 'Geometry Test Mode' + #activeHelpKey: #testGeometryTestMode #indication: #testMode: ) ) nil @@ -866,15 +893,36 @@ #( #(#MenuItem - #label: 'Undo Manager...' - #value: #openUndoMenu + #label: 'Canvas' + #activeHelpKey: #settingsCanvas + #indication: #painterShown + ) + #(#MenuItem + #label: 'Gallery' + #activeHelpKey: #settingsGallery + #indication: #galleryShown ) #(#MenuItem #label: '-' ) #(#MenuItem + #label: 'Undo Manager...' + #value: #openUndoMenu + #activeHelpKey: #settingsUndoManager + ) + #(#MenuItem #label: 'Grid Manager...' #value: #gridMenu + #activeHelpKey: #settingsGridManager + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Redefine Aspect Methods' + #activeHelpKey: #settingsRedefineAspectMethods + #enabled: #hasSpecClass + #indication: #doRedefineMethods: ) ) nil nil @@ -887,349 +935,32 @@ #(#MenuItem #label: 'Help' #startGroup: #right - #submenuChannel: #menuHelp - ) - ) nil - nil - ) - - "Modified: / 27.2.1998 / 16:15:24 / cg" -! - -menuAdd - "this window spec was automatically generated by the ST/X MenuEditor" - - "do not manually edit this - the builder may not be able to - handle the specification if its corrupted." - - " - MenuEditor new openOnClass:UIPainter andSelector:#menuAdd - (Menu new fromLiteralArrayEncoding:(UIPainter menuAdd)) startUp - " - - - - ^ - - #(#Menu - - #( - #(#MenuItem - #'label:' 'Buttons' - #'submenu:' - #(#Menu - - #( - #(#MenuItem - #'label:' 'Action Button' - #'value:' #'addWidget:' - #'argument:' #ActionButtonSpec - #'labelImage:' #(#ResourceRetriever #ActionButtonSpec #icon 'Action Button') - ) - #(#MenuItem - #'label:' 'Arrow Button' - #'value:' #'addWidget:' - #'argument:' #ArrowButtonSpec - #'labelImage:' #(#ResourceRetriever #ArrowButtonSpec #icon 'Arrow Button') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Toggle' - #'value:' #'addWidget:' - #'argument:' #ToggleSpec - #'labelImage:' #(#ResourceRetriever #ToggleSpec #icon 'Toggle') - ) - #(#MenuItem - #'label:' 'Radio Button' - #'value:' #'addWidget:' - #'argument:' #RadioButtonSpec - #'labelImage:' #(#ResourceRetriever #RadioButtonSpec #icon 'Radio Button') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Check Box' - #'value:' #'addWidget:' - #'argument:' #CheckBoxSpec - #'labelImage:' #(#ResourceRetriever #CheckBoxSpec #icon 'Check Box') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Up Down Button' - #'value:' #'addWidget:' - #'argument:' #UpDownButtonSpec - #'labelImage:' #(#ResourceRetriever #UpDownButtonSpec #icon 'Up Down Button') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Slider' - #'value:' #'addWidget:' - #'argument:' #SliderSpec - #'labelImage:' #(#ResourceRetriever #SliderSpec #icon 'Slider') - ) - #(#MenuItem - #'label:' 'Thumb Wheel' - #'value:' #'addWidget:' - #'argument:' #ThumbWheelSpec - #'labelImage:' #(#ResourceRetriever #ThumbWheelSpec #icon 'Thumb Wheel') - ) - ) nil - nil - ) - ) - #(#MenuItem - #'label:' 'Menus' - #'submenu:' - #(#Menu - - #( - #(#MenuItem - #'label:' 'Combo Box' - #'value:' #'addWidget:' - #'argument:' #ComboBoxSpec - #'labelImage:' #(#ResourceRetriever #ComboBoxSpec #icon 'Combo Box') - ) - #(#MenuItem - #'label:' 'Combo List' - #'value:' #'addWidget:' - #'argument:' #ComboListSpec - #'labelImage:' #(#ResourceRetriever #ComboListSpec #icon 'Combo List') - ) - #(#MenuItem - #'label:' 'PopUp List' - #'value:' #'addWidget:' - #'argument:' #PopUpListSpec - #'labelImage:' #(#ResourceRetriever #ComboListSpec #icon 'PopUp List') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Tab' - #'value:' #'addWidget:' - #'argument:' #TabViewSpec - #'labelImage:' #(#ResourceRetriever #TabViewSpec #icon 'Tab') - ) - #(#MenuItem - #'label:' 'Note Book' - #'value:' #'addWidget:' - #'argument:' #NoteBookViewSpec - #'labelImage:' #(#ResourceRetriever #NoteBookViewSpec #icon 'Note Book') - ) - #(#MenuItem - #'label:' 'Gallery' - #'value:' #'addWidget:' - #'argument:' #UIGalleryViewSpec - #'labelImage:' #(#ResourceRetriever #UIGalleryViewSpec #icon 'Gallery') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Menu Panel' - #'value:' #'addWidget:' - #'argument:' #MenuPanelSpec - #'labelImage:' #(#ResourceRetriever #MenuPanelSpec #icon 'Menu Panel') - ) - ) nil - nil - ) - ) - #(#MenuItem - #'label:' 'Text Views' - #'submenu:' + #submenu: #(#Menu #( #(#MenuItem - #'label:' 'Text Editor' - #'value:' #'addWidget:' - #'argument:' #TextEditorSpec - #'labelImage:' #(#ResourceRetriever #TextEditorSpec #icon 'Text Editor') - ) - #(#MenuItem - #'label:' 'Input Field' - #'value:' #'addWidget:' - #'argument:' #InputFieldSpec - #'labelImage:' #(#ResourceRetriever #InputFieldSpec #icon 'Input Field') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Label' - #'value:' #'addWidget:' - #'argument:' #LabelSpec - #'labelImage:' #(#ResourceRetriever #LabelSpec #icon 'Label') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'HTML View' - #'value:' #'addWidget:' - #'argument:' #HTMLViewSpec - #'labelImage:' #(#ResourceRetriever #HTMLViewSpec #icon 'HTML View') - ) - ) nil - nil - ) - ) - #(#MenuItem - #'label:' 'Lists' - #'submenu:' - #(#Menu - - #( - #(#MenuItem - #'label:' 'List' - #'value:' #'addWidget:' - #'argument:' #SequenceViewSpec - #'labelImage:' #(#ResourceRetriever #SequenceViewSpec #icon 'List') - ) - #(#MenuItem - #'label:' 'Data Set List' - #'value:' #'addWidget:' - #'argument:' #DataSetSpec - #'labelImage:' #(#ResourceRetriever #DataSetSpec #icon 'Data Set List') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Tree List' - #'value:' #'addWidget:' - #'argument:' #SelectionInTreeViewSpec - #'labelImage:' #(#ResourceRetriever #SelectionInTreeViewSpec #icon 'Tree List') - ) - #(#MenuItem - #'label:' 'File Tree List' - #'value:' #'addWidget:' - #'argument:' #FileSelectionTreeSpec - #'labelImage:' #(#ResourceRetriever #FileSelectionTreeSpec #icon 'File Tree List') - ) - ) nil - nil - ) - ) - #(#MenuItem - #'label:' 'Boxes' - #'submenu:' - #(#Menu - - #( - #(#MenuItem - #'label:' 'Box' - #'value:' #'addWidget:' - #'argument:' #ViewSpec - #'labelImage:' #(#ResourceRetriever #ViewSpec #icon 'Box') - ) - #(#MenuItem - #'label:' 'Framed Box' - #'value:' #'addWidget:' - #'argument:' #FramedBoxSpec - #'labelImage:' #(#ResourceRetriever #FramedBoxSpec #icon 'Framed Box') + #label: 'Documentation' + #translateLabel: true + #value: #openDocumentation + #activeHelpKey: #helpTutorial + #enabled: #valueOfHavingDocumentation ) #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Horizontal Panel' - #'value:' #'addWidget:' - #'argument:' #HorizontalPanelViewSpec - #'labelImage:' #(#ResourceRetriever #HorizontalPanelViewSpec #icon 'Horizontal Panel') - ) - #(#MenuItem - #'label:' 'Vertical Panel' - #'value:' #'addWidget:' - #'argument:' #VerticalPanelViewSpec - #'labelImage:' #(#ResourceRetriever #VerticalPanelViewSpec #icon 'Vertical Panel') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Area Panel' - #'value:' #'addWidget:' - #'argument:' #PanelViewSpec - #'labelImage:' #(#ResourceRetriever #PanelViewSpec #icon 'Area Panel') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Variable Horizontal Panel' - #'value:' #'addWidget:' - #'argument:' #VariableHorizontalPanelSpec - #'labelImage:' #(#ResourceRetriever #VariableHorizontalPanelSpec #icon 'Variable Horizontal Panel') + #label: 'Examples' + #translateLabel: true + #value: #openExamples + #activeHelpKey: #helpTutorial + #enabled: #valueOfHavingExamples ) #(#MenuItem - #'label:' 'Variable Vertical Panel' - #'value:' #'addWidget:' - #'argument:' #VariableVerticalPanelSpec - #'labelImage:' #(#ResourceRetriever #VariableVerticalPanelSpec #icon 'Variable Vertical Panel') - ) - ) nil - nil - ) - ) - #(#MenuItem - #'label:' 'Misc' - #'submenu:' - #(#Menu - - #( - #(#MenuItem - #'label:' 'Arbitrary Component' - #'value:' #'addWidget:' - #'argument:' #ArbitraryComponentSpec - #'labelImage:' #(#ResourceRetriever #ArbitraryComponentSpec #icon 'Arbitrary Component') - ) - #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Sub Specification' - #'value:' #'addWidget:' - #'argument:' #UISubSpecification - #'labelImage:' #(#ResourceRetriever #ArbitraryComponentSpec #icon 'Sub Specification') - ) - #(#MenuItem - #'label:' 'Sub Canvas' - #'value:' #'addWidget:' - #'argument:' #SubCanvasSpec - #'labelImage:' #(#ResourceRetriever #SubCanvasSpec #icon 'Sub Canvas') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Progress Indicator' - #'value:' #'addWidget:' - #'argument:' #ProgressIndicatorSpec - #'labelImage:' #(#ResourceRetriever #ProgressIndicatorSpec #icon 'Progress Indicator') - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Divider' - #'value:' #'addWidget:' - #'argument:' #DividerSpec - #'labelImage:' #(#ResourceRetriever #DividerSpec #icon 'Divider') - ) - #(#MenuItem - #'label:' 'Region' - #'value:' #'addWidget:' - #'argument:' #RegionSpec - #'labelImage:' #(#ResourceRetriever #RegionSpec #icon 'Region') + #label: 'Show Help Texts' + #translateLabel: true + #activeHelpKey: #helpShowHelp + #indication: #showHelp: ) ) nil nil @@ -1259,96 +990,95 @@ #( #(#MenuItem - #'label:' 'Align Left' - #'value:' #alignSelectionLeft - #'activeHelpKey:' #alignSelectionLeft - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignL 'Align Left') + #label: 'Left' + #value: #alignSelectionLeft + #activeHelpKey: #alignSelectionLeft + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #UIPainter #iconAlignL 'Left') ) #(#MenuItem - #'label:' 'Align Right' - #'value:' #alignSelectionRight - #'activeHelpKey:' #alignSelectionRight - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignR 'Align Right') + #label: 'Right' + #value: #alignSelectionRight + #activeHelpKey: #alignSelectionRight + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #UIPainter #iconAlignR 'Right') ) #(#MenuItem - #'label:' 'Align Left & Right' - #'value:' #alignSelectionLeftAndRight - #'activeHelpKey:' #alignSelectionLeftAndRight - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignLR 'Align Left & Right') + #label: 'Left & Right' + #value: #alignSelectionLeftAndRight + #activeHelpKey: #alignSelectionLeftAndRight + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #UIPainter #iconAlignLR 'Left & Right') ) #(#MenuItem - #'label:' 'Align top' - #'value:' #alignSelectionTop - #'activeHelpKey:' #alignSelectionTop - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignT 'Align top') + #label: 'Top' + #value: #alignSelectionTop + #activeHelpKey: #alignSelectionTop + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #UIPainter #iconAlignT 'Top') ) #(#MenuItem - #'label:' 'Align Bottom' - #'value:' #alignSelectionBottom - #'activeHelpKey:' #alignSelectionBottom - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignB 'Align Bottom') + #label: 'Bottom' + #value: #alignSelectionBottom + #activeHelpKey: #alignSelectionBottom + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #UIPainter #iconAlignB 'Bottom') ) #(#MenuItem - #'label:' 'Align Top & Bottom' - #'value:' #alignSelectionTopAndBottom - #'activeHelpKey:' #alignSelectionTopAndBottom - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignTB 'Align Top & Bottom') + #label: 'Top & Bottom' + #value: #alignSelectionTopAndBottom + #activeHelpKey: #alignSelectionTopAndBottom + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #UIPainter #iconAlignTB 'Top & Bottom') ) #(#MenuItem - #'label:' 'Align Centered Horizontal' - #'value:' #alignSelectionCenterHor - #'activeHelpKey:' #alignSelectionCenterHor - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignCenterH 'Align Centered Horizontal') + #label: '-' ) #(#MenuItem - #'label:' 'Align Centered Vertical' - #'value:' #alignSelectionCenterVer - #'activeHelpKey:' #alignSelectionCenterVer - #'enabled:' #hasSelection - #'labelImage:' #(#ResourceRetriever #UIPainter #iconAlignCenterV 'Align Centered Vertical') + #label: 'Centered Horizontal' + #value: #alignSelectionCenterHor + #activeHelpKey: #alignSelectionCenterHor + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' '-' + #label: 'Centered Vertical' + #value: #alignSelectionCenterVer + #activeHelpKey: #alignSelectionCenterVer + #enabled: #canMoveOrAlignSelection + ) + #(#MenuItem + #label: '-' ) #(#MenuItem - #'label:' 'Spread Horizontal' - #'value:' #spreadSelectionHor - #'activeHelpKey:' #spreadSelectionHor - #'enabled:' #hasSelection + #label: 'Center Horizontal In Frame' + #value: #centerSelectionHor + #activeHelpKey: #centerSelectionHor + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' 'Spread Vertical' - #'value:' #spreadSelectionVer - #'activeHelpKey:' #spreadSelectionVer - #'enabled:' #hasSelection + #label: 'Center Vertical In Frame' + #value: #centerSelectionVer + #activeHelpKey: #centerSelectionVer + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Center Horizontal In Frame' - #'value:' #centerSelectionHor - #'activeHelpKey:' #centerSelectionHor - #'enabled:' #hasSelection + #label: 'Spread Horizontal' + #value: #spreadSelectionHor + #activeHelpKey: #spreadSelectionHor + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' 'Center Vertical In Frame' - #'value:' #centerSelectionVer - #'activeHelpKey:' #centerSelectionVer - #'enabled:' #hasSelection + #label: 'Spread Vertical' + #value: #spreadSelectionVer + #activeHelpKey: #spreadSelectionVer + #enabled: #canMoveOrAlignSelection ) ) nil nil ) - - "Modified: / 27.1.1998 / 21:27:33 / cg" ! menuEdit @@ -1370,137 +1100,125 @@ #( #(#MenuItem - #'label:' 'Cut' - #'value:' #deleteSelection - #'activeHelpKey:' #editCut - #'enabled:' #hasSelection - #'shortcutKeyCharacter:' #Cut + #label: 'Undo' + #nameKey: #undo + #value: #undoLast + #activeHelpKey: #editUndo + #enabled: #hasUndoHistory + #shortcutKeyCharacter: #Cmdu + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Cut' + #value: #cutSelection + #activeHelpKey: #editCut + #enabled: #valueOfCanCut + #shortcutKeyCharacter: #Cut + ) + #(#MenuItem + #label: 'Copy' + #value: #copySelection + #activeHelpKey: #editCopy + #enabled: #valueOfCanCopy + #shortcutKeyCharacter: #Copy ) #(#MenuItem - #'label:' 'Copy' - #'value:' #copySelection - #'activeHelpKey:' #editCopy - #'enabled:' #hasSelection - #'shortcutKeyCharacter:' #Copy + #label: 'Paste' + #value: #pasteBuffer + #activeHelpKey: #pasteBuffer + #enabled: #valueOfCanPaste + #shortcutKeyCharacter: #Paste + ) + #(#MenuItem + #label: 'Delete' + #value: #deleteSelection + #enabled: #valueOfCanCut + #shortcutKeyCharacter: #Delete + ) + #(#MenuItem + #label: '-' ) #(#MenuItem - #'label:' 'Paste' - #'nameKey:' #paste - #'value:' #paste - #'activeHelpKey:' #editPaste - #'enabled:' #canPaste - #'submenu:' + #label: 'Paste With Layout' + #value: #pasteWithLayout + #activeHelpKey: #pasteWithLayout + #enabled: #canKeepLayoutInSelection + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Move' + #submenuChannel: #menuMove + ) + #(#MenuItem + #label: 'Dimension' + #enabled: #hasSelection + #submenu: #(#Menu #( #(#MenuItem - #'label:' 'Paste' - #'value:' #pasteBuffer - #'activeHelpKey:' #pasteBuffer - #'shortcutKeyCharacter:' #Paste + #label: 'Default Extent' + #value: #setToDefaultExtent + #activeHelpKey: #editDimensionDefaultExtent + #enabled: #canMoveOrAlignSelection + ) + #(#MenuItem + #label: 'Default Width' + #value: #setToDefaultWidth + #activeHelpKey: #editDimensionDefaultWidth + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' 'Keep Layout' - #'value:' #pasteWithLayout - #'activeHelpKey:' #pasteWithLayout - #'enabled:' #canKeepLayoutInSelection + #label: 'Default Height' + #value: #setToDefaultHeight + #activeHelpKey: #editDimensionDefaultHeight + #enabled: #canMoveOrAlignSelection ) - ) nil - nil - ) - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Undo' - #'nameKey:' #undo - #'value:' #undoLast - #'activeHelpKey:' #editUndo - #'enabled:' #hasUndoHistory - #'shortcutKeyCharacter:' #Cmdu - ) - #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Align' - #'submenuChannel:' #menuAlign - ) - #(#MenuItem - #'label:' 'Move' - #'submenuChannel:' #menuMove - ) - #(#MenuItem - #'label:' 'Dimension' - #'value:' #dimension - #'enabled:' #hasSelection - #'submenu:' - #(#Menu - - #( + #(#MenuItem + #label: '-' + ) #(#MenuItem - #'label:' 'Default Extent' - #'value:' #setToDefaultExtent - #'activeHelpKey:' #setToDefaultExtent - #'enabled:' #canMoveOrAlignSelection + #label: 'Copy Layout' + #value: #copyLayout + #activeHelpKey: #editDimensionCopyLayout + #enabled: #hasSingleSelection ) #(#MenuItem - #'label:' 'Default Width' - #'value:' #setToDefaultWidth - #'activeHelpKey:' #setToDefaultWidth - #'enabled:' #canMoveOrAlignSelection + #label: 'Copy Extent' + #value: #copyExtent + #activeHelpKey: #editDimensionCopyExtent + #enabled: #hasSingleSelection ) #(#MenuItem - #'label:' 'Default Height' - #'value:' #setToDefaultHeight - #'activeHelpKey:' #setToDefaultHeight - #'enabled:' #canMoveOrAlignSelection + #label: '-' ) #(#MenuItem - #'label:' '-' - ) - #(#MenuItem - #'label:' 'Copy Extent' - #'value:' #copyExtent - #'activeHelpKey:' #copyExtent - #'enabled:' #hasSingleSelection - ) - #(#MenuItem - #'label:' '-' + #label: 'Paste Layout' + #value: #pasteLayout + #activeHelpKey: #editDimensionPasteLayout + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' 'Paste Extent' - #'value:' #pasteExtent - #'activeHelpKey:' #pasteExtent - #'enabled:' #canMoveOrAlignSelection - ) - #(#MenuItem - #'label:' 'Paste Width' - #'value:' #pasteWidth - #'activeHelpKey:' #pasteWidth - #'enabled:' #canMoveOrAlignSelection + #label: 'Paste Extent' + #value: #pasteExtent + #activeHelpKey: #editDimensionPasteExtent + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' 'Paste Height' - #'value:' #pasteHeight - #'activeHelpKey:' #pasteHeight - #'enabled:' #canMoveOrAlignSelection - ) - #(#MenuItem - #'label:' '-' + #label: 'Paste Width' + #value: #pasteWidth + #activeHelpKey: #editDimensionPasteWidth + #enabled: #canMoveOrAlignSelection ) #(#MenuItem - #'label:' 'Copy Layout' - #'value:' #copyLayout - #'activeHelpKey:' #copyLayout - #'enabled:' #hasSingleSelection - ) - #(#MenuItem - #'label:' 'Paste Layout' - #'value:' #pasteLayout - #'activeHelpKey:' #pasteLayout - #'enabled:' #canMoveOrAlignSelection + #label: 'Paste Height' + #value: #pasteHeight + #activeHelpKey: #editDimensionPasteHeight + #enabled: #canMoveOrAlignSelection ) ) nil nil @@ -1530,32 +1248,32 @@ #( #(#MenuItem - #'label:' 'Move Up' - #'value:' #doStepUp - #'activeHelpKey:' #moveSelectionUp - #'enabled:' #canMoveOrAlignSelection - #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #upIcon 'Move Up') + #label: 'Up' + #value: #doStepUp + #activeHelpKey: #moveWidgetUp + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #ToolApplicationModel #upIcon 'Up') ) #(#MenuItem - #'label:' 'Move Down' - #'value:' #doStepDown - #'activeHelpKey:' #moveSelectionDown - #'enabled:' #canMoveOrAlignSelection - #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downIcon 'Move Down') + #label: 'Down' + #value: #doStepDown + #activeHelpKey: #moveWidgetDown + #enabled: #canMoveOrAlignSelection + #labelImage: #(#ResourceRetriever #ToolApplicationModel #downIcon 'Down') ) #(#MenuItem - #'label:' 'Move In' - #'value:' #doStepIn - #'activeHelpKey:' #moveSelectionRight - #'enabled:' #canMoveSelectionIntoContainer - #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downRightIcon 'Move In') + #label: 'Into' + #value: #doStepIn + #activeHelpKey: #moveWidgetInto + #enabled: #canMoveSelectionIntoContainer + #labelImage: #(#ResourceRetriever #ToolApplicationModel #downRightIcon 'Into') ) #(#MenuItem - #'label:' 'Move Out' - #'value:' #doStepOut - #'activeHelpKey:' #moveSelectionLeft - #'enabled:' #canMoveSelectionOutOfContainer - #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #leftDownIcon 'Move Out') + #label: 'Out' + #value: #doStepOut + #activeHelpKey: #moveWidgetOut + #enabled: #canMoveSelectionOutOfContainer + #labelImage: #(#ResourceRetriever #ToolApplicationModel #leftDownIcon 'Out') ) ) nil nil @@ -1581,132 +1299,186 @@ #( #(#MenuItem - #'label:' 'Start' - #'isButton:' true - #'value:' #doStartApplication - #'activeHelpKey:' #testStartApplication - #'labelImage:' #(#ResourceRetriever nil #startIcon) + #label: 'Start' + #isButton: true + #value: #doStartApplication + #activeHelpKey: #testStartApplication + #labelImage: #(#ResourceRetriever nil #startIcon) ) #(#MenuItem - #'label:' '' + #label: '' + ) + #(#MenuItem + #label: 'New' + #isButton: true + #value: #doNew + #activeHelpKey: #fileNew + #labelImage: #(#ResourceRetriever nil #newIcon) ) #(#MenuItem - #'label:' 'New' - #'isButton:' true - #'value:' #doNew - #'activeHelpKey:' #fileNew - #'labelImage:' #(#ResourceRetriever nil #newIcon) + #label: 'Load' + #isButton: true + #value: #doLoad + #activeHelpKey: #fileLoad + #labelImage: #(#ResourceRetriever nil #loadIcon) ) #(#MenuItem - #'label:' 'Load' - #'isButton:' true - #'value:' #doFromClass - #'activeHelpKey:' #fileLoad - #'labelImage:' #(#ResourceRetriever nil #loadIcon) + #label: 'Save' + #isButton: true + #value: #doSave + #activeHelpKey: #fileSave + #labelImage: #(#ResourceRetriever nil #saveIcon) + ) + #(#MenuItem + #label: '' + ) + #(#MenuItem + #label: 'Cut' + #isButton: true + #value: #cutSelection + #activeHelpKey: #editCut + #enabled: #valueOfCanCut + #labelImage: #(#ResourceRetriever nil #cutIcon) ) #(#MenuItem - #'label:' 'Save' - #'isButton:' true - #'value:' #doInstallSpec - #'activeHelpKey:' #fileSave - #'labelImage:' #(#ResourceRetriever nil #saveIcon) + #label: 'Copy' + #isButton: true + #value: #copySelection + #activeHelpKey: #editCopy + #enabled: #valueOfCanCopy + #labelImage: #(#ResourceRetriever nil #copyIcon) ) #(#MenuItem - #'label:' '' + #label: 'Paste' + #isButton: true + #value: #pasteBuffer + #activeHelpKey: #editPaste + #enabled: #valueOfCanPaste + #labelImage: #(#ResourceRetriever nil #pasteIcon) ) #(#MenuItem - #'label:' 'Move Up' - #'isButton:' true - #'value:' #doStepUp - #'activeHelpKey:' #moveSelectionUp - #'enabled:' #canChangeOrderInContainer - #'labelImage:' #(#ResourceRetriever nil #upIcon) + #label: 'Delete' + #isButton: true + #value: #deleteSelection + #activeHelpKey: #editDelete + #enabled: #valueOfCanCut + #labelImage: #(#ResourceRetriever nil #deleteIcon) + ) + #(#MenuItem + #label: '' ) #(#MenuItem - #'label:' 'Move Down' - #'isButton:' true - #'value:' #doStepDown - #'activeHelpKey:' #moveSelectionDown - #'enabled:' #canChangeOrderInContainer - #'labelImage:' #(#ResourceRetriever nil #downIcon) + #label: 'Move Up' + #isButton: true + #value: #doStepUp + #activeHelpKey: #moveWidgetUp + #enabled: #canChangeOrderInContainer + #labelImage: #(#ResourceRetriever nil #upIcon) ) #(#MenuItem - #'label:' 'Move In' - #'isButton:' true - #'value:' #doStepIn - #'activeHelpKey:' #moveSelectionRight - #'enabled:' #canMoveSelectionIntoContainer - #'labelImage:' #(#ResourceRetriever nil #downRightIcon) + #label: 'Move Down' + #isButton: true + #value: #doStepDown + #activeHelpKey: #moveWidgetDown + #enabled: #canChangeOrderInContainer + #labelImage: #(#ResourceRetriever nil #downIcon) ) #(#MenuItem - #'label:' 'Move Out' - #'isButton:' true - #'value:' #doStepOut - #'activeHelpKey:' #moveSelectionLeft - #'enabled:' #canMoveSelectionOutOfContainer - #'labelImage:' #(#ResourceRetriever nil #leftDownIcon) - ) - #(#MenuItem - #'label:' '' + #label: 'Move Into' + #isButton: true + #value: #doStepIn + #activeHelpKey: #moveWidgetInto + #enabled: #canMoveSelectionIntoContainer + #labelImage: #(#ResourceRetriever nil #downRightIcon) ) #(#MenuItem - #'label:' 'Align left' - #'isButton:' true - #'value:' #alignSelectionLeft - #'activeHelpKey:' #alignSelectionLeft - #'labelImage:' #(#ResourceRetriever nil #iconAlignL) + #label: 'Move Out' + #isButton: true + #value: #doStepOut + #activeHelpKey: #moveWidgetOut + #enabled: #canMoveSelectionOutOfContainer + #labelImage: #(#ResourceRetriever nil #leftDownIcon) ) #(#MenuItem - #'label:' 'Align right' - #'isButton:' true - #'value:' #alignSelectionRight - #'activeHelpKey:' #alignSelectionRight - #'labelImage:' #(#ResourceRetriever nil #iconAlignR) + #label: '' ) #(#MenuItem - #'label:' 'Align left & right' - #'isButton:' true - #'value:' #alignSelectionLeftAndRight - #'activeHelpKey:' #alignSelectionLeftAndRight - #'labelImage:' #(#ResourceRetriever nil #iconAlignLR) + #label: 'Canvas' + #activeHelpKey: #settingsCanvas + #indication: #painterShown ) #(#MenuItem - #'label:' 'Align top' - #'isButton:' true - #'value:' #alignSelectionTop - #'activeHelpKey:' #alignSelectionTop - #'labelImage:' #(#ResourceRetriever nil #iconAlignT) + #label: 'Gallery' + #activeHelpKey: #settingsGallery + #indication: #galleryShown ) + ) nil + nil + ) +! + +menuToolbar2 + "this window spec was automatically generated by the ST/X MenuEditor" + + "do not manually edit this - the builder may not be able to + handle the specification if its corrupted." + + " + MenuEditor new openOnClass:UIPainter andSelector:#menuToolbar2 + (Menu new fromLiteralArrayEncoding:(UIPainter menuToolbar2)) startUp + " + + + + ^ + + #(#Menu + + #( #(#MenuItem - #'label:' 'Align bottom' - #'isButton:' true - #'value:' #alignSelectionBottom - #'activeHelpKey:' #alignSelectionBottom - #'labelImage:' #(#ResourceRetriever nil #iconAlignB) + #label: 'Align Left' + #isButton: true + #value: #alignSelectionLeft + #activeHelpKey: #alignSelectionLeft + #labelImage: #(#ResourceRetriever nil #iconAlignL) ) #(#MenuItem - #'label:' 'Align top & bottom' - #'isButton:' true - #'value:' #alignSelectionTopAndBottom - #'activeHelpKey:' #alignSelectionTopAndBottom - #'labelImage:' #(#ResourceRetriever nil #iconAlignTB) + #label: 'Align Right' + #isButton: true + #value: #alignSelectionRight + #activeHelpKey: #alignSelectionRight + #labelImage: #(#ResourceRetriever nil #iconAlignR) ) #(#MenuItem - #'label:' '' + #label: 'Align Left & Right' + #isButton: true + #value: #alignSelectionLeftAndRight + #activeHelpKey: #alignSelectionLeftAndRight + #labelImage: #(#ResourceRetriever nil #iconAlignLR) + ) + #(#MenuItem + #label: '' ) #(#MenuItem - #'label:' 'Align centered horizontal' - #'isButton:' true - #'value:' #alignSelectionCenterHor - #'activeHelpKey:' #alignSelectionCenterHor - #'labelImage:' #(#ResourceRetriever nil #iconAlignCenterH) + #label: 'Align Top' + #isButton: true + #value: #alignSelectionTop + #activeHelpKey: #alignSelectionTop + #labelImage: #(#ResourceRetriever nil #iconAlignT) ) #(#MenuItem - #'label:' 'Align centered vertical' - #'isButton:' true - #'value:' #alignSelectionCenterVer - #'activeHelpKey:' #alignSelectionCenterVer - #'labelImage:' #(#ResourceRetriever nil #iconAlignCenterV) + #label: 'Align Bottom' + #isButton: true + #value: #alignSelectionBottom + #activeHelpKey: #alignSelectionBottom + #labelImage: #(#ResourceRetriever nil #iconAlignB) + ) + #(#MenuItem + #label: 'Align Top & Bottom' + #isButton: true + #value: #alignSelectionTopAndBottom + #activeHelpKey: #alignSelectionTopAndBottom + #labelImage: #(#ResourceRetriever nil #iconAlignTB) ) ) nil nil @@ -1725,31 +1497,8 @@ ^Icon constantNamed:#'UIPainter iconAlignB' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@@@@@@G@@@@@@@G@E@@@@@G@G@@@@@G@G@@@@@G@G@@@E@G@G@@@G@G@G@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@@@@@@@@@@'); colorMap:(((Array new:4) at:1 put:((Color black)); at:2 put:((Color white)); at:3 put:((Color red:0.0 green:0.0 blue:49.9962)); at:4 put:((Color grey:66.9978)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@G C@G @@G'' @G'' @G'' @G'' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' G'''' O??0O??0@@@@@@@C@@@@'); yourself); yourself]! - -iconAlignCenterH - "Generated by the Image Editor" - " - ImageEditor openOnClass:self andSelector:#iconAlignCenterH - " - - - - ^Icon - constantNamed:#'UIPainter iconAlignCenterH' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUUPUUUUUUUPUUUUUUUPV*****)PV*****)PUUUMUUUPUUT?UUUPUUS?5UU\UUO?=UUWUT???UUPUTUUUUUPUUUUUUUPV*****)PV*****)PUUUMUUUPUUT?UUUPUUS?5UUPUUO?=UUPUT???UUWUTUUUUUPUUUUUUUPUUUUUUUP'); colorMap:(((Array new:4) at:1 put:((Color white)); at:2 put:((Color black)); at:3 put:((Color red:0.0 green:0.0 blue:49.9962)); at:4 put:((Color grey:49.9962)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@BO??0O??0@G@@@O @@_0@@?8@A?<@A?<@@@@@O??0O??3@G@@@O @@_0@@?8@A?<@A?<@@@@@@@@@'); yourself); yourself]! - -iconAlignCenterV - "Generated by the Image Editor" - " - ImageEditor openOnClass:self andSelector:#iconAlignCenterV - " - - - - ^Icon - constantNamed:#'UIPainter iconAlignCenterV' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUUPUUUUUUUPUUV%UV%PUUV%UV%PUUV%UV%PTEV$EV%PT=V$=V%PT?V$?V%PT?6$?6%WT?>$?>%PT?>$?>%_T?6$?6%PT?V$?V%PT=V$=V%PT5V$5V%WUUV%UV%PUUV%UV%PUUV%UV%_UUV%UV%WUUV%UV%PUUUUUUUPUUUUUUUQ'); colorMap:(((Array new:4) at:1 put:((Color white)); at:2 put:((Color black)); at:3 put:((Color red:0.0 green:0.0 blue:49.9962)); at:4 put:((Color grey:49.9962)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@LA!!@LA @LA LM!! NM1 OM9 O-= O=? O=? O=? O-= OM9 NM1 DL!!#@LA @LA @LA @LA @@@C@@@@'); yourself); yourself]! + ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@@@@@@G@@@@@@@G@E@@@@@G@G@@@@@G@G@@@@@G@G@@@E@G@G@@@G@G@G@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@G C@G @@G'' @G'' @G'' @G'' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' G'''' O??0O??0@@@@@@@C@@@@') ; yourself); yourself] +! iconAlignL "Generated by the Image Editor" @@ -1761,7 +1510,8 @@ ^Icon constantNamed:#'UIPainter iconAlignL' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@@@@@(@@@@@@@(UUUP@I@(_??0@@@(@@@@@@@(@@@@@@@(@@@@@@@(@@@@@@@(UUUU@@@(_???@@@(@@@@@E@(@@@@@@@(@@@@@@@(@@@@@@@(UU@@@@@(_?@@@@@(@@@@@@@(@@@@@@@@@@@@@E@@@@@@@@'); colorMap:(((Array new:4) at:1 put:((Color black)); at:2 put:((Color white)); at:3 put:((Color red:0.0 green:0.0 blue:49.9977)); at:4 put:((Color grey:66.9978)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@@@G?>@G?>@G?>@G?>@F@@@F@@@G?? G?? G?? G?? F@@@F@@@G? @G? @G? @G? @F@@@@@@@@@@@'); yourself); yourself]! + ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@@@@@(@@@@@@@(UUUP@I@(_??0@@@(@@@@@@@(@@@@@@@(@@@@@@@(@@@@@@@(UUUU@@@(_???@@@(@@@@@E@(@@@@@@@(@@@@@@@(@@@@@@@(UU@@@@@(_?@@@@@(@@@@@@@(@@@@@@@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@@@G?>@G?>@G?>@G?>@F@@@F@@@G?? G?? G?? G?? F@@@F@@@G? @G? @G? @G? @F@@@@@@@@@@@') ; yourself); yourself] +! iconAlignLR "Generated by the Image Editor" @@ -1773,7 +1523,8 @@ ^Icon constantNamed:#'UIPainter iconAlignLR' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@B @@(@@@B @@(UUUR I@(_??2 @@(@@@B @@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??2 @@(@@@B E@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??B @@(@@@B @@(@@@B @@@@@@@@E@@@@@@@@'); colorMap:(((Array new:4) at:1 put:((Color black)); at:2 put:((Color white)); at:3 put:((Color red:0.0 green:0.0 blue:49.9977)); at:4 put:((Color grey:66.9978)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@A G?? G?? G?? G?? F@A F@A G?? G?? G?? G?? F@A F@A G?? G?? G?; G?? F@A @@@@@@@@'); yourself); yourself]! + ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@B @@(@@@B @@(UUUR I@(_??2 @@(@@@B @@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??2 @@(@@@B E@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??B @@(@@@B @@(@@@B @@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@A G?? G?? G?? G?? F@A F@A G?? G?? G?? G?? F@A F@A G?? G?? G?; G?? F@A @@@@@@@@') ; yourself); yourself] +! iconAlignR "Generated by the Image Editor" @@ -1785,7 +1536,8 @@ ^Icon constantNamed:#'UIPainter iconAlignR' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@B @@@@@@B @@@UUUR I@@_??2 @@@@@@B @@@@@@B @@@@@@B @@@@@@B @@EUUUR @@G???2 @@@@@@B E@@@@@B @@@@@@B @@@@@@B @@@@EUR @@@@G?2 @@@@@@B @@@@@@B @@@@@@@@E@@@@@@@@'); colorMap:(((Array new:4) at:1 put:((Color black)); at:2 put:((Color white)); at:3 put:((Color red:0.0 green:0.0 blue:49.9977)); at:4 put:((Color grey:66.9978)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@A A?? A?? A?? A?? @@A @@A G?? G?? G?? G?? @@A @@A @G? @G? @G? @G? @@A @@@@@@@@'); yourself); yourself]! + ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@B @@@@@@B @@@UUUR I@@_??2 @@@@@@B @@@@@@B @@@@@@B @@@@@@B @@EUUUR @@G???2 @@@@@@B E@@@@@B @@@@@@B @@@@@@B @@@@EUR @@@@G?2 @@@@@@B @@@@@@B @@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@A A?? A?? A?? A?? @@A @@A G?? G?? G?? G?? @@A @@A @G? @G? @G? @G? @@A @@@@@@@@') ; yourself); yourself] +! iconAlignT "Generated by the Image Editor" @@ -1797,7 +1549,8 @@ ^Icon constantNamed:#'UIPainter iconAlignT' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@G@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@@@@@@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'); colorMap:(((Array new:4) at:1 put:((Color black)); at:2 put:((Color white)); at:3 put:((Color red:0.0 green:0.0 blue:49.9962)); at:4 put:((Color grey:66.9978)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' @G'' @G'' @G'' @G'' @G @@G C@@@@@@@@@@@@'); yourself); yourself]! + ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@G@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@@@@@@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' @G'' @G'' @G'' @G'' @G @@G C@@@@@@@@@@@@') ; yourself); yourself] +! iconAlignTB "Generated by the Image Editor" @@ -1809,7 +1562,8 @@ ^Icon constantNamed:#'UIPainter iconAlignTB' - ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@G@G@G@G@@@G@G@G@@@G@G@G@@@G@G@G@H@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@@@G@G@D@@@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@H@@@@@@@@'); colorMap:(((Array new:4) at:1 put:((Color black)); at:2 put:((Color white)); at:3 put:((Color red:0.0 green:0.0 blue:49.9962)); at:4 put:((Color grey:66.9978)); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G''''!!G'''' G'''' G'''' G'''' G'''' G'''' G''''!!G''''!!G''& G'''' O??0O??2@@@@@@@@@@@@'); yourself); yourself]! ! + ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@G@G@G@G@@@G@G@G@@@G@G@G@@@G@G@G@H@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@@@G@G@D@@@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@H@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G''''!!G'''' G'''' G'''' G'''' G'''' G'''' G''''!!G''''!!G''& G'''' O??0O??2@@@@@@@@@@@@') ; yourself); yourself] +! ! !UIPainter methodsFor:'actions'! @@ -1985,7 +1739,7 @@ hasOneSelectionOtherThanCanvas "returns a value holder which is true in case that one component is selected other than the canvas. - " + " ^ builder booleanValueAspectFor:#hasOneSelectionOtherThanCanvas ! @@ -2119,7 +1873,7 @@ cls := self resolveName:specClass. cls isNil ifTrue:[ - ^ self information:'No application class defined yet!!' + ^ self warn:'No application class defined yet!!' ]. cls notNil ifTrue:[ @@ -2140,7 +1894,8 @@ editor := MenuEditor new. editor masterApplication:self. - editor useHelpDictionary:(self helpTool dictionary). + editor specClass: cls. + editor useHelpTool: self helpTool. editor openModalOnClass:cls andSelector:aspect. self helpTool updateList. @@ -2231,7 +1986,7 @@ cls := self resolveName:specClass. cls isNil ifTrue:[ - ^ self information:'no application class defined yet' + ^ self information:'No application class defined yet!!' ]. aspect := self specTool specification listSelector. editor := TabItemEditor new. @@ -2331,9 +2086,14 @@ ^specClass printString, ' >> ', specSelector ! -openTutorial - - self openTutorial: 'tools/uipainter/TOP.html' +openDocumentation + + self openHTMLDocument: 'tools/uipainter/TOP.html' +! + +openExamples + + self openHTMLDocument: 'tools/uipainter/Examples.html' ! showHelp:aHelpText for:view @@ -2368,11 +2128,11 @@ checkModified "check interface modification - " - self painter isModified + " + (self painter isModified or: [self helpTool isModified]) ifTrue: [ - ((YesNoBox title:'Interface was modified!!') + ((YesNoBox title:'Window Spec was modified!!') noText:'Cancel'; yesText:'Waste it and proceed'; showAtPointer; @@ -2410,6 +2170,26 @@ aView bePartner. ! +resourceMessage: aString + + aString notNil "and: [self askForModification])" + ifTrue: + [ + |msg cls sel| + msg := aString asCollectionOfWords. + (msg size == 2 and: + [(cls := self resolveName:(msg at:1)) notNil]) + ifTrue: + [ + specClass := cls name. + specSuperclass := cls superclass name. + specSelector := (msg at: 2) asSymbol. + ^true + ] + ]. + ^false +! + setClass:cls selector:selector "set the application class and the selector under which the window specification should be stored @@ -2561,7 +2341,7 @@ self isModified ifTrue:[ whatToDo := DialogBox - confirmWithCancel:'Accept change made in ' , tabSelection printString , ' section?' + confirmWithCancel:'Accept modifications in section ' , tabSelection printString , '?' labels:#('Cancel' 'Ignore' 'Accept') default:3. whatToDo isNil ifTrue:[^self]. @@ -2582,13 +2362,14 @@ treeSelection "called whenever the selection of the treeview changed " - |view list spec slices size property tabComponent| + |view list spec slices size property tabComponent canCutOrCopy canPaste clipboard sel| self isModified ifTrue:[ - (self confirm:'Accept change made in ' , tabSelection printString , ' section ?') ifTrue:[ + (self confirm:'Accept modifications in section ' , tabSelection printString asBoldText, '?') ifTrue:[ self accept ] ]. + self canMoveOrAlignSelection value:(treeView canMoveOrAlignSelection). self canChangeOrderInContainer value:(treeView canChangeOrderInContainer). self canMoveSelectionIntoContainer value:(treeView canMoveSelectionIntoContainer). @@ -2638,6 +2419,26 @@ self show:nil. ]. self modifiedChannel value:false. + + treeView notNil + ifTrue: + [ + canCutOrCopy := treeView selection size >= 1 and:[treeView selection first ~~ 1]. + clipboard := self getSelection. + + clipboard isCollection ifTrue:[clipboard notEmpty ifTrue:[sel := clipboard first]] + ifFalse:[sel := clipboard]. + + canPaste := (sel isKindOf:UISpecification) and: + [treeView selection size = 1 + and:[treeView selection first == 1 + or: [self canPasteInto: treeView selectedNode contents view]]] + ]. + + self valueOfCanCut value: canCutOrCopy. + self valueOfCanCopy value: canCutOrCopy. + self valueOfCanPaste value: canPaste + ! ! !UIPainter methodsFor:'startup / release'! @@ -2645,6 +2446,7 @@ closeRequest "close all windows open by builder " + self checkModified ifFalse:[^self]. treeView model removeDependent:self. @@ -2718,7 +2520,8 @@ treeView := TreeView new. painterView := StandardSystemView new. - painterView label:'unnamed canvas'. + painterView name: self class defaultNameOfCanvas. + painterView label: self class defaultNameOfCanvas. painterView extent:300@300. painter := UIPainterView in:painterView. @@ -2732,9 +2535,11 @@ transcript := (self builder componentAt:#Transcript) scrolledView. topView := self window. + topView label:'GUI Painter'. painterView openInGroup:(topView windowGroup). + painterView application:self. painterView open. @@ -2742,6 +2547,7 @@ selectionPanel := UISelectionPanel new. selectionPanel allButOpenInterface:#windowSpec. selectionPanel window openInGroup:(topView windowGroup). + selectionPanel openWindow. selectionPanel masterApplication:self. @@ -2759,13 +2565,6 @@ selectionPanel window icon:(Image fromFile:'bitmaps/UIPainter.xbm' resolution:100). ActiveHelp startFor:self. -! - -openNewWindowCanvas - "open new - " - self open. - ! @@ -2782,7 +2581,7 @@ |painter| aClass isNil ifTrue:[ - (self confirm:'nil class given to UIPainter (class was probably renamed ?)\\Open anyway (to create a new interface) ?' withCRs) + (self confirm:'No class given to the GUI Painter (class was probably renamed?)\\Open anyway (to create a new window spec) ?' withCRs) ifFalse:[^ nil]. ]. @@ -2793,40 +2592,33 @@ self setClass:aClass selector:aSelector. (aClass respondsTo:aSelector) ifTrue:[ painter setupFromSpec:(aClass perform:aSelector). + treeView selection: #(1). ] ] "Modified: / 25.10.1997 / 19:11:51 / cg" "Modified: / 5.2.1998 / 09:48:15 / stefan" +! + +postOpenWith: aBuilder + + super postOpenWith: aBuilder. + + treeView selection: (Array with: 1). + self treeSelection. + self tabSelection: 'Basics' + ! ! !UIPainter methodsFor:'user interactions'! -doBrowseAppClass - "open a browser on the class" - - |cls| - - self painter isModified ifTrue:[ - self warn:'The current interface has not yet been saved.\\The browser will show the code of the old interface.' withCRs. - ]. - cls := self resolveName:specClass. - - cls notNil ifTrue:[ - SystemBrowser openInClass:cls - ] ifFalse:[ - self information:'No class defined!!'. - ]. - -! - doBrowseAspectMethods "open a browser on the aspect methods" |cls methods| self painter isModified ifTrue:[ - self warn:'The current interface has not yet been saved.\\The browser may show the code of the old aspect methods.' withCRs. + self warn:'The current window spec has not yet been saved!!\\The System Browser may show the code of the old aspect methods.' withCRs. ]. cls := self resolveName:specClass. @@ -2844,15 +2636,22 @@ "Created: / 25.10.1997 / 19:07:55 / cg" ! -doFromClass - - self loadFromMessage: - (ResourceSelectionBrowser - request: 'Load Interface From Class' - onSuperclass: nil - andClass: specClass - andSelector: specSelector - withResourceTypes: #(canvas)) +doBrowseClass + "open a browser on the class" + + |cls| + + self painter isModified ifTrue:[ + self warn:'The current window spec has not yet been saved!!\\The System Browser will show the code of the old window spec.' withCRs. + ]. + cls := self resolveName:specClass. + + cls notNil ifTrue:[ + SystemBrowser openInClass:cls + ] ifFalse:[ + self information:'No class defined!!'. + ]. + ! doInstallAspects @@ -2900,47 +2699,49 @@ "Created: / 31.10.1997 / 17:37:54 / cg" ! -doInstallSpec - "install window specification - " - |code painter| - - self hasSpecClassAndSelector ifFalse:[ - self defineClassAndSelector - ]. - - self checkClassAndSelector ifFalse:[ - ^ self - ]. - - self isModified ifTrue:[ - (self confirm:'Accept change made in ' , tabSelection printString , ' section?') ifTrue:[ - self accept - ] ifFalse:[ - (self confirm:'Load old interface?') ifFalse:[ - ^ self +doLoad + + self loadFromMessage: + (ResourceSelectionBrowser + request: 'Load Window Spec From Class' + onSuperclass: nil + andClass: specClass + andSelector: specSelector + withResourceTypes: #(canvas)) +! + +doLoadSubspec + + |subSpecMessage| + (subSpecMessage := ResourceSelectionBrowser + request: 'Load Subspec From Class' + onSuperclass: nil + andClass: specClass + andSelector: specSelector + withResourceTypes: #(canvas)) notNil + ifTrue: + [ + |readStream aClass aSelector| + readStream := subSpecMessage readStream. + (aClass := Smalltalk at: (readStream upTo: $ ) asSymbol) notNil + ifTrue: + [ + aSelector := readStream upToEnd asSymbol. + (aClass name == specClass and: [aSelector == specSelector]) ifTrue: [^self warn: 'Current interface as subspec not allowed!!']. + (aClass respondsTo:aSelector) + ifTrue: + [ + self addWidgetOfSpec: (Array with: (UISubSpecification new majorKey: aClass name; minorKey: aSelector)) ] ] - ]. - - painter := self painter. - - painter className:specClass - superclassName:specSuperclass - selector:specSelector. - - code := painter generateWindowSpecMethodSource withCRs. - painter resetModification. - (ReadStream on:code) fileIn. - - self helpTool installHelpSpecInto:specClass + ] ! doNew "remove all components and associated resources " self painter isModified ifTrue:[ - (self confirm:'Edit a new interface without saving current?') ifFalse:[ + (self confirm:'Edit a new window spec without saving current?') ifFalse:[ ^ self ] ]. @@ -2953,7 +2754,7 @@ |painter view cls spec app| self painter isModified ifTrue:[ - (self confirm:'pick another interface without saving your modifications ?') ifFalse:[ + (self confirm:'Pick another window spec without saving your modifications?') ifFalse:[ ^ self ] ]. @@ -2979,40 +2780,106 @@ "Modified: / 1.11.1997 / 13:47:49 / cg" ! +doRedefineMethods + "redefine methods yes or no. If a method is defined in super class + should the message be reinstalled ? + " + ^ UIPainterView redefineMethods + + +! + +doRedefineMethods:aBool + "redefine methods yes or no. If a method is defined in super class + should the message be reinstalled ? + " + UIPainterView redefineMethods:aBool + + +! + +doSave + "install window spec + " + |code painter| + + self hasSpecClassAndSelector ifFalse:[ + self defineClassAndSelector + ]. + + (specClass notNil and: [(Smalltalk at: specClass asSymbol) isClass]) + ifFalse: + [ + ^nil + ]. + + self isModified ifTrue:[ + (self confirm:'Accept modifications in section ' , tabSelection printString , '?') ifTrue:[ + self accept + ] ifFalse:[ + (self confirm:'Load old window spec?') ifFalse:[ + ^ self + ] + ] + ]. + + painter := self painter. + + painter className:specClass + superclassName:specSuperclass + selector:specSelector. + + code := painter generateWindowSpecMethodSource withCRs. + painter resetModification. + (ReadStream on:code) fileIn. + + self helpTool installHelpSpecInto:specClass. + + self updateInfoLabel. + self painter resetModification. + + ((Smalltalk at: specClass asSymbol) class implements: specSelector) + ifTrue: + [ + self addToHistory: (specClass, ' ', specSelector) -> #loadFromMessage:. + ]. + + +! + +doSaveAs + "launch a dialog to define class, superclass and method" + + |resourceMessage| + + (resourceMessage := ResourceSelectionBrowser + request: 'Save In Class' + onSuperclass: #Object + andClass: specClass ? #ApplicationModel + andSelector: specSelector ? #windowSpec + withResourceTypes: #(canvas)) notNil + ifTrue: + [ + (self resourceMessage: resourceMessage) + ifTrue: + [ + self doSave. + ^true + ] + ] + +! + doStartApplication "start current edited application " |cls app infoMessage| - self isModified ifTrue:[ - (self confirm:'Accept change made in ' , tabSelection printString , ' section?') ifTrue:[ - self accept. - "/ "XXX must be fixed - canvas changes are not recorded in the history - "/ so isModified returns false here - "/ - "/ self painter isModified ifTrue:[ - "/ - (self confirm:'Reinstall the new interface?' withCRs) ifTrue:[ - self doInstallSpec - ] - "/ ]. - ] - ]. - - (specClass notNil and:[specSelector size >= 2]) ifTrue:[ - "/ box suppressed, if no-class box is coming anyway ... - self painter isModified ifTrue:[ - (self confirm:'The current interface has not yet been reinstalled!!\\Start anyway (based upon the previous interface)?' withCRs) ifFalse:[ - ^ self - ] - ]. - ]. - (specClass isNil or:[specSelector size < 2]) ifTrue:[ self painter isModified ifTrue:[ - infoMessage := 'Class and selector must be defined,\and the interface must be saved first !!' withCRs. + infoMessage := 'Class and selector must be defined,\and the window spec must be saved first!!' withCRs. ] ifFalse:[ - infoMessage := 'No class and selector defined !!'. + infoMessage := 'No class and selector defined!!'. ] ] ifFalse:[ cls := self resolveName:specClass. @@ -3023,7 +2890,7 @@ (cls respondsTo:specSelector) ifFalse:[ infoMessage := ('No method for: #' , specSelector , ' in ' , cls name - , '\\(did you install the interface?)') withCRs. + , '\\(did you save the window spec?)') withCRs. ] ] ]. @@ -3031,13 +2898,31 @@ infoMessage notNil ifTrue:[ ^ self information:infoMessage ]. - app := cls new. - (app respondsTo:#openInterface:) ifFalse:[ + + self isModified ifTrue:[ + (self confirm:'Accept modifications in section ' , tabSelection printString asBoldText, '?') ifTrue:[ + self accept. + "/ "XXX must be fixed - canvas changes are not recorded in the history + "/ so isModified returns false here + "/ + "/ self painter isModified ifTrue:[ + "/ + (self confirm:'Save the new window spec?' withCRs) ifTrue:[ + self doSave + ] + ] + ]. + + self painter isModified ifTrue:[ + (self confirm:'The current window spec has not yet been saved!!\\Start anyway (based upon the previous window spec)?' withCRs) ifFalse:[ + ^ self + ] + ]. + + ((app := cls new) respondsTo:#openInterface:) ifFalse:[ ^ self warn:('The application does not respond to the ''openInterface:'' message.\\(maybe its supposed to be used as subApplication/subCanvas)') withCRs. ]. app openInterface:specSelector - - "Modified: / 5.3.1998 / 03:25:36 / cg" ! doWindowSpec @@ -3070,34 +2955,7 @@ ifTrue: [ self painter setupFromSpec:(aClass perform:aSelector). - ] - ] - ] - -! - -loadSubspec - - |subSpecMessage| - (subSpecMessage := ResourceSelectionBrowser - request: 'Load Subspec From Class' - onSuperclass: nil - andClass: specClass - andSelector: specSelector - withResourceTypes: #(canvas)) notNil - ifTrue: - [ - |readStream aClass aSelector| - readStream := subSpecMessage readStream. - (aClass := Smalltalk at: (readStream upTo: $ ) asSymbol) notNil - ifTrue: - [ - aSelector := readStream upToEnd asSymbol. - (aClass name == specClass and: [aSelector == specSelector]) ifTrue: [^self warn: 'Current interface as subspec not allowed!!']. - (aClass respondsTo:aSelector) - ifTrue: - [ - self addWidgetOfSpec: (Array with: (UISubSpecification new majorKey: aClass name; minorKey: aSelector)) + treeView selection: #(1). ] ] ] @@ -3132,7 +2990,7 @@ ^ false. ]. cls isBehavior ifFalse:[ - self warn:'A global named ' , specClass , ' exists, but is no class.'. + self warn:'A global named ' , specClass , ' exists, but it is no class.'. ^ false. ]. @@ -3204,6 +3062,7 @@ ] doWhile:[again]. self specClass:specClass. + self helpTool isModified: true ! gridMenu @@ -3270,14 +3129,6 @@ treeView doStepOver:-1 ! ! -!UIPainter::TreeView class methodsFor:'constants'! - -defaultNameOfCanvas - "returns the default name (id) of the application - " - ^ 'WindowSpec' -! ! - !UIPainter::TreeView class methodsFor:'documentation'! documentation @@ -3314,11 +3165,10 @@ props := UIPainterView::ViewProperty new. props view:aCanvas. - model root:(TreeItem name:(self class defaultNameOfCanvas asBoldText) contents:props). + model root:(TreeItem name: UIPainter defaultNameOfCanvas asBoldText contents:props). model root expand. self enableChannel:(aCanvas enableChannel). - "Modified: / 27.2.1998 / 16:10:03 / cg" ! canvasSpec @@ -3329,7 +3179,6 @@ spec := WindowSpec new. spec fromView:(self canvas topView) callBack:nil. - windowSpec notNil ifTrue:[ spec copyValuesFromSpec:windowSpec ]. @@ -3423,7 +3272,7 @@ self canvas subViews copy do:[:aView| (aView isKindOf:InputView) ifFalse:[aView destroy] ]. - model root name: self class defaultNameOfCanvas asBoldText. + model root name: UIPainter defaultNameOfCanvas asBoldText. model root children:(OrderedCollection new). model recomputeList. self selection:nil. @@ -3459,7 +3308,8 @@ windowSpec notNil ifTrue:[ winSpec := fullSpec window. - winSpec copyValuesFromSpec:windowSpec + winSpec copyValuesFromSpec:windowSpec. + winSpec name: winSpec label. ]. ^ fullSpec literalArrayEncoding. @@ -3468,7 +3318,7 @@ setAttributesFromWindowSpec:aWindowSpec "set windowSpec from argument a WindowSpec - " + " windowSpec := WindowSpec new copyValuesFromSpec:aWindowSpec. self canvasNameChanged:aWindowSpec name. @@ -3587,11 +3437,9 @@ and:[(self propertyDetect:[:p| p name = name]) isNil and:[node name ~= name]]] ) ifTrue:[ - node name: (name asBoldText , ': [', self class defaultNameOfCanvas , ']'). - self redrawLine:1. + node name: name asBoldText. + node changed. ]. - - "Modified: / 27.2.1998 / 16:13:31 / cg" ! layoutChanged @@ -3711,7 +3559,6 @@ initialize "initialization; set multiple select and model " - super initialize. self multipleSelectOk:true. @@ -3723,34 +3570,37 @@ [:aNode| |specClass| (specClass := aNode contents spec) isNil - ifTrue: [WindowSpec icon] - ifFalse: [specClass class icon] + ifTrue: + [ + WindowSpec icon + ] + ifFalse: + [ + ((selection size > 1) and: [(listOfNodes at:selection first) == aNode]) + ifTrue: + [ + specClass class icon copyWithColorMapProcessing:[:clr | clr blendWith:Color red] + ] + ifFalse: + [ + specClass class icon + ] + ] ]. - self model - labelAction: - [:aNode| - |spec| - spec := aNode contents spec. - spec name asBoldText , ': [', spec viewClass name , ']' - ] - - "Modified: / 27.2.1998 / 16:12:37 / cg" + self model labelAction: + [:aNode| + |spec| + (spec := aNode contents spec) notNil + ifTrue: [self nameForSpecInList:spec] + ifFalse: [aNode name] + ] ! ! !UIPainter::TreeView methodsFor:'private'! -figureFor:aNode - "returns image for an spec item" - - |cls icon| - - cls := aNode contents spec class. - aNode contents spec isNil ifTrue: [cls := WindowSpec]. - icon := cls icon. - icon extent y > 16 ifTrue: [icon := icon magnifiedBy: 16/icon extent y]. - icon device ~~ device ifTrue: [icon := icon onDevice: device]. - ^icon +nameForSpecInList:aSpec + ^ aSpec name asBoldText, ': [', aSpec viewClass name , ']' ! selectionChangedFrom:oldSelection @@ -3772,13 +3622,16 @@ ]. self canvas updateSelectionFromModel:sel ]. - - size ~~ 0 ifTrue:[ - sel := selection first. - - (listOfNodes at:sel) == lastDrawnMaster ifFalse:[ - self redrawLine:sel - ] + size = 1 ifTrue:[ + oldSelection size = 2 ifTrue: [ + self redrawLine: (lastDrawnMaster := selection first)] + ]. + size > 1 ifTrue:[ + selection first ~~ lastDrawnMaster ifTrue: [ + self redrawLine: (lastDrawnMaster := selection first)] + ] + ifFalse: [ + lastDrawnMaster := nil ] ! !