#BUGFIX by cg
authorClaus Gittinger <cg@exept.de>
Fri, 03 Feb 2017 22:08:53 +0100
changeset 3393 1cffdeb837af
parent 3392 ade42ddd74fe
child 3394 c3faced7a673
#BUGFIX by cg class: ImageEditor added: #colorBoxVisibleHolder #cropBoxIsDialog #cropBoxVisibleHolder comment/format in: #selectedColorIndex: changed: #addColorToColormap: #cropDialogSpec #pasteColorIntoColormap #processSelectedColorsWith: #update:with:from: #windowSpec
ImageEditor.st
--- a/ImageEditor.st	Fri Feb 03 13:15:36 2017 +0100
+++ b/ImageEditor.st	Fri Feb 03 22:08:53 2017 +0100
@@ -1607,7 +1607,7 @@
          label: 'Crop Border(s)'
          name: 'Crop Border(s)'
          min: (Point 10 10)
-         bounds: (Rectangle 0 0 290 199)
+         bounds: (Rectangle 0 0 332 224)
        )
        component: 
       (SpecCollection
@@ -1633,7 +1633,7 @@
           (ActionButtonSpec
              label: 'Now'
              name: 'GropLeftNowButton'
-             layout: (LayoutFrame 148 0 21 0 221 0 50 0)
+             layout: (LayoutFrame 148 0 21 0 200 0 50 0)
              activeHelpKey: gropLeft
              translateLabel: true
              resizeForLabel: true
@@ -1663,7 +1663,7 @@
           (ActionButtonSpec
              label: 'Now'
              name: 'GropRightButton'
-             layout: (LayoutFrame 148 0 51 0 221 0 80 0)
+             layout: (LayoutFrame 148 0 51 0 200 0 80 0)
              activeHelpKey: gropRight
              translateLabel: true
              resizeForLabel: true
@@ -1693,7 +1693,7 @@
           (ActionButtonSpec
              label: 'Now'
              name: 'GropTopButton'
-             layout: (LayoutFrame 148 0 81 0 221 0 110 0)
+             layout: (LayoutFrame 148 0 81 0 200 0 110 0)
              activeHelpKey: gropTop
              translateLabel: true
              resizeForLabel: true
@@ -1723,7 +1723,7 @@
           (ActionButtonSpec
              label: 'Now'
              name: 'GropBottomButton'
-             layout: (LayoutFrame 148 0 111 0 221 0 140 0)
+             layout: (LayoutFrame 148 0 111 0 200 0 140 0)
              activeHelpKey: gropBottom
              translateLabel: true
              resizeForLabel: true
@@ -1734,7 +1734,7 @@
            )
           (HorizontalPanelViewSpec
              name: 'HorizontalPanel1'
-             layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
+             layout: (LayoutFrame 0 0.0 -30 1 -16 1.0 0 1)
              horizontalLayout: fitSpace
              verticalLayout: center
              horizontalSpace: 3
@@ -1746,11 +1746,12 @@
                 (ActionButtonSpec
                    label: 'Cancel'
                    name: 'Button1'
+                   visibilityChannel: cropBoxIsDialog
                    translateLabel: true
                    resizeForLabel: true
                    tabable: true
                    model: cancel
-                   extent: (Point 91 22)
+                   extent: (Point 100 28)
                  )
                 (ActionButtonSpec
                    label: 'Apply'
@@ -1759,16 +1760,17 @@
                    resizeForLabel: true
                    tabable: true
                    model: applyAction
-                   extent: (Point 91 22)
+                   extent: (Point 100 28)
                  )
                 (ActionButtonSpec
                    label: 'OK'
                    name: 'Button2'
+                   visibilityChannel: cropBoxIsDialog
                    translateLabel: true
                    resizeForLabel: true
                    tabable: true
                    model: accept
-                   extent: (Point 92 22)
+                   extent: (Point 100 28)
                  )
                 )
               
@@ -2177,7 +2179,7 @@
                         (SpecCollection
                            collection: (
                             (ViewSpec
-                               name: 'View1'
+                               name: 'ColorBox'
                                component: 
                               (SpecCollection
                                  collection: (
@@ -2185,6 +2187,7 @@
                                      name: 'MouseButtonColorToolBar'
                                      layout: (LayoutFrame 0 0.0 0 0 0 1.0 24 0)
                                      level: 0
+                                     visibilityChannel: colorBoxVisibleHolder
                                      menu: menuMouseButtonColors
                                    )
                                   (DataSetSpec
@@ -2192,6 +2195,7 @@
                                      layout: (LayoutFrame 0 0.0 26 0.0 0 1.0 0 1.0)
                                      activeHelpKey: colorMapTable
                                      style: (FontDescription helvetica medium roman 10)
+                                     visibilityChannel: colorBoxVisibleHolder
                                      model: selectedColors
                                      menu: colorMapMenu
                                      hasHorizontalScrollBar: true
@@ -2206,6 +2210,22 @@
                                      verticalSpacing: 1
                                      columnAdaptor: colorColumnAdaptor
                                    )
+                                  (ViewSpec
+                                     name: 'CropBox'
+                                     layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+                                     visibilityChannel: cropBoxVisibleHolder
+                                     component: 
+                                    (SpecCollection
+                                       collection: (
+                                        (UISubSpecification
+                                           name: 'SubSpecification1'
+                                           layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+                                           minorKey: cropDialogSpec
+                                         )
+                                        )
+                                      
+                                     )
+                                   )
                                   )
                                 
                                )
@@ -4017,12 +4037,40 @@
     ^ self imageIsLoadedAndNotReadonlyHolder
 !
 
+colorBoxVisibleHolder
+    |holder|
+
+    (holder := builder bindingAt:#colorBoxVisibleHolder) isNil ifTrue:[
+        builder aspectAt:#colorBoxVisibleHolder put:(holder := true asValue).
+    ].
+    ^ holder
+
+    "Created: / 03-02-2017 / 11:20:21 / cg"
+!
+
 colorColumnAdaptor
     ^ self
 
     "Created: / 26.7.1998 / 12:17:03 / cg"
 !
 
+cropBoxIsDialog
+    ^ true
+
+    "Created: / 03-02-2017 / 11:23:50 / cg"
+!
+
+cropBoxVisibleHolder
+    |holder|
+
+    (holder := builder bindingAt:#cropBoxVisibleHolder) isNil ifTrue:[
+        builder aspectAt:#cropBoxVisibleHolder put:(holder := false asValue).
+    ].
+    ^ holder
+
+    "Created: / 03-02-2017 / 11:20:13 / cg"
+!
+
 hasClassAndSelectorDefinedHolder
     ^ [
         |cls|
@@ -4391,7 +4439,7 @@
 !
 
 update:something with:aParameter from:changedObject
-    |clrIndex img imagePreView clr changedColor|
+    |clrIndex img imagePreView clr changedColor cMap|
 
     img := self image.
     imagePreView := self imagePreView.
@@ -4423,13 +4471,13 @@
                 clrIndex := clrIndex - 1.
             ].
             changedColor := changedObject at:aParameter.
-            img colorMap notNil ifTrue:[
+            drawingColormap notNil ifTrue:[
+                drawingColormap at:clrIndex put:changedColor.
+            ].
+            cMap := img colorMap.
+            (cMap notNil and:[cMap isMappedPalette not and:[cMap isFixedPalette not]]) ifTrue:[
                 img colorMap at:clrIndex put:changedColor.
                 self colorMapChanged.
-            ] ifFalse:[
-                drawingColormap notNil ifTrue:[
-                    drawingColormap at:clrIndex put:changedColor.
-                ].
             ].
             ^ self
         ].
@@ -4493,7 +4541,7 @@
 
     super update:something with:aParameter from:changedObject
 
-    "Modified: / 21-10-2010 / 14:34:31 / cg"
+    "Modified: / 03-02-2017 / 21:52:33 / cg"
 !
 
 updateAfterImageChange
@@ -5150,6 +5198,7 @@
 
     selectedColorIndex := anIndex.
     anIndex isNil ifTrue:[^ self].
+
     clr := self listOfColors at:anIndex ifAbsent:nil.
     clr isNil ifTrue:[^ self].
 
@@ -5163,6 +5212,8 @@
     ].
     imageEditView selectedColorIndex:pixel.
     imageEditView selectedColor:clr.
+
+    "Modified (format): / 03-02-2017 / 21:49:32 / cg"
 ! !
 
 !ImageEditor methodsFor:'startup & release'!
@@ -5251,7 +5302,7 @@
 
     depth := img depth.
     cMap := img colorMap.
-    cMap isNil ifTrue:[
+    (cMap isNil or:[cMap isMappedPalette or:[cMap isFixedPalette]]) ifTrue:[
         drawingColormap isNil ifTrue:[
             self information:(resources stringWithCRs:'Image has no colormap.\The shown colorMap is for drawing only.').
             drawingColormap := OrderedCollection new.
@@ -5312,8 +5363,8 @@
         self updateLabelsAndHistory.
     ]
 
-    "Created: / 12.3.1999 / 00:20:28 / cg"
-    "Modified: / 16.3.1999 / 21:57:26 / cg"
+    "Created: / 12-03-1999 / 00:20:28 / cg"
+    "Modified: / 03-02-2017 / 21:42:18 / cg"
 !
 
 changeHLS
@@ -6312,7 +6363,7 @@
 !
 
 pasteColorIntoColormap
-    |copyBufferColor|
+    |copyBufferColor cmap|
 
     copyBufferColor := imageEditView getClipboardObject.
     copyBufferColor isColor ifFalse:[
@@ -6322,9 +6373,21 @@
         ^ self
     ].
 
+    cmap := self image colorMap.
+    (cmap isNil or:[cmap isMappedPalette or:[cmap isFixedPalette]]) ifTrue:[
+        drawingColormap isNil ifTrue:[
+            drawingColormap := #()
+        ].
+        drawingColormap := drawingColormap copyWith:copyBufferColor.
+        self selectedColors value:drawingColormap size.
+        ^ self.
+    ].
+    
     self processSelectedColorWith:[:clr |
         copyBufferColor
     ]
+
+    "Modified: / 03-02-2017 / 21:45:45 / cg"
 !
 
 pickAndAddColorToColormap
@@ -6358,17 +6421,17 @@
     selectedColorIndices isEmptyOrNil ifTrue:[^ self].
 
     img := self image.
-    cMap := img colorMap.
-    cMap isNil ifTrue:[
-        self warn:(resources stringWithCRs:'Image has no colormap.\Please change the colorMap mode first.').
-        ^ self
-    ].
     self hasMask ifTrue:[
         maskOffset := 1.
     ] ifFalse:[
         maskOffset := 0.
     ].
-    oldColors := selectedColorIndices collect:[:idx | cMap at:idx-maskOffset].
+    cMap := img colorMap.
+    (cMap isNil or:[cMap isMappedPalette or:[cMap isFixedPalette]]) ifTrue:[
+        oldColors := drawingColormap
+    ] ifFalse:[    
+        oldColors := selectedColorIndices collect:[:idx | cMap at:idx-maskOffset].
+    ].
     imageEditView makeUndo.
 
     modifiedColormap := cMap asNewArray.
@@ -6384,7 +6447,11 @@
                     depth:img depth
                     fromArray:img bits.
 
-    newImage colorMap:modifiedColormap.  
+    (cMap isNil or:[cMap isMappedPalette or:[cMap isFixedPalette]]) ifTrue:[
+        "/ only a dummy...
+    ] ifFalse:[    
+        newImage colorMap:modifiedColormap.  
+    ].
     newImage fileName:img fileName.
     newImage mask:(img mask copy).
 
@@ -6392,6 +6459,8 @@
         self fetchImageData.
     ].
     self selectedColors value:selectedColorIndices.
+
+    "Modified: / 03-02-2017 / 22:05:33 / cg"
 !
 
 reduceNumberOfColors