"{ Package: 'stx:libtool2' }"
FileOperations subclass:#Copy
instanceVariableNames:'colOfCopiedFiles'
classVariableNames:''
poolDictionaries:''
category:'Interface-Support'
!
!Copy class methodsFor:'actions'!
copyFile:aSourceFile to:aDestFile
"delete current selected files/directories
"
|instance|
instance := self new.
instance copyFile:aSourceFile to:aDestFile.
^ instance
!
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
"delete current selected files/directories
"
|instance|
instance := self new.
instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
^ instance
!
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy
"delete current selected files/directories
"
|instance|
instance := self new.
instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy.
^ instance
!
copyFiles:aColOfSourceFiles to:aDirectory
"delete current selected files/directories
"
|instance|
instance := self new.
instance copyFiles:aColOfSourceFiles to:aDirectory.
^ instance
!
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
"delete current selected files/directories
"
|instance|
instance := self new.
instance copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
^ instance
!
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy
"delete current selected files/directories
"
|instance|
instance := self new.
instance copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy.
^ instance
! !
!Copy methodsFor:'accessing'!
colOfCopiedFiles
"return the value of the instance variable 'colOfCopiedFiles' (automatically generated)"
colOfCopiedFiles isNil ifTrue:[
colOfCopiedFiles := OrderedCollection new.
].
^ colOfCopiedFiles
! !
!Copy methodsFor:'actions'!
copyFile:aSourceFile to:aDestFile
"defete current selected files/directories
"
self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true
!
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
"copy to
"
self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true copyFileIfSame:true
!
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy
"copy to
"
|newFile fileString targetDirectory targetIsDirectory sourceIsDirectory suffix|
sourceIsDirectory := aSourceFile isDirectory.
targetIsDirectory := aDestFile isDirectory.
targetIsDirectory ifTrue:[
targetDirectory := aDestFile.
newFile := aDestFile construct:(aSourceFile baseName).
] ifFalse:[
targetDirectory := aDestFile directory.
newFile := aDestFile.
].
"/ do not copy if destination directory doest exist.
(targetDirectory exists not) ifTrue:[
DialogBox warn:'cant copy to not existing directory ', targetDirectory asString.
result := false.
^ self
].
(newFile exists) ifTrue:[
((newFile asString = aSourceFile asString) and:[copy]) ifTrue:[
[newFile exists] whileTrue:[
suffix := newFile suffix.
fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
newFile := targetDirectory construct:fileString.
].
] ifFalse:[
overWriteWarning ifTrue:[
(self fileExistDialogFor:newFile) ifFalse:[
result := false.
^ self.
]
] ifFalse:[
result := false.
^ self.
]
].
].
Error handle:[:ex|
"was not able to copy it"
WarningBox warn:'on copy file - ', ex errorString.
self errorString:('on copy file - ', ex description asString).
result := false.
] do:[
sourceIsDirectory ifTrue:[
OperatingSystem recursiveCopyDirectory:(aSourceFile pathName)
to:newFile.
] ifFalse:[
aSourceFile copyTo:newFile.
].
DirectoryContents flushCachedDirectory:(aSourceFile directory).
result := true.
].
!
copyFiles:aColOfSourceFiles to:aDirectory
^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true.
!
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:true.
!
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy
|newFile suffix fileString sourceIsDirectory askResult|
(aDirectory exists not) ifTrue:[
DialogBox warn:'cant copy to not existing directory ', aDirectory asString.
result := false.
^ self
].
(aDirectory isDirectory not) ifTrue:[
DialogBox warn:'destination ', aDirectory asString, ' is not a directory'.
result := false.
^ self
].
aColOfSourceFiles do:[: filename |
newFile := aDirectory construct:(filename baseName).
sourceIsDirectory := filename isDirectory.
(newFile exists) ifTrue:[
askResult := true.
((newFile asString = filename asString) and:[copy]) ifTrue:[
[newFile exists] whileTrue:[
suffix := newFile suffix.
fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
newFile := aDirectory construct:fileString.
].
] ifFalse:[
overWriteWarning ifTrue:[
askResult := (self fileExistDialogFor:newFile withCancel:true).
askResult isNil ifTrue:[
result := false.
^ self.
]
]
].
].
askResult ifTrue:[
Error handle:[:ex|
"was not able to copy it"
result := false.
self errorString:('on copy file - ', ex description asString).
( Dialog
confirm:('error on copy file - ', ex description asString)
title:'Copy'
yesLabel:'Continue'
noLabel:'Abort') ifFalse:[
^ self.
].
] do:[
sourceIsDirectory ifTrue:[
OperatingSystem recursiveCopyDirectory:(filename asString)
to:(newFile asString).
] ifFalse:[
filename copyTo:newFile.
].
].
self colOfCopiedFiles add:filename
]
].
DirectoryContents flushCachedDirectory:aDirectory.
result := true.
! !
!Copy class methodsFor:'documentation'!
version
^ '$Header$'
! !