"{ Package: 'stx:libtool2' }"
Object subclass:#FileOperation
instanceVariableNames:'errorString result'
classVariableNames:''
poolDictionaries:''
category:'Interface-Support'
!
FileOperation subclass:#Copy
instanceVariableNames:'colOfCopiedFiles'
classVariableNames:''
poolDictionaries:''
privateIn:FileOperation
!
FileOperation subclass:#Create
instanceVariableNames:'createdFile'
classVariableNames:'LastCreatedDirectory LastCreatedFile'
poolDictionaries:''
privateIn:FileOperation
!
FileOperation subclass:#Delete
instanceVariableNames:'fileName'
classVariableNames:''
poolDictionaries:''
privateIn:FileOperation
!
FileOperation subclass:#Move
instanceVariableNames:'colOfMovedFiles'
classVariableNames:''
poolDictionaries:''
privateIn:FileOperation
!
FileOperation subclass:#Rename
instanceVariableNames:'renamedFiles'
classVariableNames:''
poolDictionaries:''
privateIn:FileOperation
!
!FileOperation class methodsFor:'defaults'!
copyMoveIfExistSuffixString
^ '.copy'
! !
!FileOperation class methodsFor:'private class access'!
copy
^ Copy
!
create
^ Create
!
delete
^ Delete
!
move
^ Move
!
rename
^ Rename
! !
!FileOperation methodsFor:'accessing'!
errorString
"return the value of the static variable 'ErrorString' (automatically generated)"
^ errorString
!
errorString:something
"set the value of the static variable 'ErrorString' (automatically generated)"
errorString := something.
!
result
"return the value of the instance variable 'result' (automatically generated)"
^ result
!
result:something
"set the value of the instance variable 'result' (automatically generated)"
result := something.
! !
!FileOperation methodsFor:'dialogs'!
fileExistDialogFor:aFile
^ self fileExistDialogFor:aFile withCancel:false.
!
fileExistDialogFor:aFile withCancel:aBoolean
| stream string|
aFile exists ifTrue:[
stream := WriteStream on:''.
stream nextPutAll:'overwrite '.
stream nextPutAll:(aFile asString).
stream nextPutAll:' from '.
(aFile modificationTime) printOn:stream format:'%(Day)-%(mon)-%(year) %h:%m:%s'.
stream nextPutAll:' with size of '.
stream nextPutAll:aFile fileSize asString.
stream cr.
stream nextPutAll:' with '.
stream nextPutAll:aFile asString.
stream nextPutAll:' from '.
(aFile modificationTime) printOn:stream format:'%(Day)-%(mon)-%(year) %h:%m:%s'.
stream nextPutAll:' with size of '.
stream nextPutAll:aFile fileSize asString.
string := stream contents.
stream close.
aBoolean ifTrue:[
^ (Dialog confirmWithCancel:(string)).
] ifFalse:[
^ (Dialog confirm:(string)).
].
].
^ true
! !
!FileOperation::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
! !
!FileOperation::Copy class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.13 2002-12-19 15:41:13 cg Exp $'
! !
!FileOperation::Copy methodsFor:'accessing'!
colOfCopiedFiles
"return the value of the instance variable 'colOfCopiedFiles' (automatically generated)"
colOfCopiedFiles isNil ifTrue:[
colOfCopiedFiles := OrderedCollection new.
].
^ colOfCopiedFiles
! !
!FileOperation::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:[
Dialog 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.
^ self
] do:[
sourceIsDirectory ifTrue:[
OperatingSystem recursiveCopyDirectory:(aSourceFile pathName)
to:newFile.
] ifFalse:[
aSourceFile copyTo:newFile.
].
].
DirectoryContents flushCachedDirectoryFor:(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:[
Dialog warn:'cant copy to not existing directory ', aDirectory asString.
result := false.
^ self
].
(aDirectory isDirectory not) ifTrue:[
Dialog 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 withoutSuffix baseName, 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 flushCachedDirectoryFor:aDirectory.
result := true.
! !
!FileOperation::Create class methodsFor:'actions'!
createDirectoryIn:aDirectory
|instance|
instance := self new.
instance createDirectoryIn:aDirectory.
^ instance
!
createFileIn:aFile
|instance|
instance := self new.
instance createFileIn:aFile.
^ instance
!
createHardLinkIn:aFile
"create an new hard link in a files directory"
|instance|
instance := self new.
instance createHardLinkIn:aFile.
^ instance
!
createSoftLinkIn:aFile
"create an new soft link in a files directory"
|instance|
instance := self new.
instance createSoftLinkIn:aFile.
^ instance
! !
!FileOperation::Create class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.13 2002-12-19 15:41:13 cg Exp $'
! !
!FileOperation::Create methodsFor:'accessing'!
createdFile
"return the value of the instance variable 'createdFile' (automatically generated)"
^ createdFile
!
createdFile:something
"set the value of the instance variable 'createdFile' (automatically generated)"
createdFile := something.
! !
!FileOperation::Create methodsFor:'actions'!
createDirectoryIn:startDirectory
|msg startBaseName defaultDirectory newName newFile|
startBaseName := startDirectory baseName.
LastCreatedDirectory isNil ifTrue:[
defaultDirectory := startBaseName.
] ifFalse:[
defaultDirectory := LastCreatedDirectory baseName.
].
newName := Dialog
request:('Create new directory in ', startBaseName)
initialAnswer:defaultDirectory
okLabel:'Create'
title:'Create Directory'
onCancel:[
self result:false.
^ self
].
newName isEmpty ifTrue:[
self result:false.
^ self
].
newFile := startDirectory construct:newName.
newFile exists ifTrue:[
Dialog warn:(newName, ' already exists.').
result := false.
^ self
].
newFile makeDirectory ifFalse:[
msg := errorString := ('cannot create directory '', newName,'' !!') , '(', (OperatingSystem lastErrorString) , ')'.
errorString := msg.
Dialog warn:errorString.
result := false.
^ self
].
self createdFile:newFile.
LastCreatedDirectory := newFile.
result := true.
!
createFileIn:aFile
"create an empty file"
|aStream msg file directory newName defaultFile|
aFile isDirectory ifTrue:[
directory := aFile
] ifFalse:[
directory := aFile directory.
file := aFile
].
LastCreatedFile isNil ifTrue:[
defaultFile := aFile baseName.
] ifFalse:[
defaultFile := LastCreatedFile baseName.
].
newName := Dialog
request:('Create new file in ', directory baseName)
initialAnswer:defaultFile
okLabel:'Create'
title:'Create a File'
onCancel:[
self result:false.
^ self
].
newName isEmpty ifTrue:[
self result:false.
] ifFalse:[
| newFile |
newFile := directory construct:newName.
newFile exists ifTrue:[
(Dialog
confirm:(newName, ' already exists truncate ?')
yesLabel:('Truncate')
noLabel:('Cancel'))
ifFalse:[
self result:false.
^ self
].
].
FileStream openErrorSignal handle:[:ex|
msg := ('Cannot create file '', newName,'' !!') , '(' , (FileStream lastErrorString) , ')'.
errorString := msg.
self result:false.
^ Dialog warn:errorString
] do:[
aStream := newFile newReadWriteStream.
].
aStream notNil ifTrue:[
aStream close.
self createdFile:newFile.
LastCreatedFile := newFile.
self result:true.
] ifFalse:[
msg := ('Cannot create file '', newName, '' !!') , '(' , (FileStream lastErrorString) , ')'.
errorString := msg.
self result:false.
^ Dialog warn:errorString
].
].
!
createHardLinkIn:aFile
"create an new hard link in a files directory"
self createLinkIn:aFile soft:false.
!
createLinkIn:aFile soft:symbolic
"create an new soft or hard link in aFile's directory"
|newPath oldPath box string if1 if2 err newPathFile oldPathFile|
aFile isDirectory ifTrue:[
newPath := aFile asValue.
oldPath := aFile asValue.
] ifFalse:[
newPath := aFile directory asValue.
oldPath := aFile asValue.
].
box := Dialog new.
string := 'Create ', (symbolic ifTrue:['symbolic'] ifFalse:['hard']) ,' link:'.
(box addTextLabel:string) adjust:#left.
if1 := box addFilenameInputFieldOn:newPath in:nil tabable:true.
(box addTextLabel:'to:') adjust:#left.
if2 := box addFilenameInputFieldOn:oldPath in:nil value tabable:true.
box addAbortAndOkButtons.
aFile isDirectory not ifTrue:[
box focusOnField:if1.
].
box showAtPointer.
box accepted ifTrue:[
newPath := newPath value.
oldPath := oldPath value.
(oldPath size == 0) ifTrue:[
err := 'no destination entered'.
] ifFalse:[
(oldPath size == 0) ifTrue:[
err := 'no link name entered'.
] ifFalse:[
newPathFile := newPath asFilename.
newPathFile exists ifTrue:[
err := newPath, ' already exists'.
] ifFalse:[
oldPathFile := oldPath asFilename.
oldPathFile exists not ifTrue:[
err := oldPath, ' does not exist '.
] ifFalse:[
((symbolic not) and:[oldPathFile isDirectory]) ifTrue:[
err := oldPath,' is a directory'.
] ifFalse:[
ErrorSignal handle:[:ex |
err := ex errorString
] do:[
symbolic ifTrue:[
OperatingSystem createSymbolicLinkFrom:oldPath to:newPath.
] ifFalse:[
OperatingSystem createHardLinkFrom:oldPath to:newPath
].
self createdFile:newPathFile.
self result:true.
^ self
].
]
]
]
]
].
err notNil ifTrue:[
Dialog warn:(err allBold).
self errorString:err.
^ self
].
].
self result:false.
!
createSoftLinkIn:aFile
"create an new soft link in a files directory"
self createLinkIn:aFile soft:true.
! !
!FileOperation::Delete class methodsFor:'actions'!
deleteFile:aFileOrDirectory
"delete current selected files/directories
"
|instance|
instance := self new.
instance deleteFile:aFileOrDirectory.
^ instance
!
deleteFiles:aColOfFiles
"delete current selected files/directories
"
|instance|
instance := self new.
instance deleteFiles:aColOfFiles.
^ instance
! !
!FileOperation::Delete class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.13 2002-12-19 15:41:13 cg Exp $'
! !
!FileOperation::Delete methodsFor:'actions'!
deleteFile:aFileOrDirectory
| file isDirectory |
aFileOrDirectory notNil ifTrue:[
file := aFileOrDirectory asFilename.
file exists ifTrue:[
isDirectory := file isDirectory.
Error handle:[:ex|
"was not able to remove it"
Smalltalk beep.
self errorString:((ex description, '\', ex signal notifierString) withCRs).
result := false.
^ self.
] do:[
isDirectory ifTrue:[file recursiveRemove] ifFalse:[file remove].
].
"/ flush parent directory or directory
]
].
DirectoryContents flushCachedDirectoryFor:(file directory).
result := true.
!
deleteFiles:colOfFiles
"delete current selected files/directories
"
| retVal ask size labels values |
ask := true.
size := colOfFiles size.
colOfFiles do:[: filename |
ask ifTrue:[
size = 1 ifTrue:[
labels := #('Yes' 'No' 'Cancel').
values := #(#yes #no #cancel).
] ifFalse:[
labels := #('Yes' 'No' 'Yes to All' 'Cancel').
values := #(#yes #no #yesToAll #cancel).
].
retVal := Dialog
confirmWithCancel:('Really delete %1 ?' bindWith:filename asString allBold)
labels:labels
values:values
default:1.
].
retVal == #cancel ifTrue:[
^ self.
].
retVal == #yes ifTrue:[
self deleteFile:filename.
].
retVal == #yesToAll ifTrue:[
self deleteFile:filename.
ask := false.
retVal := #yes.
].
].
! !
!FileOperation::Move class methodsFor:'actions'!
moveFile:aSourceFile to:aDestFile
"delete current selected files/directories
"
|instance|
instance := self new.
instance moveFile:aSourceFile to:aDestFile.
^ instance
!
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
"delete current selected files/directories
"
|instance|
instance := self new.
instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
^ instance
!
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
"delete current selected files/directories
"
|instance|
instance := self new.
instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move.
^ instance
!
moveFiles:aColOfSourceFiles to:aDirectory
"delete current selected files/directories
"
|instance|
instance := self new.
instance moveFiles:aColOfSourceFiles to:aDirectory.
^ instance
!
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
"delete current selected files/directories
"
|instance|
instance := self new.
instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
^ instance
!
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
"delete current selected files/directories
"
|instance|
instance := self new.
instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move.
^ instance
! !
!FileOperation::Move class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.13 2002-12-19 15:41:13 cg Exp $'
! !
!FileOperation::Move methodsFor:'accessing'!
colOfMovedFiles
"return the value of the instance variable 'colOfMovedFiles' (automatically generated)"
colOfMovedFiles isNil ifTrue:[
colOfMovedFiles := OrderedCollection new.
].
^ colOfMovedFiles
! !
!FileOperation::Move methodsFor:'actions'!
moveFile:aSourceFile to:aDestFile
^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:true.
!
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:true
!
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
|newFile fileString targetDirectory targetIsDirectory suffix|
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:[
Dialog warn:'cant move to not existing directory ', targetDirectory asString.
result := false.
^ self
].
(newFile exists) ifTrue:[
((newFile asString = aSourceFile asString) and:[move]) 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.
^ self
] do:[
aSourceFile moveTo:newFile.
].
DirectoryContents flushCachedDirectoryFor:(aSourceFile directory).
result := true.
!
moveFiles:aColOfSourceFiles to:aDirectory
^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true
!
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:true
!
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
|newFile suffix fileString askResult|
(aDirectory exists not) ifTrue:[
Dialog warn:'cant move to not existing directory ', aDirectory asString.
result := false.
^ self
].
(aDirectory isDirectory not) ifTrue:[
Dialog warn:'destination ', aDirectory asString, ' is not a directory'.
result := false.
^ self
].
aColOfSourceFiles do:[: filename |
newFile := aDirectory construct:filename baseName.
(newFile exists) ifTrue:[
askResult := true.
((newFile asString = filename asString) and:[move]) 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 move file - ', ex description asString).
( Dialog
confirm:('error on move file - ', ex description asString)
title:'Move'
yesLabel:'Continue'
noLabel:'Abort') ifFalse:[
^ self.
].
] do:[
filename moveTo:newFile.
].
self colOfMovedFiles add:filename
]
].
DirectoryContents flushCachedDirectoryFor:aDirectory.
result := true.
! !
!FileOperation::Rename class methodsFor:'actions'!
renameFile:oldFile to:newName
"move from to
"
|instance|
instance := self new.
instance renameFile:oldFile to:newName.
^ instance
!
renameFiles:aColOfFiles
"move from to
"
|instance|
instance := self new.
instance renameFiles:aColOfFiles.
^ instance
! !
!FileOperation::Rename class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.13 2002-12-19 15:41:13 cg Exp $'
! !
!FileOperation::Rename methodsFor:'accessing'!
renamedFiles
"return the value of the instance variable 'lastRenamedFile' (automatically generated)"
renamedFiles isNil ifTrue:[
renamedFiles := OrderedCollection new.
].
^ renamedFiles
! !
!FileOperation::Rename methodsFor:'actions'!
renameFile:oldFile to:newName
"rename a file (or directory)"
|old new msg|
(oldFile isNil or:[newName isNil]) ifTrue:[
result := false
].
(oldFile asString isBlank or:[newName isBlank]) ifTrue:[
result := false
].
(oldFile baseName = newName) ifTrue:[
result := false
].
old := oldFile.
new := oldFile directory construct:newName.
OperatingSystem errorSignal handle:[:ex|
msg := ('Cannot rename file ', old baseName,' to ', newName,' !!'), '\\(' ,(OperatingSystem lastErrorString) , ')'.
Dialog warn:msg withCRs.
result := false
] do:[
new exists ifTrue:[
(Dialog confirm:(new baseName allBold, ' already exists - rename (i.e. overwrite) anyway ?'))
ifFalse:[
result := false.
^ self.
]
].
old renameTo:new.
self renamedFiles add:new.
].
result := true.
!
renameFiles:aColOfFiles
"rename the selected file(s)"
|queryBox b lastNewName lastOldName initialText oldName|
queryBox := FilenameEnterBox new.
queryBox okText:'Rename'.
aColOfFiles size > 1 ifTrue:[
b := queryBox addAbortButtonLabelled:'Cancel All'.
b action:[^ self]
].
aColOfFiles do:[:oldFile |
oldName := oldFile baseName asString.
queryBox title:('Rename ' , oldName , ' to:').
lastNewName notNil ifTrue:[
initialText := FileBrowser goodRenameDefaultForFile:oldName lastOld:lastOldName lastNew:lastNewName
].
queryBox initialText:(initialText ? oldName).
queryBox
action:[:newName |
(self renameFile:oldFile to:newName asString) ifTrue:[
result := true
].
lastOldName := oldName.
lastNewName := newName
].
queryBox showAtPointer
]
! !
!FileOperation class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.13 2002-12-19 15:41:13 cg Exp $'
! !