checkin from browser
authorClaus Gittinger <cg@exept.de>
Mon, 10 May 1999 13:07:40 +0200
changeset 1124 2392df0934bc
parent 1123 7979a71001d0
child 1125 7ca4dfa8c50a
checkin from browser
ImageEditor.st
--- a/ImageEditor.st	Sun May 09 18:19:59 1999 +0200
+++ b/ImageEditor.st	Mon May 10 13:07:40 1999 +0200
@@ -861,379 +861,376 @@
 
     <resource: #menu>
 
-    ^
-     
-       #(#Menu
-          
-           #(
-             #(#MenuItem
-                #label: 'About'
-                #translateLabel: true
-                #activeHelpKey: #about
-                #labelImage: #(#ResourceRetriever nil #menuIcon)
-                #submenuChannel: #menuAbout
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'About'
+            #translateLabel: true
+            #activeHelpKey: #about
+            #labelImage: #(#ResourceRetriever nil #menuIcon)
+            #submenuChannel: #menuAbout
+          )
+         #(#MenuItem
+            #label: 'File'
+            #translateLabel: true
+            #activeHelpKey: #file
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'New...'
+                  #translateLabel: true
+                  #value: #doNewImage
+                  #activeHelpKey: #fileNewImage
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Load...'
+                  #translateLabel: true
+                  #value: #doLoadFromClass
+                  #activeHelpKey: #fileLoadFromClass
+                )
+               #(#MenuItem
+                  #label: 'Load From File...'
+                  #translateLabel: true
+                  #value: #doLoadFromFile
+                  #activeHelpKey: #fileLoadFromFile
+                )
+               #(#MenuItem
+                  #label: 'Grab From Screen'
+                  #translateLabel: true
+                  #value: #grabScreenImage
+                  #activeHelpKey: #fileGrabImage
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Save'
+                  #translateLabel: true
+                  #value: #doSaveMethod
+                  #activeHelpKey: #fileSaveMethod
+                  #enabled: #imageIsLoadedAndClassDefined
+                )
+               #(#MenuItem
+                  #label: 'Save As...'
+                  #translateLabel: true
+                  #value: #doSaveMethodAs
+                  #activeHelpKey: #fileSaveMethodAs
+                  #enabled: #imageIsLoaded
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Save To File...'
+                  #translateLabel: true
+                  #value: #doSaveImageFileAs
+                  #activeHelpKey: #fileSaveAs
+                  #enabled: #imageIsLoaded
+                )
+               #(#MenuItem
+                  #label: 'Save Mask To File...'
+                  #translateLabel: true
+                  #value: #doSaveImageMaskFileAs
+                  #activeHelpKey: #fileSaveMaskAs
+                  #enabled: #imageIsLoaded
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Print'
+                  #translateLabel: true
+                  #value: #doPrint
+                  #activeHelpKey: #filePrint
+                  #enabled: #imageIsLoaded
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Browse Class'
+                  #translateLabel: true
+                  #value: #doBrowseClass
+                  #activeHelpKey: #fileBrowseClass
+                  #enabled: #hasClassDefined
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Exit'
+                  #translateLabel: true
+                  #value: #closeRequest
+                  #activeHelpKey: #fileExit
+                )
+               )
+              nil
+              nil
             )
