ImageEditor.st
author Claus Gittinger <cg@exept.de>
Wed, 29 Jul 2009 20:02:02 +0200
changeset 2570 4e663bc64364
parent 2567 903843f8a824
child 2571 8b182cc4cac7
permissions -rw-r--r--
changed #requestPackage
tz@400
     1
"
tz@767
     2
 COPYRIGHT (c) 1997-1998 by eXept Software AG
tz@400
     3
              All Rights Reserved
tz@400
     4
tz@400
     5
 This software is furnished under a license and may be used
tz@400
     6
 only in accordance with the terms of that license and with the
tz@405
     7
 inclusion of the above copyright notice. This software may not
tz@400
     8
 be provided or otherwise made available to, or used by, any
tz@405
     9
 other person. No title to or ownership of the software is
tz@400
    10
 hereby transferred.
tz@400
    11
"
cg@1376
    12
"{ Package: 'stx:libtool2' }"
cg@1376
    13
cg@1975
    14
ResourceSpecEditor subclass:#ImageEditor
tz@975
    15
	instanceVariableNames:'imageEditView colorMapMode editMode mouseKeyColorMode
cg@1960
    16
		selectedColorIndex postOpenAction imageSeqNr drawingColormap
cg@1960
    17
		lastShiftUsedWrap'
cg@1640
    18
	classVariableNames:'LastDirectory LastSizeString MaskClipboard LastColormapMode
cg@1640
    19
		DefaultRelativeSizes'
cg@929
    20
	poolDictionaries:''
cg@929
    21
	category:'Interface-UIPainter'
tz@400
    22
!
tz@400
    23
tz@400
    24
!ImageEditor class methodsFor:'documentation'!
tz@400
    25
tz@400
    26
copyright
tz@400
    27
"
tz@767
    28
 COPYRIGHT (c) 1997-1998 by eXept Software AG
tz@400
    29
              All Rights Reserved
tz@400
    30
tz@400
    31
 This software is furnished under a license and may be used
tz@400
    32
 only in accordance with the terms of that license and with the
tz@405
    33
 inclusion of the above copyright notice. This software may not
tz@400
    34
 be provided or otherwise made available to, or used by, any
tz@405
    35
 other person. No title to or ownership of the software is
tz@400
    36
 hereby transferred.
tz@400
    37
"
tz@400
    38
!
tz@400
    39
tz@400
    40
documentation
tz@400
    41
"
tz@737
    42
    Image Editor allows you to create, design, modify or just inspect images.
tz@400
    43
tz@400
    44
    [start with:]
tz@400
    45
        ImageEditor open
tz@941
    46
        ImageEditor openOnClass:Icon andSelector:#startIcon
tz@400
    47
tz@400
    48
    [see also:]
tz@400
    49
        ImageEditView Image
tz@400
    50
tz@400
    51
    [author:]
tz@544
    52
        Thomas Zwick, eXept Software AG
cg@1806
    53
        Claus Gittinger, eXept Software AG
tz@400
    54
"
tz@400
    55
! !
tz@400
    56
tz@400
    57
!ImageEditor class methodsFor:'instance creation'!
tz@400
    58
cg@1975
    59
openLoadingImageWith:aBlock
cg@1975
    60
    "opens an Image Editor on anImage"
cg@1975
    61
cg@1975
    62
    |editor|
cg@1975
    63
cg@1975
    64
    editor := self new.
cg@1975
    65
    editor allButOpen.
cg@1975
    66
    aBlock value:editor.
cg@1975
    67
    editor openWindow
cg@1975
    68
!
cg@1975
    69
tz@400
    70
openModalOnClass: aClass andSelector: aSelector
cg@1975
    71
    "opens a modal Image Editor on aClass and aSelector.
cg@1975
    72
     Returns the real name of the edited resource method (in case, user changed it)."
cg@1975
    73
cg@1975
    74
    |imageEditor imageEditView className resourceClass resourceSelector| 
tz@400
    75
tz@400
    76
    imageEditor := self new.
tz@767
    77
tz@900
    78
    aClass isClass  ifTrue: [className := aClass name].
tz@900
    79
    aClass isString ifTrue: [className := aClass].      
tz@903
    80
    aClass isNil    ifTrue: [className := ''].      
tz@400
    81
cg@1975
    82
    imageEditor postOpenAction: [imageEditView := imageEditor imageEditView. 
cg@1975
    83
                                 imageEditor loadFromOrPrepareForClass: aClass andSelector: aSelector].
tz@400
    84
    imageEditor openModal.
tz@400
    85
cg@1975
    86
    resourceClass := imageEditView resourceClass.
cg@1975
    87
    resourceSelector := imageEditView resourceSelector.
cg@1975
    88
cg@1975
    89
    (resourceClass isNil or:[resourceSelector isNil]) ifTrue:[^ nil].
cg@1975
    90
    ^ Array with:resourceClass with:resourceSelector
cg@1966
    91
cg@1966
    92
    "
cg@1966
    93
     self openModalOnClass: self andSelector: #leftMouseKeyIcon
cg@1966
    94
    "
tz@400
    95
!
tz@400
    96
cg@1966
    97
openOnClass:aClass andSelector:aSelector
cg@1966
    98
    "opens an Image Editor on aClass and aSelector"
tz@400
    99
cg@1975
   100
    self openLoadingImageWith:[:editor | editor loadFromClass:aClass theNonMetaclass andSelector:aSelector.]
cg@1057
   101
cg@1966
   102
    "
cg@1966
   103
     self openOnClass:self andSelector:#leftMouseKeyIcon
cg@1966
   104
     self openOnClass:self andSelector:nil
cg@1966
   105
    "
cg@1966
   106
cg@1057
   107
    "Modified: / 16.3.1999 / 21:33:49 / cg"
tz@400
   108
!
tz@400
   109
cg@1966
   110
openOnFile:aFileName
cg@1966
   111
    "opens an Image Editor on aFileName"
cg@1966
   112
cg@1975
   113
    self openLoadingImageWith:[:editor | editor loadFromFile:aFileName.]
cg@1966
   114
tz@767
   115
    "
cg@1975
   116
     self openOnFile: '../../goodies/bitmaps/gifImages/back.gif'
tz@767
   117
    "
tz@400
   118
cg@1057
   119
    "Modified: / 16.3.1999 / 21:33:25 / cg"
tz@400
   120
!
tz@400
   121
cg@1966
   122
openOnImage:anImage
cg@1966
   123
    "opens an Image Editor on anImage"
tz@400
   124
cg@1975
   125
    self openLoadingImageWith:[:editor | editor loadFromImage: anImage.]
cg@1053
   126
cg@1966
   127
    "
cg@1966
   128
     self openOnImage: Icon startIcon
cg@1966
   129
    "
cg@1966
   130
cg@1053
   131
    "Modified: / 11.3.1999 / 16:18:33 / cg"
tz@400
   132
! !
tz@400
   133
tz@400
   134
!ImageEditor class methodsFor:'accessing'!
tz@400
   135
tz@400
   136
listOfColorMaps
tz@767
   137
    "returns the list of default color maps for a new image"
tz@400
   138
tz@400
   139
    |colorMap|
tz@898
   140
tz@400
   141
    (colorMap := OrderedCollection new)
tz@400
   142
        add: Color black;
tz@400
   143
        add: Color white;
tz@400
   144
        add: Color red;
tz@400
   145
        add: Color green;
tz@400
   146
        add: Color blue;
tz@400
   147
        add: Color cyan;
tz@400
   148
        add: Color yellow;
tz@400
   149
        add: Color magenta;
tz@898
   150
        add: (Color redByte: 127 greenByte:   0 blueByte:   0);
tz@898
   151
        add: (Color redByte:   0 greenByte: 127 blueByte:   0);
tz@898
   152
        add: (Color redByte:   0 greenByte:   0 blueByte: 127);
tz@898
   153
        add: (Color redByte:   0 greenByte: 127 blueByte: 127);
tz@898
   154
        add: (Color redByte: 127 greenByte: 127 blueByte:   0);
tz@898
   155
        add: (Color redByte: 127 greenByte:   0 blueByte: 127);
tz@898
   156
        add: (Color redByte: 127 greenByte: 127 blueByte: 127);
tz@898
   157
        add: (Color redByte: 170 greenByte: 170 blueByte: 170).
tz@898
   158
tz@400
   159
    0 to: 5 do:
tz@400
   160
    [:r|                                                    
tz@400
   161
        0 to: 5 do:         
tz@400
   162
        [:g|
tz@400
   163
            0 to: 5 do:                             
tz@400
   164
            [:b|
tz@898
   165
                colorMap add: (Color redByte: (r*255//5) ceiling greenByte: (g*255//5) ceiling blueByte: (b*255//5) ceiling)
tz@400
   166
            ]
tz@400
   167
        ]
tz@400
   168
    ].
tz@400
   169
tz@400
   170
    1 to: 25 do:
tz@400
   171
    [:g|                             
tz@898
   172
        colorMap add: (Color redByte: (g*255//26) ceiling greenByte: (g*255//26) ceiling blueByte: (g*255//26) ceiling)
tz@400
   173
    ].
tz@400
   174
cg@1847
   175
    ^ Dictionary new
cg@1847
   176
        at: #depth24 put:(FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF);
cg@1847
   177
        at: #masked24 put:(FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF);
cg@1847
   178
        at: #depth16 put:(FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F);
cg@1847
   179
        at: #masked16 put:(FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F);
cg@1847
   180
        at: #depth8  put: colorMap;
cg@1847
   181
        at: #masked8 put: colorMap;
cg@1847
   182
        at: #depth4  put: (colorMap copyFrom: 1 to: 16);
cg@1847
   183
        at: #masked4 put: (colorMap copyFrom: 1 to: 16);
cg@1847
   184
        at: #depth2  put: (colorMap copyFrom: 1 to: 4);
cg@1847
   185
        at: #masked2 put: (colorMap copyFrom: 1 to: 4);
cg@1847
   186
        at: #depth1  put: (colorMap copyFrom: 1 to: 2);
cg@1847
   187
        at: #masked1 put: (colorMap copyFrom: 1 to: 2);
tz@400
   188
        yourself
tz@400
   189
!
tz@400
   190
tz@400
   191
listOfDefaultSizes
tz@767
   192
    "returns the list of default sizes for a new image"
tz@400
   193
cg@1960
   194
    ^ #('8x8' '16x16' '22x22' '32x32' '48x48' '64x64')
cg@932
   195
cg@932
   196
    "Modified: / 31.7.1998 / 01:57:34 / cg"
cg@1847
   197
!
cg@1847
   198
cg@1847
   199
namesOfColorMaps
cg@1847
   200
    ^ Dictionary new
cg@1847
   201
        at: #depth24 put: '24-plane';
cg@1847
   202
        at: #masked24 put: '24-plane + mask';
cg@1847
   203
        at: #depth16 put: '16-plane';
cg@1847
   204
        at: #masked16 put: '16-plane + mask';
cg@1847
   205
        at: #depth8  put: ' 8-plane';
cg@1847
   206
        at: #masked8 put: ' 8-plane + mask';
cg@1847
   207
        at: #depth4  put: ' 4-plane';
cg@1847
   208
        at: #masked4 put: ' 4-plane + mask';
cg@1847
   209
        at: #depth2  put: ' 2-plane';
cg@1847
   210
        at: #masked2 put: ' 2-plane + mask';
cg@1847
   211
        at: #depth1  put: ' 1-plane';
cg@1847
   212
        at: #masked1 put: ' 1-plane + mask' ;
cg@1847
   213
        yourself
tz@400
   214
! !
tz@400
   215
tz@460
   216
!ImageEditor class methodsFor:'help specs'!
tz@460
   217
cg@1545
   218
flyByHelpSpec
cg@1545
   219
    <resource: #help>
cg@1545
   220
cg@1545
   221
    ^super flyByHelpSpec addPairsFrom:#(
cg@1545
   222
cg@1545
   223
#drawModeBox
cg@1545
   224
'Rectangle'
cg@1545
   225
cg@1545
   226
#drawModeCopy
cg@1545
   227
'Copy'
cg@1545
   228
cg@1545
   229
#drawModeFill
cg@1637
   230
'Flood-Fill'
cg@1545
   231
cg@1545
   232
#drawModeFilledBox
cg@1637
   233
'Filled Rectangle'
cg@1545
   234
cg@1545
   235
#drawModePaste
cg@1545
   236
'Paste'
cg@1545
   237
cg@1545
   238
#drawModePasteUnder
cg@1637
   239
'Paste Under'
cg@1637
   240
cg@1637
   241
#drawModePasteWithMask
cg@1656
   242
'Paste with Mask'
cg@1545
   243
cg@1545
   244
#drawModePoint
cg@1545
   245
'Point'
cg@1545
   246
cg@1639
   247
#drawModeSpecial
cg@1639
   248
'Special Operations'
cg@1639
   249
cg@1545
   250
#fileGrabImage
cg@1748
   251
'Pick from Screen'
cg@1545
   252
cg@1545
   253
#fileLoadFromClass
cg@1884
   254
'Load from Method...'
cg@1545
   255
cg@1545
   256
#fileLoadFromFile
cg@1884
   257
'Load from File...'
cg@1545
   258
cg@1545
   259
#fileNewImage
cg@1637
   260
'New Image'
cg@1545
   261
cg@1545
   262
#filePrint
cg@1545
   263
'Print'
cg@1545
   264
cg@1545
   265
#fileSaveAs
cg@1884
   266
'Save to File...'
cg@1545
   267
cg@1545
   268
#fileSaveMaskAs
cg@1884
   269
'Save Mask to File...'
cg@1545
   270
cg@1545
   271
#fileSaveMethod
cg@1637
   272
'Save as Method'
cg@1545
   273
cg@1545
   274
#fileSaveMethodAs
cg@1884
   275
'Save as Method...'
cg@1545
   276
cg@1545
   277
)
cg@1545
   278
!
cg@1545
   279
tz@460
   280
helpSpec
tz@737
   281
    "This resource specification was automatically generated
tz@737
   282
     by the UIHelpTool of ST/X."
tz@737
   283
tz@737
   284
    "Do not manually edit this!! If it is corrupted,
tz@737
   285
     the UIHelpTool may not be able to read the specification."
tz@460
   286
tz@460
   287
    "
tz@737
   288
     UIHelpTool openOnClass:ImageEditor    
tz@460
   289
    "
tz@460
   290
tz@737
   291
    <resource: #help>
tz@737
   292
tz@737
   293
    ^super helpSpec addPairsFrom:#(
tz@460
   294
tz@460
   295
#colorMap
cg@929
   296
'ColorMap functions.'
cg@929
   297
cg@929
   298
#colorMap1
cg@929
   299
'Convert to depth-1 image.'
cg@929
   300
cg@986
   301
#colorMap1M
cg@986
   302
'Convert to depth-1 image plus mask.'
cg@986
   303
cg@929
   304
#colorMap2
cg@929
   305
'Convert to depth-2 image.'
cg@929
   306
cg@986
   307
#colorMap2M
cg@986
   308
'Convert to depth-2 image plus mask.'
cg@986
   309
cg@929
   310
#colorMap4
cg@929
   311
'Convert to depth-4 image.'
cg@929
   312
cg@986
   313
#colorMap4M
cg@986
   314
'Convert to depth-4 image plus mask.'
cg@986
   315
cg@929
   316
#colorMap8
cg@929
   317
'Convert to depth-8 image.'
cg@929
   318
cg@929
   319
#colorMap8M
cg@929
   320
'Convert to depth-8 image plus mask.'
cg@929
   321
cg@986
   322
#colorMapTable
cg@986
   323
'Shows a list of used colors of the image.'
cg@986
   324
cg@929
   325
#compressColormap
cg@929
   326
'Remove unneeded entries from the colorMap.'
tz@460
   327
cg@1045
   328
#cropAll
cg@986
   329
'Find and remove all borders.'
cg@986
   330
cg@1045
   331
#cropBottom
cg@986
   332
'Find and remove bottom border.'
cg@986
   333
cg@1045
   334
#cropLeft
cg@986
   335
'Find and remove left border.'
cg@986
   336
cg@1045
   337
#cropManual
cg@986
   338
'Specify border(s) to remove.'
cg@986
   339
cg@1045
   340
#cropRight
cg@986
   341
'Find and remove right border.'
cg@986
   342
cg@1045
   343
#cropTop
cg@986
   344
'Find and remove top border.'
tz@487
   345
tz@460
   346
#drawModeBox
cg@1637
   347
'Rectangle Drawing Mode.'
tz@460
   348
cg@2375
   349
#drawModeCircle
cg@2375
   350
'Circle Drawing Mode.'
cg@2375
   351
tz@460
   352
#drawModeCopy
cg@1637
   353
'Area Copy Mode.'
tz@460
   354
tz@460
   355
#drawModeFill
cg@1637
   356
'Flood Fill Mode.'
tz@460
   357
tz@460
   358
#drawModeFilledBox
cg@1637
   359
'Filled Rectangle Drawing Mode.'
tz@460
   360
tz@460
   361
#drawModePaste
cg@1637
   362
'Paste Mode.'
cg@914
   363
cg@914
   364
#drawModePasteUnder
cg@1637
   365
'Paste-Under Mode.'
cg@1637
   366
cg@1637
   367
#drawModePasteWithMask
cg@1637
   368
'Paste-with-Mask Mode.'
tz@460
   369
tz@460
   370
#drawModePoint
cg@1637
   371
'Point Drawing Mode.'
tz@460
   372
cg@2375
   373
#drawModeSpray
cg@2375
   374
'Spray Drawing Mode.'
cg@2375
   375
cg@1639
   376
#drawModeSpecial
cg@1639
   377
'Special Operations'
cg@1639
   378
tz@460
   379
#editFlipHorizontal
cg@1637
   380
'Flip the image horizontally.'
tz@460
   381
tz@460
   382
#editFlipVertical
cg@1637
   383
'Flip the image vertically.'
tz@460
   384
tz@460
   385
#editMagnifyImage
cg@914
   386
'Magnify the image.'
tz@460
   387
tz@460
   388
#editNegate
cg@914
   389
'Invert the images colors.'
tz@460
   390
tz@460
   391
#editResize
cg@914
   392
'Resize the image (preserving the old image).'
tz@460
   393
tz@460
   394
#editRotate
cg@914
   395
'Rotate the image.'
tz@460
   396
cg@929
   397
#fileGrabImage
cg@929
   398
'Pick an image from the screen.'
cg@929
   399
tz@460
   400
#fileLoadFromClass
cg@929
   401
'Select and load an image from a resource method.'
tz@460
   402
tz@460
   403
#fileLoadFromFile
cg@929
   404
'Select and load an image from a file.'
tz@460
   405
tz@460
   406
#fileNewImage
cg@914
   407
'Create a new image'
tz@460
   408
tz@460
   409
#filePrint
tz@460
   410
'Print the image on a postscript printer.'
tz@460
   411
tz@460
   412
#fileSaveAs
cg@914
   413
'Save the image to a file.'
tz@460
   414
tz@460
   415
#fileSaveMaskAs
cg@914
   416
'Save the mask of the image to a file.'
tz@460
   417
ca@1613
   418
#fileSaveButtonImageAs
ca@1613
   419
'Save an image of a button with the image to a file (for html use).'
ca@1613
   420
tz@460
   421
#fileSaveMethod
cg@914
   422
'Save the image as resource method in the current class and selector.'
tz@460
   423
tz@460
   424
#fileSaveMethodAs
cg@914
   425
'Save the image as resource method in a class.'
tz@460
   426
tz@487
   427
#magnificationNumber
cg@914
   428
'Shows the current magnification.'
tz@487
   429
tz@487
   430
#magnifyImageDown
cg@914
   431
'Decrease magnification.'
tz@487
   432
tz@487
   433
#magnifyImageUp
cg@914
   434
'Increase magnification.'
tz@487
   435
tz@487
   436
#mouseKeyColorMode
cg@1637
   437
'Toggle between left and right mouse button color.'
tz@487
   438
tz@487
   439
#previewView
cg@914
   440
'Shows a preview of the image.'
tz@487
   441
tz@905
   442
#settingsGridMagnification
cg@914
   443
'Change the grid magnification of the edit view.'
tz@905
   444
tz@460
   445
)
cg@928
   446
cg@986
   447
    "Modified: / 7.9.1998 / 18:20:26 / cg"
tz@460
   448
! !
tz@460
   449
tz@737
   450
!ImageEditor class methodsFor:'image specs'!
tz@737
   451
cg@2272
   452
circleIcon
cg@2272
   453
    "This resource specification was automatically generated
cg@2272
   454
     by the ImageEditor of ST/X."
cg@2272
   455
cg@2272
   456
    "Do not manually edit this!! If it is corrupted,
cg@2272
   457
     the ImageEditor may not be able to read the specification."
cg@2272
   458
cg@2272
   459
    "
cg@2272
   460
     self circleIcon inspect
cg@2272
   461
     ImageEditor openOnClass:self andSelector:#circleIcon
cg@2272
   462
     Icon flushCachedIcons
cg@2272
   463
    "
cg@2272
   464
cg@2272
   465
    <resource: #image>
cg@2272
   466
cg@2272
   467
    ^Icon
cg@2272
   468
        constantNamed:'ImageEditor class circleIcon'
cg@2272
   469
        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:'@@@@@@N@CF@PDA@PH@  BB@HDA@PD@1 @8@@@@@a') ; yourself); yourself]
