# HG changeset patch # User Claus Gittinger # Date 895613795 -7200 # Node ID dac49512301a640834d32e733440f859678d08ff # Parent 12090f74be53dbfdbd50711aa8e6a04f94302970 language strings, help spec & initial handle position of panel diff -r 12090f74be53 -r dac49512301a DataSetBuilder.st --- a/DataSetBuilder.st Mon May 18 13:53:53 1998 +0200 +++ b/DataSetBuilder.st Tue May 19 23:36:35 1998 +0200 @@ -74,12 +74,14 @@ "get the aspects for the attributes of the table columns" ^#( + id label canSelect choices editorType formatString labelIsImage + translateLabel size type width @@ -107,8 +109,7 @@ columnAlignment ) - - + "Modified: / 19.5.1998 / 21:27:06 / cg" ! ! !DataSetBuilder class methodsFor:'help specs'! @@ -132,7 +133,7 @@ 'Adds a new column.' #basicsEditor -'Default widget type or a selector returning an instance of an user defined widget opened in the cell.' +'Default widget type or a selector returning an instance of a user defined widget opened in the cell.' #basicsFont 'Sets the font of the label text.' @@ -141,7 +142,7 @@ 'Aligns the label text to the left, right, or centered in the cell.' #basicsLabel -'The label of the column or a selector returning a string an image.' +'The label of the column or a selector returning a string or an image.' #basicsLabelIsImage 'Turns on/off image behavior of the label string; i.e. it is used as selector returning an image.' @@ -149,6 +150,9 @@ #basicsRenderer 'Specifies displaying cell as Text, CheckToggle, ComboBox, ComboList or as a RowSelector.' +#browseRowClass +'Open a browser on the row class' + #colorsBackgroundCellColor 'Sets the background color of the column.' @@ -167,6 +171,18 @@ #colorsForegroundSelector 'Selector returning the foreground color for a cell (optional).' +#fileNew +'Discard changes and continue with a new, empty column description' + +#fileLoad +'Specify class/selector and edit that column description' + +#fileSave +'Install the column description' + +#fileSaveAs +'Specify class/selector and install the column description' + #formatInputType 'A type converter symbol used by the input field.' @@ -191,6 +207,15 @@ #frameShowRowSeparator 'Turns on/off displaying row separators.' +#generate +'Code generation.' + +#generateCode +'Generate code and install in the selected class/selector.' + +#pickColumns +'Select an open view and readOut the column specification from it.' + #selectionCellClickSelector 'A selector called if cell was selected.' @@ -225,6 +250,8 @@ 'A selector used to set the value of a cell.' ) + + "Modified: / 19.5.1998 / 23:20:51 / cg" ! ! !DataSetBuilder class methodsFor:'interface specs'! @@ -249,11 +276,11 @@ #window: #(#WindowSpec #name: 'DataSet Basic' - #layout: #(#LayoutFrame 8 0 124 0 296 0 379 0) + #layout: #(#LayoutFrame 216 0 173 0 538 0 499 0) #label: 'DataSet Basic' #min: #(#Point 10 10) #max: #(#Point 1280 1024) - #bounds: #(#Rectangle 8 124 297 380) + #bounds: #(#Rectangle 216 173 539 500) #usePreferredExtent: false ) #component: @@ -262,48 +289,40 @@ #( #(#FramedBoxSpec #name: 'framedBox1' - #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 145 0) + #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 164 0) #component: #(#SpecCollection #collection: #( #(#LabelSpec #name: 'label1' - #layout: #(#AlignmentOrigin 107 0 32 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 52 0 1 0.5) #label: 'Label:' #resizeForLabel: true ) #(#InputFieldSpec #name: 'labelField' - #layout: #(#LayoutFrame 110 0 21 0 15 1.0 43 0) + #layout: #(#LayoutFrame 110 0 41 0 15 1.0 63 0) #activeHelpKey: #basicsLabel #tabable: true #model: #label ) - #(#CheckBoxSpec - #name: 'labelIsImage' - #layout: #(#LayoutOrigin 107 0 103 0) - #activeHelpKey: #basicsLabelIsImage - #tabable: true - #model: #labelIsImage - #label: 'Label Is Image' - ) #(#LabelSpec #name: 'LabelFont' - #layout: #(#AlignmentOrigin 107 0 61 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 81 0 1 0.5) #label: 'Font::' #adjust: #left #resizeForLabel: true ) #(#FontMenuSpec #name: 'fontMenu' - #layout: #(#LayoutFrame 110 0 49 0 13 1.0 71 0) + #layout: #(#LayoutFrame 110 0 69 0 13 1.0 91 0) #activeHelpKey: #labelFont #model: #style ) #(#PopUpListSpec #name: 'Alignment' - #layout: #(#LayoutFrame 110 0 78 0 15 1.0 100 0) + #layout: #(#LayoutFrame 110 0 98 0 15 1.0 120 0) #activeHelpKey: #basicsJustification #label: 'Alignment' #model: #labelAlignment @@ -315,11 +334,40 @@ ) #(#LabelSpec #name: 'JustificationLabel' - #layout: #(#AlignmentOrigin 107 0 89 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 109 0 1 0.5) #label: 'Justification:' #adjust: #left #resizeForLabel: true ) + #(#CheckBoxSpec + #name: 'labelIsImage' + #layout: #(#LayoutOrigin 10 0 123 0) + #activeHelpKey: #basicsLabelIsImage + #tabable: true + #model: #labelIsImage + #label: 'Label Is Image' + ) + #(#CheckBoxSpec + #name: 'CheckBox2' + #layout: #(#LayoutOrigin 155 0 123 0) + #activeHelpKey: #basicsLabelIsImage + #tabable: true + #model: #translateLabel + #label: 'Translate Label' + ) + #(#LabelSpec + #name: 'idLabel' + #layout: #(#AlignmentOrigin 107 0 27 0 1 0.5) + #label: 'ID:' + #resizeForLabel: true + ) + #(#InputFieldSpec + #name: 'idField' + #layout: #(#LayoutFrame 110 0 13 0 15 1.0 35 0) + #activeHelpKey: #basicsLabel + #tabable: true + #model: #id + ) ) ) #label: 'Header:' @@ -327,7 +375,7 @@ ) #(#FramedBoxSpec #name: 'typesFrame' - #layout: #(#LayoutFrame 0 0.0 145 0 0 1.0 253 0) + #layout: #(#LayoutFrame 0 0.0 178 0 0 1.0 286 0) #component: #(#SpecCollection #collection: @@ -390,6 +438,8 @@ ) ) ) + + "Modified: / 19.5.1998 / 22:33:10 / cg" ! colorsEditSpec @@ -632,11 +682,11 @@ #window: #(#WindowSpec #name: 'DataSet Details' - #layout: #(#LayoutFrame 329 0 353 0 716 0 644 0) + #layout: #(#LayoutFrame 216 0 173 0 603 0 464 0) #label: 'DataSet Details' #min: #(#Point 10 10) #max: #(#Point 1280 1024) - #bounds: #(#Rectangle 329 353 717 645) + #bounds: #(#Rectangle 216 173 604 465) #usePreferredExtent: false ) #component: @@ -645,20 +695,20 @@ #( #(#FramedBoxSpec #name: 'framedBox1' - #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 114 0) + #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 127 0) #component: #(#SpecCollection #collection: #( #(#LabelSpec #name: 'typeLabel' - #layout: #(#AlignmentOrigin 107 0 29 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 42 0 1 0.5) #label: 'Input Type:' #resizeForLabel: true ) #(#ComboListSpec #name: 'typeCombo' - #layout: #(#LayoutFrame 110 0 18 0 15 1.0 40 0) + #layout: #(#LayoutFrame 110 0 31 0 15 1.0 53 0) #activeHelpKey: #formatInputType #tabable: true #model: #type @@ -671,13 +721,13 @@ ) #(#LabelSpec #name: 'sizeLabel' - #layout: #(#AlignmentOrigin 107 0 55 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 68 0 1 0.5) #label: 'Max Size:' #resizeForLabel: true ) #(#InputFieldSpec #name: 'sizeField' - #layout: #(#LayoutFrame 110 0 44 0 15 1.0 66 0) + #layout: #(#LayoutFrame 110 0 57 0 15 1.0 79 0) #activeHelpKey: #formatMaxSize #tabable: true #model: #size @@ -685,13 +735,13 @@ ) #(#LabelSpec #name: 'formatLabel' - #layout: #(#AlignmentOrigin 107 0 80 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 93 0 1 0.5) #label: 'Text Format:' #resizeForLabel: true ) #(#InputFieldSpec #name: 'formatField' - #layout: #(#LayoutFrame 110 0 69 0 15 1.0 91 0) + #layout: #(#LayoutFrame 110 0 82 0 15 1.0 104 0) #activeHelpKey: #formatTextFormat #tabable: true #model: #formatString @@ -704,6 +754,8 @@ ) ) ) + + "Modified: / 19.5.1998 / 22:37:34 / cg" ! frameEditSpec @@ -726,11 +778,11 @@ #window: #(#WindowSpec #name: 'DataSet Dimension' - #layout: #(#LayoutFrame 512 0 370 0 802 0 583 0) + #layout: #(#LayoutFrame 218 0 175 0 508 0 418 0) #label: 'DataSet Dimension' #min: #(#Point 10 10) #max: #(#Point 1280 1024) - #bounds: #(#Rectangle 512 370 803 584) + #bounds: #(#Rectangle 218 175 509 419) #usePreferredExtent: false ) #component: @@ -739,14 +791,14 @@ #( #(#FramedBoxSpec #name: 'separatorBox' - #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 86 0) + #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 95 0) #component: #(#SpecCollection #collection: #( #(#CheckBoxSpec #name: 'showRowSeparator' - #layout: #(#LayoutFrame 18 0 19 0 194 0 42 0) + #layout: #(#LayoutFrame 18 0 27 0 194 0 50 0) #activeHelpKey: #frameShowRowSeparator #tabable: true #model: #showRowSeparator @@ -754,7 +806,7 @@ ) #(#CheckBoxSpec #name: 'showColSeparator' - #layout: #(#LayoutFrame 18 0 45 0 194 0 68 0) + #layout: #(#LayoutFrame 18 0 53 0 194 0 76 0) #activeHelpKey: #frameShowColumnSeparator #tabable: true #model: #showColSeparator @@ -767,21 +819,21 @@ ) #(#FramedBoxSpec #name: 'framedBox1' - #layout: #(#LayoutFrame 0 0.0 86 0 0 1.0 198 0) + #layout: #(#LayoutFrame 0 0.0 108 0 0 1.0 225 0) #component: #(#SpecCollection #collection: #( #(#LabelSpec #name: 'widthLabel' - #layout: #(#AlignmentOrigin 107 0.0 28 0 1 0.5) + #layout: #(#AlignmentOrigin 127 0.0 35 0 1 0.5) #label: 'Column Width:' #adjust: #right #resizeForLabel: true ) #(#InputFieldSpec #name: 'widthField' - #layout: #(#LayoutFrame 110 0 17 0 15 1.0 39 0) + #layout: #(#LayoutFrame 130 0 24 0 15 1.0 46 0) #activeHelpKey: #frameColumnWidth #tabable: true #model: #width @@ -789,14 +841,14 @@ ) #(#LabelSpec #name: 'minWidthLabel' - #layout: #(#AlignmentOrigin 107 0.0 53 0 1 0.5) + #layout: #(#AlignmentOrigin 127 0.0 63 0 1 0.5) #label: 'Min Width:' #adjust: #right #resizeForLabel: true ) #(#InputFieldSpec #name: 'minWidthField' - #layout: #(#LayoutFrame 110 0 42 0 15 1.0 64 0) + #layout: #(#LayoutFrame 130 0 52 0 15 1.0 74 0) #activeHelpKey: #frameMinWidth #tabable: true #model: #minWidth @@ -804,14 +856,14 @@ ) #(#LabelSpec #name: 'heightLabel' - #layout: #(#AlignmentOrigin 107 0.0 84 0 1 0.5) + #layout: #(#AlignmentOrigin 127 0.0 91 0 1 0.5) #label: 'Row Height:' #adjust: #right #resizeForLabel: true ) #(#InputFieldSpec #name: 'heightField' - #layout: #(#LayoutFrame 110 0 73 0 15 1.0 95 0) + #layout: #(#LayoutFrame 130 0 80 0 15 1.0 102 0) #activeHelpKey: #frameRowHeight #tabable: true #model: #height @@ -825,6 +877,8 @@ ) ) ) + + "Modified: / 19.5.1998 / 22:39:23 / cg" ! selectionEditSpec @@ -847,11 +901,11 @@ #window: #(#WindowSpec #name: 'DataSet Basic' - #layout: #(#LayoutFrame 533 0 372 0 821 0 627 0) + #layout: #(#LayoutFrame 218 0 175 0 506 0 430 0) #label: 'DataSet Basic' #min: #(#Point 10 10) #max: #(#Point 1280 1024) - #bounds: #(#Rectangle 533 372 822 628) + #bounds: #(#Rectangle 218 175 507 431) #usePreferredExtent: false ) #component: @@ -860,21 +914,21 @@ #( #(#FramedBoxSpec #name: 'framedBox1' - #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 85 0) + #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 87 0) #component: #(#SpecCollection #collection: #( #(#LabelSpec #name: 'ActionLabel' - #layout: #(#AlignmentOrigin 107 0 28 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 33 0 1 0.5) #label: 'Selector:' #adjust: #left #resizeForLabel: true ) #(#InputFieldSpec #name: 'ActionSelector' - #layout: #(#LayoutFrame 110 0 17 0 15 1.0 39 0) + #layout: #(#LayoutFrame 110 0 22 0 15 1.0 44 0) #activeHelpKey: #selectionLabelClickSelector #tabable: true #model: #labelActionSelector @@ -882,14 +936,14 @@ ) #(#LabelSpec #name: 'ArgumentLabel' - #layout: #(#AlignmentOrigin 107 0 53 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 58 0 1 0.5) #label: 'Argument:' #adjust: #left #resizeForLabel: true ) #(#InputFieldSpec #name: 'ArgumentValue' - #layout: #(#LayoutFrame 110 0 42 0 15 1.0 64 0) + #layout: #(#LayoutFrame 110 0 47 0 15 1.0 69 0) #activeHelpKey: #selectionLabelSelectorArgument #tabable: true #model: #labelActionArgument @@ -902,14 +956,14 @@ ) #(#FramedBoxSpec #name: 'framedBox2' - #layout: #(#LayoutFrame 0 0.0 85 0 0 1.0 166 0) + #layout: #(#LayoutFrame 0 0.0 95 0 0 1.0 178 0) #component: #(#SpecCollection #collection: #( #(#CheckBoxSpec #name: 'canSelect' - #layout: #(#Point 107 17) + #layout: #(#Point 107 21) #activeHelpKey: #selectionIsSelectable #tabable: true #model: #canSelect @@ -917,14 +971,14 @@ ) #(#LabelSpec #name: 'selectorLabel' - #layout: #(#AlignmentOrigin 107 0 53 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 57 0 1 0.5) #label: 'Selector:' #adjust: #right #resizeForLabel: true ) #(#InputFieldSpec #name: 'selectSelector' - #layout: #(#LayoutFrame 110 0 42 0 15 1.0 64 0) + #layout: #(#LayoutFrame 110 0 46 0 15 1.0 68 0) #activeHelpKey: #selectionCellClickSelector #tabable: true #model: #selectSelector @@ -937,21 +991,21 @@ ) #(#FramedBoxSpec #name: 'framedBox3' - #layout: #(#LayoutFrame 0 0.0 166 0 0 1.0 220 0) + #layout: #(#LayoutFrame 0 0.0 186 0 0 1.0 243 0) #component: #(#SpecCollection #collection: #( #(#LabelSpec #name: 'doubleLabel' - #layout: #(#AlignmentOrigin 107 0 27 0 1 0.5) + #layout: #(#AlignmentOrigin 107 0 32 0 1 0.5) #label: 'Selector:' #adjust: #right #resizeForLabel: true ) #(#InputFieldSpec #name: 'doubleClicked' - #layout: #(#LayoutFrame 110 0 16 0 15 1.0 38 0) + #layout: #(#LayoutFrame 110 0 21 0 15 1.0 43 0) #activeHelpKey: #selectionCellDoubleClickSelector #tabable: true #model: #doubleClickedSelector @@ -965,6 +1019,8 @@ ) ) ) + + "Modified: / 19.5.1998 / 22:36:08 / cg" ! slices @@ -998,11 +1054,11 @@ #window: #(#WindowSpec #name: 'DataSet Basic' - #layout: #(#LayoutFrame 501 0 386 0 796 0 691 0) + #layout: #(#LayoutFrame 216 0 173 0 511 0 478 0) #label: 'DataSet Basic' #min: #(#Point 10 10) #max: #(#Point 1280 1024) - #bounds: #(#Rectangle 501 386 797 692) + #bounds: #(#Rectangle 216 173 512 479) #usePreferredExtent: false ) #component: @@ -1068,7 +1124,7 @@ ) #(#FramedBoxSpec #name: 'menusBox' - #layout: #(#LayoutFrame 0 0.0 110 0 0 1.0 167 0) + #layout: #(#LayoutFrame 0 0.0 119 0 0 1.0 176 0) #component: #(#SpecCollection #collection: @@ -1095,7 +1151,7 @@ ) #(#FramedBoxSpec #name: 'framedBox1' - #layout: #(#LayoutFrame 1 0.0 167 0 1 1.0 225 0) + #layout: #(#LayoutFrame 1 0.0 191 0 1 1.0 249 0) #component: #(#SpecCollection #collection: @@ -1124,6 +1180,8 @@ ) ) ) + + "Modified: / 19.5.1998 / 22:33:53 / cg" ! windowSpec @@ -1147,11 +1205,11 @@ #window: #(#WindowSpec #name: 'Data Set Builder' - #layout: #(#LayoutFrame 314 0 309 0 853 0 808 0) + #layout: #(#LayoutFrame 28 0 46 0 660 0 612 0) #label: 'Data Set Builder' #min: #(#Point 10 10) #max: #(#Point 1152 900) - #bounds: #(#Rectangle 314 309 854 809) + #bounds: #(#Rectangle 28 46 661 613) #menu: #menu #usePreferredExtent: false ) @@ -1226,14 +1284,14 @@ #( #(#TabViewSpec #name: 'tabView' - #layout: #(#LayoutFrame 1 0.0 0 0 0 1.0 35 0) + #layout: #(#LayoutFrame 1 0.0 0 0 0 1.0 50 0) #model: #tabModel #menu: #tabList #useIndex: true ) #(#SubCanvasSpec #name: 'specCanvas' - #layout: #(#LayoutFrame 1 0.0 35 0.0 0 1.0 -30 1.0) + #layout: #(#LayoutFrame 1 0.0 50 0.0 0 1.0 -30 1.0) #specHolder: #specChannel ) #(#UISubSpecification @@ -1249,7 +1307,7 @@ ) ) #level: -1 - #handles: #(#Any 0.311111 1.0) + #handles: #(#Any 0.235387 1.0) ) ) ) @@ -1264,6 +1322,8 @@ ) ) ) + + "Modified: / 19.5.1998 / 23:35:33 / cg" ! ! !DataSetBuilder class methodsFor:'menu specs'! @@ -1289,12 +1349,14 @@ #( #(#MenuItem #label: 'About' + #translateLabel: true #accessCharacterPosition: 1 #labelImage: #(#ResourceRetriever nil #menuIcon) #submenuChannel: #menuAbout ) #(#MenuItem #label: 'File' + #translateLabel: true #activeHelpKey: #file #submenu: #(#Menu @@ -1302,6 +1364,7 @@ #( #(#MenuItem #label: 'New' + #translateLabel: true #value: #doNew #activeHelpKey: #fileNew ) @@ -1319,11 +1382,13 @@ ) #(#MenuItem #label: 'Save' + #translateLabel: true #value: #doSave #activeHelpKey: #fileSave ) #(#MenuItem #label: 'Save As...' + #translateLabel: true #value: #doSaveAs #activeHelpKey: #fileSaveAs ) @@ -1332,13 +1397,16 @@ ) #(#MenuItem #label: 'Pick Columns...' + #translateLabel: true #value: #doPickColumns + #activeHelpKey: #pickColumns ) #(#MenuItem #label: '-' ) #(#MenuItem #label: 'Browse Class' + #translateLabel: true #value: #doBrowseClass #activeHelpKey: #fileBrowseClass ) @@ -1357,21 +1425,24 @@ ) #(#MenuItem #label: 'Edit' + #translateLabel: true #activeHelpKey: #edit #submenuChannel: #menuEdit ) #(#MenuItem #label: 'Add' + #translateLabel: true #submenu: #(#Menu #( #(#MenuItem #label: 'Column' + #translateLabel: true #value: #doCreateColumn #activeHelpKey: #addColumn #enabled: #columnIsNotEditing - #labelImage: #(#ResourceRetriever nil #newColumnIcon) + #labelImage: #(#ResourceRetriever nil #newColumnIcon 'Column') ) ) nil nil @@ -1379,26 +1450,32 @@ ) #(#MenuItem #label: 'Generate' - #activeHelpKey: #file + #translateLabel: true + #activeHelpKey: #generate #submenu: #(#Menu #( #(#MenuItem #label: 'Define Row Class...' + #translateLabel: true #value: #doDefineRowClass #activeHelpKey: #fileDefineClass ) #(#MenuItem #label: 'Browse Row Class' + #translateLabel: true #value: #doBrowseRowClass + #activeHelpKey: #browseRowClass ) #(#MenuItem #label: '-' ) #(#MenuItem #label: 'Generate Code' + #translateLabel: true #value: #doGenerateCode + #activeHelpKey: #generateCode ) ) nil nil @@ -1406,12 +1483,15 @@ ) #(#MenuItem #label: 'Settings' + #translateLabel: true + #activeHelpKey: #settings #submenu: #(#Menu #( #(#MenuItem #label: 'Fonts' + #translateLabel: true #submenuChannel: #menuFont ) ) nil @@ -1420,17 +1500,21 @@ ) #(#MenuItem #label: 'History' + #translateLabel: true #activeHelpKey: #history #submenuChannel: #menuHistory ) #(#MenuItem #label: 'Help' + #translateLabel: true #startGroup: #right #submenuChannel: #menuHelp ) ) nil nil ) + + "Modified: / 19.5.1998 / 23:10:01 / cg" ! menuEdit @@ -1455,25 +1539,29 @@ #(#MenuItem #label: 'Cut' #value: #doCut + #translateLabel: true #activeHelpKey: #editCut #enabled: #isColumnSelected ) #(#MenuItem #label: 'Copy' #value: #doCopy + #translateLabel: true #activeHelpKey: #editCopy #enabled: #isColumnSelected ) #(#MenuItem #label: 'Paste' #value: #doPaste + #translateLabel: true #activeHelpKey: #editPaste #enabled: #valueOfHavingClipboard ) #(#MenuItem #label: 'Delete' #value: #doDelete - #activeHelpKey: #editPaste + #translateLabel: true + #activeHelpKey: #editDelete #enabled: #valueOfHavingClipboard ) #(#MenuItem @@ -1483,6 +1571,7 @@ #label: 'Move Up' #value: #doMoveColumn: #activeHelpKey: #editMoveUp + #translateLabel: true #enabled: #isColumnSelected #argument: #up #labelImage: #(#ResourceRetriever #DataSetBuilder #upIcon 'Move Up') @@ -1490,6 +1579,7 @@ #(#MenuItem #label: 'Move Down' #value: #doMoveColumn: + #translateLabel: true #activeHelpKey: #editMoveDown #enabled: #isColumnSelected #argument: #down @@ -1498,6 +1588,8 @@ ) nil nil ) + + "Modified: / 19.5.1998 / 23:10:19 / cg" ! menuToolbar