-             #(#MenuItem
-                #label: 'File'
-                #translateLabel: true
-                #activeHelpKey: #file
-                #submenu: 
+          )
+         #(#MenuItem
+            #label: 'Edit'
+            #translateLabel: true
+            #activeHelpKey: #edit
+            #enabled: #imageIsLoaded
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'Undo'
+                  #translateLabel: true
+                  #value: #doUndo
+                  #activeHelpKey: #editUndo
+                  #enabled: #valueOfCanUndo
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Flip - Vertical'
+                  #translateLabel: true
+                  #value: #doFlipVertical
+                  #activeHelpKey: #editFlipVertical
+                )
+               #(#MenuItem
+                  #label: 'Flip - Horizontal'
+                  #translateLabel: true
+                  #value: #doFlipHorizontal
+                  #activeHelpKey: #editFlipHorizontal
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Resize...'
+                  #translateLabel: true
+                  #value: #doResizeImage
+                  #activeHelpKey: #editResize
+                )
+               #(#MenuItem
+                  #label: 'Magnify...'
+                  #translateLabel: true
+                  #value: #doMagnifyImage
+                  #activeHelpKey: #editMagnifyImage
+                )
+               #(#MenuItem
+                  #label: 'Rotate...'
+                  #translateLabel: true
+                  #value: #doRotateImage
+                  #activeHelpKey: #editRotate
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Crop'
+                  #translateLabel: true
+                  #submenu: 
                  #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #label: 'New...'
-                          #translateLabel: true
-                          #value: #doNewImage
-                          #activeHelpKey: #fileNewImage
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Load...'
-                          #translateLabel: true
-                          #value: #doLoadFromClass
-                          #activeHelpKey: #fileLoadFromClass
-                      )
-                       #(#MenuItem
-                          #label: 'Load From File...'
-                          #translateLabel: true
-                          #value: #doLoadFromFile
-                          #activeHelpKey: #fileLoadFromFile
-                      )
-                       #(#MenuItem
-                          #label: 'Grab From Screen'
-                          #translateLabel: true
-                          #value: #grabScreenImage
-                          #activeHelpKey: #fileGrabImage
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Save'
-                          #translateLabel: true
-                          #value: #doSaveMethod
-                          #activeHelpKey: #fileSaveMethod
-                          #enabled: #imageIsLoadedAndClassDefined
-                      )
-                       #(#MenuItem
-                          #label: 'Save As...'
-                          #translateLabel: true
-                          #value: #doSaveMethodAs
-                          #activeHelpKey: #fileSaveMethodAs
-                          #enabled: #imageIsLoaded
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Save To File...'
-                          #translateLabel: true
-                          #value: #doSaveImageFileAs
-                          #activeHelpKey: #fileSaveAs
-                          #enabled: #imageIsLoaded
-                      )
-                       #(#MenuItem
-                          #label: 'Save Mask To File...'
-                          #translateLabel: true
-                          #value: #doSaveImageMaskFileAs
-                          #activeHelpKey: #fileSaveMaskAs
-                          #enabled: #imageIsLoaded
-                      )
-                       #(#MenuItem
-                          #label: '-'
+                    #(
+                     #(#MenuItem
+                        #label: 'All'
+                        #translateLabel: true
+                        #value: #doCropAll
+                        #activeHelpKey: #cropAll
                       )
-                       #(#MenuItem
-                          #label: 'Print'
-                          #translateLabel: true
-                          #value: #doPrint
-                          #activeHelpKey: #filePrint
-                          #enabled: #imageIsLoaded
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Browse Class'
-                          #translateLabel: true
-                          #value: #doBrowseClass
-                          #activeHelpKey: #fileBrowseClass
-                          #enabled: #hasClassDefined
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Exit'
-                          #translateLabel: true
-                          #value: #closeRequest
-                          #activeHelpKey: #fileExit
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'Edit'
-                #translateLabel: true
-                #activeHelpKey: #edit
-                #enabled: #imageIsLoaded
-                #submenu: 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #label: 'Undo'
-                          #translateLabel: true
-                          #value: #doUndo
-                          #activeHelpKey: #editUndo
-                          #enabled: #valueOfCanUndo
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Flip - Vertical'
-                          #translateLabel: true
-                          #value: #doFlipVertical
-                          #activeHelpKey: #editFlipVertical
-                      )
-                       #(#MenuItem
-                          #label: 'Flip - Horizontal'
-                          #translateLabel: true
-                          #value: #doFlipHorizontal
-                          #activeHelpKey: #editFlipHorizontal
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Resize...'
-                          #translateLabel: true
-                          #value: #doResizeImage
-                          #activeHelpKey: #editResize
-                      )
-                       #(#MenuItem
-                          #label: 'Magnify...'
-                          #translateLabel: true
-                          #value: #doMagnifyImage
-                          #activeHelpKey: #editMagnifyImage
-                      )
-                       #(#MenuItem
-                          #label: 'Rotate...'
-                          #translateLabel: true
-                          #value: #doRotateImage
-                          #activeHelpKey: #editRotate
-                      )
-                       #(#MenuItem
-                          #label: '-'
+                     #(#MenuItem
+                        #label: '-'
                       )