cg@2272
   470
!
cg@2272
   471
cg@1637
   472
copyIcon
cg@1637
   473
    "This resource specification was automatically generated
cg@1637
   474
     by the ImageEditor of ST/X."
cg@1637
   475
cg@1637
   476
    "Do not manually edit this!! If it is corrupted,
cg@1637
   477
     the ImageEditor may not be able to read the specification."
cg@1637
   478
cg@1637
   479
    "
cg@1637
   480
     self copyIcon inspect
cg@1637
   481
     ImageEditor openOnClass:self andSelector:#copyIcon
cg@1637
   482
     Icon flushCachedIcons
cg@1637
   483
    "
cg@1637
   484
cg@1637
   485
    <resource: #image>
cg@1637
   486
cg@1637
   487
    ^Icon
cg@2272
   488
        constantNamed:'ImageEditor class copyIcon'
cg@1975
   489
        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]
cg@1637
   490
!
cg@1637
   491
sv@2155
   492
defaultIcon
sv@2155
   493
    <resource: #programImage>
sv@2155
   494
sv@2155
   495
    ^ ToolbarIconLibrary startImageEditorIcon
sv@2155
   496
!
sv@2155
   497
cg@1637
   498
fillIcon
cg@1637
   499
    "This resource specification was automatically generated
cg@1637
   500
     by the ImageEditor of ST/X."
cg@1637
   501
cg@1637
   502
    "Do not manually edit this!! If it is corrupted,
cg@1637
   503
     the ImageEditor may not be able to read the specification."
cg@1637
   504
cg@1637
   505
    "
cg@1637
   506
     self fillIcon inspect
cg@1637
   507
     ImageEditor openOnClass:self andSelector:#fillIcon
cg@1637
   508
     Icon flushCachedIcons
cg@1637
   509
    "
cg@1637
   510
cg@1637
   511
    <resource: #image>
cg@1637
   512
cg@1637
   513
    ^Icon
cg@2272
   514
        constantNamed:'ImageEditor class fillIcon'
cg@1975
   515
        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]
cg@1637
   516
!
cg@1637
   517
cg@1637
   518
fillRectIcon
cg@1637
   519
    "This resource specification was automatically generated
cg@1637
   520
     by the ImageEditor of ST/X."
cg@1637
   521
cg@1637
   522
    "Do not manually edit this!! If it is corrupted,
cg@1637
   523
     the ImageEditor may not be able to read the specification."
cg@1637
   524
cg@1637
   525
    "
cg@1637
   526
     self fillRectIcon inspect
cg@1637
   527
     ImageEditor openOnClass:self andSelector:#fillRectIcon
cg@1637
   528
     Icon flushCachedIcons
cg@1637
   529
    "
cg@1637
   530
cg@1637
   531
    <resource: #image>
cg@1637
   532
cg@1637
   533
    ^Icon
cg@2272
   534
        constantNamed:'ImageEditor class fillRectIcon'
cg@2272
   535
        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]
cg@1637
   536
!
cg@1637
   537
tz@737
   538
leftMouseKeyIcon
tz@737
   539
    "This resource specification was automatically generated
tz@737
   540
     by the ImageEditor of ST/X."
tz@737
   541
tz@737
   542
    "Do not manually edit this!! If it is corrupted,
tz@737
   543
     the ImageEditor may not be able to read the specification."
tz@737
   544
tz@737
   545
    "
cg@1405
   546
     self leftMouseKeyIcon inspect
tz@737
   547
     ImageEditor openOnClass:self andSelector:#leftMouseKeyIcon
cg@2272
   548
     Icon flushCachedIcons
tz@737
   549
    "
tz@737
   550
tz@737
   551
    <resource: #image>
tz@737
   552
tz@737
   553
    ^Icon
cg@2272
   554
        constantNamed:'ImageEditor class leftMouseKeyIcon'
cg@2272
   555
        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]
martin@1433
   556
!
tz@737
   557
cg@1637
   558
pasteIcon
cg@1637
   559
    "This resource specification was automatically generated
cg@1637
   560
     by the ImageEditor of ST/X."
cg@1637
   561
cg@1637
   562
    "Do not manually edit this!! If it is corrupted,
cg@1637
   563
     the ImageEditor may not be able to read the specification."
cg@1637
   564
cg@1637
   565
    "
cg@1637
   566
     self pasteIcon inspect
cg@1637
   567
     ImageEditor openOnClass:self andSelector:#pasteIcon
cg@1637
   568
     Icon flushCachedIcons
cg@1637
   569
    "
cg@1637
   570
cg@1637
   571
    <resource: #image>
cg@1637
   572
cg@1637
   573
    ^Icon
cg@2272
   574
        constantNamed:'ImageEditor class pasteIcon'
cg@1975
   575
        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@@@@@@AL3A&Y&X@@SL0Y A&@@D3LF@@A @AL3A&@FX@@QDPY&Y&
cg@1975
   576
@@@@@@@@@@@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]
cg@1637
   577
!
cg@1637
   578
cg@1637
   579
pasteUnderIcon
cg@1637
   580
    "This resource specification was automatically generated
cg@1637
   581
     by the ImageEditor of ST/X."
cg@1637
   582
cg@1637
   583
    "Do not manually edit this!! If it is corrupted,
cg@1637
   584
     the ImageEditor may not be able to read the specification."
cg@1637
   585
cg@1637
   586
    "
cg@1637
   587
     self pasteUnderIcon inspect
cg@1637
   588
     ImageEditor openOnClass:self andSelector:#pasteUnderIcon
cg@1637
   589
     Icon flushCachedIcons
cg@1637
   590
    "
cg@1637
   591
cg@1637
   592
    <resource: #image>
cg@1637
   593
cg@1637
   594
    ^Icon
cg@2272
   595
        constantNamed:'ImageEditor class pasteUnderIcon'
cg@1975
   596
        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 @@D3L3LP@@@AL3L3E&X@@SL3L0A&@@D3L3@@A @AL3L3@FX@@QDQDQY&
cg@1975
   597
@@@@@@@@@@@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]
cg@1637
   598
!
cg@1637
   599
cg@1637
   600
pasteWithMaskIcon
cg@1637
   601
    "This resource specification was automatically generated
cg@1637
   602
     by the ImageEditor of ST/X."
cg@1637
   603
cg@1637
   604
    "Do not manually edit this!! If it is corrupted,
cg@1637
   605
     the ImageEditor may not be able to read the specification."
cg@1637
   606
cg@1637
   607
    "
cg@1637
   608
     self pasteWithMaskIcon inspect
cg@1637
   609
     ImageEditor openOnClass:self andSelector:#pasteWithMaskIcon
cg@1637
   610
     Icon flushCachedIcons
cg@1637
   611
    "
cg@1637
   612
cg@1637
   613
    <resource: #image>
cg@1637
   614
cg@1637
   615
    ^Icon
cg@2272
   616
        constantNamed:'ImageEditor class pasteWithMaskIcon'
cg@2272
   617
        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&
cg@2272
   618
@@@@@@@@@@@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]
cg@1637
   619
!
cg@1637
   620
cg@1637
   621
pointIcon
cg@1637
   622
    "This resource specification was automatically generated
cg@1637
   623
     by the ImageEditor of ST/X."
cg@1637
   624
cg@1637
   625
    "Do not manually edit this!! If it is corrupted,
cg@1637
   626
     the ImageEditor may not be able to read the specification."
cg@1637
   627
cg@1637
   628
    "
cg@1637
   629
     self pointIcon inspect
cg@1637
   630
     ImageEditor openOnClass:self andSelector:#pointIcon
cg@1637
   631
     Icon flushCachedIcons
cg@1637
   632
    "
cg@1637
   633
cg@1637
   634
    <resource: #image>
cg@1637
   635
cg@1637
   636
    ^Icon
cg@2272
   637
        constantNamed:'ImageEditor class pointIcon'
cg@1975
   638
        ifAbsentPut:[(Depth1Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@C@@@@@@@@@@@@@@@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@@@@@@@@@@@a') ; yourself); yourself]
cg@1637
   639
!
cg@1637
   640
cg@1637
   641
rectIcon
cg@1637
   642
    "This resource specification was automatically generated
cg@1637
   643
     by the ImageEditor of ST/X."
cg@1637
   644
cg@1637
   645
    "Do not manually edit this!! If it is corrupted,
cg@1637
   646
     the ImageEditor may not be able to read the specification."
cg@1637
   647
cg@1637
   648
    "
cg@1637
   649
     self rectIcon inspect
cg@1637
   650
     ImageEditor openOnClass:self andSelector:#rectIcon
cg@1637
   651
     Icon flushCachedIcons
cg@1637
   652
    "
cg@1637
   653
cg@1637
   654
    <resource: #image>
cg@1637
   655
cg@1637
   656
    ^Icon
cg@2272
   657
        constantNamed:'ImageEditor class rectIcon'
cg@2272
   658
        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]
cg@1637
   659
!
cg@1637
   660
tz@737
   661
rightMouseKeyIcon
tz@737
   662
    "This resource specification was automatically generated
tz@737
   663
     by the ImageEditor of ST/X."
tz@737
   664
tz@737
   665
    "Do not manually edit this!! If it is corrupted,
tz@737
   666
     the ImageEditor may not be able to read the specification."
tz@737
   667
tz@737
   668
    "
cg@1405
   669
     self rightMouseKeyIcon inspect
tz@737
   670
     ImageEditor openOnClass:self andSelector:#rightMouseKeyIcon
cg@2272
   671
     Icon flushCachedIcons
tz@737
   672
    "
tz@737
   673
tz@737
   674
    <resource: #image>
tz@737
   675
tz@737
   676
    ^Icon
cg@2272
   677
        constantNamed:'ImageEditor class rightMouseKeyIcon'
cg@2272
   678
        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]
cg@1637
   679
!
cg@1637
   680
cg@1637
   681
specialIcon
cg@1637
   682
    "This resource specification was automatically generated
cg@1637
   683
     by the ImageEditor of ST/X."
cg@1637
   684
cg@1637
   685
    "Do not manually edit this!! If it is corrupted,
cg@1637
   686
     the ImageEditor may not be able to read the specification."
cg@1637
   687
cg@1637
   688
    "
cg@1637
   689
     self specialIcon inspect
cg@1637
   690
     ImageEditor openOnClass:self andSelector:#specialIcon
cg@1637
   691
     Icon flushCachedIcons
cg@1637
   692
    "
cg@1637
   693
cg@1637
   694
    <resource: #image>
cg@1637
   695
cg@1637
   696
    ^Icon
cg@2272
   697
        constantNamed:'ImageEditor class specialIcon'
cg@2272
   698
        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]
cg@2375
   699
!
cg@2375
   700
cg@2375
   701
sprayIcon
cg@2375
   702
    "This resource specification was automatically generated
cg@2375
   703
     by the ImageEditor of ST/X."
cg@2375
   704
cg@2375
   705
    "Do not manually edit this!! If it is corrupted,
cg@2375
   706
     the ImageEditor may not be able to read the specification."
cg@2375
   707
cg@2375
   708
    "
cg@2375
   709
     self sprayIcon inspect
cg@2375
   710
     ImageEditor openOnClass:self andSelector:#sprayIcon
cg@2375
   711
     Icon flushCachedIcons
cg@2375
   712
    "
cg@2375
   713
cg@2375
   714
    <resource: #image>
cg@2375
   715
cg@2375
   716
    ^Icon
cg@2375
   717
        constantNamed:'ImageEditor class sprayIcon'
