MenuEditor.st
changeset 734 9fdcc26c458f
parent 728 638ae95885e1
child 738 ebc4a399f4dc
equal deleted inserted replaced
733:6454aaabda51 734:9fdcc26c458f
    98 
    98 
    99 
    99 
   100 ! !
   100 ! !
   101 
   101 
   102 !MenuEditor class methodsFor:'accessing'!
   102 !MenuEditor class methodsFor:'accessing'!
       
   103 
       
   104 iconUnknown
       
   105     "returns an image used for picked items containing an image
       
   106     "
       
   107 
       
   108     <resource: #fileImage>
       
   109 
       
   110     ^Image fromFile:'brokenImage.xpm'
       
   111 !
   103 
   112 
   104 resourceType
   113 resourceType
   105     "get the type of resource of the method generated by the MenuEditor"
   114     "get the type of resource of the method generated by the MenuEditor"
   106 
   115 
   107     ^#menu
   116     ^#menu
   234 'Selector returning an image.'
   243 'Selector returning an image.'
   235 
   244 
   236 )
   245 )
   237 ! !
   246 ! !
   238 
   247 
       
   248 !MenuEditor class methodsFor:'image specs'!
       
   249 
       
   250 linkSubmenuImage
       
   251     "Generated by the Image Editor"
       
   252     "
       
   253     ImageEditor openOnClass:self andSelector:#linkSubmenuImage
       
   254     "
       
   255 
       
   256     <resource: #image>
       
   257 
       
   258     ^Icon
       
   259         constantNamed:#'MenuEditor linkSubmenuImage'
       
   260         ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@ADQDQDQDQDQDQH@D"H"H"H"H"H"K0@RH"H"H"H"H"H/@A????????????<@D@@@@@@@@@@@C0@PL3L0DQDQDQD_@A@3L3LBH"H"H"<@DCL3L3@"H"H"K0@PL3L3L0??????@A@@@@L3L@@@@@<@DQDQDCL3@PLAG0@RH"H"@3L0@3@/@AH"H"H L3L3L0<@G?????<CL3L3L@@P@@@@@@@3L3LO@ADQDQDQDP@CLA<@D"H"H"H"H LBK0@RH"H"H"H"@BH/@B????????????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
       
   261 
       
   262 menuItemImage
       
   263     "Generated by the Image Editor"
       
   264     "
       
   265     ImageEditor openOnClass:self andSelector:#menuItemImage
       
   266     "
       
   267 
       
   268     <resource: #image>
       
   269 
       
   270     ^Icon
       
   271         constantNamed:#'MenuEditor menuItemImage'
       
   272         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUUQUUUUUUUPUUUUUUU_UUUUUUUPUUUUUUUP@@@@@@@@EUUUUUVAF*****+HF:?+::;@F:.+*?;@F:.+::;@F:.+*:;@F:.+::;@F*****+DK??????A@@@@@@@@UUUUUUUPUUUUUUUXUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUX') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
       
   273 
       
   274 menuSeparatorImage
       
   275     "Generated by the Image Editor"
       
   276     "
       
   277     ImageEditor openOnClass:self andSelector:#menuSeparatorImage
       
   278     "
       
   279 
       
   280     <resource: #image>
       
   281 
       
   282     ^Icon
       
   283         constantNamed:#'MenuEditor menuSeparatorImage'
       
   284         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUURUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUP@@@@@@@@EUUUUUV@F*****+DF*****+CF?????+@F0@@@@[@F%UUUU[HF*****+@F*****+@K??????N@@@@@@@HUUUUUUUPUUUUUUUPUUUUUUUWUUUUUUUXUUUUUUUPUUUUUUUP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
       
   285 
       
   286 submenuImage
       
   287     "Generated by the Image Editor"
       
   288     "
       
   289     ImageEditor openOnClass:self andSelector:#submenuImage
       
   290     "
       
   291 
       
   292     <resource: #image>
       
   293 
       
   294     ^Icon
       
   295         constantNamed:#'MenuEditor submenuImage'
       
   296         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@EUUUUUV@F*****+@F*****+@G??????GD@@@@@C@EUUUUUWLF*****+@F*****+@G??????HD@@@@@C@EUUUUUW@F*****+@F*****+OG??????@D@@@@@C@EUUUUUW@F*****+@F*****+@K??????@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]! !
       
   297 
   239 !MenuEditor class methodsFor:'interface specs'!
   298 !MenuEditor class methodsFor:'interface specs'!
   240 
   299 
   241 basicsItemSpec
   300 basicsItemSpec
   242     "this window spec was automatically generated by the ST/X UIPainter"
   301     "this window spec was automatically generated by the ST/X UIPainter"
   243 
   302 
   255      
   314      
   256        #(#FullSpec
   315        #(#FullSpec
   257           #window: 
   316           #window: 
   258            #(#WindowSpec
   317            #(#WindowSpec
   259               #name: 'Basics Item'
   318               #name: 'Basics Item'
   260               #layout: #(#LayoutFrame 212 0 351 0 478 0 669 0)
   319               #layout: #(#LayoutFrame 184 0 332 0 450 0 650 0)
   261               #label: 'Basics Item'
   320               #label: 'Basics Item'
   262               #min: #(#Point 10 10)
   321               #min: #(#Point 10 10)
   263               #max: #(#Point 1160 870)
   322               #max: #(#Point 1160 870)
   264               #bounds: #(#Rectangle 212 351 479 670)
   323               #bounds: #(#Rectangle 184 332 451 651)
   265               #usePreferredExtent: false
   324               #usePreferredExtent: false
   266           )
   325           )
   267           #component: 
   326           #component: 
   268            #(#SpecCollection
   327            #(#SpecCollection
   269               #collection: 
   328               #collection: 
   896     ^
   955     ^
   897      
   956      
   898        #(#FullSpec
   957        #(#FullSpec
   899           #window: 
   958           #window: 
   900            #(#WindowSpec
   959            #(#WindowSpec
   901               #name: 'Menu Builder'
   960               #name: 'Menu Editor'
   902               #layout: #(#LayoutFrame 75 0 372 0 654 0 755 0)
   961               #layout: #(#LayoutFrame 100 0 374 0 679 0 757 0)
   903               #label: 'Menu Builder'
   962               #label: 'Menu Editor'
   904               #min: #(#Point 10 10)
   963               #min: #(#Point 10 10)
   905               #max: #(#Point 1152 900)
   964               #max: #(#Point 1152 900)
   906               #bounds: #(#Rectangle 75 372 655 756)
   965               #bounds: #(#Rectangle 100 374 680 758)
   907               #menu: #menu
   966               #menu: #menu
   908               #usePreferredExtent: false
   967               #usePreferredExtent: false
   909           )
   968           )
   910           #component: 
   969           #component: 
   911            #(#SpecCollection
   970            #(#SpecCollection
   916                     #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0)
   975                     #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0)
   917                     #menu: #menuToolbar
   976                     #menu: #menuToolbar
   918                     #showSeparatingLines: true
   977                     #showSeparatingLines: true
   919                 )
   978                 )
   920                  #(#VariableHorizontalPanelSpec
   979                  #(#VariableHorizontalPanelSpec
   921                     #name: 'variableHorizontalPanel1'
   980                     #name: 'VariableHorizontalPanel'
   922                     #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
   981                     #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
   923                     #component: 
   982                     #component: 
   924                      #(#SpecCollection
   983                      #(#SpecCollection
   925                         #collection: 
   984                         #collection: 
   926                          #(
   985                          #(
   927                            #(#ArbitraryComponentSpec
   986                            #(#ArbitraryComponentSpec
   928                               #name: 'painterView'
   987                               #name: 'TreeView'
   929                               #menu: #menuEdit
   988                               #menu: #menuEdit
   930                               #hasHorizontalScrollBar: true
   989                               #hasHorizontalScrollBar: true
   931                               #hasVerticalScrollBar: true
   990                               #hasVerticalScrollBar: true
   932                               #component: #treeView
   991                               #component: #treeView
   933                               #hasBorder: false
   992                               #hasBorder: false
   934                           )
   993                           )
   935                            #(#ViewSpec
   994                            #(#ViewSpec
   936                               #name: 'view1'
   995                               #name: 'Box'
   937                               #component: 
   996                               #component: 
   938                                #(#SpecCollection
   997                                #(#SpecCollection
   939                                   #collection: 
   998                                   #collection: 
   940                                    #(
   999                                    #(
   941                                      #(#NoteBookViewSpec
  1000                                      #(#NoteBookViewSpec
   942                                         #name: 'specificationView'
  1001                                         #name: 'NoteBook'
   943                                         #layout: #(#LayoutFrame 1 0.0 0 0.0 1 1.0 -26 1.0)
  1002                                         #layout: #(#LayoutFrame 1 0.0 0 0.0 1 1.0 -26 1.0)
   944                                         #tabable: true
  1003                                         #tabable: true
   945                                         #model: #tabModel
  1004                                         #model: #tabModel
   946                                         #menu: #tabList
  1005                                         #menu: #tabList
   947                                         #useIndex: true
  1006                                         #useIndex: true
   960                         )
  1019                         )
   961                     )
  1020                     )
   962                     #handles: #(#Any 0.384483 1.0)
  1021                     #handles: #(#Any 0.384483 1.0)
   963                 )
  1022                 )
   964                  #(#UISubSpecification
  1023                  #(#UISubSpecification
   965                     #name: 'infoBarSubSpec'
  1024                     #name: 'InfoBarSubSpec'
   966                     #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
  1025                     #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
   967                     #majorKey: #ToolApplicationModel
  1026                     #majorKey: #ToolApplicationModel
   968                     #minorKey: #windowSpecForInfoBar
  1027                     #minorKey: #windowSpecForInfoBar
   969                 )
  1028                 )
   970               )
  1029               )
  1394           ) nil
  1453           ) nil
  1395           nil
  1454           nil
  1396       )
  1455       )
  1397 ! !
  1456 ! !
  1398 
  1457 
  1399 !MenuEditor class methodsFor:'resources'!
       
  1400 
       
  1401 iconUnknown
       
  1402     "returns an image used for picked items containing an image
       
  1403     "
       
  1404 
       
  1405     <resource: #fileImage>
       
  1406 
       
  1407 
       
  1408     ^ Image fromFile:'brokenImage.xpm'
       
  1409 !
       
  1410 
       
  1411 linkSubmenuImage
       
  1412     "Generated by the Image Editor"
       
  1413     "
       
  1414     ImageEditor openOnClass:self andSelector:#linkSubmenuImage
       
  1415     "
       
  1416 
       
  1417     <resource: #image>
       
  1418 
       
  1419     ^Icon
       
  1420         constantNamed:#'MenuEditor linkSubmenuImage'
       
  1421         ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@ADQDQDQDQDQDQH@D"H"H"H"H"H"K0@RH"H"H"H"H"H/@A????????????<@D@@@@@@@@@@@C0@PL3L0DQDQDQD_@A@3L3LBH"H"H"<@DCL3L3@"H"H"K0@PL3L3L0??????@A@@@@L3L@@@@@<@DQDQDCL3@PLAG0@RH"H"@3L0@3@/@AH"H"H L3L3L0<@G?????<CL3L3L@@P@@@@@@@3L3LO@ADQDQDQDP@CLA<@D"H"H"H"H LBK0@RH"H"H"H"@BH/@B????????????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
       
  1422 
       
  1423 menuItemImage
       
  1424     "Generated by the Image Editor"
       
  1425     "
       
  1426     ImageEditor openOnClass:self andSelector:#menuItemImage
       
  1427     "
       
  1428 
       
  1429     <resource: #image>
       
  1430 
       
  1431     ^Icon
       
  1432         constantNamed:#'MenuEditor menuItemImage'
       
  1433         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUUQUUUUUUUPUUUUUUU_UUUUUUUPUUUUUUUP@@@@@@@@EUUUUUVAF*****+HF:?+::;@F:.+*?;@F:.+::;@F:.+*:;@F:.+::;@F*****+DK??????A@@@@@@@@UUUUUUUPUUUUUUUXUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUX') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
       
  1434 
       
  1435 menuSeparatorImage
       
  1436     "Generated by the Image Editor"
       
  1437     "
       
  1438     ImageEditor openOnClass:self andSelector:#menuSeparatorImage
       
  1439     "
       
  1440 
       
  1441     <resource: #image>
       
  1442 
       
  1443     ^Icon
       
  1444         constantNamed:#'MenuEditor menuSeparatorImage'
       
  1445         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUURUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUP@@@@@@@@EUUUUUV@F*****+DF*****+CF?????+@F0@@@@[@F%UUUU[HF*****+@F*****+@K??????N@@@@@@@HUUUUUUUPUUUUUUUPUUUUUUUWUUUUUUUXUUUUUUUPUUUUUUUP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
       
  1446 
       
  1447 submenuImage
       
  1448     "Generated by the Image Editor"
       
  1449     "
       
  1450     ImageEditor openOnClass:self andSelector:#submenuImage
       
  1451     "
       
  1452 
       
  1453     <resource: #image>
       
  1454 
       
  1455     ^Icon
       
  1456         constantNamed:#'MenuEditor submenuImage'
       
  1457         ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@EUUUUUV@F*****+@F*****+@G??????GD@@@@@C@EUUUUUWLF*****+@F*****+@G??????HD@@@@@C@EUUUUUW@F*****+@F*****+OG??????@D@@@@@C@EUUUUUW@F*****+@F*****+@K??????@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 127 127 127]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]! !
       
  1458 
       
  1459 !MenuEditor class methodsFor:'slices'!
  1458 !MenuEditor class methodsFor:'slices'!
  1460 
  1459 
  1461 slicesItem
  1460 slicesItem
  1462     ^#(
  1461     ^#(
  1463             (Basics     basicsItemSpec)
  1462             (Basics     basicsItemSpec)
  1566 tabList
  1565 tabList
  1567     "get a value holder with the list of the attribute sections (slices)"
  1566     "get a value holder with the list of the attribute sections (slices)"
  1568 
  1567 
  1569     |holder|
  1568     |holder|
  1570     (holder := builder bindingAt:#tabList) isNil ifTrue:[
  1569     (holder := builder bindingAt:#tabList) isNil ifTrue:[
  1571         builder aspectAt:#tabList put:(holder := self class slicesRootMenu asValue).
  1570         builder aspectAt:#tabList put:(holder := #(Basics Details Image Help) asValue).
  1572     ].
  1571     ].
  1573     ^ holder
  1572     ^ holder
  1574 
  1573 
  1575 
  1574 
  1576 !
  1575 !
  1587     ^treeView
  1586     ^treeView
  1588 ! !
  1587 ! !
  1589 
  1588 
  1590 !MenuEditor methodsFor:'building'!
  1589 !MenuEditor methodsFor:'building'!
  1591 
  1590 
       
  1591 buildFromClass:aClass andSelector:aSelector
       
  1592 
       
  1593     self isStandAlone ifTrue:[
       
  1594         self helpTool helpSpecFrom:specClass
       
  1595     ].              
       
  1596     self treeView buildFromClass: aClass andSelector: aSelector.
       
  1597 
       
  1598     self updateHistory.
       
  1599     self updateInfoLabel.
       
  1600     self treeView selection: 2.
       
  1601     self menuChanged
       
  1602 
       
  1603 !
       
  1604 
  1592 buildFromListSpec: aListSpec
  1605 buildFromListSpec: aListSpec
  1593 
  1606 
  1594     self buildFromMenu: aListSpec
  1607     self buildFromMenu:  
       
  1608         (aListSpec class == Menu ifTrue: [aListSpec] ifFalse: [aListSpec decodeAsLiteralArray])
  1595 ! !
  1609 ! !
  1596 
  1610 
  1597 !MenuEditor methodsFor:'change & update'!
  1611 !MenuEditor methodsFor:'change & update'!
  1598 
  1612 
  1599 updateEnabledChannels
  1613 updateEnabledChannels
  1794 
  1808 
  1795 ! !
  1809 ! !
  1796 
  1810 
  1797 !MenuEditor methodsFor:'startup / release'!
  1811 !MenuEditor methodsFor:'startup / release'!
  1798 
  1812 
  1799 buildFromClass:aClass andSelector:aSelector
       
  1800 
       
  1801     self isStandAlone ifTrue:[
       
  1802         self helpTool helpSpecFrom:specClass
       
  1803     ].              
       
  1804     self treeView buildFromClass: aClass andSelector: specSelector.
       
  1805 
       
  1806     self updateHistory.
       
  1807     self updateInfoLabel.
       
  1808     self treeView selection: 2.
       
  1809     self menuChanged
       
  1810 
       
  1811 !
       
  1812 
       
  1813 openModalOnMenu: aMenu
  1813 openModalOnMenu: aMenu
  1814     "build a tree from aMenu open it modal"
  1814     "build a tree from aMenu and open it modal"
  1815 
  1815 
  1816     super openModalOnListSpec: aMenu
  1816     super openModalOnListSpec: aMenu
  1817 !
  1817 !
  1818 
  1818 
  1819 postOpenWith:aBuilder
  1819 postOpenWith:aBuilder
  1848         [
  1848         [
  1849             node contents buildFromAspects: aspects.
  1849             node contents buildFromAspects: aspects.
  1850             node changed.
  1850             node changed.
  1851             specSelector := self treeView selectorName.
  1851             specSelector := self treeView selectorName.
  1852         ]
  1852         ]
  1853     ].
  1853     ].   
  1854 
  1854     self updateInfoLabel
  1855 !
  1855 !
  1856 
  1856 
  1857 cancel
  1857 cancel
  1858     "invoked by button 'Cancel'"
  1858     "invoked by button 'Cancel'"
  1859 
  1859 
  1991 ! !
  1991 ! !
  1992 
  1992 
  1993 !MenuEditor::Item class methodsFor:'constants'!
  1993 !MenuEditor::Item class methodsFor:'constants'!
  1994 
  1994 
  1995 separatorList
  1995 separatorList
       
  1996     "get the list of available separator types"
  1996 
  1997 
  1997     ^#('blank' 'single line' 'double line')
  1998     ^#('blank' 'single line' 'double line')
  1998 !
  1999 !
  1999 
  2000 
  2000 separatorSlices
  2001 separatorSlices
       
  2002     "get the list of menu spec values of the corresponding separator types"
       
  2003 
  2001    ^ #(
  2004    ^ #(
  2002         ( #blank        ''  )
  2005         ( #blank        ''  )
  2003         ( #single       '-' )
  2006         ( #single       '-' )
  2004         ( #double       '=' )
  2007         ( #double       '=' )
  2005       )
  2008       )
  2024 ! !
  2027 ! !
  2025 
  2028 
  2026 !MenuEditor::Item methodsFor:'accessing'!
  2029 !MenuEditor::Item methodsFor:'accessing'!
  2027 
  2030 
  2028 activeHelpKey
  2031 activeHelpKey
       
  2032     "get the help key of the menu item"
  2029 
  2033 
  2030     ^activeHelpKey
  2034     ^activeHelpKey
  2031 !
  2035 !
  2032 
  2036 
  2033 activeHelpKey:aKey
  2037 activeHelpKey:aKey
       
  2038     "set the help key of the menu item"
  2034 
  2039 
  2035     activeHelpKey := aKey
  2040     activeHelpKey := aKey
  2036 !
  2041 !
  2037 
  2042 
  2038 label
  2043 label
  2039     "return the value of the instance variable 'label' (automatically generated)"
  2044     "get the value of the menu item"
  2040 
  2045 
  2041     ^label
  2046     ^label
  2042 !
  2047 !
  2043 
  2048 
  2044 label:something
  2049 label:something
  2045     "set the value of the instance variable 'label' (automatically generated)"
  2050     "set the value of the menu item"
  2046 
  2051 
  2047     label := something ? '-'
  2052     label := something ? '-'
  2048 !
  2053 !
  2049 
  2054 
  2050 separatorType
  2055 separatorType
  2051     "returns separator type assigned to item or nil"
  2056     "get the separator type assigned to item or nil"
  2052 
  2057 
  2053     label size > 1 
  2058     label size > 1 
  2054     ifFalse:
  2059     ifFalse:
  2055     [
  2060     [
  2056         label size  == 0  ifTrue:[^#blank].
  2061         label size  == 0  ifTrue:[^#blank].
  2066 
  2071 
  2067     ^submenuChannel
  2072     ^submenuChannel
  2068 !
  2073 !
  2069 
  2074 
  2070 submenuChannel:aChannel
  2075 submenuChannel:aChannel
  2071     "return the value of the instance variable 'submenuChannel' (automatically generated)"
  2076     "get the submenuChannel"
  2072 
  2077 
  2073     submenuChannel := aChannel
  2078     submenuChannel := aChannel
  2074 ! !
  2079 ! !
  2075 
  2080 
  2076 !MenuEditor::Item methodsFor:'conversion'!
  2081 !MenuEditor::Item methodsFor:'conversion'!
  2109     ].
  2114     ].
  2110     ^item
  2115     ^item
  2111 !
  2116 !
  2112 
  2117 
  2113 buildFromAspects:aspects
  2118 buildFromAspects:aspects
       
  2119     "read the values of the aspects into my values"
  2114 
  2120 
  2115     |name|
  2121     |name|
  2116     self isSeparator 
  2122     self isSeparator 
  2117     ifFalse:
  2123     ifFalse:
  2118     [
  2124     [
  2154     isVisible := (aspects at:#isVisible) value.
  2160     isVisible := (aspects at:#isVisible) value.
  2155 
  2161 
  2156 !
  2162 !
  2157 
  2163 
  2158 buildFromMenuItem:anItem
  2164 buildFromMenuItem:anItem
       
  2165     "read the attributes of anItem into my values"
  2159 
  2166 
  2160     |rtv|
  2167     |rtv|
  2161 
  2168 
  2162     self label:(anItem label).
  2169     self label:(anItem label).
  2163     activeHelpKey := anItem activeHelpKey.
  2170     activeHelpKey := anItem activeHelpKey.
  2196         ]
  2203         ]
  2197     ]
  2204     ]
  2198 !
  2205 !
  2199 
  2206 
  2200 toAspects:aspects
  2207 toAspects:aspects
       
  2208     "put my values into the values of aspects"
  2201 
  2209 
  2202     |type|
  2210     |type|
  2203     (type := self separatorType) notNil
  2211     (type := self separatorType) notNil
  2204     ifTrue:
  2212     ifTrue:
  2205     [
  2213     [
  2232 ! !
  2240 ! !
  2233 
  2241 
  2234 !MenuEditor::Item methodsFor:'queries'!
  2242 !MenuEditor::Item methodsFor:'queries'!
  2235 
  2243 
  2236 iconFor: aNode
  2244 iconFor: aNode
       
  2245     "get the icon of the menu item for the tree view"
  2237 
  2246 
  2238     (aNode hasChildren or: [aNode parent isNil])
  2247     (aNode hasChildren or: [aNode parent isNil])
  2239     ifTrue:
  2248     ifTrue:
  2240     [
  2249     [
  2241         ^MenuEditor submenuImage
  2250         ^MenuEditor submenuImage
  2255         ]
  2264         ]
  2256     ]
  2265     ]
  2257 !
  2266 !
  2258 
  2267 
  2259 isSeparator
  2268 isSeparator
  2260     "returns true if item is a seperator"
  2269     "return true if item is a seperator"
  2261 
  2270 
  2262     ^self separatorType notNil
  2271     ^self separatorType notNil
  2263 !
  2272 !
  2264 
  2273 
  2265 treeViewLabel
  2274 treeViewLabel
       
  2275     "get the label of the menu item for the tree view"
  2266 
  2276 
  2267     ^label asBoldText, 
  2277     ^label asBoldText, 
  2268         (value notNil ifTrue: [': [', 
  2278         (value notNil ifTrue: [': [', 
  2269                 value ,
  2279                 value ,
  2270                 (argument notNil ifTrue: [' ', (Text string: argument emphasis: #italic)] ifFalse: ['']),
  2280                 (argument notNil ifTrue: [' ', (Text string: argument emphasis: #italic)] ifFalse: ['']),
  2273 
  2283 
  2274 !MenuEditor::TreeView class methodsFor:'documentation'!
  2284 !MenuEditor::TreeView class methodsFor:'documentation'!
  2275 
  2285 
  2276 documentation
  2286 documentation
  2277 "
  2287 "
  2278     menu selection list
  2288     This tree view class provides a hierarchical representation
       
  2289     of the components of a menu.
  2279 
  2290 
  2280     [see also:]
  2291     [see also:]
  2281         SelectionInTreeView
  2292         SelectionInTreeView
  2282         SelectionInTree
  2293         SelectionInTree
  2283         TreeItem
  2294         TreeItem
  2284 
  2295 
  2285     [author:]
  2296     [author:]
  2286         Claus Atzkern
  2297         Claus Atzkern
  2287 "
  2298 "
  2288 
       
  2289 
       
  2290 ! !
  2299 ! !
  2291 
  2300 
  2292 !MenuEditor::TreeView methodsFor:'accessing'!
  2301 !MenuEditor::TreeView methodsFor:'accessing'!
  2293 
  2302 
  2294 selectorName
  2303 selectorName
       
  2304     "get the selector of the menu spec"
  2295 
  2305 
  2296     ^(listOfNodes first contents label) asSymbol
  2306     ^(listOfNodes first contents label) asSymbol
  2297 !
  2307 !
  2298 
  2308 
  2299 selectorName: aSymbol
  2309 selectorName: aSymbol
       
  2310     "set the selector for the menu spec"
  2300 
  2311 
  2301     listOfNodes first contents label: aSymbol
  2312     listOfNodes first contents label: aSymbol
  2302 ! !
  2313 ! !
  2303 
  2314 
  2304 !MenuEditor::TreeView methodsFor:'building'!
  2315 !MenuEditor::TreeView methodsFor:'building'!
  2305 
  2316 
  2306 buildFromClass:aClass andSelector:aSelector
  2317 buildFromClass:aClass andSelector:aSelector
       
  2318     "read a menu spec from aClass and aSelector and put 
       
  2319      the encoded menu into the tree view"
  2307 
  2320 
  2308     |spec cls menu firstNode firstNodeLabel|
  2321     |spec cls menu firstNode firstNodeLabel|
  2309 
  2322 
  2310     "if opened on a menu"
  2323     "if opened on a menu"
  2311     (aClass isNil and: [aSelector isNil and: [listOfNodes size > 0]]) ifTrue: [^nil].
  2324     (aClass isNil and: [aSelector isNil and: [listOfNodes size > 0]]) ifTrue: [^nil].
  2337             aSelector notNil ifTrue:[firstNodeLabel := aSelector asString]
  2350             aSelector notNil ifTrue:[firstNodeLabel := aSelector asString]
  2338                         ifFalse:[firstNodeLabel := 'menu'].
  2351                         ifFalse:[firstNodeLabel := 'menu'].
  2339             firstNode := self nodeLabel:firstNodeLabel.
  2352             firstNode := self nodeLabel:firstNodeLabel.
  2340         ]
  2353         ]
  2341     ].
  2354     ].
       
  2355 
  2342     firstNode expand.
  2356     firstNode expand.
  2343     model root: firstNode.
  2357     model root: firstNode.
  2344 
  2358 
  2345     firstNode hasChildren ifFalse:[
  2359     firstNode hasChildren ifFalse:[
  2346         |firstChildNode|              
  2360         |firstChildNode|              
  2352 
  2366 
  2353 
  2367 
  2354 !
  2368 !
  2355 
  2369 
  2356 buildFromMenu:aMenu
  2370 buildFromMenu:aMenu
       
  2371     "put aMenu into the tree view"
  2357 
  2372 
  2358     |node|
  2373     |node|
  2359 
  2374 
  2360     node := self nodeLabel:'menu'.
  2375     node := self nodeLabel:'menu'.
  2361     self subMenu:aMenu parent:node.
  2376     self subMenu:aMenu parent:node.
  2472 ! !
  2487 ! !
  2473 
  2488 
  2474 !MenuEditor::TreeView methodsFor:'initialization'!
  2489 !MenuEditor::TreeView methodsFor:'initialization'!
  2475 
  2490 
  2476 initialize
  2491 initialize
       
  2492     "initialize the tree view of the menu components"
  2477 
  2493 
  2478     super initialize.
  2494     super initialize.
  2479 
  2495 
  2480     self multipleSelectOk:true.
  2496     self multipleSelectOk:true.
  2481     self showDirectoryIndicator: true.
  2497     self showDirectoryIndicator: true.