-                       #(#MenuItem
-                          #label: 'Crop'
-                          #translateLabel: true
-                          #submenu: 
-                           #(#Menu
-                              
-                               #(
-                                 #(#MenuItem
-                                    #label: 'All'
-                                    #translateLabel: true
-                                    #value: #doCropAll
-                                    #activeHelpKey: #cropAll
-                                )
-                                 #(#MenuItem
-                                    #label: '-'
-                                )
-                                 #(#MenuItem
-                                    #label: 'Left'
-                                    #translateLabel: true
-                                    #value: #doCropLeft
-                                    #activeHelpKey: #cropLeft
-                                )
-                                 #(#MenuItem
-                                    #label: 'Right'
-                                    #translateLabel: true
-                                    #value: #doCropRight
-                                    #activeHelpKey: #cropRight
-                                )
-                                 #(#MenuItem
-                                    #label: 'Top'
-                                    #translateLabel: true
-                                    #value: #doCropTop
-                                    #activeHelpKey: #cropTop
-                                )
-                                 #(#MenuItem
-                                    #label: 'Bottom'
-                                    #translateLabel: true
-                                    #value: #doCropBottom
-                                    #activeHelpKey: #cropBottom
-                                )
-                                 #(#MenuItem
-                                    #label: '-'
-                                )
-                                 #(#MenuItem
-                                    #label: 'Manual...'
-                                    #translateLabel: true
-                                    #value: #doCropManual
-                                    #activeHelpKey: #cropManual
-                                )
-                              ) nil
-                              nil
-                          )
+                     #(#MenuItem
+                        #label: 'Left'
+                        #translateLabel: true
+                        #value: #doCropLeft
+                        #activeHelpKey: #cropLeft
+                      )
+                     #(#MenuItem
+                        #label: 'Right'
+                        #translateLabel: true
+                        #value: #doCropRight
+                        #activeHelpKey: #cropRight
                       )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'ColorMap'
-                #translateLabel: true
-                #activeHelpKey: #colorMap
-                #enabled: #imageIsLoaded
-                #submenu: 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #label: '8-Plane'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap8
-                          #argument: '8-plane'
-                          #choice: #colorMapMode
-                          #choiceValue: '8-plane'
+                     #(#MenuItem
+                        #label: 'Top'
+                        #translateLabel: true
+                        #value: #doCropTop
+                        #activeHelpKey: #cropTop
                       )
-                       #(#MenuItem
-                          #label: '4-Plane'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap4
-                          #argument: '4-plane'
-                          #choice: #colorMapMode
-                          #choiceValue: '4-plane'
+                     #(#MenuItem
+                        #label: 'Bottom'
+                        #translateLabel: true
+                        #value: #doCropBottom
+                        #activeHelpKey: #cropBottom
                       )
-                       #(#MenuItem
-                          #label: '2-Plane'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap2
-                          #argument: '2-plane'
-                          #choice: #colorMapMode
-                          #choiceValue: '2-plane'
+                     #(#MenuItem
+                        #label: '-'
                       )
-                       #(#MenuItem
-                          #label: '1-Plane'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap1
-                          #argument: '1-plane'
-                          #choice: #colorMapMode
-                          #choiceValue: '1-plane'
+                     #(#MenuItem
+                        #label: 'Manual...'
+                        #translateLabel: true
+                        #value: #doCropManual
+                        #activeHelpKey: #cropManual
                       )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: '8-Plane + Mask'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap8M