cg@2375
   718
        ifAbsentPut:[(Depth4Image new) width: 14; height: 14; photometric:(#palette); bitsPerSample:(#[4]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@D@@@@@@@DA@@@@@@D@D@@@@@@A@PD@@@@@@A@P@@@@@@@A@P@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
cg@2375
   719
@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 84 84 84 170 170 170 255 255 255 255 0 0]; mask:((Depth1Image new) width: 14; height: 14; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@B@@(A)@F*@IPA2 H$@"@BH@H @"@BH@O @@a') ; yourself); yourself]
martin@1433
   720
! !
tz@737
   721
tz@400
   722
!ImageEditor class methodsFor:'interface specs'!
tz@400
   723
cg@1650
   724
changeHLSDialogSpec
cg@1650
   725
    "This resource specification was automatically generated
cg@1650
   726
     by the UIPainter of ST/X."
cg@1650
   727
cg@1650
   728
    "Do not manually edit this!! If it is corrupted,
cg@1650
   729
     the UIPainter may not be able to read the specification."
cg@1650
   730
cg@1650
   731
    "
cg@1650
   732
     UIPainter new openOnClass:ImageEditor andSelector:#changeHLSDialogSpec
cg@1650
   733
     ImageEditor new openInterface:#changeHLSDialogSpec
cg@1650
   734
    "
cg@1650
   735
cg@1650
   736
    <resource: #canvas>
cg@1650
   737
cg@1650
   738
    ^ 
sv@1740
   739
     #(FullSpec
sv@1740
   740
        name: changeHLSDialogSpec
sv@1740
   741
        window: 
sv@1740
   742
       (WindowSpec
sv@1740
   743
          label: 'HLS Edit Dialog'
sv@1740
   744
          name: 'HLS Edit Dialog'
sv@1740
   745
          min: (Point 10 10)
cg@2438
   746
          bounds: (Rectangle 0 0 312 258)
cg@1650
   747
        )
sv@1740
   748
        component: 
sv@1740
   749
       (SpecCollection
sv@1740
   750
          collection: (
sv@1740
   751
           (LabelSpec
sv@1740
   752
              label: 'Hue-Shift:'
sv@1740
   753
              name: 'HueLabel'
sv@1740
   754
              layout: (LayoutFrame 20 0 21 0 120 0 43 0)
sv@1740
   755
              translateLabel: true
sv@1740
   756
              adjust: right
cg@1650
   757
            )
sv@1740
   758
           (InputFieldSpec
sv@1740
   759
              name: 'HueShiftEntryField'
sv@1740
   760
              layout: (LayoutFrame 123 0 21 0 166 0 43 0)
sv@1740
   761
              tabable: true
sv@1740
   762
              model: hueShiftAmount
sv@1740
   763
              type: numberInRange
sv@1740
   764
              minValue: 0
sv@1740
   765
              maxValue: 360
sv@1740
   766
              acceptChannel: acceptChannel
sv@1740
   767
              acceptOnPointerLeave: false
cg@1650
   768
            )
sv@1740
   769
           (ThumbWheelSpec
sv@1740
   770
              name: 'HueWheel'
sv@1740
   771
              layout: (LayoutFrame 180 0 22 0 297 0 42 0)
sv@1740
   772
              model: hueShiftAmount
sv@1740
   773
              orientation: horizontal
sv@1740
   774
              step: 1
sv@1740
   775
              endlessRotation: true
cg@1650
   776
            )
sv@1740
   777
           (LabelSpec
sv@1740
   778
              label: 'Light Factor:'
sv@1740
   779
              name: 'LightLabel'
sv@1740
   780
              layout: (LayoutFrame 18 0 50 0 120 0 72 0)
sv@1740
   781
              translateLabel: true
sv@1740
   782
              adjust: right
cg@1650
   783
            )
sv@1740
   784
           (InputFieldSpec
sv@1740
   785
              name: 'LightEntryField'
sv@1740
   786
              layout: (LayoutFrame 123 0 50 0 166 0 72 0)
sv@1740
   787
              tabable: true
sv@1740
   788
              model: lightAmount
sv@1740
   789
              type: numberInRange
sv@1740
   790
              minValue: 0
sv@1740
   791
              maxValue: 1000
sv@1740
   792
              acceptChannel: acceptChannel
sv@1740
   793
              acceptOnPointerLeave: false
cg@1650
   794
            )
sv@1740
   795
           (ThumbWheelSpec
sv@1740
   796
              name: 'LightWheel'
sv@1740
   797
              layout: (LayoutFrame 180 0 51 0 297 0 71 0)
sv@1740
   798
              model: lightAmount
sv@1740
   799
              orientation: horizontal
sv@1740
   800
              stop: 1000
sv@1740
   801
              step: 1
cg@1650
   802
            )
sv@1740
   803
           (LabelSpec
sv@1740
   804
              label: 'Saturation Factor:'
sv@1740
   805
              name: 'SaturationLabel'
sv@1740
   806
              layout: (LayoutFrame 9 0 79 0 120 0 101 0)
sv@1740
   807
              translateLabel: true
sv@1740
   808
              adjust: right
cg@1650
   809
            )
sv@1740
   810
           (InputFieldSpec
sv@1740
   811
              name: 'SaturationEntryField'
sv@1740
   812
              layout: (LayoutFrame 123 0 79 0 166 0 101 0)
sv@1740
   813
              tabable: true
sv@1740
   814
              model: saturationAmount
sv@1740
   815
              type: numberInRange
sv@1740
   816
              minValue: 0
sv@1740
   817
              maxValue: 1000
sv@1740
   818
              acceptChannel: acceptChannel
sv@1740
   819
              acceptOnPointerLeave: false
cg@1650
   820
            )
sv@1740
   821
           (ThumbWheelSpec
sv@1740
   822
              name: 'SaturationWheel'
sv@1740
   823
              layout: (LayoutFrame 180 0 80 0 297 0 100 0)
sv@1740
   824
              model: saturationAmount
sv@1740
   825
              orientation: horizontal
sv@1740
   826
              stop: 1000
sv@1740
   827
              step: 1
cg@1650
   828
            )
sv@1740
   829
           (LabelSpec
cg@2438
   830
              label: 'Color Shift'
cg@2438
   831
              name: 'Label2'
cg@2438
   832
              layout: (LayoutFrame 5 0 110 0 -15 0.5 132 0)
cg@2438
   833
              translateLabel: true
cg@2438
   834
            )
cg@2438
   835
           (LabelSpec
sv@1740
   836
              name: 'HueColorLabel'
cg@2438
   837
              layout: (LayoutFrame 18 0.0 133 0 -41 0.5 217 0)
cg@2438
   838
              level: -1
cg@1975
   839
              backgroundChannel: hlsColor
sv@1740
   840
              translateLabel: true
cg@1650
   841
            )
cg@2438
   842
           (LabelSpec
cg@2438
   843
              label: 'Preview'
cg@2438
   844
              name: 'Label3'
cg@2438
   845
              layout: (LayoutFrame 5 0.5 110 0 -5 1 132 0)
cg@2438
   846
              translateLabel: true
cg@2438
   847
            )
cg@2438
   848
           (LabelSpec
cg@2438
   849
              name: 'PreviewLabel'
cg@2438
   850
              layout: (LayoutFrame 36 0.5 133 0 -23 1.0 217 0)
cg@2438
   851
              level: -1
cg@2438
   852
              translateLabel: true
cg@2438
   853
              labelChannel: previewImageHolder
cg@2438
   854
            )
sv@1740
   855
           (HorizontalPanelViewSpec
sv@1740
   856
              name: 'HorizontalPanel1'
sv@1740
   857
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
sv@1740
   858
              horizontalLayout: fitSpace
sv@1740
   859
              verticalLayout: center
sv@1740
   860
              horizontalSpace: 3
sv@1740
   861
              verticalSpace: 3
sv@1740
   862
              reverseOrderIfOKAtLeft: true
sv@1740
   863
              component: 
sv@1740
   864
             (SpecCollection
sv@1740
   865
                collection: (
sv@1740
   866
                 (ActionButtonSpec
sv@1740
   867
                    label: 'Cancel'
sv@1740
   868
                    name: 'Button1'
sv@1740
   869
                    translateLabel: true
sv@1740
   870
                    tabable: true
sv@1740
   871
                    model: cancel
sv@1740
   872
                    extent: (Point 151 22)
cg@1650
   873
                  )
sv@1740
   874
                 (ActionButtonSpec
sv@1740
   875
                    label: 'OK'
sv@1740
   876
                    name: 'Button2'
sv@1740
   877
                    translateLabel: true
sv@1740
   878
                    tabable: true
sv@1740
   879
                    model: accept
sv@1740
   880
                    extent: (Point 152 22)
cg@1650
   881
                  )
cg@1650
   882
                 )
cg@1650
   883
               
cg@1650
   884
              )
cg@1650
   885
            )
cg@1650
   886
           )
cg@1650
   887
         
cg@1650
   888
        )
cg@1650
   889
      )
cg@1650
   890
!
cg@1650
   891
sv@1740
   892
cropDialogSpec
tz@737
   893
    "This resource specification was automatically generated
tz@737
   894
     by the UIPainter of ST/X."
tz@519
   895
tz@737
   896
    "Do not manually edit this!! If it is corrupted,
tz@737
   897
     the UIPainter may not be able to read the specification."
tz@519
   898
tz@519
   899
    "
sv@1740
   900
     UIPainter new openOnClass:ImageEditor andSelector:#cropDialogSpec
sv@1740
   901
     ImageEditor new openInterface:#cropDialogSpec
tz@519
   902
    "
tz@519
   903
tz@519
   904
    <resource: #canvas>
tz@519
   905
cg@1457
   906
    ^ 
sv@1740
   907
     #(FullSpec
sv@1740
   908
        name: cropDialogSpec
sv@1740
   909
        window: 
sv@1740
   910
       (WindowSpec
sv@1740
   911
          label: 'Crop Border(s)'
sv@1740
   912
          name: 'Crop Border(s)'
sv@1740
   913
          min: (Point 10 10)
sv@1740
   914
          bounds: (Rectangle 14 46 259 229)
cg@1457
   915
        )
sv@1740
   916
        component: 
sv@1740
   917
       (SpecCollection
sv@1740
   918
          collection: (
sv@1740
   919
           (LabelSpec
sv@1740
   920
              label: 'Left:'
sv@1740
   921
              name: 'GropLeftLabel'
sv@1740
   922
              layout: (LayoutFrame 14 0 21 0 90 0 43 0)
sv@1740
   923
              translateLabel: true
sv@1740
   924
              adjust: right
cg@1457
   925
            )
sv@1740
   926
           (InputFieldSpec
sv@1740
   927
              name: 'GropLeftEntryField'
sv@1740
   928
              layout: (LayoutFrame 95 0 21 0 132 0 43 0)
sv@1740
   929
              tabable: true
sv@1740
   930
              model: left
sv@1740
   931
              type: number
sv@1740
   932
              acceptChannel: acceptChannel
sv@1740
   933
              acceptOnPointerLeave: false
cg@1502
   934
            )
sv@1740
   935
           (ActionButtonSpec
sv@1740
   936
              label: 'Now'
sv@1740
   937
              name: 'GropLeftNowButton'
sv@1740
   938
              layout: (LayoutFrame 148 0 21 0 221 0 43 0)
sv@1740
   939
              translateLabel: true
sv@1740
   940
              tabable: true
sv@1740
   941
              model: gropLeftNow
sv@1740
   942
              autoRepeat: true
cg@1457
   943
            )
sv@1740
   944
           (LabelSpec
sv@1740
   945
              label: 'Right:'
sv@1740
   946
              name: 'GropRightLabel'
sv@1740
   947
              layout: (LayoutFrame 14 0 51 0 90 0 73 0)
sv@1740
   948
              translateLabel: true
sv@1740
   949
              adjust: right
cg@1457
   950
            )
sv@1740
   951
           (InputFieldSpec
sv@1740
   952
              name: 'GropRightEntryField'
sv@1740
   953
              layout: (LayoutFrame 95 0 51 0 132 0 73 0)
sv@1740
   954
              tabable: true
sv@1740
   955
              model: right
sv@1740
   956
              type: number
sv@1740
   957
              acceptChannel: acceptChannel
sv@1740
   958
              acceptOnPointerLeave: false
cg@1502
   959
            )
sv@1740
   960
           (ActionButtonSpec
sv@1740
   961
              label: 'Now'
sv@1740
   962
              name: 'GropRightButton'
sv@1740
   963
              layout: (LayoutFrame 148 0 51 0 221 0 73 0)
sv@1740
   964
              translateLabel: true
sv@1740
   965
              tabable: true
sv@1740
   966
              model: gropRightNow
sv@1740
   967
              autoRepeat: true
cg@1457
   968
            )
sv@1740
   969
           (LabelSpec
sv@1740
   970
              label: 'Top:'
sv@1740
   971
              name: 'GropTopLabel'
sv@1740
   972
              layout: (LayoutFrame 14 0 81 0 90 0 103 0)
sv@1740
   973
              translateLabel: true
sv@1740
   974
              adjust: right
cg@1457
   975
            )
sv@1740
   976
           (InputFieldSpec
sv@1740
   977
              name: 'GropTopEntryField'
sv@1740
   978
              layout: (LayoutFrame 95 0 81 0 132 0 103 0)
sv@1740
   979
              tabable: true
sv@1740
   980
              model: top
sv@1740
   981
              type: number
sv@1740
   982
              acceptChannel: acceptChannel
sv@1740
   983
              acceptOnPointerLeave: false
cg@1502
   984
            )
sv@1740
   985
           (ActionButtonSpec
sv@1740
   986
              label: 'Now'
sv@1740
   987
              name: 'GropTopButton'
sv@1740
   988
              layout: (LayoutFrame 148 0 81 0 221 0 103 0)
sv@1740
   989
              translateLabel: true
sv@1740
   990
              tabable: true
sv@1740
   991
              model: gropTopNow
sv@1740
   992
              autoRepeat: true
cg@1457
   993
            )
sv@1740
   994
           (LabelSpec
sv@1740
   995
              label: 'Bottom:'
sv@1740
   996
              name: 'GropBottomLabel'
sv@1740
   997
              layout: (LayoutFrame 14 0 111 0 90 0 133 0)
sv@1740
   998
              translateLabel: true
sv@1740
   999
              adjust: right
cg@1457
  1000
            )
sv@1740
  1001
           (InputFieldSpec
sv@1740
  1002
              name: 'GropBottomEntryField'
sv@1740
  1003
              layout: (LayoutFrame 95 0 111 0 132 0 133 0)
sv@1740
  1004
              tabable: true
sv@1740
  1005
              model: bottom
sv@1740
  1006
              type: number
sv@1740
  1007
              acceptChannel: acceptChannel
sv@1740
  1008
              acceptOnPointerLeave: false
cg@1502
  1009
            )
sv@1740
  1010
           (ActionButtonSpec
sv@1740
  1011
              label: 'Now'
sv@1740
  1012
              name: 'GropBottomButton'
sv@1740
  1013
              layout: (LayoutFrame 148 0 111 0 221 0 133 0)
sv@1740
  1014
              translateLabel: true
sv@1740
  1015
              tabable: true
sv@1740
  1016
              model: gropBottomNow
sv@1740
  1017
              autoRepeat: true
cg@1457
  1018
            )
sv@1740
  1019
           (HorizontalPanelViewSpec
sv@1740
  1020
              name: 'HorizontalPanel1'
sv@1740
  1021
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
sv@1740
  1022
              horizontalLayout: fitSpace
sv@1740
  1023
              verticalLayout: center
sv@1740
  1024
              horizontalSpace: 3
sv@1740
  1025
              verticalSpace: 3
sv@1740
  1026
              reverseOrderIfOKAtLeft: true
sv@1740
  1027
              component: 
sv@1740
  1028
             (SpecCollection
sv@1740
  1029
                collection: (
sv@1740
  1030
                 (ActionButtonSpec
sv@1740
  1031
                    label: 'Cancel'
sv@1740
  1032
                    name: 'Button1'
sv@1740
  1033
                    translateLabel: true
sv@1740
  1034
                    tabable: true
sv@1740
  1035
                    model: cancel
sv@1740
  1036
                    extent: (Point 77 22)
cg@1490
  1037
                  )
sv@1740
  1038
                 (ActionButtonSpec
sv@1740
  1039
                    label: 'Apply'
sv@1740
  1040
                    name: 'Button3'
sv@1740
  1041
                    translateLabel: true
sv@1740
  1042
                    tabable: true
sv@1740
  1043
                    model: applyAction
sv@1740
  1044
                    extent: (Point 78 22)
cg@1457
  1045
                  )
sv@1740
  1046
                 (ActionButtonSpec
sv@1740
  1047
                    label: 'OK'
sv@1740
  1048
                    name: 'Button2'
sv@1740
  1049
                    translateLabel: true
sv@1740
  1050
                    tabable: true
sv@1740
  1051
                    model: accept
sv@1740
  1052
                    extent: (Point 78 22)
cg@1457
  1053
                  )
cg@1457
  1054
                 )
cg@1457
  1055
               
cg@986
  1056
              )
cg@1457
  1057
            )
cg@1457
  1058
           )
cg@1457
  1059
         
cg@1457
  1060
        )
cg@986
  1061
      )
cg@986
  1062
!
cg@986
  1063
sv@1740
  1064
dialogSpecForNewImage
cg@1557
  1065
    "This resource specification was automatically generated
cg@1557
  1066
     by the UIPainter of ST/X."
cg@1557
  1067
cg@1557
  1068
    "Do not manually edit this!! If it is corrupted,
cg@1557
  1069
     the UIPainter may not be able to read the specification."
cg@1557
  1070
cg@1557
  1071
    "
sv@1740
  1072
     UIPainter new openOnClass:ImageEditor andSelector:#dialogSpecForNewImage
sv@1740
  1073
     ImageEditor new openInterface:#dialogSpecForNewImage
cg@1557
  1074
    "
cg@1557
  1075
cg@1557
  1076
    <resource: #canvas>
cg@1557
  1077
cg@1557
  1078
    ^ 
sv@1740
  1079
     #(FullSpec
sv@1740
  1080
        name: dialogSpecForNewImage
sv@1740
  1081
        window: 
sv@1740
  1082
       (WindowSpec
sv@1740
  1083
          label: 'New Image'
sv@1740
  1084
          name: 'New Image'
sv@1740
  1085
          min: (Point 10 10)
cg@1806
  1086
          bounds: (Rectangle 0 0 301 119)
cg@1557
  1087
        )
sv@1740
  1088
        component: 
