added:8 methods
comment/format in: #tileModeHolder
changed:9 methods
category of:
#nextImageInSequence
#updateAfterImageChange
--- a/ImageEditor.st Thu Oct 21 14:43:14 2010 +0200
+++ b/ImageEditor.st Thu Oct 21 15:01:32 2010 +0200
@@ -304,7 +304,14 @@
#fileSaveMethodAs
'Save as Method...'
+#nextImageInSequence
+'Go to the next image in the animated gif image sequence.'
+
+#previousImageInSequence
+'Go to the previous image in the animated gif image sequence.'
)
+
+ "Modified: / 21-10-2010 / 14:58:32 / cg"
!
helpSpec
@@ -2169,36 +2176,45 @@
label: '-'
)
(MenuItem
+ enabled: imageIsLoadedHolder
+ label: 'Copy to Clipboard'
+ itemValue: doCopyImageToClipboard
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: editResize
enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
- activeHelpKey: editResize
label: 'Resize...'
itemValue: doResizeImage
translateLabel: true
)
(MenuItem
+ activeHelpKey: editMagnifyImage
enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
- activeHelpKey: editMagnifyImage
label: 'Magnify...'
itemValue: doMagnifyImage
translateLabel: true
)
(MenuItem
+ activeHelpKey: editMagnifyImage
enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
- activeHelpKey: editMagnifyImage
label: 'Magnify By...'
itemValue: doMagnifyImageBy
translateLabel: true
)
(MenuItem
+ activeHelpKey: editRotate
enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
- activeHelpKey: editRotate
label: 'Rotate...'
itemValue: doRotateImage
translateLabel: true
)
(MenuItem
+ activeHelpKey: edit3DProjection
enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
- activeHelpKey: edit3DProjection
label: '3D Projection...'
itemValue: do3DProjection
translateLabel: true
@@ -2212,17 +2228,17 @@
(
(MenuItem
activeHelpKey: editFlipVertical
+ enabled: imageIsLoadedHolder
label: 'Flip - Vertical'
itemValue: doFlipVertical
translateLabel: true
- enabled: imageIsLoadedHolder
)
(MenuItem
activeHelpKey: editFlipHorizontal
+ enabled: imageIsLoadedHolder
label: 'Flip - Horizontal'
itemValue: doFlipHorizontal
translateLabel: true
- enabled: imageIsLoadedHolder
)
)
nil
@@ -2287,15 +2303,15 @@
)
)
(MenuItem
+ activeHelpKey: uncropManual
enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
- activeHelpKey: uncropManual
label: 'Uncrop (Add Border)...'
itemValue: doUnCropManual
translateLabel: true
)
(MenuItem
+ activeHelpKey: shiftManual
enabled: imageIsLoadedHolder
- activeHelpKey: shiftManual
label: 'Shift...'
itemValue: doShiftManual
translateLabel: true
@@ -2316,13 +2332,47 @@
itemValue: doInsertTextFromUser
translateLabel: true
)
-
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Sequence'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: imageHasNextImageHolder
+ label: 'Next in Sequence'
+ itemValue: nextImageInSequence
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: imageHasPreviousImageHolder
+ label: 'Prev in Sequence'
+ itemValue: previousImageInSequence
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ enabled: imageHasImageSequenceHolder
+ label: 'Edit each from Sequence'
+ itemValue: editEachImageFromSequence
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
)
nil
nil
)
- "Modified: / 04-07-2010 / 10:16:48 / cg"
+ "Modified: / 21-10-2010 / 14:30:24 / cg"
!
menuFile
@@ -2415,13 +2465,6 @@
)
)
(MenuItem
- enabled: imageHasNextImageHolder
- label: 'Next in Sequence'
- itemValue: nextImageInSequence
- translateLabel: true
- isVisible: isStandAlone
- )
- (MenuItem
label: '-'
)
(MenuItem
@@ -2460,27 +2503,9 @@
translateLabel: true
)
(MenuItem
- enabled: imageIsLoadedHolder
- label: 'Copy to Clipboard'
- itemValue: doCopyImageToClipboard
- translateLabel: true
- )
- (MenuItem
label: '-'
)
(MenuItem
- activeHelpKey: fileEditMask
- enabled: imageIsLoadedHolder
- label: 'Edit Mask'
- itemValue: doEditMask
- translateLabel: true
- isVisible: false
- )
- (MenuItem
- label: '-'
- isVisible: false
- )
- (MenuItem
activeHelpKey: filePrint
enabled: imageIsLoadedHolder
label: 'Print'
@@ -2528,6 +2553,8 @@
nil
nil
)
+
+ "Modified: / 21-10-2010 / 14:30:06 / cg"
!
menuMouseButtonColors
@@ -2758,12 +2785,34 @@
isButton: true
labelImage: (ResourceRetriever ToolbarIconLibrary undoIcon)
)
+ (MenuItem
+ label: '-'
+ isVisible: imageHasImageSequenceHolder
+ )
+ (MenuItem
+ activeHelpKey: previousImageInSequence
+ enabled: imageHasPreviousImageHolder
+ label: 'Previous Image'
+ itemValue: previousImageInSequence
+ translateLabel: true
+ isVisible: imageHasImageSequenceHolder
+ labelImage: (ResourceRetriever ToolbarIconLibrary leftArrow24x24Icon)
+ )
+ (MenuItem
+ activeHelpKey: nextImageInSequence
+ enabled: imageHasNextImageHolder
+ label: 'Next Image'
+ itemValue: nextImageInSequence
+ translateLabel: true
+ isVisible: imageHasImageSequenceHolder
+ labelImage: (ResourceRetriever ToolbarIconLibrary rightArrow24x24Icon)
+ )
)
nil
nil
)
- "Modified: / 04-07-2010 / 10:17:49 / cg"
+ "Modified: / 21-10-2010 / 14:57:32 / cg"
!
modeMenu
@@ -3303,13 +3352,58 @@
"Created: / 04-07-2010 / 10:13:05 / cg"
!
+imageHasImageSequence
+ ^ self image notNil and:[self image imageSequence notNil]
+
+ "Created: / 21-10-2010 / 14:35:45 / cg"
+!
+
+imageHasImageSequenceHolder
+ |holder|
+
+ (holder := builder bindingAt:#imageHasImageSequenceHolder) isNil ifTrue:[
+ builder aspectAt:#imageHasImageSequenceHolder put:(holder := false asValue).
+ holder value:(self imageHasImageSequence).
+ ].
+ ^ holder
+
+ "Modified: / 21-10-2010 / 14:36:57 / cg"
+!
+
+imageHasNextImage
+ ^ self imageHasImageSequence and:[ (imageSeqNr ? 1) < self image imageSequence size ]
+
+ "Created: / 21-10-2010 / 14:37:10 / cg"
+!
+
imageHasNextImageHolder
- "returns whether an image is loaded as value holder"
-
- ^ [self image notNil
- and:[self image imageSequence notNil]]
-
- "Created: / 04-07-2010 / 10:15:03 / cg"
+ |holder|
+
+ (holder := builder bindingAt:#imageHasNextImageHolder) isNil ifTrue:[
+ builder aspectAt:#imageHasNextImageHolder put:(holder := false asValue).
+ holder value:(self imageHasNextImage).
+ ].
+ ^ holder
+
+ "Modified: / 21-10-2010 / 14:37:40 / cg"
+!
+
+imageHasPreviousImage
+ ^ self imageHasImageSequence and:[ (imageSeqNr ? 1) > 1 ]
+
+ "Created: / 21-10-2010 / 14:37:21 / cg"
+!
+
+imageHasPreviousImageHolder
+ |holder|
+
+ (holder := builder bindingAt:#imageHasPreviousImageHolder) isNil ifTrue:[
+ builder aspectAt:#imageHasPreviousImageHolder put:(holder := false asValue).
+ holder value:(self imageHasPreviousImage).
+ ].
+ ^ holder
+
+ "Modified: / 21-10-2010 / 14:37:48 / cg"
!
imageInfoHolder
@@ -3407,11 +3501,14 @@
tileModeHolder
|holder|
+
(holder := builder bindingAt:#tileModeHolder) isNil ifTrue:[
builder aspectAt:#tileModeHolder put:(holder := false asValue).
holder addDependent:self.
].
^ holder
+
+ "Modified: / 21-10-2010 / 14:35:24 / cg"
!
valueOfMagnification
@@ -3541,6 +3638,7 @@
^ self.
].
something == #image ifTrue:[
+ self updateAfterImageChange.
imagePreView image:img scroll:false.
self updateListOfColorsAndColormapMode.
self tileModeHolder value ifTrue:[
@@ -3580,12 +3678,35 @@
changedObject == imageEditView image ifTrue:[
"/ self halt:'to be implemented'.
+ self updateAfterImageChange.
^ self.
].
super update:something with:aParameter from:changedObject
- "Modified: / 04-07-2010 / 10:19:51 / cg"
+ "Modified: / 21-10-2010 / 14:34:31 / cg"
+!
+
+updateAfterImageChange
+ |img|
+
+ (img := self image) notNil ifTrue:[
+ img := img onDevice:device.
+ self updateColorsFromImage:img.
+ self findColorMapMode.
+ self updateLabelsAndHistory.
+
+ imageSeqNr isNil ifTrue:[
+ imageSeqNr := 1
+ ].
+ self imageHasImageSequenceHolder value:(self imageHasImageSequence).
+ self imageHasNextImageHolder value:(self imageHasNextImage).
+ self imageHasPreviousImageHolder value:(self imageHasPreviousImage).
+ ] ifFalse:[
+ self updateForNoImage
+ ]
+
+ "Modified: / 21-10-2010 / 14:40:45 / cg"
!
updateColorsFromImage:image
@@ -3607,9 +3728,10 @@
self imageIsLoadedHolder value: false.
self listOfColors removeAll.
- self imagePreView image: nil
-
- "Modified: / 04-07-2010 / 10:15:55 / cg"
+ self imagePreView image: nil.
+ self imageHasImageSequenceHolder value:false.
+
+ "Modified: / 21-10-2010 / 14:39:13 / cg"
!
updateLabelsAndHistory
@@ -3964,19 +4086,6 @@
self updateLabelsAndHistory.
"Modified: / 16.3.1999 / 21:45:07 / cg"
-!
-
-updateAfterImageChange
- |img|
-
- (img := self image) notNil ifTrue:[
- img := img onDevice:device.
- self updateColorsFromImage:img.
- self findColorMapMode.
- self updateLabelsAndHistory.
- ] ifFalse:[
- self updateForNoImage
- ]
! !
!ImageEditor methodsFor:'menu modes'!
@@ -5916,6 +6025,97 @@
imageEditView undo.
! !
+!ImageEditor methodsFor:'user actions-image sequences'!
+
+editEachImageFromSequence
+ |seq|
+
+ self checkModified ifFalse:[ ^ self ].
+
+ imageEditView releaseUndos.
+
+ seq := self image imageSequence.
+ seq size > 10 ifTrue:[
+ (Dialog confirm:(resources string:'Ok to open %1 image editor windows?' with:seq size))
+ ifFalse:[^ self].
+ ].
+
+ seq do:[:eachFrame |
+ ImageEditor openOnImage:eachFrame image
+ ].
+
+ "Modified: / 21-10-2010 / 15:01:25 / cg"
+!
+
+gotoImageInSequence:index
+ "display the next image in the image sequence"
+
+ |img seq frame listOfColors|
+
+ imageEditView releaseUndos.
+
+ seq := self image imageSequence.
+
+ imageSeqNr := index.
+ frame := seq at:imageSeqNr.
+ imageEditView image:(frame image).
+
+ (img := self image) notNil ifTrue:[
+ listOfColors := self listOfColors.
+ img colorMap notNil ifTrue:[
+ listOfColors contents:(img usedColors asSet asOrderedCollection).
+ ] ifFalse:[
+ listOfColors removeAll.
+ ].
+ self findColorMapMode.
+ self updateLabelsAndHistory.
+ img := img onDevice:device.
+ imageEditView image:img.
+ ] ifFalse:[
+ self updateForNoImage
+ ].
+
+ "Created: / 21-10-2010 / 14:22:11 / cg"
+!
+
+nextImageInSequence
+ "display the next image in the image sequence"
+
+ |seq index|
+
+ seq := self image imageSequence.
+ (index := imageSeqNr) isNil ifTrue:[
+ index := 1.
+ ].
+ index := index + 1.
+ index > seq size ifTrue:[
+ self information:'Back to first image in sequence'.
+ index := 1.
+ ].
+ self gotoImageInSequence:index.
+
+ "Modified: / 21-10-2010 / 14:24:11 / cg"
+!
+
+previousImageInSequence
+ "display the previous image in the image sequence"
+
+ |seq index|
+
+ seq := self image imageSequence.
+ (index := imageSeqNr) isNil ifTrue:[
+ index := 1.
+ ].
+ index := index - 1.
+ index < 1 ifTrue:[
+ self information:'Wrap to last image in sequence'.
+ index := seq size.
+ ].
+ self gotoImageInSequence:index.
+
+ "Created: / 21-10-2010 / 14:25:03 / cg"
+! !
+
!ImageEditor methodsFor:'user actions-loading'!
doLoadFromClass
@@ -6146,41 +6346,6 @@
Image fromView:(v topView)
].
].
-!
-
-nextImageInSequence
- "display the next image in the image sequence"
- |img seq frame listOfColors|
-
- imageEditView releaseUndos.
-
- seq := self image imageSequence.
- imageSeqNr isNil ifTrue:[
- imageSeqNr := 1.
- ].
- imageSeqNr := imageSeqNr + 1.
- imageSeqNr > seq size ifTrue:[
- self information:'Back to first image in sequence'.
- imageSeqNr := 1.
- ].
- frame := seq at:imageSeqNr.
- imageEditView image:(frame image).
-
- (img := self image) notNil ifTrue:[
- listOfColors := self listOfColors.
- img colorMap notNil ifTrue:[
- listOfColors contents:(img usedColors asSet asOrderedCollection).
- ] ifFalse:[
- listOfColors removeAll.
- ].
- self findColorMapMode.
- self updateLabelsAndHistory.
- img := img onDevice:device.
- imageEditView image:img.
- ] ifFalse:[
- self updateForNoImage
- ].
-
! !
!ImageEditor methodsFor:'user actions-saving'!