rotation; text input
authorClaus Gittinger <cg@exept.de>
Mon, 19 Nov 2007 15:53:43 +0100
changeset 2196 7e4e066ca7f5
parent 2195 bb6de5f8fd03
child 2197 873c7b960233
rotation; text input
ImageEditor.st
--- a/ImageEditor.st	Mon Nov 12 17:23:41 2007 +0100
+++ b/ImageEditor.st	Mon Nov 19 15:53:43 2007 +0100
@@ -1655,306 +1655,14 @@
          (MenuItem
             label: '&File'
             translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  activeHelpKey: fileNewImageEditor
-                  label: 'New ImageEditor'
-                  itemValue: doNewImageEditor
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileNewImage
-                  label: 'New...'
-                  itemValue: doNewImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileNewImage
-                  label: 'New from ClipBoard'
-                  itemValue: doNewImageFromClipboard
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  activeHelpKey: fileLoadFromClass
-                  label: 'Load...'
-                  itemValue: doLoadFromClass
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileLoadFromFile
-                  label: 'Load from File...'
-                  itemValue: doLoadFromFile
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileGrabImage
-                  label: 'Grab from Screen...'
-                  itemValue: grabScreenImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  enabled: imageHasNextImage
-                  label: 'Next in Sequence'
-                  itemValue: nextImageInSequence
-                  translateLabel: true
-                  isVisible: isStandAlone
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  activeHelpKey: fileSaveMethod
-                  enabled: imageIsLoadedAndClassDefined
-                  label: 'Save'
-                  itemValue: doSaveMethod
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileSaveMethodAs
-                  enabled: imageIsLoaded
-                  label: 'Save As...'
-                  itemValue: doSaveMethodAs
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileSaveAs
-                  enabled: imageIsLoaded
-                  label: 'Save to File...'
-                  itemValue: doSaveImageFileAs
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileSaveMaskAs
-                  enabled: imageIsLoaded
-                  label: 'Save Mask to File...'
-                  itemValue: doSaveImageMaskFileAs
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileSaveButtonImageAs
-                  enabled: imageIsLoaded
-                  label: 'Save as Button to File...'
-                  itemValue: doSaveButtonImageToFileAs
-                  translateLabel: true
-                )
-               (MenuItem
-                  enabled: imageIsLoaded
-                  label: 'Copy to Clipboard'
-                  itemValue: doCopyImageToClipboard
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  activeHelpKey: fileShowStoreString
-                  enabled: imageIsLoaded
-                  label: 'Show storeString'
-                  itemValue: doShowStoreString
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: fileEditMask
-                  enabled: imageIsLoaded
-                  label: 'Edit Mask'
-                  itemValue: doEditMask
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  activeHelpKey: filePrint
-                  enabled: imageIsLoaded
-                  label: 'Print'
-                  itemValue: doPrint
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                  isVisible: isStandAlone
-                )
-               (MenuItem
-                  activeHelpKey: fileBrowseClass
-                  enabled: hasClassDefined
-                  label: 'Browse Class'
-                  itemValue: doBrowseClass
-                  translateLabel: true
-                  isVisible: isStandAlone
-                )
-               (MenuItem
-                  label: 'Inspect Image'
-                  itemValue: doInspectImage
-                  translateLabel: true
-                  isVisible: isStandAlone
-                )
-               (MenuItem
-                  label: '-'
-                  isVisible: isStandAlone
-                )
-               (MenuItem
-                  activeHelpKey: fileExit
-                  label: 'Exit'
-                  itemValue: closeRequest
-                  translateLabel: true
-                  isVisible: isStandAlone
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuFile
+            keepLinkedMenu: true
           )
          (MenuItem
-            enabled: imageIsLoaded
             label: 'Edit'
             translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  activeHelpKey: editUndo
-                  enabled: canUndoHolder
-                  label: 'Undo'
-                  itemValue: doUndo
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  activeHelpKey: editFlipVertical
-                  label: 'Flip - Vertical'
-                  itemValue: doFlipVertical
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: editFlipHorizontal
-                  label: 'Flip - Horizontal'
-                  itemValue: doFlipHorizontal
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  activeHelpKey: editResize
-                  label: 'Resize...'
-                  itemValue: doResizeImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: editMagnifyImage
-                  label: 'Magnify...'
-                  itemValue: doMagnifyImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: editMagnifyImage
-                  label: 'Magnify By...'
-                  itemValue: doMagnifyImageBy
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: editRotate
-                  label: 'Rotate...'
-                  itemValue: doRotateImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Invert'
-                  itemValue: doNegativeImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Brighten'
-                  itemValue: doBrightenImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Darken'
-                  itemValue: doDarkenImage
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Crop'
-                  translateLabel: true
-                  submenu: 
-                 (Menu
-                    (
-                     (MenuItem
-                        activeHelpKey: cropManual
-                        label: 'Manual...'
-                        itemValue: doCropManual
-                        translateLabel: true
-                      )
-                     (MenuItem
-                        label: '-'
-                      )
-                     (MenuItem
-                        activeHelpKey: cropAll
-                        label: 'All'
-                        itemValue: doCropAll
-                        translateLabel: true
-                      )
-                     (MenuItem
-                        label: '-'
-                      )
-                     (MenuItem
-                        activeHelpKey: cropLeft
-                        label: 'Left'
-                        itemValue: doCropLeft
-                        translateLabel: true
-                      )
-                     (MenuItem
-                        activeHelpKey: cropRight
-                        label: 'Right'
-                        itemValue: doCropRight
-                        translateLabel: true
-                      )
-                     (MenuItem
-                        activeHelpKey: cropTop
-                        label: 'Top'
-                        itemValue: doCropTop
-                        translateLabel: true
-                      )
-                     (MenuItem
-                        activeHelpKey: cropBottom
-                        label: 'Bottom'
-                        itemValue: doCropBottom
-                        translateLabel: true
-                      )
-                     )
-                    nil
-                    nil
-                  )
-                )
-               (MenuItem
-                  activeHelpKey: uncropManual
-                  label: 'Uncrop (Add Border)...'
-                  itemValue: doUnCropManual
-                  translateLabel: true
-                )
-               (MenuItem
-                  activeHelpKey: shiftManual
-                  label: 'Shift...'
-                  itemValue: doShiftManual
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuEdit
+            keepLinkedMenu: true
           )
          (MenuItem
             enabled: imageIsLoaded
@@ -2293,6 +2001,351 @@
       )
 !
 