sv@1740
  1089
       (SpecCollection
sv@1740
  1090
          collection: (
sv@1740
  1091
           (ViewSpec
sv@1740
  1092
              name: 'View'
sv@1740
  1093
              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -35 1.0)
sv@1740
  1094
              level: 1
sv@1740
  1095
              component: 
sv@1740
  1096
             (SpecCollection
sv@1740
  1097
                collection: (
sv@1740
  1098
                 (FramedBoxSpec
sv@1740
  1099
                    label: 'Size'
sv@1740
  1100
                    name: 'framedBox1'
sv@1740
  1101
                    layout: (LayoutFrame 1 0.0 7 0.0 0 0.4 76 0)
cg@1806
  1102
                    style: (FontDescription helvetica medium roman 12)
sv@1740
  1103
                    labelPosition: topLeft
cg@1806
  1104
                    translateLabel: true
sv@1740
  1105
                    component: 
sv@1740
  1106
                   (SpecCollection
sv@1740
  1107
                      collection: (
sv@1740
  1108
                       (ComboBoxSpec
sv@1740
  1109
                          name: 'defaultSizesComboBox'
sv@1740
  1110
                          layout: (LayoutFrame 0 0.0 10 0.0 0 1 35 0.0)
sv@1740
  1111
                          model: selectionOfSize
sv@1740
  1112
                          type: string
sv@1740
  1113
                          acceptOnPointerLeave: false
sv@1740
  1114
                          comboList: listOfDefaultSizes
sv@1740
  1115
                          isFilenameBox: false
sv@1740
  1116
                        )
sv@1740
  1117
                       )
sv@1740
  1118
                     
sv@1740
  1119
                    )
cg@1557
  1120
                  )
sv@1740
  1121
                 (FramedBoxSpec
sv@1740
  1122
                    label: 'Color Map'
sv@1740
  1123
                    name: 'framedBox2'
sv@1740
  1124
                    layout: (LayoutFrame 0 0.4 7 0.0 -1 1.0 76 0)
cg@1806
  1125
                    style: (FontDescription helvetica medium roman 12)
sv@1740
  1126
                    labelPosition: topLeft
cg@1806
  1127
                    translateLabel: true
sv@1740
  1128
                    component: 
sv@1740
  1129
                   (SpecCollection
sv@1740
  1130
                      collection: (
sv@1740
  1131
                       (ComboListSpec
sv@1740
  1132
                          name: 'colorMapComboBox'
sv@1740
  1133
                          layout: (LayoutFrame 0 0.0 10 0.0 0 1 35 0.0)
sv@1740
  1134
                          model: selectionOfColorMap
sv@1740
  1135
                          comboList: listOfColorMaps
sv@1740
  1136
                          useIndex: false
cg@1847
  1137
                          hidePullDownMenuButton: false
sv@1740
  1138
                        )
sv@1740
  1139
                       )
sv@1740
  1140
                     
sv@1740
  1141
                    )
cg@1557
  1142
                  )
cg@1557
  1143
                 )
cg@1557
  1144
               
cg@1557
  1145
              )
cg@1557
  1146
            )
sv@1740
  1147
           (UISubSpecification
sv@1740
  1148
              name: 'windowSpecForCommitWithoutChannels'
sv@1740
  1149
              layout: (LayoutFrame 2 0.0 -26 1 -2 1.0 -2 1.0)
sv@1740
  1150
              minorKey: windowSpecForCommitWithoutChannels
cg@1713
  1151
            )
cg@1557
  1152
           )
cg@1557
  1153
         
cg@1557
  1154
        )
cg@1557
  1155
      )
cg@1557
  1156
!
cg@1557
  1157
sv@1740
  1158
shiftDialogSpec
cg@1480
  1159
    "This resource specification was automatically generated
cg@1480
  1160
     by the UIPainter of ST/X."
cg@1480
  1161
cg@1480
  1162
    "Do not manually edit this!! If it is corrupted,
cg@1480
  1163
     the UIPainter may not be able to read the specification."
cg@1480
  1164
cg@1480
  1165
    "
sv@1740
  1166
     UIPainter new openOnClass:ImageEditor andSelector:#shiftDialogSpec
sv@1740
  1167
     ImageEditor new openInterface:#shiftDialogSpec
cg@1480
  1168
    "
cg@1480
  1169
cg@1480
  1170
    <resource: #canvas>
cg@1480
  1171
cg@1480
  1172
    ^ 
sv@1740
  1173
     #(FullSpec
sv@1740
  1174
        name: shiftDialogSpec
sv@1740
  1175
        window: 
sv@1740
  1176
       (WindowSpec
sv@1740
  1177
          label: 'Shift'
sv@1740
  1178
          name: 'Shift'
sv@1740
  1179
          min: (Point 10 10)
sv@1740
  1180
          bounds: (Rectangle 14 46 259 229)
cg@1480
  1181
        )
sv@1740
  1182
        component: 
sv@1740
  1183
       (SpecCollection
sv@1740
  1184
          collection: (
sv@1740
  1185
           (LabelSpec
sv@1740
  1186
              label: 'Amount:'
sv@1740
  1187
              name: 'AmountLabel'
sv@1740
  1188
              layout: (LayoutFrame 14 0 21 0 90 0 43 0)
sv@1740
  1189
              translateLabel: true
sv@1740
  1190
              adjust: right
cg@1480
  1191
            )
sv@1740
  1192
           (InputFieldSpec
sv@1740
  1193
              name: 'AmountEntryField'
sv@1740
  1194
              layout: (LayoutFrame 95 0 21 0 139 0 43 0)
sv@1740
  1195
              tabable: true
sv@1740
  1196
              model: shiftAmount
sv@1740
  1197
              type: number
sv@1740
  1198
              acceptChannel: acceptChannel
sv@1740
  1199
              acceptOnPointerLeave: false
cg@1480
  1200
            )
sv@1740
  1201
           (HorizontalPanelViewSpec
sv@1740
  1202
              name: 'HorizontalPanel1'
sv@1740
  1203
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
sv@1740
  1204
              horizontalLayout: fitSpace
sv@1740
  1205
              verticalLayout: center
sv@1740
  1206
              horizontalSpace: 3
sv@1740
  1207
              verticalSpace: 3
sv@1740
  1208
              reverseOrderIfOKAtLeft: true
sv@1740
  1209
              component: 
sv@1740
  1210
             (SpecCollection
sv@1740
  1211
                collection: (
sv@1740
  1212
                 (ActionButtonSpec
sv@1740
  1213
                    label: 'Cancel'
sv@1740
  1214
                    name: 'Button1'
sv@1740
  1215
                    translateLabel: true
sv@1740
  1216
                    tabable: true
sv@1740
  1217
                    model: cancel
sv@1740
  1218
                    extent: (Point 118 22)
cg@1480
  1219
                  )
sv@1740
  1220
                 (ActionButtonSpec
sv@1740
  1221
                    label: 'OK'
sv@1740
  1222
                    name: 'Button2'
sv@1740
  1223
                    translateLabel: true
sv@1740
  1224
                    tabable: true
sv@1740
  1225
                    model: accept
sv@1740
  1226
                    extent: (Point 118 22)
cg@1480
  1227
                  )
cg@1480
  1228
                 )
cg@1480
  1229
               
cg@1480
  1230
              )
cg@1480
  1231
            )
sv@1740
  1232
           (ArrowButtonSpec
sv@1740
  1233
              name: 'upArrowButton'
sv@1740
  1234
              layout: (LayoutFrame 105 0 63 0 127 0 85 0)
sv@1740
  1235
              model: shiftUpNow
sv@1740
  1236
              isTriggerOnDown: true
sv@1740
  1237
              autoRepeat: true
sv@1740
  1238
              actionValue: ''
sv@1740
  1239
              direction: up
sv@1740
  1240
            )
sv@1740
  1241
           (ArrowButtonSpec
sv@1740
  1242
              name: 'leftArrowButton'
sv@1740
  1243
              layout: (LayoutFrame 84 0 86 0 106 0 108 0)
sv@1740
  1244
              model: shiftLeftNow
sv@1740
  1245
              isTriggerOnDown: true
sv@1740
  1246
              autoRepeat: true
sv@1740
  1247
              actionValue: ''
sv@1740
  1248
              direction: left
sv@1740
  1249
            )
sv@1740
  1250
           (ArrowButtonSpec
sv@1740
  1251
              name: 'rightArrowButton'
sv@1740
  1252
              layout: (LayoutFrame 126 0 86 0 148 0 108 0)
sv@1740
  1253
              model: shiftRightNow
sv@1740
  1254
              isTriggerOnDown: true
sv@1740
  1255
              autoRepeat: true
sv@1740
  1256
              actionValue: ''
sv@1740
  1257
              direction: right
sv@1740
  1258
            )
sv@1740
  1259
           (ArrowButtonSpec
sv@1740
  1260
              name: 'downArrowButton'
sv@1740
  1261
              layout: (LayoutFrame 105 0 107 0 127 0 129 0)
sv@1740
  1262
              model: shiftDownNow
sv@1740
  1263
              isTriggerOnDown: true
sv@1740
  1264
              autoRepeat: true
sv@1740
  1265
              actionValue: ''
sv@1740
  1266
              direction: down
sv@1740
  1267
            )
sv@1740
  1268
           (CheckBoxSpec
sv@1740
  1269
              label: 'Wrap'
sv@1740
  1270
              name: 'CheckBox1'
sv@1740
  1271
              layout: (LayoutFrame 153 0 22 0 289 0 44 0)
sv@1740
  1272
              model: wrap
sv@1740
  1273
              translateLabel: true
sv@1740
  1274
            )
cg@1480
  1275
           )
cg@1480
  1276
         
cg@1480
  1277
        )
cg@1480
  1278
      )
cg@1480
  1279
!
cg@1480
  1280
sv@1740
  1281
uncropDialogSpec
sv@1740
  1282
    "This resource specification was automatically generated
sv@1740
  1283
     by the UIPainter of ST/X."
cg@1796
  1284
sv@1740
  1285
    "Do not manually edit this!! If it is corrupted,
sv@1740
  1286
     the UIPainter may not be able to read the specification."
cg@1796
  1287
sv@1740
  1288
    "
cg@1796
  1289
     UIPainter new openOnClass:ImageEditor andSelector:#uncropDialogSpec
cg@1796
  1290
     ImageEditor new openInterface:#uncropDialogSpec
sv@1740
  1291
    "
cg@1796
  1292
cg@1796
  1293
    <resource: #canvas>
cg@1796
  1294
cg@1796
  1295
    ^ 
cg@1796
  1296
     #(FullSpec
cg@1796
  1297
        name: uncropDialogSpec
cg@1796
  1298
        window: 
cg@1796
  1299
       (WindowSpec
cg@1796
  1300
          label: 'Add Border(s)'
cg@1796
  1301
          name: 'Add Border(s)'
cg@1796
  1302
          min: (Point 10 10)
cg@1796
  1303
          max: (Point 800 478)
cg@1796
  1304
          bounds: (Rectangle 0 0 261 228)
cg@1796
  1305
        )
cg@1796
  1306
        component: 
cg@1796
  1307
       (SpecCollection
cg@1796
  1308
          collection: (
cg@1796
  1309
           (LabelSpec
cg@1796
  1310
              label: 'Left:'
cg@1796
  1311
              name: 'Label1'
cg@1796
  1312
              layout: (LayoutFrame 14 0 21 0 90 0 43 0)
cg@1796
  1313
              translateLabel: true
cg@1796
  1314
              adjust: right
cg@1796
  1315
            )
cg@1796
  1316
           (InputFieldSpec
cg@1796
  1317
              name: 'EntryField1'
cg@1796
  1318
              layout: (LayoutFrame 95 0 21 0 132 0 43 0)
cg@1796
  1319
              model: left
cg@1796
  1320
              type: number
cg@1796
  1321
              acceptOnPointerLeave: false
cg@1796
  1322
            )
cg@1796
  1323
           (LabelSpec
cg@1796
  1324
              label: 'Right:'
cg@1796
  1325
              name: 'Label2'
cg@1796
  1326
              layout: (LayoutFrame 14 0 51 0 90 0 73 0)
cg@1796
  1327
              translateLabel: true
cg@1796
  1328
              adjust: right
cg@1796
  1329
            )
cg@1796
  1330
           (InputFieldSpec
cg@1796
  1331
              name: 'EntryField2'
cg@1796
  1332
              layout: (LayoutFrame 95 0 51 0 132 0 73 0)
cg@1796
  1333
              model: right
cg@1796
  1334
              type: number
cg@1796
  1335
              acceptOnPointerLeave: false
cg@1796
  1336
            )
cg@1796
  1337
           (LabelSpec
cg@1796
  1338
              label: 'Top:'
cg@1796
  1339
              name: 'Label3'
cg@1796
  1340
              layout: (LayoutFrame 14 0 81 0 90 0 103 0)
cg@1796
  1341
              translateLabel: true
cg@1796
  1342
              adjust: right
cg@1796
  1343
            )
cg@1796
  1344
           (InputFieldSpec
cg@1796
  1345
              name: 'EntryField3'
cg@1796
  1346
              layout: (LayoutFrame 95 0 81 0 132 0 103 0)
cg@1796
  1347
              model: top
cg@1796
  1348
              type: number
cg@1796
  1349
              acceptOnPointerLeave: false
cg@1796
  1350
            )
cg@1796
  1351
           (LabelSpec
cg@1796
  1352
              label: 'Bottom:'
cg@1796
  1353
              name: 'Label4'
cg@1796
  1354
              layout: (LayoutFrame 14 0 111 0 90 0 133 0)
cg@1796
  1355
              translateLabel: true
cg@1796
  1356
              adjust: right
cg@1796
  1357
            )
cg@1796
  1358
           (InputFieldSpec
cg@1796
  1359
              name: 'EntryField4'
cg@1796
  1360
              layout: (LayoutFrame 95 0 111 0 132 0 133 0)
cg@1796
  1361
              model: bottom
cg@1796
  1362
              type: number
cg@1796
  1363
              acceptOnPointerLeave: false
cg@1796
  1364
            )
cg@1796
  1365
           (HorizontalPanelViewSpec
cg@1796
  1366
              name: 'HorizontalPanel1'
cg@1796
  1367
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
cg@1796
  1368
              horizontalLayout: fitSpace
cg@1796
  1369
              verticalLayout: center
cg@1796
  1370
              horizontalSpace: 3
cg@1796
  1371
              verticalSpace: 3
cg@1796
  1372
              reverseOrderIfOKAtLeft: true
cg@1796
  1373
              component: 
cg@1796
  1374
             (SpecCollection
cg@1796
  1375
                collection: (
cg@1796
  1376
                 (ActionButtonSpec
cg@1796
  1377
                    label: 'Cancel'
cg@1796
  1378
                    name: 'Button1'
cg@1796
  1379
                    translateLabel: true
cg@1796
  1380
                    model: cancel
cg@1796
  1381
                    extent: (Point 118 22)
cg@1796
  1382
                  )
cg@1796
  1383
                 (ActionButtonSpec
cg@1796
  1384
                    label: 'OK'
cg@1796
  1385
                    name: 'Button2'
cg@1796
  1386
                    translateLabel: true
cg@1796
  1387
                    model: accept
cg@1796
  1388
                    extent: (Point 118 22)
cg@1796
  1389
                  )
cg@1796
  1390
                 )
cg@1796
  1391
               
cg@1796
  1392
              )
cg@1796
  1393
            )
cg@1796
  1394
           )
cg@1796
  1395
         
cg@1796
  1396
        )
cg@1796
  1397
      )
sv@1740
  1398
!
sv@1740
  1399
tz@767
  1400
windowSpec
tz@767
  1401
    "This resource specification was automatically generated
tz@767
  1402
     by the UIPainter of ST/X."
tz@767
  1403
tz@767
  1404
    "Do not manually edit this!! If it is corrupted,
tz@767
  1405
     the UIPainter may not be able to read the specification."
tz@767
  1406
tz@767
  1407
    "
tz@767
  1408
     UIPainter new openOnClass:ImageEditor andSelector:#windowSpec
tz@767
  1409
     ImageEditor new openInterface:#windowSpec
tz@767
  1410
     ImageEditor open
tz@767
  1411
    "
tz@767
  1412
tz@767
  1413
    <resource: #canvas>
tz@767
  1414
cg@1558
  1415
    ^ 
cg@1820
  1416
     #(FullSpec
cg@1820
  1417
        name: windowSpec
cg@1820
  1418
        window: 
cg@1820
  1419
       (WindowSpec
cg@1820
  1420
          label: 'Image Editor'
cg@1820
  1421
          name: 'Image Editor'
cg@1820
  1422
          min: (Point 400 320)
cg@1820
  1423
          bounds: (Rectangle 0 0 450 350)
cg@1820
  1424
          menu: menu
sv@2155
  1425
          icon: defaultIcon
cg@1558
  1426
        )
cg@1820
  1427
        component: 
