FileOperation.st
changeset 5673 3ed1092a3c73
parent 5656 8402ac9f6398
child 5687 db2de563fb71
equal deleted inserted replaced
5672:dcfeb67da37f 5673:3ed1092a3c73
     1 "{ Encoding: utf8 }"
       
     2 
       
     3 "{ Package: 'stx:libtool2' }"
     1 "{ Package: 'stx:libtool2' }"
     4 
     2 
     5 Object subclass:#FileOperation
     3 Object subclass:#FileOperation
     6 	instanceVariableNames:'errorString result'
     4 	instanceVariableNames:'errorString result'
     7 	classVariableNames:''
     5 	classVariableNames:''
   202 ! !
   200 ! !
   203 
   201 
   204 !FileOperation::Copy class methodsFor:'documentation'!
   202 !FileOperation::Copy class methodsFor:'documentation'!
   205 
   203 
   206 version
   204 version
   207     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.41 2004-03-04 10:08:18 cg Exp $'
   205     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.42 2004-03-08 19:04:50 cg Exp $'
   208 ! !
   206 ! !
   209 
   207 
   210 !FileOperation::Copy methodsFor:'accessing'!
   208 !FileOperation::Copy methodsFor:'accessing'!
   211 
   209 
   212 colOfCopiedFiles
   210 colOfCopiedFiles
   409 ! !
   407 ! !
   410 
   408 
   411 !FileOperation::Create class methodsFor:'documentation'!
   409 !FileOperation::Create class methodsFor:'documentation'!
   412 
   410 
   413 version
   411 version
   414     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.41 2004-03-04 10:08:18 cg Exp $'
   412     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.42 2004-03-08 19:04:50 cg Exp $'
   415 ! !
   413 ! !
   416 
   414 
   417 !FileOperation::Create methodsFor:'accessing'!
   415 !FileOperation::Create methodsFor:'accessing'!
   418 
   416 
   419 createdFile
   417 createdFile
   682 ! !
   680 ! !
   683 
   681 
   684 !FileOperation::Delete class methodsFor:'documentation'!
   682 !FileOperation::Delete class methodsFor:'documentation'!
   685 
   683 
   686 version
   684 version
   687     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.41 2004-03-04 10:08:18 cg Exp $'
   685     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.42 2004-03-08 19:04:50 cg Exp $'
   688 ! !
   686 ! !
   689 
   687 
   690 !FileOperation::Delete methodsFor:'actions'!
   688 !FileOperation::Delete methodsFor:'actions'!
   691 
   689 
   692 deleteFile:aFileOrDirectory
   690 deleteFile:aFileOrDirectory
   722 !
   720 !
   723 
   721 
   724 deleteFiles:colOfFiles confirm:confirm
   722 deleteFiles:colOfFiles confirm:confirm
   725     "delete current selected files/directories
   723     "delete current selected files/directories
   726     "
   724     "
   727     |resources retVal nFilesToDelete ask labels values fileTypeString|
   725     |resources answer nFilesToDelete ask labels values fileTypeString|
   728 
   726 
   729     ask := confirm.
   727     ask := confirm.
   730     resources := AbstractFileBrowser classResources.
   728     resources := AbstractFileBrowser classResources.
   731 
   729 
   732     nFilesToDelete := colOfFiles size.
   730     nFilesToDelete := colOfFiles size.
   733     colOfFiles do:[:filenameOrString |
   731     colOfFiles do:[:filenameOrString |
   734         |filename askForNonEmptyDirectory|
   732         |filename askForNonEmptyDirectory skip|
   735 
   733 
   736         filename := filenameOrString asFilename.
   734         filename := filenameOrString asFilename.
   737 
   735 
       
   736         skip := false.
   738         fileTypeString := ''.
   737         fileTypeString := ''.
   739         filename isSymbolicLink ifTrue:[
   738         filename isSymbolicLink ifTrue:[
   740             fileTypeString := 'symbolic link '.
   739             fileTypeString := 'symbolic link '.
   741         ] ifFalse:[        
   740         ] ifFalse:[        
   742             filename exists not ifTrue:[ 
   741             filename exists ifFalse:[ 
   743                 self warn:('%1 does not exist' bindWith:filename asString allBold).
   742                 (Dialog 
       
   743                     confirm:('%1 does not exist' bindWith:filename asString allBold)
       
   744                     yesLabel:(resources string:'OK')
       
   745                     noLabel:(resources string:'Cancel')) 
       
   746                 ifFalse:[
       
   747                     ^ self.
       
   748                 ].
       
   749                 skip := true.
       
   750             ]
       
   751         ].
       
   752         skip ifFalse:[
       
   753             ask ifTrue:[
       
   754                 nFilesToDelete = 1 ifTrue:[
       
   755                     labels := #('No' 'Yes').
       
   756                     values := #(#no #yes).
       
   757                 ] ifFalse:[
       
   758                     labels := #('Cancel' 'No' 'Yes' 'Yes to All' ).
       
   759                     values := #(#cancel #no #yes #yesToAll).
       
   760                 ].
       
   761                 answer := Dialog 
       
   762                     confirmWithCancel:(resources 
       
   763                                         stringWithCRs:'Really delete\\  %1%2%3 ?' 
       
   764                                         with:fileTypeString
       
   765                                         with:(filename asString allBold)
       
   766                                         with:(nFilesToDelete = 1 ifTrue:'' ifFalse:['\\(' , nFilesToDelete printString , ' files alltogether)']) withCRs )
       
   767                     labels:(resources array:labels)
       
   768                     values:values
       
   769                     default:(values indexOf:#yes).
       
   770             ] ifFalse:[
       
   771                 answer := #yesToAll.
       
   772             ].
       
   773 
       
   774             answer == #cancel ifTrue:[
   744                 ^ self.
   775                 ^ self.
   745             ]
   776             ].
   746         ].
   777 
   747         ask ifTrue:[
   778             answer == #yesToAll ifTrue:[
   748             nFilesToDelete = 1 ifTrue:[
   779                 ask := false.
   749                 labels := #('No' 'Yes').
   780                 answer := #yes.
   750                 values := #(#no #yes).
   781             ].
   751             ] ifFalse:[
   782 
   752                 labels := #('Cancel' 'No' 'Yes' 'Yes to All' ).
   783             answer == #yes ifTrue:[
   753                 values := #(#cancel #no #yes #yesToAll).
   784                 askForNonEmptyDirectory := true.
   754             ].
   785                 filename isSymbolicLink ifFalse:[
   755             retVal := Dialog 
   786                     filename isNonEmptyDirectory ifTrue:[
   756                 confirmWithCancel:(resources 
   787                         askForNonEmptyDirectory := Dialog
   757                                     stringWithCRs:'Really delete\\  %1%2%3 ?' 
   788                                     confirmWithCancel:(('Directory ''%1'' is not empty', Character cr asString, 'remove anyway ?') 
   758                                     with:fileTypeString
   789                                                         bindWith:filename pathName allBold) 
   759                                     with:(filename asString allBold)
   790                                     labels:( #('Cancel' 'Keep' 'Remove') )
   760                                     with:(nFilesToDelete = 1 ifTrue:'' ifFalse:['\\(' , nFilesToDelete printString , ' files alltogether)']) withCRs )
   791                                     values:#(nil false true) 
   761                 labels:(resources array:labels)
   792                                     default:3.
   762                 values:values
   793                         askForNonEmptyDirectory == nil ifTrue:[
   763                 default:(values indexOf:#yes).
   794                             ^ self
   764         ] ifFalse:[
   795                         ].
   765             retVal := #yesToAll.
       
   766         ].
       
   767         retVal == #cancel ifTrue:[
       
   768             ^ self.
       
   769         ].
       
   770 
       
   771         retVal == #yesToAll ifTrue:[
       
   772             ask := false.
       
   773             retVal := #yes.
       
   774         ].
       
   775         retVal == #yes ifTrue:[
       
   776             askForNonEmptyDirectory := true.
       
   777             filename isSymbolicLink ifFalse:[
       
   778                 filename isNonEmptyDirectory ifTrue:[
       
   779                     askForNonEmptyDirectory := Dialog
       
   780                                 confirmWithCancel:(('Directory ''%1'' is not empty', Character cr asString, 'remove anyway ?') 
       
   781                                                     bindWith:filename pathName allBold) 
       
   782                                 labels:( #('Cancel' 'Keep' 'Remove') )
       
   783                                 values:#(nil false true) 
       
   784                                 default:3.
       
   785                     askForNonEmptyDirectory == nil ifTrue:[
       
   786                         ^ self
       
   787                     ].
   796                     ].
   788                 ].
   797                 ].
   789             ].
   798                 askForNonEmptyDirectory ifTrue:[
   790             askForNonEmptyDirectory ifTrue:[
   799                     self deleteFile:filename.
   791                 self deleteFile:filename.
   800                 ]
   792             ]
   801             ].
   793         ].
   802         ].
   794     ].
   803     ].
   795 ! !
   804 ! !
   796 
   805 
   797 !FileOperation::Move class methodsFor:'actions'!
   806 !FileOperation::Move class methodsFor:'actions'!
   863 ! !
   872 ! !
   864 
   873 
   865 !FileOperation::Move class methodsFor:'documentation'!
   874 !FileOperation::Move class methodsFor:'documentation'!
   866 
   875 
   867 version
   876 version
   868     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.41 2004-03-04 10:08:18 cg Exp $'
   877     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.42 2004-03-08 19:04:50 cg Exp $'
   869 ! !
   878 ! !
   870 
   879 
   871 !FileOperation::Move methodsFor:'accessing'!
   880 !FileOperation::Move methodsFor:'accessing'!
   872 
   881 
   873 colOfMovedFiles
   882 colOfMovedFiles
  1033 ! !
  1042 ! !
  1034 
  1043 
  1035 !FileOperation::Rename class methodsFor:'documentation'!
  1044 !FileOperation::Rename class methodsFor:'documentation'!
  1036 
  1045 
  1037 version
  1046 version
  1038     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.41 2004-03-04 10:08:18 cg Exp $'
  1047     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.42 2004-03-08 19:04:50 cg Exp $'
  1039 ! !
  1048 ! !
  1040 
  1049 
  1041 !FileOperation::Rename methodsFor:'accessing'!
  1050 !FileOperation::Rename methodsFor:'accessing'!
  1042 
  1051 
  1043 renamedFiles
  1052 renamedFiles
  1139 ! !
  1148 ! !
  1140 
  1149 
  1141 !FileOperation class methodsFor:'documentation'!
  1150 !FileOperation class methodsFor:'documentation'!
  1142 
  1151 
  1143 version
  1152 version
  1144     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.41 2004-03-04 10:08:18 cg Exp $'
  1153     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.42 2004-03-08 19:04:50 cg Exp $'
  1145 ! !
  1154 ! !