added shift operation
authorClaus Gittinger <cg@exept.de>
Mon, 18 Mar 2002 14:07:19 +0100
changeset 1557 78409b670c85
parent 1556 92d3ec7850cd
child 1558 3848cbaaf6d9
added shift operation
ImageEditor.st
--- a/ImageEditor.st	Fri Mar 15 23:20:39 2002 +0100
+++ b/ImageEditor.st	Mon Mar 18 14:07:19 2002 +0100
@@ -709,6 +709,119 @@
       )
 !
 
+shiftDialogSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ImageEditor andSelector:#shiftDialogSpec
+     ImageEditor new openInterface:#shiftDialogSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #shiftDialogSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'Shift'
+          #name: 'Shift'
+          #min: #(#Point 10 10)
+          #max: #(#Point 800 478)
+          #bounds: #(#Rectangle 16 46 261 229)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#LabelSpec
+              #label: 'Amount:'
+              #name: 'AmountLabel'
+              #layout: #(#LayoutFrame 14 0 21 0 90 0 43 0)
+              #translateLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'AmountEntryField'
+              #layout: #(#LayoutFrame 95 0 21 0 132 0 43 0)
+              #tabable: true
+              #model: #shiftAmount
+              #type: #number
+              #acceptChannel: #acceptChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#HorizontalPanelViewSpec
+              #name: 'HorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
+              #horizontalLayout: #fitSpace
+              #verticalLayout: #center
+              #horizontalSpace: 3
+              #verticalSpace: 3
+              #reverseOrderIfOKAtLeft: true
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ActionButtonSpec
+                    #label: 'Cancel'
+                    #name: 'Button1'
+                    #translateLabel: true
+                    #tabable: true
+                    #model: #cancel
+                    #extent: #(#Point 118 22)
+                  )
+                 #(#ActionButtonSpec
+                    #label: 'OK'
+                    #name: 'Button2'
+                    #translateLabel: true
+                    #tabable: true
+                    #model: #accept
+                    #extent: #(#Point 118 22)
+                  )
+                 )
+               
+              )
+            )
+           #(#ArrowButtonSpec
+              #name: 'ArrowButton1'
+              #layout: #(#LayoutFrame 105 0 67 0 127 0 89 0)
+              #model: #shiftUpNow
+              #isTriggerOnDown: true
+              #actionValue: ''
+              #direction: #up
+            )
+           #(#ArrowButtonSpec
+              #name: 'ArrowButton2'
+              #layout: #(#LayoutFrame 88 0 86 0 110 0 108 0)
+              #model: #shiftLeftNow
+              #isTriggerOnDown: true
+              #actionValue: ''
+              #direction: #left
+            )
+           #(#ArrowButtonSpec
+              #name: 'ArrowButton3'
+              #layout: #(#LayoutFrame 122 0 86 0 144 0 108 0)
+              #model: #shiftRightNow
+              #isTriggerOnDown: true
+              #actionValue: ''
+              #direction: #right
+            )
+           #(#ArrowButtonSpec
+              #name: 'ArrowButton4'
+              #layout: #(#LayoutFrame 105 0 103 0 127 0 125 0)
+              #model: #shiftDownNow
+              #isTriggerOnDown: true
+              #actionValue: ''
+              #direction: #down
+            )
+           )
+         
+        )
+      )
+!
+
 ungropDialogSpec
     "This resource specification was automatically generated
      by the UIPainter of ST/X."
@@ -1365,6 +1478,12 @@
                   )
                 )
                #(#MenuItem
+                  #label: 'Shift...'
+                  #translateLabel: true
+                  #value: #doShiftManual
+                  #activeHelpKey: #shiftManual
+                )
+               #(#MenuItem
                   #label: 'Ungrop (Add Border)...'
                   #translateLabel: true
                   #value: #doUnCropManual
@@ -3306,6 +3425,48 @@
     ].
 !
 
+doShiftManual
+    "let user specify amount and shift"
+
+    |bindings amount img firstChange shiftAction acceptChannel|
+
+    acceptChannel := TriggerValue new.
+
+    firstChange := true.
+
+    shiftAction := 
+        [:shiftH :shiftV | 
+            acceptChannel value:true.
+
+            img := imageEditView image.
+            firstChange ifTrue:[
+                imageEditView makeUndo.
+                firstChange := false.
+            ].
+            imageEditView shiftImageHorizontal:shiftH value vertical:shiftV value.
+            self updateInfoLabel
+        ].
+
+    bindings := IdentityDictionary new.
+    bindings at:#shiftAmount put:(amount := 1 asValue).
+    bindings at:#acceptChannel put:acceptChannel.
+
+    bindings at:#shiftLeftNow   put:[ shiftAction value:(-1*amount value) value:0 ].
+    bindings at:#shiftRightNow  put:[ shiftAction value:amount value value:0 ].
+    bindings at:#shiftUpNow     put:[ shiftAction value:0 value:(-1*amount value) ].
+    bindings at:#shiftDownNow   put:[ shiftAction value:0 value:amount value ].
+
+    (self openDialogInterface:#shiftDialogSpec withBindings:bindings) 
+    ifFalse:[ 
+        firstChange ~~ true ifTrue:[
+          imageEditView undo
+        ]
+    ].
+
+    "Created: / 7.9.1998 / 18:16:07 / cg"
+    "Modified: / 7.9.1998 / 18:20:42 / cg"
+!
+
 doUnCropManual
     "let user specify borders and add them"