cg@1820
  1428
       (SpecCollection
cg@1820
  1429
          collection: (
cg@1820
  1430
           (MenuPanelSpec
cg@1820
  1431
              name: 'menuToolbarView'
cg@1820
  1432
              layout: (LayoutFrame 0 0.0 0 0 0 1.0 32 0)
cg@1820
  1433
              style: (FontDescription helvetica medium roman 10)
cg@1820
  1434
              menu: menuToolbar
cg@1820
  1435
              showSeparatingLines: true
cg@1558
  1436
            )
cg@1820
  1437
           (VariableHorizontalPanelSpec
cg@1998
  1438
              name: 'mainPanel'
cg@1820
  1439
              layout: (LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
cg@1820
  1440
              snapMode: both
cg@1843
  1441
              barLevel: 0
cg@1820
  1442
              component: 
cg@1820
  1443
             (SpecCollection
cg@1820
  1444
                collection: (
cg@1820
  1445
                 (ViewSpec
cg@1820
  1446
                    name: 'leftView'
cg@1820
  1447
                    level: 1
cg@1820
  1448
                    component: 
cg@1820
  1449
                   (SpecCollection
cg@1820
  1450
                      collection: (
cg@1820
  1451
                       (VariableVerticalPanelSpec
cg@1820
  1452
                          name: 'verticalPanel'
cg@1820
  1453
                          layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
cg@1820
  1454
                          level: 0
cg@1820
  1455
                          snapMode: both
cg@1820
  1456
                          component: 
cg@1820
  1457
                         (SpecCollection
cg@1820
  1458
                            collection: (
cg@1820
  1459
                             (ViewSpec
cg@1820
  1460
                                name: 'View1'
cg@1820
  1461
                                component: 
cg@1820
  1462
                               (SpecCollection
cg@1820
  1463
                                  collection: (
cg@1820
  1464
                                   (MenuPanelSpec
cg@1820
  1465
                                      name: 'MouseButtonColorToolBar'
cg@1820
  1466
                                      layout: (LayoutFrame 0 0.0 0 0 0 1.0 24 0)
cg@1820
  1467
                                      level: 0
cg@1820
  1468
                                      menu: menuMouseButtonColors
cg@1558
  1469
                                    )
cg@1820
  1470
                                   (DataSetSpec
cg@1820
  1471
                                      name: 'colorDataSetView'
cg@1820
  1472
                                      layout: (LayoutFrame 0 0.0 26 0.0 0 1.0 0 1.0)
cg@1820
  1473
                                      activeHelpKey: colorMapTable
cg@1820
  1474
                                      style: (FontDescription helvetica medium roman 10)
cg@1820
  1475
                                      model: selectionOfColor
cg@1820
  1476
                                      menu: colorMapMenu
cg@1820
  1477
                                      hasHorizontalScrollBar: true
cg@1820
  1478
                                      hasVerticalScrollBar: true
cg@1820
  1479
                                      miniScrollerHorizontal: true
cg@1820
  1480
                                      miniScrollerVertical: true
cg@1820
  1481
                                      dataList: listOfColors
cg@1820
  1482
                                      has3Dseparators: true
cg@2174
  1483
                                      doubleClickSelector: doubleClickOnColor:
cg@1900
  1484
                                      columnHolder: colorTableColumns
cg@1820
  1485
                                      verticalSpacing: 1
cg@1820
  1486
                                      columnAdaptor: colorColumnAdaptor
tz@767
  1487
                                    )
cg@1558
  1488
                                   )
cg@1558
  1489
                                 
cg@1558
  1490
                                )
tz@767
  1491
                              )
cg@1820
  1492
                             (ArbitraryComponentSpec
cg@1820
  1493
                                name: 'imagePreView'
cg@1820
  1494
                                activeHelpKey: previewView
cg@1820
  1495
                                menu: previewMenu
cg@1820
  1496
                                hasHorizontalScrollBar: true
cg@1820
  1497
                                hasVerticalScrollBar: true
cg@1820
  1498
                                miniScrollerHorizontal: true
cg@1820
  1499
                                miniScrollerVertical: true
cg@1820
  1500
                                hasBorder: false
cg@1820
  1501
                                component: ImageView
cg@1558
  1502
                              )
cg@1558
  1503
                             )
cg@1558
  1504
                           
tz@767
  1505
                          )
cg@1820
  1506
                          handles: (Any 0.5 1.0)
tz@767
  1507
                        )
cg@1558
  1508
                       )
cg@1558
  1509
                     
tz@767
  1510
                    )
cg@1558
  1511
                  )
cg@1820
  1512
                 (ViewSpec
cg@1820
  1513
                    name: 'rightView'
cg@1820
  1514
                    component: 
cg@1820
  1515
                   (SpecCollection
cg@1820
  1516
                      collection: (
cg@1820
  1517
                       (MenuPanelSpec
cg@1820
  1518
                          name: 'ToolBar1'
cg@1820
  1519
                          layout: (LayoutFrame 0 0 0 0.0 28 0 0 1.0)
cg@1820
  1520
                          level: 1
cg@1820
  1521
                          menu: toolsMenuToolbar
cg@1820
  1522
                          verticalLayout: true
cg@1820
  1523
                          centerItems: true
cg@1820
  1524
                          textDefault: true
cg@1558
  1525
                        )
cg@1820
  1526
                       (ViewSpec
cg@1820
  1527
                          name: 'editingView'
cg@1820
  1528
                          layout: (LayoutFrame 28 0.0 0 0.0 0 1.0 0 1.0)
cg@1820
  1529
                          level: 1
cg@1820
  1530
                          component: 
cg@1820
  1531
                         (SpecCollection
cg@1820
  1532
                            collection: (
cg@1820
  1533
                             (ArbitraryComponentSpec
cg@1820
  1534
                                name: 'imageEditView'
cg@1820
  1535
                                layout: (LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0)
cg@1820
  1536
                                hasHorizontalScrollBar: true
cg@1820
  1537
                                hasVerticalScrollBar: true
cg@1820
  1538
                                hasBorder: false
cg@1820
  1539
                                component: ImageEditView
cg@1637
  1540
                              )
cg@1820
  1541
                             (LabelSpec
cg@1820
  1542
                                name: 'coordLabel'
cg@1820
  1543
                                layout: (LayoutFrame 2 0.0 -22 1 -83 1.0 0 1.0)
cg@1820
  1544
                                level: -1
cg@1820
  1545
                                labelChannel: imageInfoHolder
cg@1820
  1546
                                resizeForLabel: false
cg@1820
  1547
                                adjust: left
cg@1637
  1548
                              )
cg@1820
  1549
                             (ArrowButtonSpec
cg@1820
  1550
                                name: 'magnifyDownButton'
cg@1820
  1551
                                layout: (LayoutFrame -80 1 -22 1 -58 1 0 1)
cg@1820
  1552
                                activeHelpKey: magnifyImageDown
cg@1820
  1553
                                model: doMagnifyDown
cg@1820
  1554
                                enableChannel: imageIsLoaded
cg@1820
  1555
                                isTriggerOnDown: true
cg@1820
  1556
                                direction: left
cg@1637
  1557
                              )
cg@1820
  1558
                             (ArrowButtonSpec
cg@1820
  1559
                                name: 'magnifyUpButton'
cg@1820
  1560
                                layout: (LayoutFrame -24 1 -22 1 -2 1 0 1)
cg@1820
  1561
                                activeHelpKey: magnifyImageUp
cg@1820
  1562
                                model: doMagnifyUp
cg@1820
  1563
                                enableChannel: imageIsLoaded
cg@1820
  1564
                                isTriggerOnDown: true
cg@1820
  1565
                                direction: right
cg@1637
  1566
                              )
cg@1820
  1567
                             (InputFieldSpec
cg@1820
  1568
                                name: 'magnificationInputField'
cg@1820
  1569
                                layout: (LayoutFrame -57 1 -22 1 -26 1 0 1)
cg@1820
  1570
                                activeHelpKey: magnificationNumber
cg@1820
  1571
                                enableChannel: imageIsLoaded
cg@1987
  1572
                                model: magnificationHolder
cg@1820
  1573
                                type: numberInRange
cg@1975
  1574
                                acceptOnReturn: true
cg@1975
  1575
                                acceptOnTab: true
cg@1820
  1576
                                numChars: 2
cg@1820
  1577
                                minValue: 1
cg@1820
  1578
                                maxValue: 99
cg@1975
  1579
                                acceptOnPointerLeave: true
cg@1637
  1580
                              )
cg@1637
  1581
                             )
cg@1637
  1582
                           
cg@1637
  1583
                          )
cg@1558
  1584
                        )
cg@1558
  1585
                       )
cg@1558
  1586
                     
cg@1558
  1587
                    )
cg@1558
  1588
                  )
cg@1558
  1589
                 )
cg@1558
  1590
               
tz@767
  1591
              )
cg@1843
  1592
              handles: (Any 0.288889 1.0)
cg@1558
  1593
            )
cg@1820
  1594
           (UISubSpecification
cg@1820
  1595
              name: 'infoBarSubSpec'
cg@1820
  1596
              layout: (LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
cg@1820
  1597
              majorKey: ToolApplicationModel
cg@1820
  1598
              minorKey: windowSpecForInfoBar
cg@1558
  1599
            )
cg@1558
  1600
           )
cg@1558
  1601
         
cg@1558
  1602
        )
tz@767
  1603
      )
tz@519
  1604
! !
tz@519
  1605
tz@519
  1606
!ImageEditor class methodsFor:'menu specs'!
tz@519
  1607
cg@1053
  1608
colorMapMenu
cg@1053
  1609
    "This resource specification was automatically generated
cg@1053
  1610
     by the MenuEditor of ST/X."
cg@1053
  1611
cg@1053
  1612
    "Do not manually edit this!! If it is corrupted,
cg@1053
  1613
     the MenuEditor may not be able to read the specification."
cg@1053
  1614
cg@1053
  1615
    "
cg@1847
  1616
     MenuEditor new openOnClass:ImageEditor andSelector:#colorMapMenu
cg@1847
  1617
     (Menu new fromLiteralArrayEncoding:(ImageEditor colorMapMenu)) startUp
cg@1053
  1618
    "
cg@1053
  1619
cg@1053
  1620
    <resource: #menu>
cg@1053
  1621
cg@1847
  1622
    ^ 
cg@1847
  1623
     #(Menu
cg@1847
  1624
        (
cg@1847
  1625
         (MenuItem
cg@1847
  1626
            enabled: hasColormap
cg@1847
  1627
            label: 'Add Color'
cg@1847
  1628
            itemValue: addColorToColormap
cg@1847
  1629
            translateLabel: true
cg@1847
  1630
          )
cg@1847
  1631
         (MenuItem
cg@1847
  1632
            enabled: hasColormap
cg@2539
  1633
            label: 'Pick and Add Color...'
cg@1847
  1634
            itemValue: pickAndAddColorToColormap
cg@1847
  1635
            translateLabel: true
cg@1847
  1636
          )
cg@1847
  1637
         (MenuItem
cg@1847
  1638
            label: '-'
cg@1847
  1639
          )
cg@1847
  1640
         (MenuItem
cg@1847
  1641
            enabled: hasColormap
cg@1852
  1642
            label: 'Cut Color'
cg@1852
  1643
            itemValue: cutColorFromColormap
cg@1852
  1644
            translateLabel: true
cg@1852
  1645
            isVisible: false
cg@1852
  1646
          )
cg@1852
  1647
         (MenuItem
cg@1852
  1648
            label: 'Copy Color'
cg@1852
  1649
            itemValue: copyColorFromColormap
cg@1852
  1650
            translateLabel: true
cg@1852
  1651
          )
cg@1852
  1652
         (MenuItem
cg@1852
  1653
            enabled: hasColormap
cg@2539
  1654
            label: 'Pick and Paste Color...'
cg@1933
  1655
            itemValue: pickAndPasteColor
cg@1852
  1656
            translateLabel: true
cg@1852
  1657
          )
cg@1852
  1658
         (MenuItem
cg@1852
  1659
            label: 'Paste Color'
cg@1852
  1660
            itemValue: pasteColorIntoColormap
cg@1852
  1661
            translateLabel: true
cg@1852
  1662
          )
cg@1852
  1663
         (MenuItem
cg@1852
  1664
            label: '-'
cg@1852
  1665
          )
cg@1852
  1666
         (MenuItem
cg@1852
  1667
            enabled: hasColormap
cg@2539
  1668
            label: 'Edit Color...'
cg@1931
  1669
            itemValue: editSelectedColor
cg@1931
  1670
            translateLabel: true
cg@1931
  1671
          )
cg@1931
  1672
         (MenuItem
cg@1931
  1673
            enabled: hasColormap
cg@1847
  1674
            label: 'Brighter'
cg@1847
  1675
            itemValue: makeSelectedColorBrighter
cg@1847
  1676
            translateLabel: true
cg@1847
  1677
          )
cg@1847
  1678
         (MenuItem
cg@1847
  1679
            enabled: hasColormap
cg@1847
  1680
            label: 'Darker'
cg@1847
  1681
            itemValue: makeSelectedColorDarker
cg@1847
  1682
            translateLabel: true
cg@1847
  1683
          )
cg@1847
  1684
         (MenuItem
cg@1847
  1685
            enabled: hasColormap
cg@1884
  1686
            label: 'Make Gray'
cg@1884
  1687
            itemValue: makeSelectedColorGray
cg@1884
  1688
            translateLabel: true
cg@1884
  1689
          )
cg@1884
  1690
         (MenuItem
cg@1847
  1691
            label: '-'
cg@1847
  1692
          )
cg@1847
  1693
         (MenuItem
cg@1847
  1694
            enabled: hasColormap
cg@1847
  1695
            label: 'Inspect Color'
cg@1847
  1696
            itemValue: inspectColor
cg@1847
  1697
            translateLabel: true
cg@1847
  1698
          )
cg@1847
  1699
         )
cg@1847
  1700
        nil
cg@1847
  1701
        nil
cg@1053
  1702
      )
cg@2190
  1703
cg@2190
  1704
    "Modified: / 27-10-2007 / 10:24:00 / cg"
cg@1053
  1705
!
cg@1053
  1706
tz@400
  1707
menu
tz@737
  1708
    "This resource specification was automatically generated
tz@737
  1709
     by the MenuEditor of ST/X."
tz@400
  1710
tz@737
  1711
    "Do not manually edit this!! If it is corrupted,
tz@737
  1712
     the MenuEditor may not be able to read the specification."
tz@400
  1713
tz@400
  1714
    "
tz@400
  1715
     MenuEditor new openOnClass:ImageEditor andSelector:#menu
tz@400
  1716
     (Menu new fromLiteralArrayEncoding:(ImageEditor menu)) startUp
tz@400
  1717
    "
tz@400
  1718
tz@400
  1719
    <resource: #menu>
tz@400
  1720
cg@1124
  1721
    ^ 
cg@1882
  1722
     #(Menu
