ImageEditor.st
changeset 1637 2b0f24d74f8e
parent 1613 1d4f11252d3b
child 1639 8f2059cc287c
equal deleted inserted replaced
1636:85ab98a850c8 1637:2b0f24d74f8e
    13 "{ Package: 'stx:libtool2' }"
    13 "{ Package: 'stx:libtool2' }"
    14 
    14 
    15 ToolApplicationModel subclass:#ImageEditor
    15 ToolApplicationModel subclass:#ImageEditor
    16 	instanceVariableNames:'imageEditView colorMapMode editMode mouseKeyColorMode
    16 	instanceVariableNames:'imageEditView colorMapMode editMode mouseKeyColorMode
    17 		selectedColorIndex postOpenAction imageSeqNr'
    17 		selectedColorIndex postOpenAction imageSeqNr'
    18 	classVariableNames:'LastDirectory MaskClipboard'
    18 	classVariableNames:'LastDirectory LastSizeString MaskClipboard LastColormapMode'
    19 	poolDictionaries:''
    19 	poolDictionaries:''
    20 	category:'Interface-UIPainter'
    20 	category:'Interface-UIPainter'
    21 !
    21 !
    22 
    22 
    23 !ImageEditor class methodsFor:'documentation'!
    23 !ImageEditor class methodsFor:'documentation'!
   205 
   205 
   206 #drawModeCopy
   206 #drawModeCopy
   207 'Copy'
   207 'Copy'
   208 
   208 
   209 #drawModeFill
   209 #drawModeFill
   210 'Flood-fill'
   210 'Flood-Fill'
   211 
   211 
   212 #drawModeFilledBox
   212 #drawModeFilledBox
   213 'Fill Rectangle'
   213 'Filled Rectangle'
   214 
   214 
   215 #drawModePaste
   215 #drawModePaste
   216 'Paste'
   216 'Paste'
   217 
   217 
   218 #drawModePasteUnder
   218 #drawModePasteUnder
   219 'Paste under'
   219 'Paste Under'
       
   220 
       
   221 #drawModePasteWithMask
       
   222 'Paste With Mask'
   220 
   223 
   221 #drawModePoint
   224 #drawModePoint
   222 'Point'
   225 'Point'
   223 
   226 
   224 #fileGrabImage
   227 #fileGrabImage
   225 'Pick from screen.'
   228 'Pick from Screen.'
   226 
   229 
   227 #fileLoadFromClass
   230 #fileLoadFromClass
   228 'Load from Method'
   231 'Load from Method'
   229 
   232 
   230 #fileLoadFromFile
   233 #fileLoadFromFile
   231 'Load from File.'
   234 'Load from File.'
   232 
   235 
   233 #fileNewImage
   236 #fileNewImage
   234 'New image'
   237 'New Image'
   235 
   238 
   236 #filePrint
   239 #filePrint
   237 'Print'
   240 'Print'
   238 
   241 
   239 #fileSaveAs
   242 #fileSaveAs
   240 'Save to file.'
   243 'Save to File.'
   241 
   244 
   242 #fileSaveMaskAs
   245 #fileSaveMaskAs
   243 'Save to file.'
   246 'Save to File.'
   244 
   247 
   245 #fileSaveMethod
   248 #fileSaveMethod
   246 'Save as method'
   249 'Save as Method'
   247 
   250 
   248 #fileSaveMethodAs
   251 #fileSaveMethodAs
   249 'Save as method'
   252 'Save as Method'
   250 
   253 
   251 )
   254 )
   252 !
   255 !
   253 
   256 
   254 helpSpec
   257 helpSpec
   316 
   319 
   317 #cropTop
   320 #cropTop
   318 'Find and remove top border.'
   321 'Find and remove top border.'
   319 
   322 
   320 #drawModeBox
   323 #drawModeBox
   321 'Switches to box-drawing mode.'
   324 'Rectangle Drawing Mode.'
   322 
   325 
   323 #drawModeCopy
   326 #drawModeCopy
   324 'Switches to area-copy mode.'
   327 'Area Copy Mode.'
   325 
   328 
   326 #drawModeFill
   329 #drawModeFill
   327 'Switches to flood-fill mode.'
   330 'Flood Fill Mode.'
   328 
   331 
   329 #drawModeFilledBox
   332 #drawModeFilledBox
   330 'Switches to filled-box drawing mode.'
   333 'Filled Rectangle Drawing Mode.'
   331 
   334 
   332 #drawModePaste
   335 #drawModePaste
   333 'Switches to paste mode.'
   336 'Paste Mode.'
   334 
   337 
   335 #drawModePasteUnder
   338 #drawModePasteUnder
   336 'Switches to paste under mode.'
   339 'Paste-Under Mode.'
       
   340 
       
   341 #drawModePasteWithMask
       
   342 'Paste-with-Mask Mode.'
   337 
   343 
   338 #drawModePoint
   344 #drawModePoint
   339 'Switches to point-drawing mode.'
   345 'Point Drawing Mode.'
   340 
   346 
   341 #editFlipHorizontal
   347 #editFlipHorizontal
   342 'Flips the image horizontally.'
   348 'Flip the image horizontally.'
   343 
   349 
   344 #editFlipVertical
   350 #editFlipVertical
   345 'Flips the image vertically.'
   351 'Flip the image vertically.'
   346 
   352 
   347 #editMagnifyImage
   353 #editMagnifyImage
   348 'Magnify the image.'
   354 'Magnify the image.'
   349 
   355 
   350 #editNegate
   356 #editNegate
   394 
   400 
   395 #magnifyImageUp
   401 #magnifyImageUp
   396 'Increase magnification.'
   402 'Increase magnification.'
   397 
   403 
   398 #mouseKeyColorMode
   404 #mouseKeyColorMode
   399 'Toggles between left and right mouse button color.'
   405 'Toggle between left and right mouse button color.'
   400 
   406 
   401 #previewView
   407 #previewView
   402 'Shows a preview of the image.'
   408 'Shows a preview of the image.'
   403 
   409 
   404 #settingsGridMagnification
   410 #settingsGridMagnification
   408 
   414 
   409     "Modified: / 7.9.1998 / 18:20:26 / cg"
   415     "Modified: / 7.9.1998 / 18:20:26 / cg"
   410 ! !
   416 ! !
   411 
   417 
   412 !ImageEditor class methodsFor:'image specs'!
   418 !ImageEditor class methodsFor:'image specs'!
       
   419 
       
   420 copyIcon
       
   421     "This resource specification was automatically generated
       
   422      by the ImageEditor of ST/X."
       
   423 
       
   424     "Do not manually edit this!! If it is corrupted,
       
   425      the ImageEditor may not be able to read the specification."
       
   426 
       
   427     "
       
   428      self copyIcon inspect
       
   429      ImageEditor openOnClass:self andSelector:#copyIcon
       
   430      Icon flushCachedIcons
       
   431     "
       
   432 
       
   433     <resource: #image>
       
   434 
       
   435     ^Icon
       
   436         constantNamed:#'ImageEditor class copyIcon'
       
   437         ifAbsentPut:[(Depth2Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@** @@J)UUTB*Z*)@*&**PJ)**$B*Z*)@*&**PJ)**$@@Z*)@@F**P@AUUT@@@@@@b') ; colorMapFromArray:#[0 0 0 0 0 128 255 255 255]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@C? O>@??3??O?<??3??O?<??3??@_<A?0@@@@a') ; yourself); yourself]
       
   438 !
       
   439 
       
   440 fillIcon
       
   441     "This resource specification was automatically generated
       
   442      by the ImageEditor of ST/X."
       
   443 
       
   444     "Do not manually edit this!! If it is corrupted,
       
   445      the ImageEditor may not be able to read the specification."
       
   446 
       
   447     "
       
   448      self fillIcon inspect
       
   449      ImageEditor openOnClass:self andSelector:#fillIcon
       
   450      Icon flushCachedIcons
       
   451     "
       
   452 
       
   453     <resource: #image>
       
   454 
       
   455     ^Icon
       
   456         constantNamed:#'ImageEditor class fillIcon'
       
   457         ifAbsentPut:[(Depth2Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@ @@@@*H@@D*(@@DUUP@EAUU@AAEU@@@@U@@DDA@@@@@@@@PP@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C @Q@BN@I<@?8C?0[?!!G<@O P\@@ D@@@@@@@@@a') ; yourself); yourself]
       
   458 !
       
   459 
       
   460 fillRectIcon
       
   461     "This resource specification was automatically generated
       
   462      by the ImageEditor of ST/X."
       
   463 
       
   464     "Do not manually edit this!! If it is corrupted,
       
   465      the ImageEditor may not be able to read the specification."
       
   466 
       
   467     "
       
   468      self fillRectIcon inspect
       
   469      ImageEditor openOnClass:self andSelector:#fillRectIcon
       
   470      Icon flushCachedIcons
       
   471     "
       
   472 
       
   473     <resource: #image>
       
   474 
       
   475     ^Icon
       
   476         constantNamed:#'ImageEditor class fillRectIcon'
       
   477         ifAbsentPut:[(Depth1Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@D@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?0O?@?<C?0O?@?<C?0O?@?<C?0@@@@@@@a') ; yourself); yourself]
       
   478 !
   413 
   479 
   414 leftMouseKeyIcon
   480 leftMouseKeyIcon
   415     "This resource specification was automatically generated
   481     "This resource specification was automatically generated
   416      by the ImageEditor of ST/X."
   482      by the ImageEditor of ST/X."
   417 
   483 
   428     ^Icon
   494     ^Icon
   429         constantNamed:#'ImageEditor leftMouseKeyIcon'
   495         constantNamed:#'ImageEditor leftMouseKeyIcon'
   430         ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@EJJ@@AR" @@T((@@@@@@@B** @@**(@@J**@@B** @@**(@@J**@@@**@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b') ; yourself); yourself]
   496         ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@EJJ@@AR" @@T((@@@@@@@B** @@**(@@J**@@B** @@**(@@J**@@@**@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b') ; yourself); yourself]
   431 !
   497 !
   432 
   498 
       
   499 pasteIcon
       
   500     "This resource specification was automatically generated
       
   501      by the ImageEditor of ST/X."
       
   502 
       
   503     "Do not manually edit this!! If it is corrupted,
       
   504      the ImageEditor may not be able to read the specification."
       
   505 
       
   506     "
       
   507      self pasteIcon inspect
       
   508      ImageEditor openOnClass:self andSelector:#pasteIcon
       
   509      Icon flushCachedIcons
       
   510     "
       
   511 
       
   512     <resource: #image>
       
   513 
       
   514     ^Icon
       
   515         constantNamed:#'ImageEditor class pasteIcon'
       
   516         ifAbsentPut:[(Depth4Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@AU@@@@@CHE@E@2@@@ QDQD@0@@L@@@@@H@@BL#H2L#@@@QDQDQL @@D3L@@@@@@AL3@3M&X@@SL0L0A&@@D3LC@@A @AL3@3@FX@@QDPY&Y&
       
   517 @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 0 0 128 128 128 0 128 128 128 212 208 200 255 255 0 255 255 255]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C0A?8O?0??C?<O?0??C?>O?8??#?>O?8_? G>@@a') ; yourself); yourself]
       
   518 !
       
   519 
       
   520 pasteUnderIcon
       
   521     "This resource specification was automatically generated
       
   522      by the ImageEditor of ST/X."
       
   523 
       
   524     "Do not manually edit this!! If it is corrupted,
       
   525      the ImageEditor may not be able to read the specification."
       
   526 
       
   527     "
       
   528      self pasteUnderIcon inspect
       
   529      ImageEditor openOnClass:self andSelector:#pasteUnderIcon
       
   530      Icon flushCachedIcons
       
   531     "
       
   532 
       
   533     <resource: #image>
       
   534 
       
   535     ^Icon
       
   536         constantNamed:#'ImageEditor class pasteUnderIcon'
       
   537         ifAbsentPut:[(Depth4Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@AU@@@@@CHE@E@2@@@ QDQD@0@@L@@@@@H@@BL#H2L#@@@QDQDQL @@D3L@@@@@@AL3@3M&X@@SL0L0A&@@D3LC@@A @AL3@3@FX@@QDPY&Y&
       
   538 @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 0 0 128 128 128 0 128 128 128 212 208 200 255 255 0 255 255 255]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C0A?8O?0??C?<O?0??C?>O?8??#?>O?8_? G>@@a') ; yourself); yourself]
       
   539 !
       
   540 
       
   541 pasteWithMaskIcon
       
   542     "This resource specification was automatically generated
       
   543      by the ImageEditor of ST/X."
       
   544 
       
   545     "Do not manually edit this!! If it is corrupted,
       
   546      the ImageEditor may not be able to read the specification."
       
   547 
       
   548     "
       
   549      self pasteWithMaskIcon inspect
       
   550      ImageEditor openOnClass:self andSelector:#pasteWithMaskIcon
       
   551      Icon flushCachedIcons
       
   552     "
       
   553 
       
   554     <resource: #image>
       
   555 
       
   556     ^Icon
       
   557         constantNamed:#'ImageEditor class pasteWithMaskIcon'
       
   558         ifAbsentPut:[(Depth4Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@AU@@@@@CHE@E@2@@@ QDQD@0@@L@@@@@H@@BL#H2L#@@@QDQDQL @@D3L@@@@@@AL3@3M&X@@SL0L3A&@@D3LCL0A @AL3@3LFX@@QDPY&Y&
       
   559 @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 0 0 128 128 128 0 128 128 128 212 208 200 255 255 0 255 255 255]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C0A?8O?0??C?<O?0??C?>O?8??#?>O?8_? G>@@a') ; yourself); yourself]
       
   560 !
       
   561 
       
   562 pointIcon
       
   563     "This resource specification was automatically generated
       
   564      by the ImageEditor of ST/X."
       
   565 
       
   566     "Do not manually edit this!! If it is corrupted,
       
   567      the ImageEditor may not be able to read the specification."
       
   568 
       
   569     "
       
   570      self pointIcon inspect
       
   571      ImageEditor openOnClass:self andSelector:#pointIcon
       
   572      Icon flushCachedIcons
       
   573     "
       
   574 
       
   575     <resource: #image>
       
   576 
       
   577     ^Icon
       
   578         constantNamed:#'ImageEditor class pointIcon'
       
   579         ifAbsentPut:[(Depth1Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@C@@@@@B@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@0@G@@8@G@@8@G@@8@G@@X@B@@@@@@@@@a') ; yourself); yourself]
       
   580 !
       
   581 
       
   582 rectIcon
       
   583     "This resource specification was automatically generated
       
   584      by the ImageEditor of ST/X."
       
   585 
       
   586     "Do not manually edit this!! If it is corrupted,
       
   587      the ImageEditor may not be able to read the specification."
       
   588 
       
   589     "
       
   590      self rectIcon inspect
       
   591      ImageEditor openOnClass:self andSelector:#rectIcon
       
   592      Icon flushCachedIcons
       
   593     "
       
   594 
       
   595     <resource: #image>
       
   596 
       
   597     ^Icon
       
   598         constantNamed:#'ImageEditor class rectIcon'
       
   599         ifAbsentPut:[(Depth1Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@C@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?0HA@ DB@PHA@ DB@PHA@ DC?0@@@@@@@a') ; yourself); yourself]
       
   600 !
       
   601 
   433 rightMouseKeyIcon
   602 rightMouseKeyIcon
   434     "This resource specification was automatically generated
   603     "This resource specification was automatically generated
   435      by the ImageEditor of ST/X."
   604      by the ImageEditor of ST/X."
   436 
   605 
   437     "Do not manually edit this!! If it is corrupted,
   606     "Do not manually edit this!! If it is corrupted,
   445     <resource: #image>
   614     <resource: #image>
   446 
   615 
   447     ^Icon
   616     ^Icon
   448         constantNamed:#'ImageEditor rightMouseKeyIcon'
   617         constantNamed:#'ImageEditor rightMouseKeyIcon'
   449         ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@JJE@@B"!!P@@((T@@@@@@@B** @@**(@@J**@@B** @@**(@@J**@@@**@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b') ; yourself); yourself]
   618         ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@JJE@@B"!!P@@((T@@@@@@@B** @@**(@@J**@@B** @@**(@@J**@@@**@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b') ; yourself); yourself]
       
   619 !
       
   620 
       
   621 specialIcon
       
   622     "This resource specification was automatically generated
       
   623      by the ImageEditor of ST/X."
       
   624 
       
   625     "Do not manually edit this!! If it is corrupted,
       
   626      the ImageEditor may not be able to read the specification."
       
   627 
       
   628     "
       
   629      self specialIcon inspect
       
   630      ImageEditor openOnClass:self andSelector:#specialIcon
       
   631      Icon flushCachedIcons
       
   632     "
       
   633 
       
   634     <resource: #image>
       
   635 
       
   636     ^Icon
       
   637         constantNamed:#'ImageEditor class specialIcon'
       
   638         ifAbsentPut:[(Depth1Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@L@@@@B@@@@@0@@@@@@@@@@@@@@@P@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@L@@0@G @^@A8@G @L@@0@@@@L@@0@@@@@a') ; yourself); yourself]
   450 ! !
   639 ! !
   451 
   640 
   452 !ImageEditor class methodsFor:'interface specs'!
   641 !ImageEditor class methodsFor:'interface specs'!
   453 
   642 
   454 dialogSpecForNewImage
   643 dialogSpecForNewImage
   965         #window: 
  1154         #window: 
   966        #(#WindowSpec
  1155        #(#WindowSpec
   967           #label: 'Image Editor'
  1156           #label: 'Image Editor'
   968           #name: 'Image Editor'
  1157           #name: 'Image Editor'
   969           #min: #(#Point 400 320)
  1158           #min: #(#Point 400 320)
   970           #bounds: #(#Rectangle 16 42 514 386)
  1159           #bounds: #(#Rectangle 105 601 555 951)
   971           #menu: #menu
  1160           #menu: #menu
   972         )
  1161         )
   973         #component: 
  1162         #component: 
   974        #(#SpecCollection
  1163        #(#SpecCollection
   975           #collection: #(
  1164           #collection: #(
   981               #showSeparatingLines: true
  1170               #showSeparatingLines: true
   982             )
  1171             )
   983            #(#VariableHorizontalPanelSpec
  1172            #(#VariableHorizontalPanelSpec
   984               #name: 'variableHorizontalPanel1'
  1173               #name: 'variableHorizontalPanel1'
   985               #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
  1174               #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
       
  1175               #snapMode: #both
       
  1176               #barLevel: 1
   986               #component: 
  1177               #component: 
   987              #(#SpecCollection
  1178              #(#SpecCollection
   988                 #collection: #(
  1179                 #collection: #(
   989                  #(#ViewSpec
  1180                  #(#ViewSpec
   990                     #name: 'view1'
  1181                     #name: 'leftView'
       
  1182                     #level: 1
   991                     #component: 
  1183                     #component: 
   992                    #(#SpecCollection
  1184                    #(#SpecCollection
   993                       #collection: #(
  1185                       #collection: #(
   994                        #(#VariableVerticalPanelSpec
  1186                        #(#VariableVerticalPanelSpec
   995                           #name: 'VariableVerticalPanel1'
  1187                           #name: 'VariableVerticalPanel1'
   996                           #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
  1188                           #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
       
  1189                           #level: 0
       
  1190                           #snapMode: #both
   997                           #component: 
  1191                           #component: 
   998                          #(#SpecCollection
  1192                          #(#SpecCollection
   999                             #collection: #(
  1193                             #collection: #(
  1000                              #(#ViewSpec
  1194                              #(#ViewSpec
  1001                                 #name: 'View1'
  1195                                 #name: 'View1'
  1003                                #(#SpecCollection
  1197                                #(#SpecCollection
  1004                                   #collection: #(
  1198                                   #collection: #(
  1005                                    #(#MenuPanelSpec
  1199                                    #(#MenuPanelSpec
  1006                                       #name: 'MouseButtonColorToolBar'
  1200                                       #name: 'MouseButtonColorToolBar'
  1007                                       #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 24 0)
  1201                                       #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 24 0)
       
  1202                                       #level: 0
  1008                                       #menu: #menuMouseButtonColors
  1203                                       #menu: #menuMouseButtonColors
  1009                                     )
  1204                                     )
  1010                                    #(#DataSetSpec
  1205                                    #(#DataSetSpec
  1011                                       #name: 'colorDataSetView'
  1206                                       #name: 'colorDataSetView'
  1012                                       #layout: #(#LayoutFrame 0 0.0 26 0.0 0 1.0 0 1.0)
  1207                                       #layout: #(#LayoutFrame 0 0.0 26 0.0 0 1.0 0 1.0)
  1083                                 #component: #ImageView
  1278                                 #component: #ImageView
  1084                               )
  1279                               )
  1085                              )
  1280                              )
  1086                            
  1281                            
  1087                           )
  1282                           )
  1088                           #handles: #(#Any 0.723776 1.0)
  1283                           #handles: #(#Any 0.5 1.0)
  1089                         )
  1284                         )
  1090                        )
  1285                        )
  1091                      
  1286                      
  1092                     )
  1287                     )
  1093                   )
  1288                   )
  1094                  #(#ViewSpec
  1289                  #(#ViewSpec
  1095                     #name: 'view2'
  1290                     #name: 'rightView'
  1096                     #level: -1
       
  1097                     #component: 
  1291                     #component: 
  1098                    #(#SpecCollection
  1292                    #(#SpecCollection
  1099                       #collection: #(
  1293                       #collection: #(
  1100                        #(#ArbitraryComponentSpec
  1294                        #(#MenuPanelSpec
  1101                           #name: 'imageEditView'
  1295                           #name: 'ToolBar1'
  1102                           #layout: #(#LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0)
  1296                           #layout: #(#LayoutFrame 0 0 0 0.0 28 0 0 1.0)
  1103                           #hasHorizontalScrollBar: true
  1297                           #level: 1
  1104                           #hasVerticalScrollBar: true
  1298                           #menu: #toolsMenuToolbar
  1105                           #hasBorder: false
  1299                           #verticalLayout: true
  1106                           #component: #ImageEditView
  1300                           #centerItems: true
       
  1301                           #textDefault: true
  1107                         )
  1302                         )
  1108                        #(#LabelSpec
  1303                        #(#ViewSpec
  1109                           #name: 'coordLabel'
  1304                           #name: 'editingView'
  1110                           #layout: #(#LayoutFrame 2 0.0 -22 1 -83 1.0 0 1.0)
  1305                           #layout: #(#LayoutFrame 28 0.0 0 0.0 0 1.0 0 1.0)
  1111                           #level: -1
  1306                           #level: 1
  1112                           #labelChannel: #imageInfoHolder
  1307                           #component: 
  1113                           #resizeForLabel: false
  1308                          #(#SpecCollection
  1114                           #adjust: #left
  1309                             #collection: #(
  1115                         )
  1310                              #(#ArbitraryComponentSpec
  1116                        #(#ArrowButtonSpec
  1311                                 #name: 'imageEditView'
  1117                           #name: 'magnifyDownButton'
  1312                                 #layout: #(#LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0)
  1118                           #layout: #(#LayoutFrame -80 1 -22 1 -58 1 0 1)
  1313                                 #hasHorizontalScrollBar: true
  1119                           #activeHelpKey: #magnifyImageDown
  1314                                 #hasVerticalScrollBar: true
  1120                           #model: #doMagnifyDown
  1315                                 #hasBorder: false
  1121                           #enableChannel: #imageIsLoaded
  1316                                 #component: #ImageEditView
  1122                           #isTriggerOnDown: true
  1317                               )
  1123                           #direction: #left
  1318                              #(#LabelSpec
  1124                         )
  1319                                 #name: 'coordLabel'
  1125                        #(#ArrowButtonSpec
  1320                                 #layout: #(#LayoutFrame 2 0.0 -22 1 -83 1.0 0 1.0)
  1126                           #name: 'magnifyUpButton'
  1321                                 #level: -1
  1127                           #layout: #(#LayoutFrame -24 1 -22 1 -2 1 0 1)
  1322                                 #labelChannel: #imageInfoHolder
  1128                           #activeHelpKey: #magnifyImageUp
  1323                                 #resizeForLabel: false
  1129                           #model: #doMagnifyUp
  1324                                 #adjust: #left
  1130                           #enableChannel: #imageIsLoaded
  1325                               )
  1131                           #isTriggerOnDown: true
  1326                              #(#ArrowButtonSpec
  1132                           #direction: #right
  1327                                 #name: 'magnifyDownButton'
  1133                         )
  1328                                 #layout: #(#LayoutFrame -80 1 -22 1 -58 1 0 1)
  1134                        #(#InputFieldSpec
  1329                                 #activeHelpKey: #magnifyImageDown
  1135                           #name: 'magnificationInputField'
  1330                                 #model: #doMagnifyDown
  1136                           #layout: #(#LayoutFrame -57 1 -22 1 -26 1 0 1)
  1331                                 #enableChannel: #imageIsLoaded
  1137                           #activeHelpKey: #magnificationNumber
  1332                                 #isTriggerOnDown: true
  1138                           #enableChannel: #imageIsLoaded
  1333                                 #direction: #left
  1139                           #model: #valueOfMagnification
  1334                               )
  1140                           #type: #numberInRange
  1335                              #(#ArrowButtonSpec
  1141                           #acceptOnReturn: false
  1336                                 #name: 'magnifyUpButton'
  1142                           #acceptOnTab: false
  1337                                 #layout: #(#LayoutFrame -24 1 -22 1 -2 1 0 1)
  1143                           #numChars: 2
  1338                                 #activeHelpKey: #magnifyImageUp
  1144                           #minValue: 1
  1339                                 #model: #doMagnifyUp
  1145                           #maxValue: 99
  1340                                 #enableChannel: #imageIsLoaded
  1146                           #acceptOnPointerLeave: false
  1341                                 #isTriggerOnDown: true
       
  1342                                 #direction: #right
       
  1343                               )
       
  1344                              #(#InputFieldSpec
       
  1345                                 #name: 'magnificationInputField'
       
  1346                                 #layout: #(#LayoutFrame -57 1 -22 1 -26 1 0 1)
       
  1347                                 #activeHelpKey: #magnificationNumber
       
  1348                                 #enableChannel: #imageIsLoaded
       
  1349                                 #model: #valueOfMagnification
       
  1350                                 #type: #numberInRange
       
  1351                                 #acceptOnReturn: false
       
  1352                                 #acceptOnTab: false
       
  1353                                 #numChars: 2
       
  1354                                 #minValue: 1
       
  1355                                 #maxValue: 99
       
  1356                                 #acceptOnPointerLeave: false
       
  1357                               )
       
  1358                              )
       
  1359                            
       
  1360                           )
  1147                         )
  1361                         )
  1148                        )
  1362                        )
  1149                      
  1363                      
  1150                     )
  1364                     )
  1151                   )
  1365                   )
  1152                  )
  1366                  )
  1153                
  1367                
  1154               )
  1368               )
  1155               #handles: #(#Any 0.276 1.0)
  1369               #handles: #(#Any 0.3 1.0)
  1156             )
  1370             )
  1157            #(#UISubSpecification
  1371            #(#UISubSpecification
  1158               #name: 'infoBarSubSpec'
  1372               #name: 'infoBarSubSpec'
  1159               #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
  1373               #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
  1160               #majorKey: #ToolApplicationModel
  1374               #majorKey: #ToolApplicationModel
  1233 
  1447 
  1234     ^ 
  1448     ^ 
  1235      #(#Menu
  1449      #(#Menu
  1236         #(
  1450         #(
  1237          #(#MenuItem
  1451          #(#MenuItem
       
  1452             #activeHelpKey: #file
  1238             #label: '&File'
  1453             #label: '&File'
  1239             #translateLabel: true
  1454             #translateLabel: true
  1240             #activeHelpKey: #file
       
  1241             #shortcutKeyCharacter: #Cmdf
       
  1242             #submenu: 
  1455             #submenu: 
  1243            #(#Menu
  1456            #(#Menu
  1244               #(
  1457               #(
  1245                #(#MenuItem
  1458                #(#MenuItem
       
  1459                   #activeHelpKey: #fileNewImage
  1246                   #label: 'New...'
  1460                   #label: 'New...'
  1247                   #translateLabel: true
  1461                   #itemValue: #doNewImage
  1248                   #value: #doNewImage
  1462                   #translateLabel: true
  1249                   #activeHelpKey: #fileNewImage
       
  1250                 )
  1463                 )
  1251                #(#MenuItem
  1464                #(#MenuItem
  1252                   #label: '-'
  1465                   #label: '-'
  1253                 )
  1466                 )
  1254                #(#MenuItem
  1467                #(#MenuItem
       
  1468                   #activeHelpKey: #fileLoadFromClass
  1255                   #label: 'Load...'
  1469                   #label: 'Load...'
  1256                   #translateLabel: true
  1470                   #itemValue: #doLoadFromClass
  1257                   #value: #doLoadFromClass
  1471                   #translateLabel: true
  1258                   #activeHelpKey: #fileLoadFromClass
  1472                 )
  1259                 )
  1473                #(#MenuItem
  1260                #(#MenuItem
  1474                   #activeHelpKey: #fileLoadFromFile
  1261                   #label: 'Load from File...'
  1475                   #label: 'Load from File...'
  1262                   #translateLabel: true
  1476                   #itemValue: #doLoadFromFile
  1263                   #value: #doLoadFromFile
  1477                   #translateLabel: true
  1264                   #activeHelpKey: #fileLoadFromFile
  1478                 )
  1265                 )
  1479                #(#MenuItem
  1266                #(#MenuItem
  1480                   #activeHelpKey: #fileGrabImage
  1267                   #label: 'Grab from Screen'
  1481                   #label: 'Grab from Screen'
  1268                   #translateLabel: true
  1482                   #itemValue: #grabScreenImage
  1269                   #value: #grabScreenImage
  1483                   #translateLabel: true
  1270                   #activeHelpKey: #fileGrabImage
  1484                 )
  1271                 )
  1485                #(#MenuItem
  1272                #(#MenuItem
  1486                   #enabled: #imageHasNextImage
  1273                   #label: 'Next in Sequence'
  1487                   #label: 'Next in Sequence'
  1274                   #translateLabel: true
  1488                   #itemValue: #nextImageInSequence
  1275                   #value: #nextImageInSequence
  1489                   #translateLabel: true
  1276                   #enabled: #imageHasNextImage
       
  1277                 )
  1490                 )
  1278                #(#MenuItem
  1491                #(#MenuItem
  1279                   #label: '-'
  1492                   #label: '-'
  1280                 )
  1493                 )
  1281                #(#MenuItem
  1494                #(#MenuItem
  1282                   #label: 'Save'
       
  1283                   #translateLabel: true
       
  1284                   #value: #doSaveMethod
       
  1285                   #activeHelpKey: #fileSaveMethod
  1495                   #activeHelpKey: #fileSaveMethod
  1286                   #enabled: #imageIsLoadedAndClassDefined
  1496                   #enabled: #imageIsLoadedAndClassDefined
  1287                 )
  1497                   #label: 'Save'
  1288                #(#MenuItem
  1498                   #itemValue: #doSaveMethod
  1289                   #label: 'Save As...'
  1499                   #translateLabel: true
  1290                   #translateLabel: true
  1500                 )
  1291                   #value: #doSaveMethodAs
  1501                #(#MenuItem
  1292                   #activeHelpKey: #fileSaveMethodAs
  1502                   #activeHelpKey: #fileSaveMethodAs
  1293                   #enabled: #imageIsLoaded
  1503                   #enabled: #imageIsLoaded
       
  1504                   #label: 'Save As...'
       
  1505                   #itemValue: #doSaveMethodAs
       
  1506                   #translateLabel: true
  1294                 )
  1507                 )
  1295                #(#MenuItem
  1508                #(#MenuItem
  1296                   #label: '-'
  1509                   #label: '-'
  1297                 )
  1510                 )
  1298                #(#MenuItem
  1511                #(#MenuItem
  1299                   #label: 'Save to File...'
       
  1300                   #translateLabel: true
       
  1301                   #value: #doSaveImageFileAs
       
  1302                   #activeHelpKey: #fileSaveAs
  1512                   #activeHelpKey: #fileSaveAs
  1303                   #enabled: #imageIsLoaded
  1513                   #enabled: #imageIsLoaded
  1304                 )
  1514                   #label: 'Save to File...'
  1305                #(#MenuItem
  1515                   #itemValue: #doSaveImageFileAs
  1306                   #label: 'Save Mask to File...'
  1516                   #translateLabel: true
  1307                   #translateLabel: true
  1517                 )
  1308                   #value: #doSaveImageMaskFileAs
  1518                #(#MenuItem
  1309                   #activeHelpKey: #fileSaveMaskAs
  1519                   #activeHelpKey: #fileSaveMaskAs
  1310                   #enabled: #imageIsLoaded
  1520                   #enabled: #imageIsLoaded
  1311                 )
  1521                   #label: 'Save Mask to File...'
  1312                #(#MenuItem
  1522                   #itemValue: #doSaveImageMaskFileAs
  1313                   #label: 'Save As Button to File...'
  1523                   #translateLabel: true
  1314                   #translateLabel: true
  1524                 )
  1315                   #value: #doSaveButtonImageToFileAs
  1525                #(#MenuItem
  1316                   #activeHelpKey: #fileSaveButtonImageAs
  1526                   #activeHelpKey: #fileSaveButtonImageAs
  1317                   #enabled: #imageIsLoaded
  1527                   #enabled: #imageIsLoaded
       
  1528                   #label: 'Save As Button to File...'
       
  1529                   #itemValue: #doSaveButtonImageToFileAs
       
  1530                   #translateLabel: true
  1318                 )
  1531                 )
  1319                #(#MenuItem
  1532                #(#MenuItem
  1320                   #label: '-'
  1533                   #label: '-'
  1321                 )
  1534                 )
  1322                #(#MenuItem
  1535                #(#MenuItem
  1323                   #label: 'Show storeString'
       
  1324                   #translateLabel: true
       
  1325                   #value: #doShowStoreString
       
  1326                   #activeHelpKey: #fileShowStoreString
  1536                   #activeHelpKey: #fileShowStoreString
  1327                   #enabled: #imageIsLoaded
  1537                   #enabled: #imageIsLoaded
  1328                 )
  1538                   #label: 'Show storeString'
  1329                #(#MenuItem
  1539                   #itemValue: #doShowStoreString
  1330                   #label: 'Edit Mask'
  1540                   #translateLabel: true
  1331                   #translateLabel: true
  1541                 )
  1332                   #value: #doEditMask
  1542                #(#MenuItem
  1333                   #activeHelpKey: #fileEditMask
  1543                   #activeHelpKey: #fileEditMask
  1334                   #enabled: #imageIsLoaded
  1544                   #enabled: #imageIsLoaded
       
  1545                   #label: 'Edit Mask'
       
  1546                   #itemValue: #doEditMask
       
  1547                   #translateLabel: true
  1335                 )
  1548                 )
  1336                #(#MenuItem
  1549                #(#MenuItem
  1337                   #label: '-'
  1550                   #label: '-'
  1338                 )
  1551                 )
  1339                #(#MenuItem
  1552                #(#MenuItem
  1340                   #label: 'Print'
       
  1341                   #translateLabel: true
       
  1342                   #value: #doPrint
       
  1343                   #activeHelpKey: #filePrint
  1553                   #activeHelpKey: #filePrint
  1344                   #enabled: #imageIsLoaded
  1554                   #enabled: #imageIsLoaded
       
  1555                   #label: 'Print'
       
  1556                   #itemValue: #doPrint
       
  1557                   #translateLabel: true
  1345                 )
  1558                 )
  1346                #(#MenuItem
  1559                #(#MenuItem
  1347                   #label: '-'
  1560                   #label: '-'
  1348                 )
  1561                 )
  1349                #(#MenuItem
  1562                #(#MenuItem
  1350                   #label: 'Browse Class'
       
  1351                   #translateLabel: true
       
  1352                   #value: #doBrowseClass
       
  1353                   #activeHelpKey: #fileBrowseClass
  1563                   #activeHelpKey: #fileBrowseClass
  1354                   #enabled: #hasClassDefined
  1564                   #enabled: #hasClassDefined
       
  1565                   #label: 'Browse Class'
       
  1566                   #itemValue: #doBrowseClass
       
  1567                   #translateLabel: true
  1355                 )
  1568                 )
  1356                #(#MenuItem
  1569                #(#MenuItem
  1357                   #label: '-'
  1570                   #label: '-'
  1358                 )
  1571                 )
  1359                #(#MenuItem
  1572                #(#MenuItem
       
  1573                   #activeHelpKey: #fileExit
  1360                   #label: 'Exit'
  1574                   #label: 'Exit'
  1361                   #translateLabel: true
  1575                   #itemValue: #closeRequest
  1362                   #value: #closeRequest
  1576                   #translateLabel: true
  1363                   #activeHelpKey: #fileExit
       
  1364                 )
  1577                 )
  1365                )
  1578                )
  1366               nil
  1579               nil
  1367               nil
  1580               nil
  1368             )
  1581             )
  1369           )
  1582           )
  1370          #(#MenuItem
  1583          #(#MenuItem
       
  1584             #activeHelpKey: #edit
       
  1585             #enabled: #imageIsLoaded
  1371             #label: 'Edit'
  1586             #label: 'Edit'
  1372             #translateLabel: true
  1587             #translateLabel: true
  1373             #activeHelpKey: #edit
       
  1374             #enabled: #imageIsLoaded
       
  1375             #submenu: 
  1588             #submenu: 
  1376            #(#Menu
  1589            #(#Menu
  1377               #(
  1590               #(
  1378                #(#MenuItem
  1591                #(#MenuItem
  1379                   #label: 'Undo'
       
  1380                   #translateLabel: true
       
  1381                   #value: #doUndo
       
  1382                   #activeHelpKey: #editUndo
  1592                   #activeHelpKey: #editUndo
  1383                   #enabled: #valueOfCanUndo
  1593                   #enabled: #valueOfCanUndo
       
  1594                   #label: 'Undo'
       
  1595                   #itemValue: #doUndo
       
  1596                   #translateLabel: true
  1384                 )
  1597                 )
  1385                #(#MenuItem
  1598                #(#MenuItem
  1386                   #label: '-'
  1599                   #label: '-'
  1387                 )
  1600                 )
  1388                #(#MenuItem
  1601                #(#MenuItem
       
  1602                   #activeHelpKey: #editFlipVertical
  1389                   #label: 'Flip - Vertical'
  1603                   #label: 'Flip - Vertical'
  1390                   #translateLabel: true
  1604                   #itemValue: #doFlipVertical
  1391                   #value: #doFlipVertical
  1605                   #translateLabel: true
  1392                   #activeHelpKey: #editFlipVertical
  1606                 )
  1393                 )
  1607                #(#MenuItem
  1394                #(#MenuItem
  1608                   #activeHelpKey: #editFlipHorizontal
  1395                   #label: 'Flip - Horizontal'
  1609                   #label: 'Flip - Horizontal'
  1396                   #translateLabel: true
  1610                   #itemValue: #doFlipHorizontal
  1397                   #value: #doFlipHorizontal
  1611                   #translateLabel: true
  1398                   #activeHelpKey: #editFlipHorizontal
       
  1399                 )
  1612                 )
  1400                #(#MenuItem
  1613                #(#MenuItem
  1401                   #label: '-'
  1614                   #label: '-'
  1402                 )
  1615                 )
  1403                #(#MenuItem
  1616                #(#MenuItem
       
  1617                   #activeHelpKey: #editResize
  1404                   #label: 'Resize...'
  1618                   #label: 'Resize...'
  1405                   #translateLabel: true
  1619                   #itemValue: #doResizeImage
  1406                   #value: #doResizeImage
  1620                   #translateLabel: true
  1407                   #activeHelpKey: #editResize
  1621                 )
  1408                 )
  1622                #(#MenuItem
  1409                #(#MenuItem
  1623                   #activeHelpKey: #editMagnifyImage
  1410                   #label: 'Magnify...'
  1624                   #label: 'Magnify...'
  1411                   #translateLabel: true
  1625                   #itemValue: #doMagnifyImage
  1412                   #value: #doMagnifyImage
  1626                   #translateLabel: true
       
  1627                 )
       
  1628                #(#MenuItem
  1413                   #activeHelpKey: #editMagnifyImage
  1629                   #activeHelpKey: #editMagnifyImage
  1414                 )
       
  1415                #(#MenuItem
       
  1416                   #label: 'Magnify By...'
  1630                   #label: 'Magnify By...'
  1417                   #translateLabel: true
  1631                   #itemValue: #doMagnifyImageBy
  1418                   #value: #doMagnifyImageBy
  1632                   #translateLabel: true
  1419                   #activeHelpKey: #editMagnifyImage
  1633                 )
  1420                 )
  1634                #(#MenuItem
  1421                #(#MenuItem
  1635                   #activeHelpKey: #editRotate
  1422                   #label: 'Rotate...'
  1636                   #label: 'Rotate...'
  1423                   #translateLabel: true
  1637                   #itemValue: #doRotateImage
  1424                   #value: #doRotateImage
  1638                   #translateLabel: true
  1425                   #activeHelpKey: #editRotate
       
  1426                 )
  1639                 )
  1427                #(#MenuItem
  1640                #(#MenuItem
  1428                   #label: '-'
  1641                   #label: '-'
  1429                 )
  1642                 )
  1430                #(#MenuItem
  1643                #(#MenuItem
  1431                   #label: 'Invert'
  1644                   #label: 'Invert'
  1432                   #translateLabel: true
  1645                   #itemValue: #doNegativeImage
  1433                   #value: #doNegativeImage
  1646                   #translateLabel: true
  1434                 )
  1647                 )
  1435                #(#MenuItem
  1648                #(#MenuItem
  1436                   #label: '-'
  1649                   #label: '-'
  1437                 )
  1650                 )
  1438                #(#MenuItem
  1651                #(#MenuItem
  1440                   #translateLabel: true
  1653                   #translateLabel: true
  1441                   #submenu: 
  1654                   #submenu: 
  1442                  #(#Menu
  1655                  #(#Menu
  1443                     #(
  1656                     #(
  1444                      #(#MenuItem
  1657                      #(#MenuItem
       
  1658                         #activeHelpKey: #cropAll
  1445                         #label: 'All'
  1659                         #label: 'All'
       
  1660                         #itemValue: #doCropAll
  1446                         #translateLabel: true
  1661                         #translateLabel: true
  1447                         #value: #doCropAll
       
  1448                         #activeHelpKey: #cropAll
       
  1449                       )
  1662                       )
  1450                      #(#MenuItem
  1663                      #(#MenuItem
  1451                         #label: '-'
  1664                         #label: '-'
  1452                       )
  1665                       )
  1453                      #(#MenuItem
  1666                      #(#MenuItem
       
  1667                         #activeHelpKey: #cropLeft
  1454                         #label: 'Left'
  1668                         #label: 'Left'
       
  1669                         #itemValue: #doCropLeft
  1455                         #translateLabel: true
  1670                         #translateLabel: true
  1456                         #value: #doCropLeft
       
  1457                         #activeHelpKey: #cropLeft
       
  1458                       )
  1671                       )
  1459                      #(#MenuItem
  1672                      #(#MenuItem
       
  1673                         #activeHelpKey: #cropRight
  1460                         #label: 'Right'
  1674                         #label: 'Right'
       
  1675                         #itemValue: #doCropRight
  1461                         #translateLabel: true
  1676                         #translateLabel: true
  1462                         #value: #doCropRight
       
  1463                         #activeHelpKey: #cropRight
       
  1464                       )
  1677                       )
  1465                      #(#MenuItem
  1678                      #(#MenuItem
       
  1679                         #activeHelpKey: #cropTop
  1466                         #label: 'Top'
  1680                         #label: 'Top'
       
  1681                         #itemValue: #doCropTop
  1467                         #translateLabel: true
  1682                         #translateLabel: true
  1468                         #value: #doCropTop
       
  1469                         #activeHelpKey: #cropTop
       
  1470                       )
  1683                       )
  1471                      #(#MenuItem
  1684                      #(#MenuItem
       
  1685                         #activeHelpKey: #cropBottom
  1472                         #label: 'Bottom'
  1686                         #label: 'Bottom'
       
  1687                         #itemValue: #doCropBottom
  1473                         #translateLabel: true
  1688                         #translateLabel: true
  1474                         #value: #doCropBottom
       
  1475                         #activeHelpKey: #cropBottom
       
  1476                       )
  1689                       )
  1477                      #(#MenuItem
  1690                      #(#MenuItem
  1478                         #label: '-'
  1691                         #label: '-'
  1479                       )
  1692                       )
  1480                      #(#MenuItem
  1693                      #(#MenuItem
       
  1694                         #activeHelpKey: #cropManual
  1481                         #label: 'Manual...'
  1695                         #label: 'Manual...'
       
  1696                         #itemValue: #doCropManual
  1482                         #translateLabel: true
  1697                         #translateLabel: true
  1483                         #value: #doCropManual
       
  1484                         #activeHelpKey: #cropManual
       
  1485                       )
  1698                       )
  1486                      )
  1699                      )
  1487                     nil
  1700                     nil
  1488                     nil
  1701                     nil
  1489                   )
  1702                   )
  1490                 )
  1703                 )
  1491                #(#MenuItem
  1704                #(#MenuItem
       
  1705                   #activeHelpKey: #shiftManual
  1492                   #label: 'Shift...'
  1706                   #label: 'Shift...'
  1493                   #translateLabel: true
  1707                   #itemValue: #doShiftManual
  1494                   #value: #doShiftManual
  1708                   #translateLabel: true
  1495                   #activeHelpKey: #shiftManual
  1709                 )
  1496                 )
  1710                #(#MenuItem
  1497                #(#MenuItem
  1711                   #activeHelpKey: #uncropManual
  1498                   #label: 'Ungrop (Add Border)...'
  1712                   #label: 'Ungrop (Add Border)...'
  1499                   #translateLabel: true
  1713                   #itemValue: #doUnCropManual
  1500                   #value: #doUnCropManual
  1714                   #translateLabel: true
  1501                   #activeHelpKey: #uncropManual
       
  1502                 )
  1715                 )
  1503                )
  1716                )
  1504               nil
  1717               nil
  1505               nil
  1718               nil
  1506             )
  1719             )
  1507           )
  1720           )
  1508          #(#MenuItem
  1721          #(#MenuItem
       
  1722             #enabled: #imageIsLoaded
       
  1723             #label: 'Mode'
       
  1724             #translateLabel: true
       
  1725             #submenuChannel: #modeMenu
       
  1726           )
       
  1727          #(#MenuItem
       
  1728             #activeHelpKey: #colorMap
       
  1729             #enabled: #imageIsLoaded
  1509             #label: 'ColorMap'
  1730             #label: 'ColorMap'
  1510             #translateLabel: true
  1731             #translateLabel: true
  1511             #activeHelpKey: #colorMap
       
  1512             #enabled: #imageIsLoaded
       
  1513             #submenu: 
  1732             #submenu: 
  1514            #(#Menu
  1733            #(#Menu
  1515               #(
  1734               #(
  1516                #(#MenuItem
  1735                #(#MenuItem
       
  1736                   #activeHelpKey: #colorMap8
  1517                   #label: '8-Plane'
  1737                   #label: '8-Plane'
  1518                   #translateLabel: true
  1738                   #itemValue: #colorMapMode:
  1519                   #value: #colorMapMode:
  1739                   #translateLabel: true
  1520                   #activeHelpKey: #colorMap8
       
  1521                   #argument: '8-plane'
  1740                   #argument: '8-plane'
  1522                   #choice: #colorMapMode
  1741                   #choice: #colorMapMode
  1523                   #choiceValue: '8-plane'
  1742                   #choiceValue: '8-plane'
  1524                 )
  1743                 )
  1525                #(#MenuItem
  1744                #(#MenuItem
       
  1745                   #activeHelpKey: #colorMap4
  1526                   #label: '4-Plane'
  1746                   #label: '4-Plane'
  1527                   #translateLabel: true
  1747                   #itemValue: #colorMapMode:
  1528                   #value: #colorMapMode:
  1748                   #translateLabel: true
  1529                   #activeHelpKey: #colorMap4
       
  1530                   #argument: '4-plane'
  1749                   #argument: '4-plane'
  1531                   #choice: #colorMapMode
  1750                   #choice: #colorMapMode
  1532                   #choiceValue: '4-plane'
  1751                   #choiceValue: '4-plane'
  1533                 )
  1752                 )
  1534                #(#MenuItem
  1753                #(#MenuItem
       
  1754                   #activeHelpKey: #colorMap2
  1535                   #label: '2-Plane'
  1755                   #label: '2-Plane'
  1536                   #translateLabel: true
  1756                   #itemValue: #colorMapMode:
  1537                   #value: #colorMapMode:
  1757                   #translateLabel: true
  1538                   #activeHelpKey: #colorMap2
       
  1539                   #argument: '2-plane'
  1758                   #argument: '2-plane'
  1540                   #choice: #colorMapMode
  1759                   #choice: #colorMapMode
  1541                   #choiceValue: '2-plane'
  1760                   #choiceValue: '2-plane'
  1542                 )
  1761                 )
  1543                #(#MenuItem
  1762                #(#MenuItem
       
  1763                   #activeHelpKey: #colorMap1
  1544                   #label: '1-Plane'
  1764                   #label: '1-Plane'
  1545                   #translateLabel: true
  1765                   #itemValue: #colorMapMode:
  1546                   #value: #colorMapMode:
  1766                   #translateLabel: true
  1547                   #activeHelpKey: #colorMap1
       
  1548                   #argument: '1-plane'
  1767                   #argument: '1-plane'
  1549                   #choice: #colorMapMode
  1768                   #choice: #colorMapMode
  1550                   #choiceValue: '1-plane'
  1769                   #choiceValue: '1-plane'
  1551                 )
  1770                 )
  1552                #(#MenuItem
  1771                #(#MenuItem
  1553                   #label: '-'
  1772                   #label: '-'
  1554                 )
  1773                 )
  1555                #(#MenuItem
  1774                #(#MenuItem
       
  1775                   #activeHelpKey: #colorMap8M
  1556                   #label: '8-Plane + Mask'
  1776                   #label: '8-Plane + Mask'
  1557                   #translateLabel: true
  1777                   #itemValue: #colorMapMode:
  1558                   #value: #colorMapMode:
  1778                   #translateLabel: true
  1559                   #activeHelpKey: #colorMap8M
       
  1560                   #argument: '8-plane + mask'
  1779                   #argument: '8-plane + mask'
  1561                   #choice: #colorMapMode
  1780                   #choice: #colorMapMode
  1562                   #choiceValue: '8-plane + mask'
  1781                   #choiceValue: '8-plane + mask'
  1563                 )
  1782                 )
  1564                #(#MenuItem
  1783                #(#MenuItem
       
  1784                   #activeHelpKey: #colorMap4M
  1565                   #label: '4-Plane + Mask'
  1785                   #label: '4-Plane + Mask'
  1566                   #translateLabel: true
  1786                   #itemValue: #colorMapMode:
  1567                   #value: #colorMapMode:
  1787                   #translateLabel: true
  1568                   #activeHelpKey: #colorMap4M
       
  1569                   #argument: '4-plane + mask'
  1788                   #argument: '4-plane + mask'
  1570                   #choice: #colorMapMode
  1789                   #choice: #colorMapMode
  1571                   #choiceValue: '4-plane + mask'
  1790                   #choiceValue: '4-plane + mask'
  1572                 )
  1791                 )
  1573                #(#MenuItem
  1792                #(#MenuItem
       
  1793                   #activeHelpKey: #colorMap2M
  1574                   #label: '2-Plane + Mask'
  1794                   #label: '2-Plane + Mask'
  1575                   #translateLabel: true
  1795                   #itemValue: #colorMapMode:
  1576                   #value: #colorMapMode:
  1796                   #translateLabel: true
  1577                   #activeHelpKey: #colorMap2M
       
  1578                   #argument: '2-plane + mask'
  1797                   #argument: '2-plane + mask'
  1579                   #choice: #colorMapMode
  1798                   #choice: #colorMapMode
  1580                   #choiceValue: '2-plane + mask'
  1799                   #choiceValue: '2-plane + mask'
  1581                 )
  1800                 )
  1582                #(#MenuItem
  1801                #(#MenuItem
       
  1802                   #activeHelpKey: #colorMap1M
  1583                   #label: '1-Plane + Mask'
  1803                   #label: '1-Plane + Mask'
  1584                   #translateLabel: true
  1804                   #itemValue: #colorMapMode:
  1585                   #value: #colorMapMode:
  1805                   #translateLabel: true
  1586                   #activeHelpKey: #colorMap1M
       
  1587                   #argument: '1-plane + mask'
  1806                   #argument: '1-plane + mask'
  1588                   #choice: #colorMapMode
  1807                   #choice: #colorMapMode
  1589                   #choiceValue: '1-plane + mask'
  1808                   #choiceValue: '1-plane + mask'
  1590                 )
  1809                 )
  1591                #(#MenuItem
  1810                #(#MenuItem
  1592                   #label: '-'
  1811                   #label: '-'
  1593                 )
  1812                 )
  1594                #(#MenuItem
  1813                #(#MenuItem
  1595                   #label: 'Compress Colormap'
       
  1596                   #translateLabel: true
       
  1597                   #value: #compressColorMap
       
  1598                   #activeHelpKey: #compressColormap
  1814                   #activeHelpKey: #compressColormap
  1599                   #enabled: #hasColormap
  1815                   #enabled: #hasColormap
  1600                 )
  1816                   #label: 'Compress Colormap'
  1601                #(#MenuItem
  1817                   #itemValue: #compressColorMap
       
  1818                   #translateLabel: true
       
  1819                 )
       
  1820                #(#MenuItem
       
  1821                   #enabled: #hasColormap
  1602                   #label: 'Sort Colormap'
  1822                   #label: 'Sort Colormap'
  1603                   #translateLabel: true
  1823                   #itemValue: #sortColorMap
  1604                   #value: #sortColorMap
  1824                   #translateLabel: true
  1605                   #enabled: #hasColormap
       
  1606                 )
  1825                 )
  1607                #(#MenuItem
  1826                #(#MenuItem
  1608                   #label: 'Reduce Number of Colors...'
  1827                   #label: 'Reduce Number of Colors...'
  1609                   #translateLabel: true
  1828                   #itemValue: #reduceNumberOfColors
  1610                   #value: #reduceNumberOfColors
  1829                   #translateLabel: true
  1611                 )
  1830                 )
  1612                #(#MenuItem
  1831                #(#MenuItem
  1613                   #label: '-'
  1832                   #label: '-'
  1614                 )
  1833                 )
  1615                #(#MenuItem
  1834                #(#MenuItem
  1616                   #label: 'Make GrayScale'
  1835                   #label: 'Make GrayScale'
  1617                   #translateLabel: true
  1836                   #itemValue: #makeGrayScale
  1618                   #value: #makeGrayScale
  1837                   #translateLabel: true
  1619                 )
  1838                 )
  1620                #(#MenuItem
  1839                #(#MenuItem
  1621                   #label: 'Make Brighter'
  1840                   #label: 'Make Brighter'
  1622                   #translateLabel: true
  1841                   #itemValue: #makeBrighter
  1623                   #value: #makeBrighter
  1842                   #translateLabel: true
  1624                 )
  1843                 )
  1625                #(#MenuItem
  1844                #(#MenuItem
  1626                   #label: 'Make Darker'
  1845                   #label: 'Make Darker'
  1627                   #translateLabel: true
  1846                   #itemValue: #makeDarker
  1628                   #value: #makeDarker
  1847                   #translateLabel: true
  1629                 )
  1848                 )
  1630                #(#MenuItem
  1849                #(#MenuItem
  1631                   #label: 'Make Inverse'
  1850                   #label: 'Make Inverse'
  1632                   #translateLabel: true
  1851                   #itemValue: #makeInverse
  1633                   #value: #makeInverse
  1852                   #translateLabel: true
  1634                 )
  1853                 )
  1635                #(#MenuItem
  1854                #(#MenuItem
  1636                   #label: '-'
  1855                   #label: '-'
  1637                 )
  1856                 )
  1638                #(#MenuItem
  1857                #(#MenuItem
  1639                   #label: 'Copy Mask'
       
  1640                   #translateLabel: true
       
  1641                   #value: #copyMask
       
  1642                   #activeHelpKey: #copyMask
  1858                   #activeHelpKey: #copyMask
  1643                   #enabled: #hasMask
  1859                   #enabled: #hasMask
  1644                 )
  1860                   #label: 'Copy Mask'
  1645                #(#MenuItem
  1861                   #itemValue: #copyMask
  1646                   #label: 'Paste Mask'
  1862                   #translateLabel: true
  1647                   #translateLabel: true
  1863                 )
  1648                   #value: #pasteMask
  1864                #(#MenuItem
  1649                   #activeHelpKey: #pasteMask
  1865                   #activeHelpKey: #pasteMask
  1650                   #enabled: #hasMask
  1866                   #enabled: #hasMask
       
  1867                   #label: 'Paste Mask'
       
  1868                   #itemValue: #pasteMask
       
  1869                   #translateLabel: true
  1651                 )
  1870                 )
  1652                #(#MenuItem
  1871                #(#MenuItem
  1653                   #label: 'Clear Masked Pixels'
  1872                   #label: 'Clear Masked Pixels'
  1654                   #translateLabel: true
  1873                   #itemValue: #clearMaskedPixels
  1655                   #value: #clearMaskedPixels
  1874                   #translateLabel: true
  1656                 )
  1875                 )
  1657                )
  1876                )
  1658               nil
  1877               nil
  1659               nil
  1878               nil
  1660             )
  1879             )
  1664             #translateLabel: true
  1883             #translateLabel: true
  1665             #submenu: 
  1884             #submenu: 
  1666            #(#Menu
  1885            #(#Menu
  1667               #(
  1886               #(
  1668                #(#MenuItem
  1887                #(#MenuItem
       
  1888                   #activeHelpKey: #settingsGridMagnification
  1669                   #label: 'Grid Magnification Limit...'
  1889                   #label: 'Grid Magnification Limit...'
  1670                   #translateLabel: true
  1890                   #itemValue: #doChangeGridMagnification
  1671                   #value: #doChangeGridMagnification
  1891                   #translateLabel: true
  1672                   #activeHelpKey: #settingsGridMagnification
       
  1673                 )
  1892                 )
  1674                )
  1893                )
  1675               nil
  1894               nil
  1676               nil
  1895               nil
  1677             )
  1896             )
  1678           )
  1897           )
  1679          #(#MenuItem
  1898          #(#MenuItem
       
  1899             #activeHelpKey: #history
  1680             #label: 'History'
  1900             #label: 'History'
  1681             #translateLabel: true
  1901             #translateLabel: true
  1682             #activeHelpKey: #history
       
  1683             #submenuChannel: #menuHistory
  1902             #submenuChannel: #menuHistory
  1684           )
  1903           )
  1685          #(#MenuItem
  1904          #(#MenuItem
       
  1905             #activeHelpKey: #help
  1686             #label: 'Help'
  1906             #label: 'Help'
  1687             #translateLabel: true
  1907             #translateLabel: true
  1688             #startGroup: #right
  1908             #startGroup: #right
  1689             #activeHelpKey: #help
       
  1690             #submenuChannel: #menuHelp
  1909             #submenuChannel: #menuHelp
  1691           )
  1910           )
  1692          )
  1911          )
  1693         nil
  1912         nil
  1694         nil
  1913         nil
  1753 
  1972 
  1754     ^ 
  1973     ^ 
  1755      #(#Menu
  1974      #(#Menu
  1756         #(
  1975         #(
  1757          #(#MenuItem
  1976          #(#MenuItem
       
  1977             #activeHelpKey: #fileNewImage
  1758             #label: 'newImage'
  1978             #label: 'newImage'
       
  1979             #itemValue: #doNewImage
       
  1980             #translateLabel: true
  1759             #isButton: true
  1981             #isButton: true
  1760             #value: #doNewImage
       
  1761             #activeHelpKey: #fileNewImage
       
  1762             #labelImage: #(#ResourceRetriever #Icon #newIcon)
  1982             #labelImage: #(#ResourceRetriever #Icon #newIcon)
  1763           )
  1983           )
  1764          #(#MenuItem
  1984          #(#MenuItem
       
  1985             #activeHelpKey: #fileLoadFromClass
  1765             #label: 'loadFromClass'
  1986             #label: 'loadFromClass'
       
  1987             #itemValue: #doLoadFromClass
       
  1988             #translateLabel: true
  1766             #isButton: true
  1989             #isButton: true
  1767             #value: #doLoadFromClass
       
  1768             #activeHelpKey: #fileLoadFromClass
       
  1769             #labelImage: #(#ResourceRetriever #Icon #loadIcon)
  1990             #labelImage: #(#ResourceRetriever #Icon #loadIcon)
  1770           )
  1991           )
  1771          #(#MenuItem
  1992          #(#MenuItem
  1772             #label: 'saveMethod'
       
  1773             #isButton: true
       
  1774             #value: #doSaveMethod
       
  1775             #activeHelpKey: #fileSaveMethod
  1993             #activeHelpKey: #fileSaveMethod
  1776             #enabled: #imageIsLoaded
  1994             #enabled: #imageIsLoaded
       
  1995             #label: 'saveMethod'
       
  1996             #itemValue: #doSaveMethod
       
  1997             #translateLabel: true
       
  1998             #isButton: true
  1777             #labelImage: #(#ResourceRetriever #Icon #saveIcon)
  1999             #labelImage: #(#ResourceRetriever #Icon #saveIcon)
  1778           )
  2000           )
  1779          #(#MenuItem
  2001          #(#MenuItem
  1780             #label: ''
  2002             #label: ''
  1781           )
  2003           )
  1782          #(#MenuItem
  2004          #(#MenuItem
  1783             #label: ''
  2005             #label: ''
  1784           )
  2006           )
  1785          #(#MenuItem
  2007          #(#MenuItem
  1786             #label: ''
  2008             #activeHelpKey: #editUndo
       
  2009             #enabled: #valueOfCanUndo
       
  2010             #label: 'Undo'
       
  2011             #itemValue: #doUndo
       
  2012             #translateLabel: true
       
  2013             #isButton: true
       
  2014             #labelImage: #(#ResourceRetriever #ToolbarIconLibrary #undo16x16Icon2)
  1787           )
  2015           )
       
  2016          )
       
  2017         nil
       
  2018         nil
       
  2019       )
       
  2020 !
       
  2021 
       
  2022 modeMenu
       
  2023     "This resource specification was automatically generated
       
  2024      by the MenuEditor of ST/X."
       
  2025 
       
  2026     "Do not manually edit this!! If it is corrupted,
       
  2027      the MenuEditor may not be able to read the specification."
       
  2028 
       
  2029     "
       
  2030      MenuEditor new openOnClass:ImageEditor andSelector:#modeMenu
       
  2031      (Menu new fromLiteralArrayEncoding:(ImageEditor modeMenu)) startUp
       
  2032     "
       
  2033 
       
  2034     <resource: #menu>
       
  2035 
       
  2036     ^ 
       
  2037      #(#Menu
       
  2038         #(
  1788          #(#MenuItem
  2039          #(#MenuItem
  1789             #label: ''
       
  1790           )
       
  1791          #(#MenuItem
       
  1792             #label: 'Point'
       
  1793             #activeHelpKey: #drawModePoint
  2040             #activeHelpKey: #drawModePoint
  1794             #enabled: #imageIsLoaded
  2041             #enabled: #imageIsLoaded
       
  2042             #label: 'Point'
       
  2043             #translateLabel: true
  1795             #choice: #editMode
  2044             #choice: #editMode
  1796             #choiceValue: #point
  2045             #choiceValue: #point
  1797           )
  2046           )
  1798          #(#MenuItem
  2047          #(#MenuItem
  1799             #label: 'Rect'
       
  1800             #activeHelpKey: #drawModeBox
  2048             #activeHelpKey: #drawModeBox
  1801             #enabled: #imageIsLoaded
  2049             #enabled: #imageIsLoaded
       
  2050             #label: 'Rect'
       
  2051             #translateLabel: true
  1802             #choice: #editMode
  2052             #choice: #editMode
  1803             #choiceValue: #box
  2053             #choiceValue: #box
  1804           )
  2054           )
  1805          #(#MenuItem
  2055          #(#MenuItem
  1806             #label: 'FillRect'
       
  1807             #activeHelpKey: #drawModeFilledBox
  2056             #activeHelpKey: #drawModeFilledBox
  1808             #enabled: #imageIsLoaded
  2057             #enabled: #imageIsLoaded
       
  2058             #label: 'FillRect'
       
  2059             #translateLabel: true
  1809             #choice: #editMode
  2060             #choice: #editMode
  1810             #choiceValue: #filledBox
  2061             #choiceValue: #filledBox
  1811           )
  2062           )
  1812          #(#MenuItem
  2063          #(#MenuItem
  1813             #label: 'Fill'
       
  1814             #activeHelpKey: #drawModeFill
  2064             #activeHelpKey: #drawModeFill
  1815             #enabled: #imageIsLoaded
  2065             #enabled: #imageIsLoaded
       
  2066             #label: 'Fill'
       
  2067             #translateLabel: true
  1816             #choice: #editMode
  2068             #choice: #editMode
  1817             #choiceValue: #fill
  2069             #choiceValue: #fill
  1818           )
  2070           )
  1819          #(#MenuItem
  2071          #(#MenuItem
  1820             #label: 'Copy'
       
  1821             #activeHelpKey: #drawModeCopy
  2072             #activeHelpKey: #drawModeCopy
  1822             #enabled: #imageIsLoaded
  2073             #enabled: #imageIsLoaded
       
  2074             #label: 'Copy'
       
  2075             #translateLabel: true
  1823             #choice: #editMode
  2076             #choice: #editMode
  1824             #choiceValue: #copy
  2077             #choiceValue: #copy
  1825           )
  2078           )
  1826          #(#MenuItem
  2079          #(#MenuItem
  1827             #label: 'Paste'
       
  1828             #activeHelpKey: #drawModePaste
  2080             #activeHelpKey: #drawModePaste
  1829             #enabled: #imageIsLoaded
  2081             #enabled: #imageIsLoaded
       
  2082             #label: 'Paste'
       
  2083             #translateLabel: true
  1830             #choice: #editMode
  2084             #choice: #editMode
  1831             #choiceValue: #paste
  2085             #choiceValue: #paste
  1832           )
  2086           )
  1833          #(#MenuItem
  2087          #(#MenuItem
  1834             #label: 'Paste Under'
       
  1835             #activeHelpKey: #drawModePasteUnder
  2088             #activeHelpKey: #drawModePasteUnder
  1836             #enabled: #imageIsLoaded
  2089             #enabled: #imageIsLoaded
       
  2090             #label: 'Paste Under'
       
  2091             #translateLabel: true
  1837             #choice: #editMode
  2092             #choice: #editMode
  1838             #choiceValue: #pasteUnder
  2093             #choiceValue: #pasteUnder
  1839           )
  2094           )
  1840          #(#MenuItem
  2095          #(#MenuItem
  1841             #label: 'Paste With Mask'
       
  1842             #activeHelpKey: #drawModePasteWithMask
  2096             #activeHelpKey: #drawModePasteWithMask
  1843             #enabled: #imageIsLoaded
  2097             #enabled: #imageIsLoaded
       
  2098             #label: 'Paste With Mask'
       
  2099             #translateLabel: true
  1844             #choice: #editMode
  2100             #choice: #editMode
  1845             #choiceValue: #pasteWithMask
  2101             #choiceValue: #pasteWithMask
  1846           )
  2102           )
  1847          #(#MenuItem
  2103          #(#MenuItem
  1848             #label: 'Special'
       
  1849             #activeHelpKey: #drawModeSpecial
  2104             #activeHelpKey: #drawModeSpecial
  1850             #enabled: #imageIsLoaded
  2105             #enabled: #imageIsLoaded
       
  2106             #label: 'Special'
       
  2107             #translateLabel: true
  1851             #choice: #editMode
  2108             #choice: #editMode
  1852             #choiceValue: #specialOperation
  2109             #choiceValue: #specialOperation
  1853           )
  2110           )
  1854          )
  2111          )
  1855         nil
  2112         nil
  1876         #(
  2133         #(
  1877          #(#MenuItem
  2134          #(#MenuItem
  1878             #label: 'TileMode'
  2135             #label: 'TileMode'
  1879             #translateLabel: true
  2136             #translateLabel: true
  1880             #indication: #tileModeHolder
  2137             #indication: #tileModeHolder
       
  2138           )
       
  2139          )
       
  2140         nil
       
  2141         nil
       
  2142       )
       
  2143 !
       
  2144 
       
  2145 toolsMenuToolbar
       
  2146     "This resource specification was automatically generated
       
  2147      by the MenuEditor of ST/X."
       
  2148 
       
  2149     "Do not manually edit this!! If it is corrupted,
       
  2150      the MenuEditor may not be able to read the specification."
       
  2151 
       
  2152     "
       
  2153      MenuEditor new openOnClass:ImageEditor andSelector:#toolsMenuToolbar
       
  2154      (Menu new fromLiteralArrayEncoding:(ImageEditor toolsMenuToolbar)) startUp
       
  2155     "
       
  2156 
       
  2157     <resource: #menu>
       
  2158 
       
  2159     ^ 
       
  2160      #(#Menu
       
  2161         #(
       
  2162          #(#MenuItem
       
  2163             #activeHelpKey: #drawModePoint
       
  2164             #enabled: #imageIsLoaded
       
  2165             #label: 'Point'
       
  2166             #translateLabel: true
       
  2167             #isButton: true
       
  2168             #labelImage: #(#ResourceRetriever #ImageEditor #pointIcon)
       
  2169             #choice: #editMode
       
  2170             #choiceValue: #point
       
  2171           )
       
  2172          #(#MenuItem
       
  2173             #activeHelpKey: #drawModeBox
       
  2174             #enabled: #imageIsLoaded
       
  2175             #label: 'Rect'
       
  2176             #translateLabel: true
       
  2177             #isButton: true
       
  2178             #labelImage: #(#ResourceRetriever #ImageEditor #rectIcon)
       
  2179             #choice: #editMode
       
  2180             #choiceValue: #box
       
  2181           )
       
  2182          #(#MenuItem
       
  2183             #activeHelpKey: #drawModeFilledBox
       
  2184             #enabled: #imageIsLoaded
       
  2185             #label: 'FillRect'
       
  2186             #translateLabel: true
       
  2187             #isButton: true
       
  2188             #labelImage: #(#ResourceRetriever #ImageEditor #fillRectIcon)
       
  2189             #choice: #editMode
       
  2190             #choiceValue: #filledBox
       
  2191           )
       
  2192          #(#MenuItem
       
  2193             #activeHelpKey: #drawModeFill
       
  2194             #enabled: #imageIsLoaded
       
  2195             #label: 'Fill'
       
  2196             #translateLabel: true
       
  2197             #isButton: true
       
  2198             #labelImage: #(#ResourceRetriever #ImageEditor #fillIcon)
       
  2199             #choice: #editMode
       
  2200             #choiceValue: #fill
       
  2201           )
       
  2202          #(#MenuItem
       
  2203             #activeHelpKey: #drawModeCopy
       
  2204             #enabled: #imageIsLoaded
       
  2205             #label: 'Copy'
       
  2206             #translateLabel: true
       
  2207             #isButton: true
       
  2208             #labelImage: #(#ResourceRetriever #ImageEditor #copyIcon)
       
  2209             #choice: #editMode
       
  2210             #choiceValue: #copy
       
  2211           )
       
  2212          #(#MenuItem
       
  2213             #activeHelpKey: #drawModePaste
       
  2214             #enabled: #imageIsLoaded
       
  2215             #label: 'Paste'
       
  2216             #translateLabel: true
       
  2217             #isButton: true
       
  2218             #labelImage: #(#ResourceRetriever #ImageEditor #pasteIcon)
       
  2219             #choice: #editMode
       
  2220             #choiceValue: #paste
       
  2221           )
       
  2222          #(#MenuItem
       
  2223             #activeHelpKey: #drawModePasteUnder
       
  2224             #enabled: #imageIsLoaded
       
  2225             #label: 'Paste Under'
       
  2226             #translateLabel: true
       
  2227             #isButton: true
       
  2228             #labelImage: #(#ResourceRetriever #ImageEditor #pasteUnderIcon)
       
  2229             #choice: #editMode
       
  2230             #choiceValue: #pasteUnder
       
  2231           )
       
  2232          #(#MenuItem
       
  2233             #activeHelpKey: #drawModePasteWithMask
       
  2234             #enabled: #imageIsLoaded
       
  2235             #label: 'Paste With Mask'
       
  2236             #translateLabel: true
       
  2237             #isButton: true
       
  2238             #labelImage: #(#ResourceRetriever #ImageEditor #pasteWithMaskIcon)
       
  2239             #choice: #editMode
       
  2240             #choiceValue: #pasteWithMask
       
  2241           )
       
  2242          #(#MenuItem
       
  2243             #activeHelpKey: #drawModeSpecial
       
  2244             #enabled: #imageIsLoaded
       
  2245             #label: 'Special'
       
  2246             #translateLabel: true
       
  2247             #isButton: true
       
  2248             #labelImage: #(#ResourceRetriever #ImageEditor #specialIcon)
       
  2249             #choice: #editMode
       
  2250             #choiceValue: #specialOperation
  1881           )
  2251           )
  1882          )
  2252          )
  1883         nil
  2253         nil
  1884         nil
  2254         nil
  1885       )
  2255       )
  3712 !
  4082 !
  3713 
  4083 
  3714 doNewImage
  4084 doNewImage
  3715     "opens a dialog with choices of size and color map for creating a new image"
  4085     "opens a dialog with choices of size and color map for creating a new image"
  3716 
  4086 
  3717     |aspects width height cMap imageClass image szString|
  4087     |aspects width height cMapString cMap imageClass image szString|
  3718 
       
  3719 
  4088 
  3720     aspects  := IdentityDictionary new
  4089     aspects  := IdentityDictionary new
  3721         at:#listOfSizes         put: self class listOfDefaultSizes asValue;
  4090         at:#listOfSizes         put: self class listOfDefaultSizes asValue;
  3722         at:#listOfColorMaps     put: self class listOfColorMaps keys asSortedCollection asValue;
  4091         at:#listOfColorMaps     put: self class listOfColorMaps keys asSortedCollection asValue;
  3723         at:#selectionOfSize     put: self class listOfDefaultSizes first copy asValue;
  4092         at:#selectionOfSize     put: (LastSizeString ? self class listOfDefaultSizes first copy) asValue;
  3724         at:#selectionOfColorMap put: self class listOfColorMaps keys asSortedCollection first asValue;
  4093         at:#selectionOfColorMap put: (LastColormapMode ? self class listOfColorMaps keys asSortedCollection first) asValue;
  3725         yourself.
  4094         yourself.
  3726 
  4095 
  3727     (self openDialogInterface:#dialogSpecForNewImage withBindings:aspects)
  4096     (self openDialogInterface:#dialogSpecForNewImage withBindings:aspects)
  3728     ifTrue:[
  4097     ifTrue:[
  3729         szString := (aspects at:#selectionOfSize) value.
  4098         szString := (aspects at:#selectionOfSize) value.
  3730         width  := 128 min: (Integer readFromString: (szString upTo: $x) onError:[24]).
  4099         width  := 128 min: (Integer readFromString: (szString upTo: $x) onError:[24]).
  3731         height := 128 min: (Integer readFromString: (szString copy reverse upTo: $x) reverse onError:[24]).
  4100         height := 128 min: (Integer readFromString: (szString copy reverse upTo: $x) reverse onError:[24]).
  3732 
  4101 
       
  4102         cMapString := (aspects at:#selectionOfColorMap) value.
  3733         cMap       := (self class listOfColorMaps at: (colorMapMode value: (aspects at:#selectionOfColorMap) value) value).
  4103         cMap       := (self class listOfColorMaps at: (colorMapMode value: (aspects at:#selectionOfColorMap) value) value).
  3734         imageClass := Image implementorForDepth: ((cMap size log: 2) asInteger).
  4104         imageClass := Image implementorForDepth: ((cMap size log: 2) asInteger).
  3735         image      := imageClass width: width height: height fromArray: (ByteArray new: width*height).
  4105         image      := imageClass width: width height: height fromArray: (ByteArray new: width*height).
       
  4106 
       
  4107         LastSizeString := szString.
       
  4108         LastColormapMode := cMapString.
  3736 
  4109 
  3737         (colorMapMode value endsWith: 'mask')
  4110         (colorMapMode value endsWith: 'mask')
  3738         ifTrue:
  4111         ifTrue:
  3739         [
  4112         [
  3740             image mask: (Depth1Image width: width height: height depth: 1 fromArray: (ByteArray new: width*height)) clearMaskedPixels
  4113             image mask: (Depth1Image width: width height: height depth: 1 fromArray: (ByteArray new: width*height)) clearMaskedPixels