AbstractFileBrowser.st
changeset 4367 ec4531103e69
parent 4366 97a0311a9539
child 4368 ec625478fad7
--- a/AbstractFileBrowser.st	Wed Dec 11 16:29:46 2002 +0100
+++ b/AbstractFileBrowser.st	Wed Dec 11 17:15:21 2002 +0100
@@ -1498,8 +1498,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:FileBrowserV2 andSelector:#toolsMenuSpec
-     (Menu new fromLiteralArrayEncoding:(FileBrowserV2 toolsMenuSpec)) startUp
+     MenuEditor new openOnClass:AbstractFileBrowser andSelector:#toolsMenuSpec
+     (Menu new fromLiteralArrayEncoding:(AbstractFileBrowser toolsMenuSpec)) startUp
     "
 
     <resource: #menu>
@@ -1509,160 +1509,191 @@
         #(
          #(#MenuItem
             #label: 'Execute Command...'
+            #itemValue: #doExecuteCommand
             #translateLabel: true
-            #value: #doExecuteCommand
           )
          #(#MenuItem
+            #enabled: #canDoTerminal
             #label: 'Shell Terminal'
+            #itemValue: #openTerminal
             #translateLabel: true
             #isVisible: #canDoTerminalAndSystemIsUnix
-            #value: #openTerminal
-            #enabled: #canDoTerminal
           )
          #(#MenuItem
+            #enabled: #canDoTerminal
             #label: 'DOS Terminal'
+            #itemValue: #openTerminal
             #translateLabel: true
             #isVisible: #canDoTerminalAndSystemIsDOS
-            #value: #openTerminal
-            #enabled: #canDoTerminal
           )
          #(#MenuItem
             #label: '-'
           )
          #(#MenuItem
+            #enabled: #hasSelection
             #label: 'Changes Browser'
+            #itemValue: #openChangesBrowser
             #translateLabel: true
-            #value: #openChangesBrowser
-            #enabled: #hasSelection
           )
          #(#MenuItem
+            #enabled: #hasSelection
             #label: 'ChangeSet Browser'
+            #itemValue: #openChangeSetBrowser
             #translateLabel: true
-            #value: #openChangeSetBrowser
-            #enabled: #hasSelection
           )
          #(#MenuItem
+            #enabled: #hasSnapshotSelection
             #label: 'Snapshot Image Browser'
+            #itemValue: #openSnapshotImageBrowser
             #translateLabel: true
-            #value: #openSnapshotImageBrowser
-            #enabled: #hasSnapshotSelection
           )
          #(#MenuItem
+            #enabled: #canCreateNewProject
             #label: 'Create Smalltalk Project'
+            #itemValue: #createProjectAndOpenProjectBrowser
             #translateLabel: true
-            #value: #createProjectAndOpenProjectBrowser
-            #enabled: #canCreateNewProject
           )
          #(#MenuItem
+            #enabled: #canReadAbbrevFile
             #label: 'Install Autoloaded'
+            #itemValue: #readAbbrevFile
             #translateLabel: true
-            #value: #readAbbrevFile
-            #enabled: #canReadAbbrevFile
           )
          #(#MenuItem
+            #enabled: #anySTFilesPresent
             #label: 'Install all as Autoloaded'
+            #itemValue: #installAllAsAutoloaded
             #translateLabel: true
-            #value: #installAllAsAutoloaded
-            #enabled: #anySTFilesPresent
           )
          #(#MenuItem
+            #enabled: #hasSelection
             #label: 'Editor'
+            #itemValue: #openEditor
             #translateLabel: true
-            #value: #openEditor
+          )
+         #(#MenuItem
             #enabled: #hasSelection
+            #label: 'HTML Reader'
+            #itemValue: #openHTMLReader
+            #translateLabel: true
           )
          #(#MenuItem
-            #label: 'HTML Reader'
-            #translateLabel: true
-            #value: #openHTMLReader
-            #enabled: #hasSelection
-          )
-         #(#MenuItem
+            #enabled: #hasASN1AndSelection
             #label: 'ASN1 Browser'
+            #itemValue: #openASN1Browser
             #translateLabel: true
             #isVisible: #hasASN1
-            #value: #openASN1Browser
-            #enabled: #hasASN1AndSelection
           )
          #(#MenuItem
+            #enabled: #hasCBrowser
             #label: 'C Browser'
+            #itemValue: #openCBrowser
             #translateLabel: true
             #isVisible: #hasCBrowser
-            #value: #openCBrowser
-            #enabled: #hasCBrowser
           )
          #(#MenuItem
+            #enabled: #hasJavaAndSelection
             #label: 'Applet Viewer'
+            #itemValue: #openAppletViewer
             #translateLabel: true
             #isVisible: #hasJava
-            #value: #openAppletViewer
-            #enabled: #hasJavaAndSelection
           )
          #(#MenuItem
-            #label: 'Image Inspector'
+            #enabled: #hasSelection
+            #label: 'STX Image Inspector'
+            #itemValue: #openImageInspector
             #translateLabel: true
-            #value: #openImageInspector
-            #enabled: #hasSelection
           )
          #(#MenuItem
-            #label: 'Image Preview'
+            #label: 'Image'
             #translateLabel: true