cg@1882
  1723
        (
cg@1882
  1724
         (MenuItem
cg@1882
  1725
            label: '&File'
cg@1882
  1726
            translateLabel: true
cg@2196
  1727
            submenuChannel: menuFile
cg@2196
  1728
            keepLinkedMenu: true
cg@1124
  1729
          )
cg@1882
  1730
         (MenuItem
cg@1882
  1731
            label: 'Edit'
cg@1882
  1732
            translateLabel: true
cg@2196
  1733
            submenuChannel: menuEdit
cg@2196
  1734
            keepLinkedMenu: true
cg@1124
  1735
          )
cg@1882
  1736
         (MenuItem
cg@1882
  1737
            enabled: imageIsLoaded
cg@1882
  1738
            label: 'Mode'
cg@1882
  1739
            translateLabel: true
cg@1882
  1740
            submenuChannel: modeMenu
cg@1637
  1741
          )
cg@1882
  1742
         (MenuItem
cg@1882
  1743
            enabled: imageIsLoaded
cg@1924
  1744
            label: 'Colors'
cg@1882
  1745
            translateLabel: true
cg@1882
  1746
            submenu: 
cg@1882
  1747
           (Menu
cg@1882
  1748
              (
cg@1882
  1749
               (MenuItem
cg@1882
  1750
                  label: 'Depth'
cg@1882
  1751
                  translateLabel: true
cg@1882
  1752
                  submenu: 
cg@1882
  1753
                 (Menu
cg@1882
  1754
                    (
cg@1882
  1755
                     (MenuItem
cg@1936
  1756
                        activeHelpKey: colorMap1
cg@1936
  1757
                        label: '1-Plane'
cg@1934
  1758
                        itemValue: colorMapMode:
cg@1934
  1759
                        translateLabel: true
cg@1936
  1760
                        argument: depth1
cg@1934
  1761
                        choice: colorMapMode
cg@1936
  1762
                        choiceValue: depth1
cg@1936
  1763
                      )
cg@1936
  1764
                     (MenuItem
cg@1936
  1765
                        activeHelpKey: colorMap1M
cg@1936
  1766
                        label: '1-Plane + Mask'
cg@1936
  1767
                        itemValue: colorMapMode:
cg@1936
  1768
                        translateLabel: true
cg@1936
  1769
                        argument: masked1
cg@1936
  1770
                        choice: colorMapMode
cg@1936
  1771
                        choiceValue: masked1
cg@1936
  1772
                      )
cg@1936
  1773
                     (MenuItem
cg@1936
  1774
                        label: '-'
cg@1936
  1775
                      )
cg@1936
  1776
                     (MenuItem
cg@1936
  1777
                        activeHelpKey: colorMap2
cg@1936
  1778
                        label: '2-Plane'
cg@1936
  1779
                        itemValue: colorMapMode:
cg@1936
  1780
                        translateLabel: true
cg@1936
  1781
                        argument: depth2
cg@1936
  1782
                        choice: colorMapMode
cg@1936
  1783
                        choiceValue: depth2
cg@1936
  1784
                      )
cg@1936
  1785
                     (MenuItem
cg@1936
  1786
                        activeHelpKey: colorMap2M
cg@1936
  1787
                        label: '2-Plane + Mask'
cg@1936
  1788
                        itemValue: colorMapMode:
cg@1936
  1789
                        translateLabel: true
cg@1936
  1790
                        argument: masked2
cg@1936
  1791
                        choice: colorMapMode
cg@1936
  1792
                        choiceValue: masked2
cg@1936
  1793
                      )
cg@1936
  1794
                     (MenuItem
cg@1936
  1795
                        label: '-'
cg@1936
  1796
                      )
cg@1936
  1797
                     (MenuItem
cg@1936
  1798
                        activeHelpKey: colorMap4
cg@1936
  1799
                        label: '4-Plane'
cg@1936
  1800
                        itemValue: colorMapMode:
cg@1936
  1801
                        translateLabel: true
cg@1936
  1802
                        argument: depth4
cg@1936
  1803
                        choice: colorMapMode
cg@1936
  1804
                        choiceValue: depth4
cg@1936
  1805
                      )
cg@1936
  1806
                     (MenuItem
cg@1936
  1807
                        activeHelpKey: colorMap4M
cg@1936
  1808
                        label: '4-Plane + Mask'
cg@1936
  1809
                        itemValue: colorMapMode:
cg@1936
  1810
                        translateLabel: true
cg@1936
  1811
                        argument: masked4
cg@1936
  1812
                        choice: colorMapMode
cg@1936
  1813
                        choiceValue: masked4
cg@1936
  1814
                      )
cg@1936
  1815
                     (MenuItem
cg@1936
  1816
                        label: '-'
cg@1936
  1817
                      )
cg@1936
  1818
                     (MenuItem
cg@1936
  1819
                        activeHelpKey: colorMap8
cg@1936
  1820
                        label: '8-Plane'
cg@1936
  1821
                        itemValue: colorMapMode:
cg@1936
  1822
                        translateLabel: true
cg@1936
  1823
                        argument: depth8
cg@1936
  1824
                        choice: colorMapMode
cg@1936
  1825
                        choiceValue: depth8
cg@1936
  1826
                      )
cg@1936
  1827
                     (MenuItem
cg@1936
  1828
                        activeHelpKey: colorMap8M
cg@1936
  1829
                        label: '8-Plane + Mask'
cg@1936
  1830
                        itemValue: colorMapMode:
cg@1936
  1831
                        translateLabel: true
cg@1936
  1832
                        argument: masked8
cg@1936
  1833
                        choice: colorMapMode
cg@1936
  1834
                        choiceValue: masked8
cg@1936
  1835
                      )
cg@1936
  1836
                     (MenuItem
cg@1936
  1837
                        label: '-'
cg@1934
  1838
                      )
cg@1934
  1839
                     (MenuItem
cg@1934
  1840
                        activeHelpKey: colorMap16
cg@1934
  1841
                        label: '16-Plane'
cg@1934
  1842
                        itemValue: colorMapMode:
cg@1934
  1843
                        translateLabel: true
cg@1934
  1844
                        argument: depth16
cg@1934
  1845
                        choice: colorMapMode
cg@1934
  1846
                        choiceValue: depth16
cg@1934
  1847
                      )
cg@1934
  1848
                     (MenuItem
cg@1936
  1849
                        activeHelpKey: colorMap16M
cg@1936
  1850
                        label: '16-Plane + Mask'
cg@1882
  1851
                        itemValue: colorMapMode:
cg@1882
  1852
                        translateLabel: true
cg@1936
  1853
                        argument: masked16
cg@1882
  1854
                        choice: colorMapMode
cg@1936
  1855
                        choiceValue: masked16
cg@1649
  1856
                      )
cg@1882
  1857
                     (MenuItem
cg@1882
  1858
                        label: '-'
cg@1649
  1859
                      )
cg@1882
  1860
                     (MenuItem
cg@1936
  1861
                        activeHelpKey: colorMap24
cg@1936
  1862
                        label: '24-Plane'
cg@1936
  1863
                        itemValue: colorMapMode:
cg@1936
  1864
                        translateLabel: true
cg@1936
  1865
                        argument: depth24
cg@1936
  1866
                        choice: colorMapMode
cg@1936
  1867
                        choiceValue: depth24
cg@1936
  1868
                      )
cg@1936
  1869
                     (MenuItem
cg@1934
  1870
                        activeHelpKey: colorMap24M
cg@1934
  1871
                        label: '24-Plane + Mask'
cg@1934
  1872
                        itemValue: colorMapMode:
cg@1934
  1873
                        translateLabel: true
cg@1934
  1874
                        argument: masked24
cg@1934
  1875
                        choice: colorMapMode
cg@1934
  1876
                        choiceValue: masked24
cg@1934
  1877
                      )
cg@1649
  1878
                     )
cg@1649
  1879
                    nil
cg@1649
  1880
                    nil
cg@1649
  1881
                  )
tz@400
  1882
                )
cg@1882
  1883
               (MenuItem
cg@1924
  1884
                  label: 'ColorMap'
cg@1882
  1885
                  translateLabel: true
cg@1882
  1886
                  submenu: 
cg@1882
  1887
                 (Menu
cg@1882
  1888
                    (
cg@1882
  1889
                     (MenuItem
cg@1882
  1890
                        activeHelpKey: compressColormap
cg@1882
  1891
                        enabled: hasColormap
cg@1882
  1892
                        label: 'Compress Colormap'
cg@1882
  1893
                        itemValue: compressColorMap
cg@1882
  1894
                        translateLabel: true
cg@1649
  1895
                      )
cg@1882
  1896
                     (MenuItem
cg@1882
  1897
                        enabled: hasColormap
cg@1882
  1898
                        label: 'Sort Colormap'
cg@1882
  1899
                        itemValue: sortColorMap
cg@1882
  1900
                        translateLabel: true
cg@1649
  1901
                      )
cg@1882
  1902
                     (MenuItem
cg@1934
  1903
                        label: 'Reduce Number of Colors by Rounding...'
cg@1934
  1904
                        itemValue: reduceNumberOfColors2
cg@1934
  1905
                        translateLabel: true
cg@1934
  1906
                      )
cg@1934
  1907
                     (MenuItem
cg@1934
  1908
                        label: 'Reduce Number of Colors by Masking Bits...'
cg@1882
  1909
                        itemValue: reduceNumberOfColors
cg@1882
  1910
                        translateLabel: true
cg@1649
  1911
                      )
cg@2054
  1912
                     (MenuItem
cg@2054
  1913
                        label: 'Dither to Depth...'
cg@2054
  1914
                        itemValue: ditherToDepth
cg@2054
  1915
                        translateLabel: true
cg@2054
  1916
                      )
cg@1649
  1917
                     )
cg@1649
  1918
                    nil
cg@1649
  1919
                    nil
cg@1649
  1920
                  )
cg@1124
  1921
                )
cg@1882
  1922
               (MenuItem
cg@1882
  1923
                  label: 'Process'
cg@1882
  1924
                  translateLabel: true
cg@1882
  1925
                  submenu: 
cg@1882
  1926
                 (Menu
cg@1882
  1927
                    (
cg@1882
  1928
                     (MenuItem
cg@1882
  1929
                        label: 'Make GrayScale'
cg@1924
  1930
                        itemValue: makeGrayScaleImage
cg@1882
  1931
                        translateLabel: true
cg@1649
  1932
                      )
cg@1882
  1933
                     (MenuItem
cg@1924
  1934
                        enabled: hasNoColormap
cg@1924
  1935
                        label: 'Make dithered 8Bit Palette'
cg@1924
  1936
                        itemValue: makeDitheredPaletteImage
cg@1924
  1937
                        translateLabel: true
cg@1924
  1938
                        isVisible: false
cg@1924
  1939
                      )
cg@1924
  1940
                     (MenuItem
cg@1882
  1941
                        label: 'Make Brighter'
cg@1882
  1942
                        itemValue: makeBrighter
cg@1882
  1943
                        translateLabel: true
cg@1649
  1944
                      )
cg@1882
  1945
                     (MenuItem
cg@1882
  1946
                        label: 'Make Darker'
cg@1882
  1947
                        itemValue: makeDarker
cg@1882
  1948
                        translateLabel: true
cg@1649
  1949
                      )
cg@1882
  1950
                     (MenuItem
cg@1882
  1951
                        label: 'Make Inverse'
cg@1882
  1952
                        itemValue: makeInverse
cg@1882
  1953
                        translateLabel: true
cg@1649
  1954
                      )
cg@1882
  1955
                     (MenuItem
cg@1882
  1956
                        label: '-'
cg@1649
  1957
                      )
cg@1882
  1958
                     (MenuItem
cg@1882
  1959
                        label: 'Change HLS...'
cg@1882
  1960
                        itemValue: changeHLS
cg@1882
  1961
                        translateLabel: true
cg@1649
  1962
                      )
cg@2192
  1963
                     (MenuItem
cg@2192
  1964
                        label: 'Colorize...'
cg@2192
  1965
                        itemValue: colorize
cg@2192
  1966
                        translateLabel: true
cg@2192
  1967
                      )
cg@1649
  1968
                     )
cg@1649
  1969
                    nil
cg@1649
  1970
                    nil
cg@1649
  1971
                  )
cg@1124
  1972
                )
cg@1882
  1973
               (MenuItem
cg@1882
  1974
                  label: 'Mask'
cg@1882
  1975
                  translateLabel: true
cg@1882
  1976
                  submenu: 
cg@1882
  1977
                 (Menu
cg@1882
  1978
                    (
cg@1882
  1979
                     (MenuItem
cg@1882
  1980
                        activeHelpKey: copyMask
cg@1882
  1981
                        enabled: hasMask
cg@1882
  1982
                        label: 'Copy Mask'
cg@1882
  1983
                        itemValue: copyMask
cg@1882
  1984
                        translateLabel: true
cg@1649
  1985
                      )
cg@1882
  1986
                     (MenuItem
cg@1882
  1987
                        activeHelpKey: pasteMask
cg@1882
  1988
                        enabled: hasMask
cg@1882
  1989
                        label: 'Paste Mask'
cg@1882
  1990
                        itemValue: pasteMask
cg@1882
  1991
                        translateLabel: true
cg@1649
  1992
                      )
cg@1882
  1993
                     (MenuItem
cg@1924
  1994
                        enabled: hasMask
cg@1882
  1995
                        label: 'Clear Masked Pixels'
cg@1882
  1996
                        itemValue: clearMaskedPixels
cg@1882
  1997
                        translateLabel: true
cg@1649
  1998
                      )
cg@1649
  1999
                     )
cg@1649
  2000
                    nil
cg@1649
  2001
                    nil
cg@1649
  2002
                  )
cg@1598
  2003
                )
cg@1124
  2004
               )
cg@1124
  2005
              nil
cg@1124
  2006
              nil
tz@400
  2007
            )
cg@1124
  2008
          )
cg@1882
  2009
         (MenuItem
cg@1882
  2010
            label: 'Settings'
cg@1882
  2011
            translateLabel: true
cg@1882
  2012
            submenu: 
cg@1882
  2013
           (Menu
cg@1882
  2014
              (
cg@1882
  2015
               (MenuItem
cg@1882
  2016
                  activeHelpKey: settingsGridMagnification
cg@1882
  2017
                  label: 'Grid Magnification Limit...'
cg@1882
  2018
                  itemValue: doChangeGridMagnification
cg@1882
  2019
                  translateLabel: true
tz@400
  2020
                )
cg@2192
  2021
               (MenuItem
cg@2192
  2022
                  label: 'Pen'
cg@2192
  2023
                  translateLabel: true
cg@2192
  2024
                  submenu: 
cg@2192
  2025
                 (Menu
cg@2192
  2026
                    (
cg@2192
  2027
                     (MenuItem
cg@2192
  2028
                        label: '1'
cg@2192
  2029
                        itemValue: penWidth:
cg@2192
  2030
                        translateLabel: true
cg@2192
  2031
                        argument: 1
cg@2192
  2032
                      )
cg@2192
  2033
                     (MenuItem
cg@2192
  2034
                        label: '5'
cg@2192
  2035
                        itemValue: penWidth:
cg@2192
  2036
                        translateLabel: true
cg@2192
  2037
                        argument: 5
cg@2192
  2038
                      )
cg@2192
  2039
                     (MenuItem
cg@2192
  2040
                        label: '10'
cg@2192
  2041
                        itemValue: penWidth:
cg@2192
  2042
                        translateLabel: true
cg@2192
  2043
                        argument: 10
cg@2192
  2044
                      )
cg@2192
  2045
                     )
cg@2192
  2046
                    nil
cg@2192
  2047
                    nil
cg@2192
  2048
                  )
cg@2192
  2049
                )
cg@2375
  2050
               (MenuItem
cg@2375
  2051
                  label: 'Spray'
cg@2375
  2052
                  translateLabel: true
cg@2375
  2053
                  submenu: 
cg@2375
  2054
                 (Menu
cg@2375
  2055
                    (
cg@2375
  2056
                     (MenuItem
cg@2375
  2057
                        label: '4'
cg@2375
  2058
                        itemValue: spraySpot:
cg@2375
  2059
                        translateLabel: true
cg@2375
  2060
                        argument: 4
cg@2375
  2061
                      )
cg@2375
  2062
                     (MenuItem
cg@2375
  2063
                        label: '8'
cg@2375
  2064
                        itemValue: spraySpot:
cg@2375
  2065
                        translateLabel: true
cg@2375
  2066
                        argument: 8
cg@2375
  2067
                      )
cg@2375
  2068
                     (MenuItem
cg@2375
  2069
                        label: '16'
cg@2375
  2070
                        itemValue: spraySpot:
cg@2375
  2071
                        translateLabel: true
cg@2375
  2072
                        argument: 16
cg@2375
  2073
                      )
cg@2375
  2074
                     (MenuItem
cg@2375
  2075
                        label: '32'
cg@2375
  2076
                        itemValue: spraySpot:
cg@2375
  2077
                        translateLabel: true
cg@2375
  2078
                        argument: 32
cg@2375
  2079
                      )
cg@2375
  2080
                     )
cg@2375
  2081
                    nil
cg@2375
  2082
                    nil
cg@2375
  2083
                  )
cg@2375
  2084
                )
cg@1124
  2085
               )
cg@1124
  2086
              nil
cg@1124
  2087
              nil
tz@400
  2088
            )
cg@1124
  2089
          )
cg@1882
  2090
         (MenuItem
cg@1882
  2091
            label: 'History'
cg@1882
  2092
            translateLabel: true
cg@1975
  2093
            isVisible: isStandAlone
cg@1882
  2094
            submenuChannel: menuHistory
cg@1124
  2095
          )
cg@1882
  2096
         (MenuItem
cg@2136
  2097
            label: 'MENU_Help'
cg@1882
  2098
            translateLabel: true
cg@2125
  2099
            startGroup: conditionalRight
cg@1882
  2100
            submenuChannel: menuHelp
cg@1124
  2101
          )
cg@1124
  2102
         )
cg@1124
  2103
        nil
cg@1124
  2104
        nil
tz@400
  2105
      )
tz@400
  2106
!
tz@400
  2107
cg@2196
  2108
menuEdit
cg@2196
  2109
    "This resource specification was automatically generated
cg@2196
  2110
     by the MenuEditor of ST/X."
cg@2196
  2111
cg@2196
  2112
    "Do not manually edit this!! If it is corrupted,
cg@2196
  2113
     the MenuEditor may not be able to read the specification."
cg@2196
  2114
cg@2196
  2115
    "
cg@2196
  2116
     MenuEditor new openOnClass:ImageEditor andSelector:#menuEdit
cg@2196
  2117
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuEdit)) startUp
cg@2196
  2118
    "
cg@2196
  2119
cg@2196
  2120
    <resource: #menu>
cg@2196
  2121
cg@2196
  2122
    ^ 
cg@2196
  2123
     #(Menu