+menuEdit
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:ImageEditor andSelector:#menuEdit
+     (Menu new fromLiteralArrayEncoding:(ImageEditor menuEdit)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            activeHelpKey: editUndo
+            enabled: canUndoHolder
+            label: 'Undo'
+            itemValue: doUndo
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: editResize
+            label: 'Resize...'
+            itemValue: doResizeImage
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: editMagnifyImage
+            label: 'Magnify...'
+            itemValue: doMagnifyImage
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: editMagnifyImage
+            label: 'Magnify By...'
+            itemValue: doMagnifyImageBy
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: editRotate
+            label: 'Rotate...'
+            itemValue: doRotateImage
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Flip'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: editFlipVertical
+                  label: 'Flip - Vertical'
+                  itemValue: doFlipVertical
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: editFlipHorizontal
+                  label: 'Flip - Horizontal'
+                  itemValue: doFlipHorizontal
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Invert'
+            itemValue: doNegativeImage
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Brighten'
+            itemValue: doBrightenImage
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Darken'
+            itemValue: doDarkenImage
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Crop'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: cropManual
+                  label: 'Manual...'
+                  itemValue: doCropManual
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  activeHelpKey: cropAll
+                  label: 'All'
+                  itemValue: doCropAll
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  activeHelpKey: cropLeft
+                  label: 'Left'
+                  itemValue: doCropLeft
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: cropRight
+                  label: 'Right'
+                  itemValue: doCropRight
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: cropTop
+                  label: 'Top'
+                  itemValue: doCropTop
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: cropBottom
+                  label: 'Bottom'
+                  itemValue: doCropBottom
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: uncropManual
+            label: 'Uncrop (Add Border)...'
+            itemValue: doUnCropManual
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: shiftManual
+            label: 'Shift...'
+            itemValue: doShiftManual
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Text...'
+            itemValue: doInsertTextFromUser
+            translateLabel: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 11-11-2007 / 12:19:32 / cg"
+!
+
+menuFile
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:ImageEditor andSelector:#menuFile
+     (Menu new fromLiteralArrayEncoding:(ImageEditor menuFile)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            activeHelpKey: fileNewImageEditor
+            label: 'New ImageEditor'
+            itemValue: doNewImageEditor
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileNewImage
+            label: 'New...'
+            itemValue: doNewImage
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileNewImage
+            label: 'New from ClipBoard'
+            itemValue: doNewImageFromClipboard
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: fileLoadFromClass
+            label: 'Load...'
+            itemValue: doLoadFromClass
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileLoadFromFile
+            label: 'Load from File...'
+            itemValue: doLoadFromFile
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileGrabImage
+            label: 'Grab from Screen...'
+            itemValue: grabScreenImage
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: imageHasNextImage
+            label: 'Next in Sequence'
+            itemValue: nextImageInSequence
+            translateLabel: true
+            isVisible: isStandAlone
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: fileSaveMethod
+            enabled: imageIsLoadedAndClassDefined
+            label: 'Save'
+            itemValue: doSaveMethod
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileSaveMethodAs
+            enabled: imageIsLoaded
+            label: 'Save As...'
+            itemValue: doSaveMethodAs
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileSaveAs
+            enabled: imageIsLoaded
+            label: 'Save to File...'
+            itemValue: doSaveImageFileAs
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileSaveMaskAs
+            enabled: imageIsLoaded
+            label: 'Save Mask to File...'
+            itemValue: doSaveImageMaskFileAs
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileSaveButtonImageAs
+            enabled: imageIsLoaded
+            label: 'Save as Button to File...'
+            itemValue: doSaveButtonImageToFileAs
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: imageIsLoaded
+            label: 'Copy to Clipboard'
+            itemValue: doCopyImageToClipboard
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: fileShowStoreString
+            enabled: imageIsLoaded
+            label: 'Show storeString'
+            itemValue: doShowStoreString
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: fileEditMask
+            enabled: imageIsLoaded
+            label: 'Edit Mask'
+            itemValue: doEditMask
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: filePrint
+            enabled: imageIsLoaded
+            label: 'Print'
+            itemValue: doPrint
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+            isVisible: isStandAlone
+          )
+         (MenuItem
+            activeHelpKey: fileBrowseClass
+            enabled: hasClassDefined
+            label: 'Browse Class'
+            itemValue: doBrowseClass
+            translateLabel: true
+            isVisible: isStandAlone
+          )
+         (MenuItem
+            label: 'Inspect Image'
+            itemValue: doInspectImage
+            translateLabel: true
+            isVisible: isStandAlone
+          )
+         (MenuItem
+            label: '-'
+            isVisible: isStandAlone
+          )
+         (MenuItem
+            activeHelpKey: fileExit
+            label: 'Exit'
+            itemValue: closeRequest
+            translateLabel: true
+            isVisible: isStandAlone
+          )
+         )
+        nil
+        nil
+      )
+!
+
 menuMouseButtonColors
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -4962,6 +5015,35 @@
     imageEditView flipVertical
 !
 
