ImageEditView.st
changeset 1994 d2d9228d38ec
parent 1992 3aa650794ab4
child 2006 99e13c98314c
--- a/ImageEditView.st	Wed Aug 22 21:39:19 2001 +0200
+++ b/ImageEditView.st	Thu Aug 23 10:32:58 2001 +0200
@@ -18,7 +18,7 @@
 		lastPastePoint imageInfoHolder activityInfoHolder
 		pickedColorHolder drawingColors drawingPixels clickInfoCallBack'
 	classVariableNames:'Clipboard LastMagnification ClipboardMagnification
-		GridMagnificationLimit MaxUndos'
+		GridMagnificationLimit MaxUndos LastSaveDirectory LastSaveClass'
 	poolDictionaries:''
 	category:'Views-Misc'
 !
@@ -1757,6 +1757,28 @@
 
 !ImageEditView methodsFor:'printing & storing'!
 
+askForFileNameToSave:msg
+    "ask for a fileName"
+
+    |lastFn fn filters|
+
+    filters := FileSelectionBrowser saveImageFileNameFilters.
+    lastFn := self image fileName.
+    lastFn isNil ifTrue:[
+        fn := FileSelectionBrowser
+                request: msg
+                inDirectory: LastSaveDirectory
+                withFileFilters: filters
+    ] ifFalse:[
+        fn := FileSelectionBrowser
+                request: msg
+                fileName: lastFn
+                withFileFilters: filters
+    ].
+
+    ^ fn
+!
+
 loadFromClass
 
     ^self loadFromMessage: 
@@ -1819,13 +1841,10 @@
 saveImageFileAs
     "ask for a fileName and save the image"
 
-    self saveImageFileAs:
-        (FileSelectionBrowser
-            request: 'Save Image To File'
-            fileName: self image fileName
-            withFileFilters: FileSelectionBrowser saveImageFileNameFilters)
+    |fn|
 
-    "Modified: / 30.9.1998 / 23:05:19 / cg"
+    fn := self askForFileNameToSave:'Save Image To File'.
+    self saveImageFileAs:fn
 !
 
 saveImageFileAs: aFileName
@@ -1845,11 +1864,10 @@
 saveImageMaskFileAs
     "ask for a fileName and save the mask only"
 
-    self saveImageMaskFileAs:
-        (FileSelectionBrowser
-            request: 'Save Image Mask To File'
-            fileName: self image fileName 
-            withFileFilters: FileSelectionBrowser saveImageFileNameFilters)
+    |fn|
+
+    fn := self askForFileNameToSave:'Save Image Mask To File'.
+    self saveImageMaskFileAs:fn
 
     "Modified: / 30.9.1998 / 23:04:11 / cg"
 !
@@ -1947,9 +1965,10 @@
                 ].
                 Transcript showCR:('saving as:' , fileName asFilename pathName).
 
-                what = #image ifTrue: [image saveOn:fileName using: imageReaderClass. modified := false].
+                what = #image ifTrue: [ image saveOn:fileName using: imageReaderClass. modified := false].
                 what = #mask ifTrue: [image mask saveOn:fileName using: imageReaderClass].
 
+                LastSaveDirectory := fileName asFilename directoryName.
                 fileName asFilename exists ifFalse:[
                     Dialog warn:'Oops image save failed.'
                 ]
@@ -1961,14 +1980,10 @@
 !
 
 saveMethod
-
-    Object errorSignal handle:
-    [:ex|
+    Object errorSignal handle:[:ex|
         self warn: ex errorString.
         ^nil                                 
-    ] 
-    do:
-    [   
+    ] do: [   
         |category imageStoreStream cls sel mthd imageKey|
 
         windowGroup withExecuteCursorDo:[
@@ -1983,34 +1998,9 @@
 
             "/ flush cache images in the Icon class (kludge)
             Icon flushCachedIcons.
+            modified := false.
 
-"/            self image storeOn: (imageStoreStream := WriteStream on: '').
-"/            sel := self resourceSelector.
-"/
-"/            "/ if that method already exists, do not overwrite the category
-"/            category := 'image specs'.
-"/            (mthd := cls class compiledMethodAt:sel) notNil ifTrue:[
-"/                category := mthd category.
-"/            ].
-"/
-"/            imageKey :=  (cls name, ' ', sel) asSymbol.
-"/            Icon constantNamed: imageKey put:nil.
-"/            ByteCodeCompiler 
-"/                compile: ((sel,
-"/                    '\', (ResourceSpecEditor codeGenerationCommentForClass: ImageEditor),
-"/                    '\\' , 
-"/                    '    "\',
-"/                    '     self ' , self resourceSelector , ' inspect\',
-"/                    '     ImageEditor openOnClass:self andSelector:#', self resourceSelector, 
-"/                    '\    "',
-"/                    '\\',
-"/                    '    <resource: #image>',
-"/                    '\\',
-"/                    '    ^Icon\') withCRs, 
-"/                    '        constantNamed:#''', imageKey, '''\' withCRs,
-"/                    '        ifAbsentPut:[', imageStoreStream contents, ']')
-"/                forClass: cls class inCategory: category.
-            modified := false.
+            LastSaveClass := cls theNonMetaclass name.
         ]
     ]
 
@@ -2018,17 +2008,24 @@
 !
 
 saveMethodAs
+    |className|
+
+    className := self resourceClass.
+    className size == 0 ifTrue:[
+        LastSaveClass size > 0 ifTrue:[
+            className := LastSaveClass
+        ]
+    ].
 
     (self resourceMessage:
-	(ResourceSelectionBrowser
-	    request: 'Save Image In Class'
-	    onSuperclass: #Object
-	    andClass: self resourceClass
-	    andSelector: self resourceSelector
-	    withResourceTypes: #(image fileImage))) notNil
-    ifTrue:
-    [   
-	^self saveMethod
+        (ResourceSelectionBrowser
+            request: 'Save Image In Class'
+            onSuperclass: #Object
+            andClass: className
+            andSelector: self resourceSelector
+            withResourceTypes: #(image fileImage))) notNil
+    ifTrue: [   
+        ^ self saveMethod
     ].  
     ^nil
 ! !
@@ -2122,6 +2119,6 @@
 !ImageEditView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/ImageEditView.st,v 1.149 2001-08-22 19:36:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/ImageEditView.st,v 1.150 2001-08-23 08:32:58 cg Exp $'
 ! !
 ImageEditView initialize!