cg@2196
  2124
        (
cg@2196
  2125
         (MenuItem
cg@2196
  2126
            activeHelpKey: editUndo
cg@2196
  2127
            enabled: canUndoHolder
cg@2196
  2128
            label: 'Undo'
cg@2196
  2129
            itemValue: doUndo
cg@2196
  2130
            translateLabel: true
cg@2196
  2131
          )
cg@2196
  2132
         (MenuItem
cg@2196
  2133
            label: '-'
cg@2196
  2134
          )
cg@2196
  2135
         (MenuItem
cg@2196
  2136
            activeHelpKey: editResize
cg@2196
  2137
            label: 'Resize...'
cg@2196
  2138
            itemValue: doResizeImage
cg@2196
  2139
            translateLabel: true
cg@2196
  2140
          )
cg@2196
  2141
         (MenuItem
cg@2196
  2142
            activeHelpKey: editMagnifyImage
cg@2196
  2143
            label: 'Magnify...'
cg@2196
  2144
            itemValue: doMagnifyImage
cg@2196
  2145
            translateLabel: true
cg@2196
  2146
          )
cg@2196
  2147
         (MenuItem
cg@2196
  2148
            activeHelpKey: editMagnifyImage
cg@2196
  2149
            label: 'Magnify By...'
cg@2196
  2150
            itemValue: doMagnifyImageBy
cg@2196
  2151
            translateLabel: true
cg@2196
  2152
          )
cg@2196
  2153
         (MenuItem
cg@2196
  2154
            activeHelpKey: editRotate
cg@2196
  2155
            label: 'Rotate...'
cg@2196
  2156
            itemValue: doRotateImage
cg@2196
  2157
            translateLabel: true
cg@2196
  2158
          )
cg@2196
  2159
         (MenuItem
cg@2354
  2160
            activeHelpKey: edit3DProjection
cg@2354
  2161
            label: '3D Projection...'
cg@2354
  2162
            itemValue: do3DProjection
cg@2354
  2163
            translateLabel: true
cg@2354
  2164
          )
cg@2354
  2165
         (MenuItem
cg@2196
  2166
            label: 'Flip'
cg@2196
  2167
            translateLabel: true
cg@2196
  2168
            submenu: 
cg@2196
  2169
           (Menu
cg@2196
  2170
              (
cg@2196
  2171
               (MenuItem
cg@2196
  2172
                  activeHelpKey: editFlipVertical
cg@2196
  2173
                  label: 'Flip - Vertical'
cg@2196
  2174
                  itemValue: doFlipVertical
cg@2196
  2175
                  translateLabel: true
cg@2196
  2176
                )
cg@2196
  2177
               (MenuItem
cg@2196
  2178
                  activeHelpKey: editFlipHorizontal
cg@2196
  2179
                  label: 'Flip - Horizontal'
cg@2196
  2180
                  itemValue: doFlipHorizontal
cg@2196
  2181
                  translateLabel: true
cg@2196
  2182
                )
cg@2196
  2183
               )
cg@2196
  2184
              nil
cg@2196
  2185
              nil
cg@2196
  2186
            )
cg@2196
  2187
          )
cg@2196
  2188
         (MenuItem
cg@2196
  2189
            label: '-'
cg@2196
  2190
          )
cg@2196
  2191
         (MenuItem
cg@2196
  2192
            label: 'Invert'
cg@2196
  2193
            itemValue: doNegativeImage
cg@2196
  2194
            translateLabel: true
cg@2196
  2195
          )
cg@2196
  2196
         (MenuItem
cg@2196
  2197
            label: 'Brighten'
cg@2196
  2198
            itemValue: doBrightenImage
cg@2196
  2199
            translateLabel: true
cg@2196
  2200
          )
cg@2196
  2201
         (MenuItem
cg@2196
  2202
            label: 'Darken'
cg@2196
  2203
            itemValue: doDarkenImage
cg@2196
  2204
            translateLabel: true
cg@2196
  2205
          )
cg@2196
  2206
         (MenuItem
cg@2196
  2207
            label: '-'
cg@2196
  2208
          )
cg@2196
  2209
         (MenuItem
cg@2196
  2210
            label: 'Crop'
cg@2196
  2211
            translateLabel: true
cg@2196
  2212
            submenu: 
cg@2196
  2213
           (Menu
cg@2196
  2214
              (
cg@2196
  2215
               (MenuItem
cg@2196
  2216
                  activeHelpKey: cropManual
cg@2196
  2217
                  label: 'Manual...'
cg@2196
  2218
                  itemValue: doCropManual
cg@2196
  2219
                  translateLabel: true
cg@2196
  2220
                )
cg@2196
  2221
               (MenuItem
cg@2196
  2222
                  label: '-'
cg@2196
  2223
                )
cg@2196
  2224
               (MenuItem
cg@2196
  2225
                  activeHelpKey: cropAll
cg@2196
  2226
                  label: 'All'
cg@2196
  2227
                  itemValue: doCropAll
cg@2196
  2228
                  translateLabel: true
cg@2196
  2229
                )
cg@2196
  2230
               (MenuItem
cg@2196
  2231
                  label: '-'
cg@2196
  2232
                )
cg@2196
  2233
               (MenuItem
cg@2196
  2234
                  activeHelpKey: cropLeft
cg@2196
  2235
                  label: 'Left'
cg@2196
  2236
                  itemValue: doCropLeft
cg@2196
  2237
                  translateLabel: true
cg@2196
  2238
                )
cg@2196
  2239
               (MenuItem
cg@2196
  2240
                  activeHelpKey: cropRight
cg@2196
  2241
                  label: 'Right'
cg@2196
  2242
                  itemValue: doCropRight
cg@2196
  2243
                  translateLabel: true
cg@2196
  2244
                )
cg@2196
  2245
               (MenuItem
cg@2196
  2246
                  activeHelpKey: cropTop
cg@2196
  2247
                  label: 'Top'
cg@2196
  2248
                  itemValue: doCropTop
cg@2196
  2249
                  translateLabel: true
cg@2196
  2250
                )
cg@2196
  2251
               (MenuItem
cg@2196
  2252
                  activeHelpKey: cropBottom
cg@2196
  2253
                  label: 'Bottom'
cg@2196
  2254
                  itemValue: doCropBottom
cg@2196
  2255
                  translateLabel: true
cg@2196
  2256
                )
cg@2196
  2257
               )
cg@2196
  2258
              nil
cg@2196
  2259
              nil
cg@2196
  2260
            )
cg@2196
  2261
          )
cg@2196
  2262
         (MenuItem
cg@2196
  2263
            activeHelpKey: uncropManual
cg@2196
  2264
            label: 'Uncrop (Add Border)...'
cg@2196
  2265
            itemValue: doUnCropManual
cg@2196
  2266
            translateLabel: true
cg@2196
  2267
          )
cg@2196
  2268
         (MenuItem
cg@2196
  2269
            activeHelpKey: shiftManual
cg@2196
  2270
            label: 'Shift...'
cg@2196
  2271
            itemValue: doShiftManual
cg@2196
  2272
            translateLabel: true
cg@2196
  2273
          )
cg@2196
  2274
         (MenuItem
cg@2196
  2275
            label: '-'
cg@2196
  2276
          )
cg@2196
  2277
         (MenuItem
cg@2196
  2278
            label: 'Text...'
cg@2196
  2279
            itemValue: doInsertTextFromUser
cg@2196
  2280
            translateLabel: true
cg@2196
  2281
          )
cg@2424
  2282
cg@2196
  2283
         )
cg@2196
  2284
        nil
cg@2196
  2285
        nil
cg@2196
  2286
      )
cg@2196
  2287
!
cg@2196
  2288
cg@2196
  2289
menuFile
cg@2196
  2290
    "This resource specification was automatically generated
cg@2196
  2291
     by the MenuEditor of ST/X."
cg@2196
  2292
cg@2196
  2293
    "Do not manually edit this!! If it is corrupted,
cg@2196
  2294
     the MenuEditor may not be able to read the specification."
cg@2196
  2295
cg@2196
  2296
    "
cg@2196
  2297
     MenuEditor new openOnClass:ImageEditor andSelector:#menuFile
cg@2196
  2298
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuFile)) startUp
cg@2196
  2299
    "
cg@2196
  2300
cg@2196
  2301
    <resource: #menu>
cg@2196
  2302
cg@2196
  2303
    ^ 
cg@2196
  2304
     #(Menu
cg@2196
  2305
        (
cg@2196
  2306
         (MenuItem
cg@2196
  2307
            activeHelpKey: fileNewImageEditor
cg@2196
  2308
            label: 'New ImageEditor'
cg@2196
  2309
            itemValue: doNewImageEditor
cg@2196
  2310
            translateLabel: true
cg@2196
  2311
          )
cg@2196
  2312
         (MenuItem
cg@2196
  2313
            activeHelpKey: fileNewImage
cg@2196
  2314
            label: 'New...'
cg@2196
  2315
            itemValue: doNewImage
cg@2196
  2316
            translateLabel: true
cg@2196
  2317
          )
cg@2196
  2318
         (MenuItem
cg@2196
  2319
            activeHelpKey: fileNewImage
cg@2196
  2320
            label: 'New from ClipBoard'
cg@2196
  2321
            itemValue: doNewImageFromClipboard
cg@2196
  2322
            translateLabel: true
cg@2196
  2323
          )
cg@2196
  2324
         (MenuItem
cg@2196
  2325
            label: '-'
cg@2196
  2326
          )
cg@2196
  2327
         (MenuItem
cg@2196
  2328
            activeHelpKey: fileLoadFromClass
cg@2196
  2329
            label: 'Load...'
cg@2196
  2330
            itemValue: doLoadFromClass
cg@2196
  2331
            translateLabel: true
cg@2196
  2332
          )
cg@2196
  2333
         (MenuItem
cg@2196
  2334
            activeHelpKey: fileLoadFromFile
cg@2196
  2335
            label: 'Load from File...'
cg@2196
  2336
            itemValue: doLoadFromFile
cg@2196
  2337
            translateLabel: true
cg@2196
  2338
          )
cg@2196
  2339
         (MenuItem
cg@2196
  2340
            activeHelpKey: fileGrabImage
cg@2196
  2341
            label: 'Grab from Screen...'
cg@2196
  2342
            itemValue: grabScreenImage
cg@2196
  2343
            translateLabel: true
cg@2196
  2344
          )
cg@2196
  2345
         (MenuItem
cg@2196
  2346
            enabled: imageHasNextImage
cg@2196
  2347
            label: 'Next in Sequence'
cg@2196
  2348
            itemValue: nextImageInSequence
cg@2196
  2349
            translateLabel: true
cg@2196
  2350
            isVisible: isStandAlone
cg@2196
  2351
          )
cg@2196
  2352
         (MenuItem
cg@2196
  2353
            label: '-'
cg@2196
  2354
          )
cg@2196
  2355
         (MenuItem
cg@2196
  2356
            activeHelpKey: fileSaveMethod
cg@2196
  2357
            enabled: imageIsLoadedAndClassDefined
cg@2196
  2358
            label: 'Save'
cg@2196
  2359
            itemValue: doSaveMethod
cg@2196
  2360
            translateLabel: true
cg@2196
  2361
          )
cg@2196
  2362
         (MenuItem
cg@2196
  2363
            activeHelpKey: fileSaveMethodAs
cg@2196
  2364
            enabled: imageIsLoaded
cg@2196
  2365
            label: 'Save As...'
cg@2196
  2366
            itemValue: doSaveMethodAs
cg@2196
  2367
            translateLabel: true
cg@2196
  2368
          )
cg@2196
  2369
         (MenuItem
cg@2196
  2370
            activeHelpKey: fileSaveAs
cg@2196
  2371
            enabled: imageIsLoaded
cg@2196
  2372
            label: 'Save to File...'
cg@2196
  2373
            itemValue: doSaveImageFileAs
cg@2196
  2374
            translateLabel: true
cg@2196
  2375
          )
cg@2196
  2376
         (MenuItem
cg@2196
  2377
            activeHelpKey: fileSaveMaskAs
cg@2196
  2378
            enabled: imageIsLoaded
cg@2196
  2379
            label: 'Save Mask to File...'
cg@2196
  2380
            itemValue: doSaveImageMaskFileAs
cg@2196
  2381
            translateLabel: true
cg@2196
  2382
          )
cg@2196
  2383
         (MenuItem
cg@2196
  2384
            activeHelpKey: fileSaveButtonImageAs
cg@2196
  2385
            enabled: imageIsLoaded
cg@2196
  2386
            label: 'Save as Button to File...'
cg@2196
  2387
            itemValue: doSaveButtonImageToFileAs
cg@2196
  2388
            translateLabel: true
cg@2196
  2389
          )
cg@2196
  2390
         (MenuItem
cg@2196
  2391
            enabled: imageIsLoaded
cg@2196
  2392
            label: 'Copy to Clipboard'
cg@2196
  2393
            itemValue: doCopyImageToClipboard
cg@2196
  2394
            translateLabel: true
cg@2196
  2395
          )
cg@2196
  2396
         (MenuItem
cg@2196
  2397
            label: '-'
cg@2196
  2398
          )
cg@2196
  2399
         (MenuItem
cg@2196
  2400
            activeHelpKey: fileShowStoreString
cg@2196
  2401
            enabled: imageIsLoaded
cg@2196
  2402
            label: 'Show storeString'
cg@2196
  2403
            itemValue: doShowStoreString
cg@2196
  2404
            translateLabel: true
cg@2196
  2405
          )
cg@2196
  2406
         (MenuItem
cg@2196
  2407
            activeHelpKey: fileEditMask
cg@2196
  2408
            enabled: imageIsLoaded
cg@2196
  2409
            label: 'Edit Mask'
cg@2196
  2410
            itemValue: doEditMask
cg@2196
  2411
            translateLabel: true
cg@2196
  2412
          )
cg@2196
  2413
         (MenuItem
cg@2196
  2414
            label: '-'
cg@2196
  2415
          )
cg@2196
  2416
         (MenuItem
cg@2196
  2417
            activeHelpKey: filePrint
cg@2196
  2418
            enabled: imageIsLoaded
cg@2196
  2419
            label: 'Print'
cg@2196
  2420
            itemValue: doPrint
cg@2196
  2421
            translateLabel: true
cg@2196
  2422
          )
cg@2196
  2423
         (MenuItem
cg@2196
  2424
            label: '-'
cg@2196
  2425
            isVisible: isStandAlone
cg@2196
  2426
          )
cg@2196
  2427
         (MenuItem
cg@2196
  2428
            activeHelpKey: fileBrowseClass
cg@2196
  2429
            enabled: hasClassDefined
cg@2196
  2430
            label: 'Browse Class'
cg@2196
  2431
            itemValue: doBrowseClass
cg@2196
  2432
            translateLabel: true
cg@2196
  2433
            isVisible: isStandAlone
cg@2196
  2434
          )
cg@2196
  2435
         (MenuItem
cg@2196
  2436
            label: 'Inspect Image'
cg@2196
  2437
            itemValue: doInspectImage
cg@2196
  2438
            translateLabel: true
cg@2196
  2439
            isVisible: isStandAlone
cg@2196
  2440
          )
cg@2196
  2441
         (MenuItem
cg@2196
  2442
            label: '-'
cg@2196
  2443
            isVisible: isStandAlone
cg@2196
  2444
          )
cg@2196
  2445
         (MenuItem
cg@2196
  2446
            activeHelpKey: fileExit
cg@2196
  2447
            label: 'Exit'
cg@2196
  2448
            itemValue: closeRequest
cg@2196
  2449
            translateLabel: true
cg@2196
  2450
            isVisible: isStandAlone
cg@2196
  2451
          )
cg@2196
  2452
         )
cg@2196
  2453
        nil
cg@2196
  2454
        nil
cg@2196
  2455
      )
cg@2196
  2456
!
cg@2196
  2457
tz@679
  2458
menuMouseButtonColors
tz@737
  2459
    "This resource specification was automatically generated
tz@737
  2460
     by the MenuEditor of ST/X."
tz@679
  2461
tz@737
  2462
    "Do not manually edit this!! If it is corrupted,
tz@737
  2463
     the MenuEditor may not be able to read the specification."
tz@679
  2464
tz@679
  2465
    "
tz@679
  2466
     MenuEditor new openOnClass:ImageEditor andSelector:#menuMouseButtonColors
tz@679
  2467
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuMouseButtonColors)) startUp
tz@679
  2468
    "
tz@679
  2469
tz@679
  2470
    <resource: #menu>
tz@679
  2471
tz@679
  2472
    ^
tz@679
  2473
     
tz@679
  2474
       #(#Menu
tz@679
  2475
          
tz@679
  2476
           #(
tz@679
  2477
             #(#MenuItem
tz@679
  2478
                #label: 'Left Mouse Button'
tz@679
  2479
                #nameKey: #leftMouseKeyButton
tz@679
  2480
                #activeHelpKey: #mouseKeyColorMode
tz@975
  2481
                #enabled: #imageIsLoaded
tz@679
  2482
                #labelImage: #(#ResourceRetriever nil #leftMouseKeyIcon)
tz@975
  2483
                #choice: #mouseKeyColorMode
tz@975
  2484
                #choiceValue: 1
tz@679
  2485
            )
tz@679
  2486
             #(#MenuItem
tz@679
  2487
                #label: 'Right Mouse Button'
tz@679
  2488
                #nameKey: #rightMouseKeyButton
tz@679
  2489
                #activeHelpKey: #mouseKeyColorMode
tz@975
  2490
                #enabled: #imageIsLoaded
tz@679
  2491
                #labelImage: #(#ResourceRetriever nil #rightMouseKeyIcon)
tz@975
  2492
                #choice: #mouseKeyColorMode
tz@975
  2493
                #choiceValue: 2
tz@679
  2494
            )
tz@679
  2495
          ) nil
tz@679
  2496
          nil
tz@679
  2497
      )
tz@679
  2498
!
tz@679
  2499
tz@400
  2500
menuToolbar
tz@737
  2501
    "This resource specification was automatically generated
tz@737
  2502
     by the MenuEditor of ST/X."
tz@400
  2503
tz@737
  2504
    "Do not manually edit this!! If it is corrupted,
tz@737
  2505
     the MenuEditor may not be able to read the specification."
tz@400
  2506
tz@400
  2507
    "
tz@400
  2508
     MenuEditor new openOnClass:ImageEditor andSelector:#menuToolbar
tz@400
  2509
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuToolbar)) startUp
tz@400
  2510
    "
tz@400
  2511
tz@400
  2512
    <resource: #menu>
tz@400
  2513
cg@1196
  2514
    ^ 
cg@1820
  2515
     #(Menu
