FileOperation.st
changeset 4701 b30d103a8bc9
parent 4674 64a49fadc47e
child 4749 297a154b8cb7
--- a/FileOperation.st	Fri Mar 21 13:38:39 2003 +0100
+++ b/FileOperation.st	Fri Mar 21 14:21:35 2003 +0100
@@ -101,28 +101,34 @@
 !FileOperation methodsFor:'dialogs'!
 
 fileExistDialogForNewFile:newFile oldFile:oldFile withCancel:aBoolean
-    |msg|
+    "return true, if the file should be moved/copied.
+     Ask user if oldFile exists."
+
+    |msg oldSize newSize sameContents|
+
+    newFile exists ifFalse:[ ^ true ].
+    oldSize := oldFile fileSize.
+    newSize := newFile fileSize.
+
+    sameContents := oldSize = newSize and:[oldFile sameContentsAs:newFile].
 
-    newFile exists ifTrue:[
-        msg := 'Overwrite %1 of %2 with size %3\with %4 of %5 and with size %6 ?'.
-        msg := AbstractFileBrowser classResources 
-                string:msg
-                withArgs:(Array
-                    with:newFile asString allBold
-                    with:(newFile modificationTime printStringFormat:'%(Day)-%(mon)-%(year) %h:%m:%s')
-                    with:newFile fileSize
-                    with:oldFile asString 
-                    with:(oldFile modificationTime printStringFormat:'%(Day)-%(mon)-%(year) %h:%m:%s')
-                    with:oldFile fileSize).
-        msg := msg withCRs.
+    sameContents ifTrue:[
+        msg := 'Overwrite existing file:\\  %1\    size: %3 of %2\\with (same contents):\\  %4\    size: %6 of %5'.
+    ] ifFalse:[
+        msg := 'Overwrite existing file:\\  %1\    size: %3 of %2\\with:\\  %4\    size: %6 of %5'.
+    ].
 
-        aBoolean ifTrue:[
-            ^ Dialog confirmWithCancel:msg.
-        ] ifFalse:[
-            ^ Dialog confirm:msg.
-        ].
-    ].
-    ^ true
+    msg := AbstractFileBrowser classResources 
+            stringWithCRs:msg
+            withArgs:(Array
+                with:newFile asString allBold
+                with:(newFile modificationTime printStringFormat:'%(Day)-%(mon)-%(year) %h:%m:%s')
+                with:newSize
+                with:oldFile asString allBold 
+                with:(oldFile modificationTime printStringFormat:'%(Day)-%(mon)-%(year) %h:%m:%s')
+                with:oldSize).
+
+    ^ Dialog confirm:(msg withCRs) withCancel:aBoolean.
 ! !
 
 !FileOperation::Copy class methodsFor:'actions'!
@@ -196,7 +202,7 @@
 !FileOperation::Copy class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.29 2003-03-18 11:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.30 2003-03-21 13:21:35 cg Exp $'
 ! !
 
 !FileOperation::Copy methodsFor:'accessing'!
@@ -322,7 +328,7 @@
                 ].
             ] ifFalse:[
                 overWriteWarning ifTrue:[
-                    askResult := (self fileExistDialogForNewFile:newFile oldFile:filename withCancel:true).
+                    askResult := (self fileExistDialogForNewFile:newFile oldFile:filename withCancel:(aColOfSourceFiles size > 1)).
                     askResult isNil ifTrue:[
                         result := false.
                         ^ self.
@@ -400,7 +406,7 @@
 !FileOperation::Create class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.29 2003-03-18 11:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.30 2003-03-21 13:21:35 cg Exp $'
 ! !
 
 !FileOperation::Create methodsFor:'accessing'!
@@ -646,7 +652,7 @@
 !FileOperation::Delete class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.29 2003-03-18 11:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.30 2003-03-21 13:21:35 cg Exp $'
 ! !
 
 !FileOperation::Delete methodsFor:'actions'!
@@ -680,12 +686,12 @@
 deleteFiles:colOfFiles
     "delete current selected files/directories
     "
-    |resources retVal ask size labels values fileTypeString|
+    |resources retVal ask nFilesToDelete labels values fileTypeString|
 
     resources := AbstractFileBrowser classResources.
 
     ask := true.
-    size := colOfFiles size.
+    nFilesToDelete := colOfFiles size.
     colOfFiles do:[:filenameOrString |
         |filename answer doDelete|
 
@@ -701,20 +707,21 @@
             ]
         ].
         ask ifTrue:[
-            size = 1 ifTrue:[
-                labels := #('Cancel' 'No' 'Yes').
-                values := #(#cancel #no #yes).
+            nFilesToDelete = 1 ifTrue:[
+                labels := #('No' 'Yes').
+                values := #(#no #yes).
             ] ifFalse:[
                 labels := #('Cancel' 'No' 'Yes' 'Yes to All' ).
                 values := #(#cancel #no #yes #yesToAll).
             ].
             retVal := Dialog 
-                confirmWithCancel:(resources string:'Really delete %1%2 ?' 
-                                               with:fileTypeString
-                                               with:(filename asString allBold))
+                confirmWithCancel:(resources 
+                                    stringWithCRs:'Really delete\\  %1%2 ?' 
+                                    with:fileTypeString
+                                    with:(filename asString allBold))
                            labels:(resources array:labels)
                            values:values
-                          default:3.
+                          default:(values indexOf:#no).
         ].
         retVal == #cancel ifTrue:[
             ^ self.
@@ -816,7 +823,7 @@
 !FileOperation::Move class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.29 2003-03-18 11:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.30 2003-03-21 13:21:35 cg Exp $'
 ! !
 
 !FileOperation::Move methodsFor:'accessing'!
@@ -928,7 +935,7 @@
                 ].
             ] ifFalse:[
                 overWriteWarning ifTrue:[
-                    askResult := self fileExistDialogForNewFile:newFile oldFile:filename withCancel:true.
+                    askResult := self fileExistDialogForNewFile:newFile oldFile:filename withCancel:(aColOfSourceFiles size > 1).
                     askResult isNil ifTrue:[
                         result := false.
                         ^ self.
@@ -986,7 +993,7 @@
 !FileOperation::Rename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.29 2003-03-18 11:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.30 2003-03-21 13:21:35 cg Exp $'
 ! !
 
 !FileOperation::Rename methodsFor:'accessing'!
@@ -1078,5 +1085,5 @@
 !FileOperation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.29 2003-03-18 11:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.30 2003-03-21 13:21:35 cg Exp $'
 ! !