-                          #argument: '8-plane + mask'
-                          #choice: #colorMapMode
-                          #choiceValue: '8-plane + mask'
-                      )
-                       #(#MenuItem
-                          #label: '4-Plane + Mask'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap4M
-                          #argument: '4-plane + mask'
-                          #choice: #colorMapMode
-                          #choiceValue: '4-plane + mask'
-                      )
-                       #(#MenuItem
-                          #label: '2-Plane + Mask'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap2M
-                          #argument: '2-plane + mask'
-                          #choice: #colorMapMode
-                          #choiceValue: '2-plane + mask'
-                      )
-                       #(#MenuItem
-                          #label: '1-Plane + Mask'
-                          #translateLabel: true
-                          #value: #colorMapMode:
-                          #activeHelpKey: #colorMap1M
-                          #argument: '1-plane + mask'
-                          #choice: #colorMapMode
-                          #choiceValue: '1-plane + mask'
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Compress colormap'
-                          #translateLabel: true
-                          #value: #compressColorMap
-                          #activeHelpKey: #compressColormap
-                          #enabled: #hasColormap
-                      )
-                       #(#MenuItem
-                          #label: 'Sort colormap'
-                          #translateLabel: true
-                          #value: #sortColorMap
-                          #enabled: #hasColormap
-                      )
-                    ) nil
+                     )
+                    nil
                     nil
+                  )
                 )
+               )
+              nil
+              nil
             )
-             #(#MenuItem
-                #label: 'Settings'
-                #translateLabel: true
-                #submenu: 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #label: 'Grid Magnification...'
-                          #translateLabel: true
-                          #value: #doChangeGridMagnification
-                          #activeHelpKey: #settingsGridMagnification
-                      )
-"/                       #(#MenuItem
-"/                          #label: '-'
-"/                      )
-"/                       #(#MenuItem
-"/                          #label: 'Fonts'
-"/                          #translateLabel: true
-"/                          #submenuChannel: #menuFont
-"/                      )
-                    ) nil
-                    nil
+          )
+         #(#MenuItem
+            #label: 'ColorMap'
+            #translateLabel: true
+            #activeHelpKey: #colorMap
+            #enabled: #imageIsLoaded
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: '8-Plane'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap8
+                  #argument: '8-plane'
+                  #choice: #colorMapMode
+                  #choiceValue: '8-plane'
+                )
+               #(#MenuItem
+                  #label: '4-Plane'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap4
+                  #argument: '4-plane'
+                  #choice: #colorMapMode
+                  #choiceValue: '4-plane'
+                )
+               #(#MenuItem
+                  #label: '2-Plane'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap2
+                  #argument: '2-plane'
+                  #choice: #colorMapMode
+                  #choiceValue: '2-plane'
+                )
+               #(#MenuItem
+                  #label: '1-Plane'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap1
+                  #argument: '1-plane'
+                  #choice: #colorMapMode
+                  #choiceValue: '1-plane'
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: '8-Plane + Mask'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap8M
+                  #argument: '8-plane + mask'
+                  #choice: #colorMapMode
+                  #choiceValue: '8-plane + mask'
+                )
+               #(#MenuItem
+                  #label: '4-Plane + Mask'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap4M
+                  #argument: '4-plane + mask'
+                  #choice: #colorMapMode
+                  #choiceValue: '4-plane + mask'
                 )