cg@1820
  2516
        (
cg@1820
  2517
         (MenuItem
cg@1820
  2518
            activeHelpKey: fileNewImage
cg@1820
  2519
            label: 'newImage'
cg@1820
  2520
            itemValue: doNewImage
cg@1820
  2521
            translateLabel: true
cg@1820
  2522
            isButton: true
cg@1883
  2523
            labelImage: (ResourceRetriever ToolbarIconLibrary newImageIcon)
cg@1196
  2524
          )
cg@1820
  2525
         (MenuItem
cg@1949
  2526
            label: '-'
cg@1949
  2527
          )
cg@1949
  2528
         (MenuItem
cg@1970
  2529
            activeHelpKey: fileLoadFromClass
cg@1970
  2530
            label: 'loadFromClass'
cg@1970
  2531
            itemValue: doLoadFromClass
cg@1970
  2532
            translateLabel: true
cg@1970
  2533
            isButton: true
cg@1975
  2534
            isVisible: isStandAlone
cg@1970
  2535
            submenuChannel: menuHistory
cg@1970
  2536
            labelImage: (ResourceRetriever XPToolbarIconLibrary loadImageFromMethodIcon)
cg@1970
  2537
            keepLinkedMenu: true
cg@1970
  2538
          )
cg@1970
  2539
         (MenuItem
cg@2567
  2540
            activeHelpKey: fileSaveMethodAs
cg@1970
  2541
            enabled: imageIsLoaded
cg@2567
  2542
            label: 'fileSaveMethodAs'
cg@1970
  2543
            itemValue: doSaveMethodAs
cg@1970
  2544
            translateLabel: true
cg@1970
  2545
            isButton: true
cg@1975
  2546
            isVisible: isStandAlone
cg@1970
  2547
            labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageAsMethodAsIcon)
cg@1970
  2548
          )
cg@1970
  2549
         (MenuItem
cg@1970
  2550
            activeHelpKey: fileSaveMethod
cg@1970
  2551
            enabled: imageIsLoaded
cg@1970
  2552
            label: 'saveAsMethod'
cg@1970
  2553
            itemValue: doSaveMethod
cg@1970
  2554
            translateLabel: true
cg@1970
  2555
            isButton: true
cg@1975
  2556
            isVisible: isNotStandAlone
cg@1970
  2557
            labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageAsMethodAsIcon)
cg@1970
  2558
          )
cg@1970
  2559
         (MenuItem
cg@1970
  2560
            label: '-'
cg@1970
  2561
          )
cg@1970
  2562
         (MenuItem
cg@1820
  2563
            activeHelpKey: fileLoadFromFile
cg@1820
  2564
            label: 'loadFromFile'
cg@1820
  2565
            itemValue: doLoadFromFile
cg@1820
  2566
            translateLabel: true
cg@1820
  2567
            isButton: true
cg@1884
  2568
            labelImage: (ResourceRetriever ToolbarIconLibrary loadImageFromFileIcon)
cg@1196
  2569
          )
cg@1820
  2570
         (MenuItem
cg@1820
  2571
            activeHelpKey: fileSaveAs
cg@1820
  2572
            enabled: imageIsLoaded
cg@1820
  2573
            label: 'saveAsFile'
cg@1820
  2574
            itemValue: doSaveImageFileAs
cg@1820
  2575
            translateLabel: true
cg@1820
  2576
            isButton: true
cg@1885
  2577
            labelImage: (ResourceRetriever ToolbarIconLibrary saveImageToFileAsIcon)
cg@1748
  2578
          )
cg@1820
  2579
         (MenuItem
cg@1949
  2580
            label: '-'
cg@1196
  2581
          )
cg@1820
  2582
         (MenuItem
cg@1820
  2583
            activeHelpKey: editUndo
cg@1987
  2584
            enabled: canUndoHolder
cg@1820
  2585
            label: 'Undo'
cg@1820
  2586
            itemValue: doUndo
cg@1820
  2587
            translateLabel: true
cg@1820
  2588
            isButton: true
cg@1883
  2589
            labelImage: (ResourceRetriever ToolbarIconLibrary undoIcon)
cg@1196
  2590
          )
cg@1637
  2591
         )
cg@1637
  2592
        nil
cg@1637
  2593
        nil
cg@1637
  2594
      )
cg@1637
  2595
!
cg@1637
  2596
cg@1637
  2597
modeMenu
cg@1637
  2598
    "This resource specification was automatically generated
cg@1637
  2599
     by the MenuEditor of ST/X."
cg@1637
  2600
cg@1637
  2601
    "Do not manually edit this!! If it is corrupted,
cg@1637
  2602
     the MenuEditor may not be able to read the specification."
cg@1637
  2603
cg@1637
  2604
    "
cg@1637
  2605
     MenuEditor new openOnClass:ImageEditor andSelector:#modeMenu
cg@1637
  2606
     (Menu new fromLiteralArrayEncoding:(ImageEditor modeMenu)) startUp
cg@1637
  2607
    "
cg@1637
  2608
cg@1637
  2609
    <resource: #menu>
cg@1637
  2610
cg@1637
  2611
    ^ 
cg@1637
  2612
     #(#Menu
cg@1637
  2613
        #(
cg@1196
  2614
         #(#MenuItem
cg@1196
  2615
            #activeHelpKey: #drawModePoint
cg@1196
  2616
            #enabled: #imageIsLoaded
cg@1637
  2617
            #label: 'Point'
cg@1637
  2618
            #translateLabel: true
cg@1196
  2619
            #choice: #editMode
cg@1196
  2620
            #choiceValue: #point
cg@1196
  2621
          )
cg@1196
  2622
         #(#MenuItem
cg@1196
  2623
            #activeHelpKey: #drawModeBox
cg@1196
  2624
            #enabled: #imageIsLoaded
cg@1637
  2625
            #label: 'Rect'
cg@1637
  2626
            #translateLabel: true
cg@1196
  2627
            #choice: #editMode
cg@1196
  2628
            #choiceValue: #box
cg@1196
  2629
          )
cg@1196
  2630
         #(#MenuItem
cg@1196
  2631
            #activeHelpKey: #drawModeFilledBox
cg@1196
  2632
            #enabled: #imageIsLoaded
cg@1656
  2633
            #label: 'Filled Rectangle'
cg@1637
  2634
            #translateLabel: true
cg@1196
  2635
            #choice: #editMode
cg@1196
  2636
            #choiceValue: #filledBox
cg@1196
  2637
          )
cg@1196
  2638
         #(#MenuItem
cg@1196
  2639
            #activeHelpKey: #drawModeFill
cg@1196
  2640
            #enabled: #imageIsLoaded
cg@1637
  2641
            #label: 'Fill'
cg@1637
  2642
            #translateLabel: true
cg@1196
  2643
            #choice: #editMode
cg@1196
  2644
            #choiceValue: #fill
cg@1196
  2645
          )
cg@1196
  2646
         #(#MenuItem
cg@1196
  2647
            #activeHelpKey: #drawModeCopy
cg@1196
  2648
            #enabled: #imageIsLoaded
cg@1637
  2649
            #label: 'Copy'
cg@1637
  2650
            #translateLabel: true
cg@1196
  2651
            #choice: #editMode
cg@1196
  2652
            #choiceValue: #copy
cg@1196
  2653
          )
cg@1196
  2654
         #(#MenuItem
cg@1196
  2655
            #activeHelpKey: #drawModePaste
cg@1196
  2656
            #enabled: #imageIsLoaded
cg@1637
  2657
            #label: 'Paste'
cg@1637
  2658
            #translateLabel: true
cg@1196
  2659
            #choice: #editMode
cg@1196
  2660
            #choiceValue: #paste
cg@1196
  2661
          )
cg@1196
  2662
         #(#MenuItem
cg@1196
  2663
            #activeHelpKey: #drawModePasteUnder
cg@1196
  2664
            #enabled: #imageIsLoaded
cg@1637
  2665
            #label: 'Paste Under'
cg@1637
  2666
            #translateLabel: true
cg@1196
  2667
            #choice: #editMode
cg@1196
  2668
            #choiceValue: #pasteUnder
cg@1196
  2669
          )
cg@1411
  2670
         #(#MenuItem
cg@1579
  2671
            #activeHelpKey: #drawModePasteWithMask
cg@1579
  2672
            #enabled: #imageIsLoaded
cg@1656
  2673
            #label: 'Paste with Mask'
cg@1637
  2674
            #translateLabel: true
cg@1579
  2675
            #choice: #editMode
cg@1579
  2676
            #choiceValue: #pasteWithMask
cg@1579
  2677
          )
cg@1579
  2678
         #(#MenuItem
cg@1411
  2679
            #activeHelpKey: #drawModeSpecial
cg@1411
  2680
            #enabled: #imageIsLoaded
cg@1637
  2681
            #label: 'Special'
cg@1637
  2682
            #translateLabel: true
cg@1411
  2683
            #choice: #editMode
cg@1411
  2684
            #choiceValue: #specialOperation
cg@1411
  2685
          )
cg@1196
  2686
         )
cg@1196
  2687
        nil
cg@1196
  2688
        nil
tz@400
  2689
      )
cg@1558
  2690
!
cg@1558
  2691
cg@1558
  2692
previewMenu
cg@1558
  2693
    "This resource specification was automatically generated
cg@1558
  2694
     by the MenuEditor of ST/X."
cg@1558
  2695
cg@1558
  2696
    "Do not manually edit this!! If it is corrupted,
cg@1558
  2697
     the MenuEditor may not be able to read the specification."
cg@1558
  2698
cg@1558
  2699
    "
cg@1558
  2700
     MenuEditor new openOnClass:ImageEditor andSelector:#previewMenu
cg@1558
  2701
     (Menu new fromLiteralArrayEncoding:(ImageEditor previewMenu)) startUp
cg@1558
  2702
    "
cg@1558
  2703
cg@1558
  2704
    <resource: #menu>
cg@1558
  2705
cg@1558
  2706
    ^ 
cg@1764
  2707
     #(Menu
cg@1764
  2708
        (
cg@1764
  2709
         (MenuItem
cg@1764
  2710
            label: 'TileMode'
cg@1764
  2711
            translateLabel: true
cg@1764
  2712
            indication: tileModeHolder
cg@1764
  2713
          )
cg@1764
  2714
         (MenuItem
cg@1764
  2715
            label: '-'
cg@1764
  2716
          )
cg@1764
  2717
         (MenuItem
cg@1764
  2718
            label: 'Background Color'
cg@1764
  2719
            translateLabel: true
cg@1764
  2720
            submenu: 
cg@1764
  2721
           (Menu
cg@1764
  2722
              (
cg@1764
  2723
               (MenuItem
cg@1764
  2724
                  label: 'Gray'
cg@1764
  2725
                  translateLabel: true
cg@1764
  2726
                  choice: previewBackgroundColor
cg@1764
  2727
                  choiceValue: nil
cg@1764
  2728
                )
cg@1764
  2729
               (MenuItem
cg@1764
  2730
                  label: 'Black'
cg@1764
  2731
                  translateLabel: true
cg@1764
  2732
                  choice: previewBackgroundColor
cg@1764
  2733
                  choiceValue: black
cg@1764
  2734
                )
cg@1764
  2735
               (MenuItem
cg@1764
  2736
                  label: 'White'
cg@1764
  2737
                  translateLabel: true
cg@1764
  2738
                  choice: previewBackgroundColor
cg@1764
  2739
                  choiceValue: white
cg@1764
  2740
                )
cg@1774
  2741
               (MenuItem
cg@1774
  2742
                  label: '-'
cg@1774
  2743
                )
cg@1774
  2744
               (MenuItem
cg@1774
  2745
                  label: 'Red'
cg@1774
  2746
                  translateLabel: true
cg@1774
  2747
                  choice: previewBackgroundColor
cg@1774
  2748
                  choiceValue: red
cg@1774
  2749
                )
cg@1774
  2750
               (MenuItem
cg@1774
  2751
                  label: 'Green'
cg@1774
  2752
                  translateLabel: true
cg@1774
  2753
                  choice: previewBackgroundColor
cg@1774
  2754
                  choiceValue: green
cg@1774
  2755
                )
cg@1774
  2756
               (MenuItem
cg@1774
  2757
                  label: 'Blue'
cg@1774
  2758
                  translateLabel: true
cg@1774
  2759
                  choice: previewBackgroundColor
cg@1774
  2760
                  choiceValue: blue
cg@1774
  2761
                )
cg@1764
  2762
               )
cg@1764
  2763
              nil
cg@1764
  2764
              nil
cg@1764
  2765
            )
cg@1558
  2766
          )
cg@1558
  2767
         )
cg@1558
  2768
        nil
cg@1558
  2769
        nil
cg@1558
  2770
      )
cg@1637
  2771
!
cg@1637
  2772
cg@1637
  2773
toolsMenuToolbar
cg@1637
  2774
    "This resource specification was automatically generated
cg@1637
  2775
     by the MenuEditor of ST/X."
cg@1637
  2776
cg@1637
  2777
    "Do not manually edit this!! If it is corrupted,
cg@1637
  2778
     the MenuEditor may not be able to read the specification."
cg@1637
  2779
cg@1637
  2780
    "
cg@1637
  2781
     MenuEditor new openOnClass:ImageEditor andSelector:#toolsMenuToolbar
cg@1637
  2782
     (Menu new fromLiteralArrayEncoding:(ImageEditor toolsMenuToolbar)) startUp
cg@1637
  2783
    "
cg@1637
  2784
cg@1637
  2785
    <resource: #menu>
cg@1637
  2786
cg@1637
  2787
    ^ 
cg@1637
  2788
     #(#Menu
cg@1637
  2789
        #(
cg@1637
  2790
         #(#MenuItem
cg@1637
  2791
            #activeHelpKey: #drawModePoint
cg@1637
  2792
            #enabled: #imageIsLoaded
cg@1637
  2793
            #label: 'Point'
cg@1637
  2794
            #translateLabel: true
cg@1637
  2795
            #isButton: true
cg@1637
  2796
            #labelImage: #(#ResourceRetriever #ImageEditor #pointIcon)
cg@1637
  2797
            #choice: #editMode
cg@1637
  2798
            #choiceValue: #point
cg@1637
  2799
          )
cg@1637
  2800
         #(#MenuItem
cg@2375
  2801
            #activeHelpKey: #drawModeSpray
cg@2375
  2802
            #enabled: #imageIsLoaded
cg@2375
  2803
            #label: 'Spray'
cg@2375
  2804
            #translateLabel: true
cg@2375
  2805
            #isButton: true
cg@2375
  2806
            #labelImage: #(#ResourceRetriever #ImageEditor #sprayIcon)
cg@2375
  2807
            #choice: #editMode
cg@2375
  2808
            #choiceValue: #spray
cg@2375
  2809
          )
cg@2375
  2810
         #(#MenuItem
cg@1637
  2811
            #activeHelpKey: #drawModeBox
cg@1637
  2812
            #enabled: #imageIsLoaded
cg@1637
  2813
            #label: 'Rect'
cg@1637
  2814
            #translateLabel: true
cg@1637
  2815
            #isButton: true
cg@1637
  2816
            #labelImage: #(#ResourceRetriever #ImageEditor #rectIcon)
cg@1637
  2817
            #choice: #editMode
cg@1637
  2818
            #choiceValue: #box
cg@1637
  2819
          )
cg@1637
  2820
         #(#MenuItem
cg@1637
  2821
            #activeHelpKey: #drawModeFilledBox
cg@1637
  2822
            #enabled: #imageIsLoaded
cg@1637
  2823
            #label: 'FillRect'
cg@1637
  2824
            #translateLabel: true
cg@1637
  2825
            #isButton: true
cg@1637
  2826
            #labelImage: #(#ResourceRetriever #ImageEditor #fillRectIcon)
cg@1637
  2827
            #choice: #editMode
cg@1637
  2828
            #choiceValue: #filledBox
cg@1637
  2829
          )
cg@1637
  2830
         #(#MenuItem
cg@2375
  2831
            #activeHelpKey: #drawModeCircle
cg@2375
  2832
            #enabled: #imageIsLoaded
cg@2375
  2833
            #label: 'Circle'
cg@2375
  2834
            #translateLabel: true
cg@2375
  2835
            #isButton: true
cg@2375
  2836
            #labelImage: #(#ResourceRetriever #ImageEditor #circleIcon)
cg@2375
  2837
            #choice: #editMode
cg@2375
  2838
            #choiceValue: #circle
cg@2375
  2839
          )
cg@2375
  2840
         #(#MenuItem
cg@1637
  2841
            #activeHelpKey: #drawModeFill
cg@1637
  2842
            #enabled: #imageIsLoaded
cg@1637
  2843
            #label: 'Fill'
cg@1637
  2844
            #translateLabel: true
cg@1637
  2845
            #isButton: true
cg@1637
  2846
            #labelImage: #(#ResourceRetriever #ImageEditor #fillIcon)
cg@1637
  2847
            #choice: #editMode
cg@1637
  2848
            #choiceValue: #fill
cg@1637
  2849
          )
cg@1637
  2850
         #(#MenuItem
cg@1637
  2851
            #activeHelpKey: #drawModeCopy
cg@1637
  2852
            #enabled: #imageIsLoaded
cg@1637
  2853
            #label: 'Copy'
cg@1637
  2854
            #translateLabel: true