+doInsertTextFromUser
+    |text tempForm tempImage maskImage font w h|
+
+    text := Dialog request:'Text to be inserted:'.
+
+    font := Font family:'arial' size:20.
+    font := font onDevice:Screen current.
+    w := font widthOf:text.
+    h := font heightOf:text.
+
+    tempForm := Form extent:(w@h) depth:1 onDevice:(Screen current).
+    tempForm clear.
+    tempForm font:font.
+    tempForm paint:(Color colorId:1).
+    tempForm displayString:text at:(0@font ascent).
+
+    tempImage := tempForm asImage.
+    maskImage := tempForm asImage.
+    tempImage   
+        photometric:#palette;
+        colorMap:(Array with:Color white with:imageEditView selectedColor);
+        mask:maskImage.
+
+    ImageEditView copyImageToClipboard:tempImage.
+    self editMode value:#paste.
+
+    "Modified: / 11-11-2007 / 12:32:55 / cg"
+!
+
 doInspectImage
     "opens a System Browser on the resourceClass and the resourceSelector"
 
@@ -5093,11 +5175,13 @@
     box abortText:(resources string:'Cancel').
     box initialText: '0'.
     box showAtPointer.
-    (box accepted and: [(rotation := Object readFromString: box contents onError:nil) notNil])
+    (box accepted and: [(rotation := Number readFromString: box contents onError:nil) notNil])
     ifTrue:[
         imageEditView rotateImageBy:rotation.
         self updateInfoLabel.
     ].
+
+    "Modified: / 11-11-2007 / 13:21:11 / cg"
 !
 
 doShiftManual