-            #value: #openImagePreview
-            #enabled: #hasSelection
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #enabled: #hasSelection
+                  #label: 'Image Editor'
+                  #itemValue: #openImageEditor
+                  #translateLabel: true
+                )
+               #(#MenuItem
+                  #enabled: #hasSelection
+                  #label: 'Image Preview'
+                  #itemValue: #openImagePreview
+                  #translateLabel: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #enabled: #hasSelection
+                  #label: 'Convert to GIF'
+                  #itemValue: #convertImageToGIF
+                  #translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
           )
          #(#MenuItem
-            #label: 'Image Editor'
-            #translateLabel: true
-            #value: #openImageEditor
-            #enabled: #hasSelection
-          )
-         #(#MenuItem
+            #enabled: #hasMP3PlayerAndSelection
             #label: 'MP3 Player'
+            #itemValue: #openMP3Player
             #translateLabel: true
             #isVisible: #hasMP3Player
-            #value: #openMP3Player
-            #enabled: #hasMP3PlayerAndSelection
           )
          #(#MenuItem
+            #enabled: #hasZipFileSelected
             #label: 'ZipFile Tool'
+            #itemValue: #openZipTool
             #translateLabel: true
-            #value: #openZipTool
-            #enabled: #hasZipFileSelected
           )
          #(#MenuItem
+            #enabled: #currentFilesAreInSameDirectory
             #label: 'Slide Show'
+            #itemValue: #openSlideShow
             #translateLabel: true
             #isVisible: #hasSlideShow
-            #value: #openSlideShow
-            #enabled: #currentFilesAreInSameDirectory
-          )
-         #(#MenuItem
-            #label: 'File Differences...'
-            #translateLabel: true
-            #value: #openDiffView
-            #enabled: #hasSelection
           )
          #(#MenuItem
-            #label: 'Find Duplicate Files'
+            #label: 'Find'
             #translateLabel: true
-            #value: #fileFindDuplicates
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'Find a File...'
+                  #itemValue: #fileFindFile
+                  #translateLabel: true
+                )
+               #(#MenuItem
+                  #enabled: #hasSelection
+                  #label: 'Find All Duplicate Files (Recursive)'
+                  #itemValue: #fileFindAllDuplicates
+                  #translateLabel: true
+                )
+               #(#MenuItem
+                  #label: 'Find Duplicate Files'
+                  #itemValue: #fileFindDuplicates
+                  #translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
           )
          #(#MenuItem
-            #label: 'Find All Duplicate Files (Recursive)'
+            #enabled: #hasSelection
+            #label: 'File Differences...'
+            #itemValue: #openDiffView
             #translateLabel: true
-            #value: #fileFindAllDuplicates
-            #enabled: #hasSelection
           )
          #(#MenuItem
-            #label: 'Find a File...'
+            #enabled: #hasSelection
+            #label: 'Hex Dump'
+            #itemValue: #fileHexDump
             #translateLabel: true
-            #value: #fileFindFile
-          )
-         #(#MenuItem
-            #label: 'Hex Dump'
-            #translateLabel: true
-            #value: #fileHexDump
-            #enabled: #hasSelection
           )
          )
         nil
@@ -3408,6 +3439,56 @@
 
 !AbstractFileBrowser methodsFor:'menu actions tools'!
 
+convertImageToGIF
+    |img tempFileXPM tempFilePPM tempFileGIF|
+
+    [
+        self withActivityIndicationDo:[
+            self currentFileNameHolder value do:[:fileName |
+                fileName isDirectory ifFalse:[
+                    self notifyChannel value:('Convert to GIF:',  fileName baseName).
+                    img := Image fromFile:(fileName pathName).
+                    img notNil ifTrue:[
+                        tempFileXPM  := Filename newTemporary withSuffix:'xpm'.
+                        tempFilePPM := tempFileXPM withSuffix:'ppm'.
+                        tempFileGIF := tempFileXPM withSuffix:'gif'.
+                        [
+                            img saveOn:tempFileXPM using:XPMReader.
+
+
+                            (OperatingSystem 
+                                    executeCommand:('xpmtoppm %1 > %2' 
+                                                        bindWith:tempFileXPM pathName
+                                                        with:tempFilePPM pathName))
+                            ifFalse:[
+                                self warn:'Cannot convert to ppm format'.
+                            ] ifTrue:[
+                                (OperatingSystem 
+                                        executeCommand:('ppmtogif %1 > %2' 
+                                                            bindWith:tempFilePPM pathName
+                                                            with:tempFileGIF pathName))
+                                ifFalse:[
+                                    self warn:'Cannot convert to gif format'.
+                                ] ifTrue:[
+                                    tempFileGIF moveTo:(fileName withSuffix:'gif').
+                                    self updateAndSelect:nil.
+                                ].
+                            ].
+                        ] ensure:[
+                            tempFileXPM delete.
+                            tempFilePPM delete.
+                            tempFileGIF delete.
+                        ]
+                    ] ifFalse:[
+                        self warn:'Unknown format/not an image: ' , fileName asString
+                    ]
+                ]
+            ].
+            self notifyChannel value:''.
+        ]
+    ] fork.
+!
+
 createProjectAndOpenProjectBrowser
     |nm f s directory|
 
@@ -5309,5 +5390,5 @@
 !AbstractFileBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.70 2002-12-11 15:29:46 penk Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.71 2002-12-11 16:15:21 penk Exp $'
 ! !