-            )
-             #(#MenuItem
-                #label: 'History'
-                #translateLabel: true
-                #activeHelpKey: #history
-                #submenuChannel: #menuHistory
+               #(#MenuItem
+                  #label: '2-Plane + Mask'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap2M
+                  #argument: '2-plane + mask'
+                  #choice: #colorMapMode
+                  #choiceValue: '2-plane + mask'
+                )
+               #(#MenuItem
+                  #label: '1-Plane + Mask'
+                  #translateLabel: true
+                  #value: #colorMapMode:
+                  #activeHelpKey: #colorMap1M
+                  #argument: '1-plane + mask'
+                  #choice: #colorMapMode
+                  #choiceValue: '1-plane + mask'
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Compress colormap'
+                  #translateLabel: true
+                  #value: #compressColorMap
+                  #activeHelpKey: #compressColormap
+                  #enabled: #hasColormap
+                )
+               #(#MenuItem
+                  #label: 'Sort colormap'
+                  #translateLabel: true
+                  #value: #sortColorMap
+                  #enabled: #hasColormap
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'Reduce number of colors...'
+                  #translateLabel: true
+                  #value: #reduceNumberOfColors
+                )
+               )
+              nil
+              nil
             )
-             #(#MenuItem
-                #label: 'Help'
-                #translateLabel: true
-                #startGroup: #right
-                #activeHelpKey: #help
-                #submenuChannel: #menuHelp
+          )
+         #(#MenuItem
+            #label: 'Settings'
+            #translateLabel: true
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'Grid Magnification...'
+                  #translateLabel: true
+                  #value: #doChangeGridMagnification
+                  #activeHelpKey: #settingsGridMagnification
+                )
+               )
+              nil
+              nil
             )
-          ) nil
-          nil
+          )
+         #(#MenuItem
+            #label: 'History'
+            #translateLabel: true
+            #activeHelpKey: #history
+            #submenuChannel: #menuHistory
+          )
+         #(#MenuItem
+            #label: 'Help'
+            #translateLabel: true
+            #startGroup: #right
+            #activeHelpKey: #help
+            #submenuChannel: #menuHelp
+          )
+         )
+        nil
+        nil
       )
-
-    "Modified: / 30.9.1998 / 23:53:12 / cg"
 !
 
 menuMouseButtonColors
@@ -1590,6 +1587,12 @@
             ^ self
         ].
     ].
+
+    changedObject == imageEditView undoImages ifTrue:[
+        self valueOfCanUndo value:(changedObject notEmpty).
+        ^ self.
+    ].
+
     super update:something with:aParameter from:changedObject
 
     "Modified: / 18.8.1998 / 17:18:42 / cg"
@@ -1946,6 +1949,7 @@
      evaluate the postOpenAction"
 
     imageEditView masterApplication: self.
+    imageEditView undoImages addDependent:self.
     imageEditView imageInfoHolder:(self imageInfoHolder).
     imageEditView activityInfoHolder:(self activityInfoHolder).
 
@@ -2108,6 +2112,7 @@
                         oldImage depth == 8 ifTrue:[
                             tmpBits := oldImage bits
                         ] ifFalse:[
+                            colorMapMode value:prevMode.
                             self warn:('Too many colors in image ( ', oldImage usedColors size printString , ').').
                             ^ self
                         ]
@@ -2331,6 +2336,33 @@
     "Modified: / 15.9.1998 / 17:53:32 / cg"
 !
 
+reduceNumberOfColors
+    |s n anyChange img|
+
+    s := Dialog request:'Number of color bits to strip (1-7) ?'.
+    s isNil ifTrue:[^ self].
+    n := Integer readFrom:s onError:0.
+    (n between:1 and:7) ifFalse:[
+        Dialog warn:'Image unchanged'.
+        ^ self
+    ].
+
+    imageEditView makeUndo.
+    self withExecuteCursorDo:[
+        anyChange := imageEditView reduceColorResolutionBy:n.
+        anyChange ifFalse:[
+            Dialog warn:'Image unchanged'.
+        ] ifTrue:[
+            img := imageEditView image.
+            imageEditView image:img.
+            self listOfColors contents:(img colorMap).
+            self findColorMapMode.
+            self updateLabelsAndHistory.
+            Dialog information:(img usedColors size printString , ' colors used.')
+        ]
+    ].
+!
+
 sortColorMap
     "calculates a new color map for the image, sorting colors"