FileOperation.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 05 Oct 2022 11:57:26 +0100
branchjv
changeset 19637 28f5bfaa093d
parent 17138 72bf03c1ff80
permissions -rw-r--r--
`NewSystemBrowser`: avoid updating package info when changed class is not selected This speeds up loading of packages when browser is open as it does not (needlessly) update package info which may involve scm round-trip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     1
"
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     2
 COPYRIGHT (c) 2003 by eXept Software AG
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
     3
	      All Rights Reserved
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     4
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     5
 This software is furnished under a license and may be used
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     6
 only in accordance with the terms of that license and with the
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     8
 be provided or otherwise made available to, or used by, any
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
     9
 other person.  No title to or ownership of the software is
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    10
 hereby transferred.
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    11
"
6618
72df4c3bb723 FileOperation moved
Claus Gittinger <cg@exept.de>
parents: 6374
diff changeset
    12
"{ Package: 'stx:libtool' }"
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    13
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
    14
"{ NameSpace: Smalltalk }"
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
    15
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    16
Object subclass:#FileOperation
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
    17
	instanceVariableNames:'errorString result actionForAll'
3975
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    18
	classVariableNames:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    19
	poolDictionaries:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    20
	category:'Interface-Support'
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    21
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    22
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    23
FileOperation subclass:#Copy
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
    24
	instanceVariableNames:'copiedFiles newFiles'
3975
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    25
	classVariableNames:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    26
	poolDictionaries:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    27
	privateIn:FileOperation
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    28
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    29
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    30
FileOperation::Copy subclass:#CopyCorrupted
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
    31
	instanceVariableNames:''
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    32
	classVariableNames:''
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    33
	poolDictionaries:''
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    34
	privateIn:FileOperation
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    35
!
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    36
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    37
FileOperation subclass:#Create
3975
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    38
	instanceVariableNames:'createdFile'
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    39
	classVariableNames:'LastCreatedDirectory LastCreatedFile'
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    40
	poolDictionaries:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    41
	privateIn:FileOperation
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    42
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    43
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    44
FileOperation subclass:#Delete
3975
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    45
	instanceVariableNames:'fileName'
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    46
	classVariableNames:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    47
	poolDictionaries:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    48
	privateIn:FileOperation
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    49
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    50
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    51
FileOperation::Delete subclass:#Erase
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    52
	instanceVariableNames:''
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    53
	classVariableNames:''
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    54
	poolDictionaries:''
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    55
	privateIn:FileOperation
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    56
!
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    57
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    58
FileOperation subclass:#Move
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
    59
	instanceVariableNames:'movedFiles'
3975
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    60
	classVariableNames:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    61
	poolDictionaries:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    62
	privateIn:FileOperation
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    63
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    64
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    65
FileOperation subclass:#Rename
3975
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    66
	instanceVariableNames:'renamedFiles'
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    67
	classVariableNames:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    68
	poolDictionaries:''
dcaac82381dc share goodRenameDefault code with FileBrowser
Claus Gittinger <cg@exept.de>
parents: 3877
diff changeset
    69
	privateIn:FileOperation
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    70
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    71
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    72
!FileOperation class methodsFor:'documentation'!
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    73
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    74
copyright
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    75
"
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    76
 COPYRIGHT (c) 2003 by eXept Software AG
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
    77
	      All Rights Reserved
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    78
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    79
 This software is furnished under a license and may be used
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    80
 only in accordance with the terms of that license and with the
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    81
 inclusion of the above copyright notice.   This software may not
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    82
 be provided or otherwise made available to, or used by, any
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    83
 other person.  No title to or ownership of the software is
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    84
 hereby transferred.
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    85
"
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
    86
! !
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    87
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    88
!FileOperation class methodsFor:'instance creation'!
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    89
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    90
copyCorruptedFile:aSourceFile to:aDestFile
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
    91
    ^ CopyCorrupted new
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
    92
        copyFile:aSourceFile to:aDestFile withOverWriteWarning:false copyFileIfSame:false
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    93
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    94
    "Created: / 07-02-2007 / 18:41:24 / cg"
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
    95
!
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
    96
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
    97
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarningBoolean copyFileIfSame:copyIfSameBoolean
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
    98
    ^ Copy
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
    99
	copyFile:aSourceFile to:aDestFile
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   100
	withOverWriteWarning:overWriteWarningBoolean
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   101
	copyFileIfSame:copyIfSameBoolean
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   102
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   103
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   104
copyFiles:aColOfSourceFiles to:aDirectory
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   105
    ^ Copy copyFiles:aColOfSourceFiles to:aDirectory
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   106
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   107
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   108
createDirectoryIn:aDirectory
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   109
    ^ Create createDirectoryIn:aDirectory
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   110
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   111
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   112
createDirectoryIn:aDirectory initialAnswer:defaultAnswer
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   113
    ^ Create createDirectoryIn:aDirectory initialAnswer:defaultAnswer
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   114
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   115
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   116
createFileIn:aDirectory
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   117
    ^ Create createFileIn:aDirectory
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   118
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   119
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   120
createHardLinkIn:dir
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   121
    ^ Create createHardLinkIn:dir
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   122
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   123
6151
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   124
createLinkIn:dir soft:soft
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   125
    ^ Create createLinkIn:dir soft:soft
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   126
!
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   127
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   128
createSoftLinkIn:dir
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   129
    ^ Create createSoftLinkIn:dir
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   130
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   131
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   132
deleteFiles:colOfFiles confirm:confirm
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   133
    ^ Delete deleteFiles:colOfFiles confirm:confirm
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   134
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   135
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   136
eraseFiles:colOfFiles confirm:confirm
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   137
    ^ Erase deleteFiles:colOfFiles confirm:confirm
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   138
!
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   139
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   140
moveFile:aSourceFile to:aDestFile
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   141
    ^ Move moveFile:aSourceFile to:aDestFile
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   142
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   143
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   144
moveFiles:aCollectionOfFiles to:aDestDirectory
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   145
    ^ Move moveFiles:aCollectionOfFiles to:aDestDirectory
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   146
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   147
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   148
renameFile:filename to:newFileString
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   149
    ^ Rename renameFile:filename to:newFileString
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   150
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   151
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   152
renameFiles:aCollectionofFilenames
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   153
    ^ Rename renameFiles:aCollectionofFilenames
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   154
! !
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   155
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   156
!FileOperation class methodsFor:'defaults'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   157
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   158
suffixForCopyOverExistingFile
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   159
    ^ '.copy'
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   160
! !
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   161
15948
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
   162
!FileOperation class methodsFor:'queries'!
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
   163
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
   164
isAbstract
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
   165
    ^ self == FileOperation
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
   166
! !
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
   167
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   168
!FileOperation methodsFor:'accessing'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   169
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   170
errorString
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   171
    ^ errorString
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   172
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   173
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   174
errorString:something
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   175
    errorString := something.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   176
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   177
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   178
result
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   179
    ^ result
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   180
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   181
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   182
result:something
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   183
    result := something.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   184
! !
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   185
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   186
!FileOperation methodsFor:'dialogs & helpers'!
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   187
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   188
checkDirectoryExists:aDirectory
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   189
    aDirectory exists ifFalse:[
14187
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
   190
        (Dialog confirm:(AbstractFileBrowser classResources 
9663
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   191
                            stringWithCRs:'Non-existing directory: %1\\Create?' 
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   192
                            with:aDirectory asString)
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   193
        ) ifFalse:[
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   194
            ^ false
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   195
        ].
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   196
        aDirectory recursiveMakeDirectory.
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   197
        aDirectory exists ifFalse:[
14187
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
   198
            Dialog warn:(AbstractFileBrowser classResources 
9663
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   199
                            string:'Failed to create directory: %1').
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   200
            ^ false
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   201
        ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   202
    ].
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   203
    aDirectory isDirectory ifFalse:[
9663
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   204
        Dialog warn:('Not a directory: %1' bindWith:aDirectory asString).
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   205
        ^ false
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   206
    ].
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   207
    ^ true
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   208
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   209
    "Created: / 07-02-2007 / 18:30:49 / cg"
9663
7837d4646761 changed: #checkDirectoryExists:
Claus Gittinger <cg@exept.de>
parents: 9650
diff changeset
   210
    "Modified: / 09-12-2010 / 08:45:45 / cg"
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   211
!
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   212
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   213
fileExistsDialogForNewFile:newFile oldFile:oldFile withCancel:withCancel
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   214
    "return true, if the file should be moved/copied.
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   215
     Ask user if oldFile exists."
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   216
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   217
    ^ self fileExistsDialogForNewFile:newFile oldFile:oldFile withCancel:withCancel withRemoveIfSame:false.
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   218
!
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   219
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
   220
fileExistsDialogForNewFile:newFile oldFile:oldFile withCancel:withCancel withRemoveIfSame:withRemoveIfSame
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   221
    "return true, if the file should be moved/copied.
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   222
     If oldFile exists, ask user.
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   223
     If withRemoveIfSame is true, two additional possible values are returned:
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   224
        #removeSource and #removeDestination.
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   225
    "
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   226
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   227
    ^ self
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   228
        fileExistsDialogForNewFile:newFile oldFile:oldFile withCancel:withCancel withRemoveIfSame:withRemoveIfSame
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   229
        withAllAction:false
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   230
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   231
    "Modified: / 20-03-2012 / 11:44:51 / cg"
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   232
!
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   233
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   234
fileExistsDialogForNewFile:newFile oldFile:oldFile withCancel:withCancel withRemoveIfSame:withRemoveIfSame withAllAction:withAllAction
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   235
    "return true, if the file should be moved/copied.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   236
     If oldFile exists, ask user.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   237
     If withRemoveIfSame is true, two additional possible values are returned:
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   238
        #removeSource and #removeDestination.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   239
    "
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   240
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   241
    |msg oldSize newSize sameContents resources sourceType destType labels values default olderOrNewer
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   242
     forAllHolder answer oldFileIsDirectory newFileIsDirectory oldFileTime newFileTime|
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   243
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   244
    newFile exists ifFalse:[ ^ true ].
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   245
    oldSize := oldFile fileSize.
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   246
    newSize := newFile fileSize.
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   247
5888
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   248
    sameContents := false.
15453
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   249
    oldFileIsDirectory := oldFile isDirectory.
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   250
    newFileIsDirectory := newFile isDirectory.
5888
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   251
15453
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   252
    newFileIsDirectory ifTrue:[
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   253
        oldFileIsDirectory ifTrue:[
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   254
            "/ could (should?) recursively look for same contents here...
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   255
        ].
5888
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   256
    ] ifFalse:[
15453
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   257
        oldFileIsDirectory ifFalse:[
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   258
            sameContents := oldSize = newSize and:[oldFile sameContentsAs:newFile].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   259
        ]
5888
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   260
    ].
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   261
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   262
    resources := AbstractFileBrowser classResources.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   263
5888
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   264
    "/ for now:
15453
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   265
    oldFileIsDirectory ~~ newFileIsDirectory ifTrue:[
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   266
        Dialog warn:(resources string:'Will not overwrite directory with file and vice versa.').
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   267
        ^  false.
5888
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   268
    ].
f2758e87cb4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5862
diff changeset
   269
15453
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   270
    sourceType := newFileIsDirectory ifTrue:'directory' ifFalse:'file'.
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   271
    destType := oldFileIsDirectory ifTrue:'directory' ifFalse:'file'.
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   272
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   273
    sameContents ifTrue:[
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   274
        msg := 'Overwrite existing destination %7:\\  %1\    size: %3 of %2\\with %8 source (same contents):\\  %4\    size: %6 of %5'.
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   275
    ] ifFalse:[
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   276
        msg := 'Overwrite existing destination %7:\\  %1\    size: %3 of %2\\with %8 source:\\  %4\    size: %6 of %5'.
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   277
    ].
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   278
    newFileTime := newFile modificationTime ? Timestamp now.
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   279
    oldFileTime := oldFile modificationTime ? Timestamp now.
4587
cd82e0c63680 better fileExistsDialog
Claus Gittinger <cg@exept.de>
parents: 4585
diff changeset
   280
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   281
    olderOrNewer := newFileTime < oldFileTime    
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   282
                    ifTrue:[ 'newer' ]
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   283
                    ifFalse:[ 'older' ].
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   284
    msg := resources
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   285
            stringWithCRs:msg
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   286
            withArgs:(Array
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   287
                with:newFile asString allBold
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   288
                with:(newFileTime printStringFormat:'%(Day)-%(mon)-%(year) %h:%m:%s')
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   289
                with:newSize
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   290
                with:oldFile asString allBold
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   291
                with:(oldFileTime printStringFormat:'%(Day)-%(mon)-%(year) %h:%m:%s')
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   292
                with:oldSize
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   293
                with:destType
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   294
                with:(resources string:olderOrNewer) ).
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
   295
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   296
    (sameContents and:[withRemoveIfSame]) ifTrue:[
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   297
        labels := #( 'No' 'Remove Destination' 'Remove Source'  'Yes').
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   298
        values := #( false #removeDestination #removeSource true ).
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   299
        withCancel ifTrue:[ 
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   300
            labels := #('Cancel') , labels.
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   301
            values := #( nil ) , values. 
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   302
        ].
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   303
        default := #removeSource.
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   304
    ] ifFalse:[
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   305
        labels := #( 'No' 'Yes').
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   306
        values := #( false true ).
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   307
        withCancel ifTrue:[ 
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   308
            labels := #('Cancel') , labels.
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   309
            values := #( nil ) , values. 
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   310
        ].
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   311
        default := false.
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
   312
    ].
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   313
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   314
    forAllHolder := false asValue.
15453
8e8f26585ce1 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15096
diff changeset
   315
    Dialog modifyingBoxWith:[:box |
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   316
        withAllAction ifTrue:[
13345
ef9354aa1ab9 aboutToOpenBoxNotificationSignal semantic change (for Jan)
Claus Gittinger <cg@exept.de>
parents: 12726
diff changeset
   317
            box addVerticalSpace:10.
ef9354aa1ab9 aboutToOpenBoxNotificationSignal semantic change (for Jan)
Claus Gittinger <cg@exept.de>
parents: 12726
diff changeset
   318
            box verticalPanel 
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   319
                 add:(CheckBox 
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   320
                        label:'Same action for all' 
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   321
                        model:forAllHolder).
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   322
        ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   323
    ] do:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   324
        answer := OptionBox
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   325
              request:msg
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   326
              label:(resources string:'Overwrite existing file')
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   327
              image:(YesNoBox iconBitmap)
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   328
              buttonLabels:(resources array:labels)
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   329
              values:values
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   330
              default:default
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   331
              onCancel:nil.
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   332
    ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   333
    (withAllAction and:[answer notNil]) ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   334
        actionForAll := answer
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   335
    ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   336
    ^ answer
9512
fc8df478d3f1 changed: #fileExistsDialogForNewFile:oldFile:withCancel:withRemoveIfSame:
Claus Gittinger <cg@exept.de>
parents: 9501
diff changeset
   337
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
   338
    "Created: / 20-03-2012 / 11:44:34 / cg"
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   339
! !
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   340
6285
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   341
!FileOperation methodsFor:'queries'!
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   342
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   343
isErase
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   344
    ^ false
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   345
! !
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   346
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   347
!FileOperation::Copy class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   348
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   349
copyFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   350
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   351
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   352
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   353
    instance copyFile:aSourceFile to:aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   354
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   355
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   356
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   357
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   358
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   359
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   360
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   361
    instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   362
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   363
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   364
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   365
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarningBoolean copyFileIfSame:copyIfSameBoolean
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   366
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   367
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   368
    instance := self new.
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   369
    instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarningBoolean copyFileIfSame:copyIfSameBoolean.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   370
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   371
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   372
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   373
copyFiles:aColOfSourceFiles to:aDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   374
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   375
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   376
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   377
    instance copyFiles:aColOfSourceFiles to:aDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   378
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   379
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   380
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   381
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   382
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   383
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   384
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   385
    instance copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   386
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   387
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   388
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   389
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   390
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   391
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   392
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   393
    instance copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   394
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   395
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   396
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   397
!FileOperation::Copy methodsFor:'accessing'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   398
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   399
colOfCopiedFiles
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   400
    "obsolete - bad name"
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   401
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   402
    ^ self collectionOfCopiedFiles
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   403
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   404
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   405
collectionOfCopiedFiles
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   406
    copiedFiles isNil ifTrue:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   407
	copiedFiles := OrderedCollection new.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   408
    ].
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   409
    ^ copiedFiles
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   410
!
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   411
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   412
collectionOfNewFiles
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   413
    newFiles isNil ifTrue:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   414
	newFiles := OrderedCollection new.
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   415
    ].
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   416
    ^ newFiles
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   417
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   418
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   419
!FileOperation::Copy methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   420
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   421
copyFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   422
    self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   423
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   424
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   425
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   426
    self copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:true
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   427
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   428
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   429
copyFiles:aColOfSourceFiles to:aDirectory
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   430
    ^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true.
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   431
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   432
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   433
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   434
    ^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:true.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   435
! !
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   436
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   437
!FileOperation::Copy methodsFor:'actions-basic'!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   438
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   439
basicCopy:aSourceFile to:newFile
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   440
    aSourceFile isDirectory ifTrue:[
8289
8dcce3984b27 fixed recursive directory copy
Claus Gittinger <cg@exept.de>
parents: 7637
diff changeset
   441
        aSourceFile recursiveCopyTo:newFile.
8dcce3984b27 fixed recursive directory copy
Claus Gittinger <cg@exept.de>
parents: 7637
diff changeset
   442
        "/ OperatingSystem recursiveCopyDirectory:(aSourceFile pathName) to:(newFile pathName).
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   443
    ] ifFalse:[
8289
8dcce3984b27 fixed recursive directory copy
Claus Gittinger <cg@exept.de>
parents: 7637
diff changeset
   444
        aSourceFile copyTo:newFile.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   445
    ].
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   446
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   447
    "Created: / 07-02-2007 / 18:35:52 / cg"
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   448
!
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   449
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   450
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarningBoolean copyFileIfSame:copyIfSameBoolean
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   451
    |newFile fileString targetDirectory suffix|
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   452
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   453
    aDestFile isDirectory ifTrue:[
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   454
        targetDirectory := aDestFile.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   455
        newFile := aDestFile construct:(aSourceFile baseName).
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   456
    ] ifFalse:[
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   457
        targetDirectory := aDestFile directory.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   458
        newFile := aDestFile.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   459
    ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   460
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   461
    "/ do not copy if destination directory doesnt exist.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   462
    (self checkDirectoryExists:targetDirectory) ifFalse:[
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   463
        result := false.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   464
        ^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   465
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   466
    (newFile exists) ifTrue:[
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   467
        ((newFile asString = aSourceFile asString) and:[copyIfSameBoolean]) ifTrue:[
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   468
            [newFile exists] whileTrue:[
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   469
                suffix := newFile suffix.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   470
                fileString := newFile baseName withoutSuffix, self class suffixForCopyOverExistingFile, '.', suffix.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   471
                newFile := targetDirectory construct:fileString.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   472
            ].
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   473
        ] ifFalse:[
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   474
            overWriteWarningBoolean ifTrue:[
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   475
                (self fileExistsDialogForNewFile:newFile oldFile:aSourceFile withCancel:false withRemoveIfSame:false) ifFalse:[
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   476
                    result := false.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   477
                    ^ self.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   478
                ]
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   479
            ] ifFalse:[
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   480
                (Dialog confirm:('Destination "%1" exists - overwrite?' bindWith:aDestFile)) ifFalse:[
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   481
                    result := false.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   482
                    ^ self.
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   483
                ]
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   484
            ]
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   485
        ].
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   486
    ].
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   487
    StreamError handle:[:ex|
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   488
        "was not able to copy it"
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   489
        newFile remove.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   490
        WarningBox warn:'on copy file - ', ex description.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   491
        self errorString:('on copy file - ', ex description asString).
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   492
        result := false.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   493
        ^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   494
    ] do:[
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
   495
        self basicCopy:aSourceFile to:newFile.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   496
    ].
4006
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
   497
    DirectoryContents flushCachedDirectoryFor:(aSourceFile directory).
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
   498
    result := true.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   499
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   500
    "Modified: / 07-02-2007 / 18:36:02 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   501
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   502
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   503
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   504
    |newFile suffix fileString doCopy|
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   505
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   506
    "/ do not copy if destination directory doest exist.
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   507
    (self checkDirectoryExists:aDirectory) ifFalse:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   508
	result := false.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   509
	^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   510
    ].
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   511
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
   512
    aColOfSourceFiles do:[:filename |
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   513
	newFile := aDirectory construct:(filename baseName).
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   514
	doCopy := true.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   515
	(newFile exists) ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   516
	    ((newFile asString = filename asString) and:[copy]) ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   517
		[newFile exists] whileTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   518
		    suffix := newFile suffix.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   519
		    fileString := newFile withoutSuffix baseName, self class suffixForCopyOverExistingFile.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   520
		    suffix notEmpty ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   521
			fileString := fileString, '.', suffix.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   522
		    ].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   523
		    newFile := aDirectory construct:fileString.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   524
		].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   525
	    ] ifFalse:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   526
		overWriteWarning ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   527
		    doCopy := (self fileExistsDialogForNewFile:newFile oldFile:filename withCancel:(aColOfSourceFiles size > 1) withRemoveIfSame:false).
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   528
		    doCopy isNil ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   529
			" abort pressed "
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   530
			result := false.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   531
			^ self.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   532
		    ]
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   533
		]
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   534
	    ].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   535
	].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   536
	doCopy ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   537
	    Error handle:[:ex|
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   538
		|msg|
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   539
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   540
		msg := 'on copy file - ', ex description asString.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   541
		"was not able to copy it"
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   542
		result := false.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   543
		self errorString:msg.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   544
		( Dialog
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   545
		    confirm:('Error ',msg)
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   546
		    title:'Copy'
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   547
		    yesLabel:'Continue'
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   548
		    noLabel:'Abort') ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   549
			ex proceed.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   550
		    ] ifFalse:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   551
			^ self.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   552
		    ].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   553
	    ] do:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   554
		self basicCopy:filename to:newFile
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   555
	    ].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   556
	    self collectionOfCopiedFiles add:filename.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   557
	    self collectionOfNewFiles add:newFile.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   558
	]
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   559
    ].
4006
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
   560
    DirectoryContents flushCachedDirectoryFor:aDirectory.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   561
    result := true.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   562
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   563
    "Modified: / 07-02-2007 / 18:36:54 / cg"
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   564
! !
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   565
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   566
!FileOperation::CopyCorrupted methodsFor:'actions-basic'!
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   567
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   568
basicCopy:aSourceFile to:newFile
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   569
    aSourceFile isDirectory ifTrue:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   570
	newFile makeDirectory.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   571
	aSourceFile directoryContentsDo:[:eachFileOrDirectory |
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   572
	    self basicCopy:(aSourceFile construct:eachFileOrDirectory) to:(newFile construct:eachFileOrDirectory)
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   573
	].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   574
    ] ifFalse:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   575
	self basicCopyFile:aSourceFile to:newFile.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   576
    ].
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   577
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   578
    "Created: / 07-02-2007 / 18:39:03 / cg"
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   579
!
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   580
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   581
basicCopyFile:sourceFile to:destFile
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   582
    "this is a copy which is tolerant w.r.t. read errors.
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   583
     Wheneven a read fails, a number of retries is performed
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   584
     (with smaller buffer sizes) and, a block of zeros is eventually written.
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   585
     This allows for partially corrupted data to be read from a tape or disk."
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   586
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   587
    |in in2 out doWrite doRead fileSize offset buffer bufferSize nRead nWritten nSingle
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   588
     lostStart lostEnd seekFailed|
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   589
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   590
    buffer := ByteArray new:(self bufferSize).
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   591
    bufferSize := buffer size.
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   592
    offset := 0.
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   593
    sourceFile info isCharacterSpecial ifTrue:[
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   594
    ] ifFalse:[
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   595
        fileSize := sourceFile fileSize.
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   596
    ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   597
    in := sourceFile readStream binary.
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   598
    out := destFile writeStream binary.
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   599
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   600
    doWrite := [:n |
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   601
                nWritten := out nextPutBytes:n from:buffer startingAt:1.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   602
                offset := offset + nWritten.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   603
                nWritten ~= n ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   604
                    self error:'Write error'.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   605
                ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   606
               ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   607
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   608
    doRead := [:n |
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   609
                ReadError handle:[:ex |
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   610
                    nRead := 0.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   611
                    in position:offset.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   612
                ] do:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   613
                    nRead := in nextBytes:n into:buffer startingAt:1.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   614
                ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   615
               ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   616
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   617
    [
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   618
        [
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   619
            (fileSize notNil 
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   620
                ifTrue:[offset < fileSize]
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   621
                ifFalse:[true "in atEnd not"])
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   622
        ] whileTrue:[
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   623
            |n|
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   624
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   625
            n := fileSize notNil 
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   626
                    ifTrue:[ bufferSize min:(fileSize - offset) ]
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   627
                    ifFalse:[ bufferSize ].
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   628
            Transcript show:'read @'; showCR:offset.
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   629
            doRead value:n.
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   630
            nRead > 0 ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   631
                lostStart notNil ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   632
                    Transcript showCR:'CORRUPT: ',(lostStart printString),' .. ',(lostEnd printString).
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   633
                    lostStart := nil.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   634
                ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   635
                doWrite value:nRead.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   636
            ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   637
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   638
            nRead == n ifTrue:[
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   639
                bufferSize < buffer size ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   640
                    bufferSize := bufferSize * 2.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   641
                ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   642
            ] ifFalse:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   643
                nRead == 0 ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   644
                    "/ try reading single blocks for a while...
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   645
                    nSingle := self defectBlockRetryCount.
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   646
                    [
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   647
                        nSingle > 0 
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   648
                        and:[
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   649
                            doRead value:(self defectBlockCopySize).
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   650
                            nRead > 0]
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   651
                    ] whileTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   652
                        lostStart notNil ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   653
                            Transcript showCR:'CORRUPT: ',(lostStart printString),' .. ',(lostEnd printString).
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   654
                            lostStart := nil.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   655
                        ].
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   656
Transcript showCR:'single block at ',offset printString, 'size=',nRead printString.
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   657
                        doWrite value:nRead.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   658
                        nSingle := nSingle - 1.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   659
                    ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   660
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   661
                    nRead == 0 ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   662
                        in2 := sourceFile readStream binary.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   663
                        Error handle:[:ex |
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   664
                        ] do:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   665
                            in2 position:0.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   666
                            in2 nextBytes:buffer size into:buffer startingAt:1.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   667
                        ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   668
                        seekFailed := false.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   669
                        Error handle:[:ex |
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   670
                            seekFailed := true.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   671
                        ] do:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   672
                            in2 position:offset.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   673
                        ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   674
                        seekFailed ifTrue:[
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   675
                            buffer atAllPut:0.
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   676
                            Transcript showCR:'bad seek at ',offset printString.
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   677
                            doWrite value:(self defectBlockCopySize).
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   678
                        ] ifFalse:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   679
                            in close.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   680
                            in := in2.
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   681
                            doRead value:(self defectBlockCopySize).
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   682
                            nRead > 0 ifTrue:[
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   683
Transcript showCR:'single after reopen at ',offset printString.
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   684
                                doWrite value:nRead.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   685
                            ] ifFalse:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   686
                                lostStart isNil ifTrue:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   687
                                    lostStart := lostEnd := offset.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   688
                                ] ifFalse:[
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   689
                                    lostEnd := offset.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   690
                                ].
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   691
                                buffer atAllPut:0.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   692
Transcript showCR:'bad at ',offset printString.
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   693
                                doWrite value:(self defectBlockCopySize).
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   694
                                bufferSize := (self defectBlockCopySize).
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   695
                            ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   696
                        ]
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   697
                    ]
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   698
                ].
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   699
            ].
15572
6153ad7684d7 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 15453
diff changeset
   700
            Transcript show:'wrote @'; showCR:offset.
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   701
        ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   702
    ] ensure:[
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   703
        in close.
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   704
        out close.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   705
    ].
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   706
    lostStart notNil ifTrue:[
8557
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   707
        Transcript showCR:'CORRUPT: ',(lostStart printString),' .. ',(lostEnd printString).
9b5fdaaad07d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8397
diff changeset
   708
        lostStart := nil.
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   709
    ].
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   710
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
   711
    "Created: / 07-02-2007 / 18:40:32 / cg"
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   712
    "Modified: / 21-06-2010 / 14:25:22 / cg"
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   713
! !
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   714
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   715
!FileOperation::CopyCorrupted methodsFor:'defaults'!
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   716
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   717
bufferSize
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   718
    ^ 1024*1024*1
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   719
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   720
    "Created: / 21-06-2010 / 14:20:35 / cg"
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   721
!
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   722
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   723
defectBlockCopySize
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   724
    "/ ^ 256
9650
Claus Gittinger <cg@exept.de>
parents: 9576
diff changeset
   725
    ^ 128*1024
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   726
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   727
    "Created: / 21-06-2010 / 14:22:23 / cg"
9650
Claus Gittinger <cg@exept.de>
parents: 9576
diff changeset
   728
    "Modified: / 27-11-2010 / 18:06:10 / cg"
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   729
!
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   730
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   731
defectBlockRetryCount
9650
Claus Gittinger <cg@exept.de>
parents: 9576
diff changeset
   732
    ^ 1
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   733
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
   734
    "Created: / 21-06-2010 / 14:24:45 / cg"
9650
Claus Gittinger <cg@exept.de>
parents: 9576
diff changeset
   735
    "Modified: / 27-11-2010 / 18:05:19 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   736
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   737
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   738
!FileOperation::Create class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   739
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   740
createDirectoryIn:aDirectory
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   741
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   742
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   743
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   744
    instance := self new.
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   745
    instance createDirectoryIn:aDirectory.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   746
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   747
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   748
5961
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   749
createDirectoryIn:aDirectory initialAnswer:defaultAnswer
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   750
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   751
    |instance|
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   752
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   753
    instance := self new.
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   754
    instance createDirectoryIn:aDirectory initialAnswer:defaultAnswer.
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   755
    ^ instance
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   756
!
f91c25cf2475 private classes are private
Claus Gittinger <cg@exept.de>
parents: 5888
diff changeset
   757
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   758
createFileIn:aFile
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   759
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   760
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   761
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   762
    instance := self new.
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   763
    instance createFileIn:aFile.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   764
    ^ instance
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   765
!
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   766
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   767
createHardLinkIn:aFile
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   768
    "create an new hard link in a files directory"
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   769
6151
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   770
    ^ self createLinkIn:aFile soft:false
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   771
!
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   772
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   773
createLinkIn:aFile soft:soft
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   774
    "create an new soft or hard link in a files directory"
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   775
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   776
    |instance|
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   777
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   778
    instance := self new.
6151
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   779
    instance createLinkIn:aFile soft:soft.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   780
    ^ instance
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   781
!
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   782
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   783
createSoftLinkIn:aFile
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   784
    "create an new soft link in a files directory"
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   785
6151
baba7a7d54b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6150
diff changeset
   786
    ^ self createLinkIn:aFile soft:true
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   787
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   788
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   789
!FileOperation::Create methodsFor:'accessing'!
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   790
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   791
createdFile
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   792
    ^ createdFile
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   793
!
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   794
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   795
createdFile:something
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   796
    createdFile := something.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   797
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   798
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   799
!FileOperation::Create methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   800
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   801
createDirectoryIn:startDirectory
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   802
    |defaultDirectory|
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   803
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   804
    "/ stupid - that one already exists
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   805
"/    LastCreatedDirectory notNil ifTrue:[
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   806
"/        defaultDirectory := LastCreatedDirectory baseName.
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   807
"/    ].
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
   808
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   809
    ^ self createDirectoryIn:startDirectory initialAnswer:defaultDirectory
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   810
!
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   811
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   812
createHardLinkIn:aFile
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   813
    "create an new hard link in a files directory"
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   814
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   815
    self createLinkIn:aFile soft:false.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   816
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   817
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   818
createSoftLinkIn:aFile
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   819
    "create an new soft link in a files directory"
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   820
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   821
    self createLinkIn:aFile soft:true.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   822
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   823
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   824
operationError:msg
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   825
    self result:false.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   826
    Dialog warn:msg.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   827
    self errorString:msg.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   828
! !
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   829
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   830
!FileOperation::Create methodsFor:'actions-basic'!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
   831
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   832
createDirectoryIn:startDirectory initialAnswer:initialAnswerArg
4584
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   833
    |resources initialAnswer msg startBaseName newName newDir|
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   834
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   835
    resources := AbstractFileBrowser classResources.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   836
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   837
    startBaseName := startDirectory baseName.
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   838
    initialAnswer := initialAnswerArg.
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   839
    (startDirectory construct:initialAnswer) exists ifTrue:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   840
        initialAnswer := nil.
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   841
    ].
7084
0d178f33c920 unneeded code removed
Claus Gittinger <cg@exept.de>
parents: 7052
diff changeset
   842
    newName := Dialog
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   843
                    request:(resources string:'Create New Directory in %1:' with:startBaseName allBold)
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   844
                    initialAnswer:initialAnswer
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   845
                    okLabel:(resources string:'Create')
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   846
                    title:(resources string:'Create Directory')
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   847
                    onCancel:[
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   848
                        self result:false.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   849
                        ^ self
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   850
                    ].
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   851
    newName isEmpty ifTrue:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   852
        self result:false.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   853
        ^ self
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   854
    ].
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   855
    newDir := startDirectory construct:newName.
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   856
    newDir exists ifTrue:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   857
        Dialog warn:(newName, ' already exists.').
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   858
        result := false.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   859
        ^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   860
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   861
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   862
    OsError handle:[:ex|
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   863
        msg := errorString := 'cannot create directory "', newName,'" (', (OperatingSystem lastErrorString) , ')'.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   864
        errorString := msg.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   865
        Dialog warn:errorString.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   866
        result := false.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   867
        ^ self
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   868
    ] do:[
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   869
        newDir makeDirectory
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   870
    ].
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   871
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   872
    self createdFile:newDir.
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
   873
    LastCreatedDirectory := newDir.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   874
    result := true.
7084
0d178f33c920 unneeded code removed
Claus Gittinger <cg@exept.de>
parents: 7052
diff changeset
   875
0d178f33c920 unneeded code removed
Claus Gittinger <cg@exept.de>
parents: 7052
diff changeset
   876
    "Modified: / 05-09-2006 / 11:52:48 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   877
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   878
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   879
createFileIn:aFile
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   880
    "create an empty file"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   881
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   882
    |resources aStream msg file directory newName defaultFile newFile|
4584
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   883
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   884
    resources := AbstractFileBrowser classResources.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   885
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   886
    aFile isDirectory ifTrue:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   887
        directory := aFile
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   888
    ] ifFalse:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   889
        directory := aFile directory.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   890
        file := aFile
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   891
    ].
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   892
    LastCreatedFile isNil ifTrue:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   893
        defaultFile := aFile baseName.
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   894
    ] ifFalse:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   895
        defaultFile := LastCreatedFile baseName.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   896
    ].
3863
a761857e62ef *** empty log message ***
penk
parents: 3850
diff changeset
   897
    newName := Dialog
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   898
                    request:(resources string:'Create New File in %1:' with:directory baseName allBold)
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   899
                    initialAnswer:defaultFile
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   900
                    okLabel:(resources string:'Create')
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   901
                    title:(resources string:'Create File')
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   902
                    onCancel:[
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   903
                        self result:false.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   904
                        ^ self
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   905
                    ].
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   906
                    
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   907
    newName isEmptyOrNil ifTrue:[
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   908
        self result:false.
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   909
        ^ self
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   910
    ].
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   911
        
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   912
    newFile := directory construct:newName.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   913
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   914
    (newFile exists) ifTrue:[
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   915
        (newFile isRegularFile) ifTrue:[
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   916
            newFile fileSize == 0 ifTrue:[
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   917
                Dialog
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   918
                    information:(resources stringWithCRs:'An empty "%1" (i.e. with size 0) already existed.' with:newName).
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   919
                self createdFile:newFile.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   920
                self result:true.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   921
                ^ self
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   922
            ].    
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   923
            (Dialog
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   924
                confirm:(resources stringWithCRs:'"%1" already exists (with size %2)\\Truncate ?' with:newName with:newFile fileSize)
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   925
                yesLabel:(resources string:'Truncate')
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   926
                noLabel:(resources string:'Cancel'))
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   927
            ifFalse:[
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   928
                self result:false.
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   929
                ^ self
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   930
            ].
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   931
        ] ifFalse:[
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   932
            Dialog warn:(resources stringWithCRs:'"%1" already exists as a %2' with:newFile fileType).
15096
8fefa892330b class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 14280
diff changeset
   933
            self result:false.
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   934
            ^ self
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   935
        ].    
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   936
    ].
16322
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   937
    
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   938
    FileStream openErrorSignal handle:[:ex|
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   939
        msg := resources string:'Cannot create file "%1" (%2)' with:newName with:(FileStream lastErrorString).
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   940
        errorString := msg.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   941
        self result:false.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   942
        Dialog warn:errorString.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   943
        ^ self.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   944
    ] do:[
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   945
        aStream := newFile newReadWriteStream.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   946
    ].
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   947
    aStream close.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   948
    self createdFile:newFile.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   949
    LastCreatedFile := newFile.
1953cc62b7a6 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15948
diff changeset
   950
    self result:true.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   951
!
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   952
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   953
createLinkIn:aFile soft:symbolic
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   954
    "ask for the link target;
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   955
     then, create an new soft or hard link in aFile's directory"
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   956
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   957
    |resources newPath oldPath box string if1 if2|
4584
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   958
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
   959
    resources := AbstractFileBrowser classResources.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   960
10383
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   961
    newPath := (aFile isDirectory ifTrue:[ aFile ] ifFalse:[ aFile directory ]) asValue.
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   962
    oldPath := aFile asValue.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   963
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   964
    box := Dialog new.
4585
ee485ca5a96a resource strings
Claus Gittinger <cg@exept.de>
parents: 4584
diff changeset
   965
    box label:'Create Link'.
ee485ca5a96a resource strings
Claus Gittinger <cg@exept.de>
parents: 4584
diff changeset
   966
ee485ca5a96a resource strings
Claus Gittinger <cg@exept.de>
parents: 4584
diff changeset
   967
    string := 'Create ', (symbolic ifTrue:['Symbolic'] ifFalse:['Hard']) ,' Link from:'.
13738
07e534de96bd class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 13703
diff changeset
   968
    box addTextLabel:(resources string:string) adjust:#left.
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
   969
    if1 := box addFilenameInputFieldOn:oldPath in:nil tabable:true.
13738
07e534de96bd class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 13703
diff changeset
   970
    box addTextLabel:(resources string:'to:') adjust:#left.
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
   971
    if2 := box addFilenameInputFieldOn:newPath in:nil value tabable:true.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   972
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   973
    box addAbortAndOkButtons.
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   974
6250
5b0673ccff1c refactored intention revealing code:
Claus Gittinger <cg@exept.de>
parents: 6185
diff changeset
   975
    aFile isDirectory ifFalse:[
10383
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   976
        box focusOnField:if1.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   977
    ].
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   978
    box showAtPointer.
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   979
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   980
    box accepted ifFalse:[
10383
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   981
        self result:false.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   982
    ] ifTrue:[
10383
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   983
        self doCreateLinkFrom:(oldPath value) to:(newPath value) soft:symbolic.
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   984
    ].
10383
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   985
6bea381f65e2 code cleanup
Claus Gittinger <cg@exept.de>
parents: 9663
diff changeset
   986
    "Modified: / 24-07-2011 / 08:24:14 / cg"
3877
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   987
!
ac864436244f softLink and hardLink create added
penk
parents: 3863
diff changeset
   988
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
   989
doCreateLinkFrom:oldPath to:newPathArg soft:symbolic
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   990
    "actually create a soft or hard link"
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   991
17121
0d404f4364cd #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17117
diff changeset
   992
    |resources newPath newPathFile oldPathFile|
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
   993
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
   994
    newPath := newPathArg.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   995
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   996
    resources := AbstractFileBrowser classResources.
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
   997
17121
0d404f4364cd #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17117
diff changeset
   998
    oldPath isNil ifTrue:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
   999
        self operationError:'Missing source'.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1000
        ^ self.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1001
    ].
17121
0d404f4364cd #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17117
diff changeset
  1002
    newPath isNil ifTrue:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1003
        self operationError:'Missing link name (target)'.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1004
        ^ self.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1005
    ].
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1006
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1007
    newPathFile := newPath asFilename.
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
  1008
    oldPathFile := oldPath asFilename.
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
  1009
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
  1010
    newPathFile exists ifTrue:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1011
        newPathFile isDirectory ifTrue:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1012
            newPathFile := newPathFile construct:(oldPathFile baseName).
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1013
            newPath := newPathFile name.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1014
        ].
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
  1015
    ].
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
  1016
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1017
    newPathFile exists ifTrue:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1018
        self operationError:(resources string:'%1 already exists' with:newPath allBold).
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1019
        ^ self.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1020
    ].
6150
5028485a29c6 fixed new-symbolic link operation
Claus Gittinger <cg@exept.de>
parents: 6088
diff changeset
  1021
    oldPathFile exists ifFalse:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1022
        symbolic ifTrue:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1023
            oldPathFile isAbsolute ifTrue:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1024
                self operationError:(resources string:'%1 does not exist' with:oldPath allBold).
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1025
                ^ self.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1026
            ].
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1027
            (newPathFile directory construct:oldPath) exists ifFalse:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1028
                Dialog warn:(resources string:'%1 does not exist (Warning only)' with:oldPath allBold).
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1029
            ].
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1030
        ] ifFalse:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1031
            self operationError:(resources string:'%1 does not exist' with:oldPath allBold).
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1032
            ^ self.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1033
        ].
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1034
    ].
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1035
    ((symbolic not) and:[oldPathFile isDirectory]) ifTrue:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1036
        self operationError:(resources string:'%1 is a directory' with:oldPath allBold).
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1037
        ^ self.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1038
    ].
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1039
    ErrorSignal handle:[:ex |
17121
0d404f4364cd #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17117
diff changeset
  1040
        self operationError:ex description.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1041
    ] do:[
17117
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1042
        symbolic ifTrue:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1043
            newPathFile createAsSymbolicLinkTo:oldPathFile.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1044
        ] ifFalse:[
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1045
            newPathFile createAsHardLinkTo:oldPathFile.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1046
        ].
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1047
        self createdFile:newPathFile.
7ccd2a0f7940 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17111
diff changeset
  1048
        self result:true.
4788
eab539baa741 refactored
Claus Gittinger <cg@exept.de>
parents: 4749
diff changeset
  1049
    ].
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1050
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1051
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1052
!FileOperation::Delete class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1053
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1054
deleteFile:aFileOrDirectory
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1055
    "delete aFileOrDirectory"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1056
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1057
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1058
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1059
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1060
    instance deleteFile:aFileOrDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1061
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1062
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1063
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1064
deleteFiles:aCollectionOfFiles
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1065
    ^ self deleteFiles:aCollectionOfFiles confirm:true
5081
e55e62d8aeb9 cut and paste files in same directory
penk
parents: 5021
diff changeset
  1066
!
e55e62d8aeb9 cut and paste files in same directory
penk
parents: 5021
diff changeset
  1067
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1068
deleteFiles:aCollectionOfFiles confirm:confirm
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1069
    "delete aCollectionOfFiles"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1070
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1071
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1072
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1073
    instance := self new.
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1074
    instance deleteFiles:aCollectionOfFiles confirm:confirm.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1075
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1076
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1077
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1078
!FileOperation::Delete methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1079
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1080
deleteFiles:colOfFiles
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1081
    ^ self deleteFiles:colOfFiles confirm:true.
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1082
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1083
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1084
eraseFilesContentsBeforeRemoving:file
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1085
    "intentionally left blank"
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1086
! !
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1087
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1088
!FileOperation::Delete methodsFor:'actions-basic'!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1089
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1090
deleteFile:aFileOrDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1091
    | file isDirectory |
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1092
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1093
    aFileOrDirectory notNil ifTrue:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1094
	file := aFileOrDirectory asFilename.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1095
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1096
	isDirectory := file isDirectory.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1097
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1098
	Error handle:[:ex|
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1099
	    "was not able to remove it"
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1100
	    Dialog warn:(ex description).
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1101
	    self errorString:(ex description).
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1102
	    result := false.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1103
	    ^ self.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1104
	] do:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1105
	    isDirectory ifTrue:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1106
		file recursiveRemove
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1107
	    ] ifFalse:[
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1108
		self eraseFilesContentsBeforeRemoving:file.
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1109
		file remove
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1110
	    ].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1111
	].
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1112
	"/ flush parent directory or directory
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1113
    ].
4006
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
  1114
    DirectoryContents flushCachedDirectoryFor:(file directory).
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1115
    result := true.
5746
a505fc181e11 warning string (backslash in pc-filename)
Claus Gittinger <cg@exept.de>
parents: 5687
diff changeset
  1116
a505fc181e11 warning string (backslash in pc-filename)
Claus Gittinger <cg@exept.de>
parents: 5687
diff changeset
  1117
    "Modified: / 17-03-2004 / 12:42:02 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1118
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1119
5081
e55e62d8aeb9 cut and paste files in same directory
penk
parents: 5021
diff changeset
  1120
deleteFiles:colOfFiles confirm:confirm
14280
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1121
    |resources answer nFilesToDelete ask labels values fileTypeString 
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1122
     msg lbls vals dontAskForNonEmptyDirectory nFilesDone|
5081
e55e62d8aeb9 cut and paste files in same directory
penk
parents: 5021
diff changeset
  1123
7051
4d1e19c7a648 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6618
diff changeset
  1124
    dontAskForNonEmptyDirectory := false.
5081
e55e62d8aeb9 cut and paste files in same directory
penk
parents: 5021
diff changeset
  1125
    ask := confirm.
4584
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
  1126
    resources := AbstractFileBrowser classResources.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1127
4701
b30d103a8bc9 better confirmation dialogs
Claus Gittinger <cg@exept.de>
parents: 4674
diff changeset
  1128
    nFilesToDelete := colOfFiles size.
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1129
    nFilesDone := 0.
4408
8c0c80b68ae7 ask again, if dir is not empty
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  1130
    colOfFiles do:[:filenameOrString |
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1131
        |filename doDelete skip|
4665
cd7e02bf5d85 fixed to allow deleting bad symbolic links
Claus Gittinger <cg@exept.de>
parents: 4664
diff changeset
  1132
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1133
        filename := filenameOrString asFilename.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1134
        skip := false.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1135
        fileTypeString := ''.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1136
        filename isSymbolicLink ifTrue:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1137
            fileTypeString := 'symbolic link '.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1138
        ] ifFalse:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1139
            filename exists ifFalse:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1140
                (Dialog
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1141
                    confirm:('%1 does not exist.' bindWith:filename asString allBold)
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1142
                    yesLabel:(resources string:'Proceed')
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1143
                    noLabel:(resources string:'Cancel'))
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1144
                ifFalse:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1145
                    ^ self.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1146
                ].
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1147
                skip := true.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1148
            ]
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1149
        ].
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1150
        skip ifFalse:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1151
            ask ifTrue:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1152
                nFilesToDelete = 1 ifTrue:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1153
                    labels := #('No' 'Yes').
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1154
                    values := #(#no #yes).
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1155
                ] ifFalse:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1156
                    labels := #('Cancel' 'No' 'Yes' 'Yes to All' ).
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1157
                    values := #(#cancel #no #yes #yesToAll).
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1158
                ].
14280
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1159
                (Filename trashDirectoryOrNil notNil) ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1160
                    filename directory pathName ~= Filename trashDirectoryOrNil pathName ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1161
                        nFilesToDelete = 1 ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1162
                            labels := labels , #('Move to Trash').  
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1163
                        ] ifFalse:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1164
                            labels := labels , #('Move all to Trash').
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1165
                        ].
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1166
                        values := values , #(#moveToTrash).
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1167
                    ].
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1168
                ].
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1169
                msg := self isErase ifTrue:'Really erase' ifFalse:'Really delete'.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1170
                msg := msg ,
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1171
                       (nFilesToDelete = 1
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1172
                            ifTrue:'\\%1%2 ?'
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1173
                            ifFalse:'\\%1%2 \\(%3 files alltogether)').
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1174
                answer := Dialog
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1175
                    confirmWithCancel:(resources
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1176
                                        stringWithCRs:msg
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1177
                                        with:fileTypeString
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1178
                                        with:(filename asString allBold)
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1179
                                        with:nFilesToDelete)
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1180
                    labels:(resources array:labels)
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1181
                    values:values
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1182
                    default:(values indexOf:#yes).
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1183
            ] ifFalse:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1184
                answer := #yesToAll.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1185
            ].
5673
3ed1092a3c73 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5656
diff changeset
  1186
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1187
            answer == #cancel ifTrue:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1188
                ^ self.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1189
            ].
5673
3ed1092a3c73 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5656
diff changeset
  1190
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1191
            answer == #yesToAll ifTrue:[
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1192
                ask := false.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1193
                answer := #yes.
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1194
            ].
14280
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1195
            answer == #moveToTrash ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1196
                |trashFn nr|
4408
8c0c80b68ae7 ask again, if dir is not empty
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  1197
14280
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1198
                ask := false.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1199
                ProgressNotification progressPercentage:(nFilesDone / nFilesToDelete)*100.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1200
                trashFn := Filename trashDirectoryOrNil construct:filename baseName.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1201
                [trashFn exists] whileTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1202
                    nr := (nr ? 0) + 1.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1203
                    trashFn := Filename trashDirectoryOrNil construct:filename baseName,'.',nr printString.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1204
                ].
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1205
                filename moveTo:trashFn.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1206
                nFilesDone := nFilesDone + 1.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1207
            ] ifFalse:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1208
                answer == #yes ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1209
                    doDelete := true.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1210
                    filename isSymbolicLink ifFalse:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1211
                        dontAskForNonEmptyDirectory ifFalse:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1212
                            filename isNonEmptyDirectory ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1213
                                colOfFiles size == 1 ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1214
                                    lbls := #('Cancel' 'Remove').
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1215
                                    vals := #(false true).
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1216
                                ] ifFalse:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1217
                                    lbls := #('Cancel All' 'Keep' 'Remove' 'Remove All').
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1218
                                    vals := #(nil false true #removeAll).
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1219
                                ].
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1220
                                doDelete := Dialog
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1221
                                            confirmWithCancel:(resources
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1222
                                                                stringWithCRs:'Directory ''%1'' is not empty\remove anyway ?'
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1223
                                                                with:filename pathName allBold)
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1224
                                            labels:( resources array:lbls )
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1225
                                            values:vals
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1226
                                            default:(vals indexOf:true).
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1227
                                doDelete == nil ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1228
                                    ^ self
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1229
                                ].
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1230
                                doDelete == #removeAll ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1231
                                    dontAskForNonEmptyDirectory := true.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1232
                                    doDelete := true.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1233
                                ].
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1234
                            ].
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1235
                        ].
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1236
                    ].
14280
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1237
                    doDelete ifTrue:[
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1238
                        ProgressNotification progressPercentage:(nFilesDone / nFilesToDelete)*100.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1239
                        self deleteFile:filename.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1240
                        nFilesDone := nFilesDone + 1.
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1241
                    ]
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1242
                ].
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1243
            ].
14280
48dcdb213e34 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 14187
diff changeset
  1244
            ProgressNotification progressPercentage:(nFilesDone / nFilesToDelete)*100.
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1245
        ].
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1246
    ].
7051
4d1e19c7a648 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6618
diff changeset
  1247
9576
4505159b2222 busy indicator
Claus Gittinger <cg@exept.de>
parents: 9512
diff changeset
  1248
    "Modified: / 11-10-2010 / 13:08:20 / cg"
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1249
! !
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1250
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1251
!FileOperation::Erase methodsFor:'actions-basic'!
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1252
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1253
eraseFilesContentsBeforeRemoving:file
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
  1254
    "fill file with zeros (to be really erased from the disk).
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
  1255
     We use this, if the file contains security relevant data (such as crypto-keys)"
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1256
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1257
    |writeStream fileSize remaining buffer bufferSize nWritten|
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1258
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1259
    fileSize := file fileSize.
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1260
    writeStream := file asFilename readWriteStream.
8293
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1261
    [
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1262
        remaining := fileSize.
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1263
        bufferSize := 8192.
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1264
        buffer := ByteArray new:bufferSize.
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1265
8293
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1266
        [remaining > 0] whileTrue:[
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1267
            nWritten := writeStream
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1268
                            nextPutBytes:(bufferSize min:remaining)
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1269
                            from:buffer.  
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1270
            remaining := remaining - nWritten.
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1271
            ProgressNotification progressPercentage:(1 - (remaining / fileSize))*100.
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1272
        ].
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1273
    ] ensure:[
9b2b1c79758e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8289
diff changeset
  1274
        writeStream close.
6168
45a19dfda66b code cleanup + erase
Claus Gittinger <cg@exept.de>
parents: 6153
diff changeset
  1275
    ].
7634
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
  1276
f3ff12d68382 +copyCorrupt
Claus Gittinger <cg@exept.de>
parents: 7606
diff changeset
  1277
    "Modified: / 07-02-2007 / 18:20:21 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1278
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1279
6285
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
  1280
!FileOperation::Erase methodsFor:'queries'!
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
  1281
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
  1282
isErase
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
  1283
    ^ true
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
  1284
! !
fc86d75c6e29 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
  1285
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1286
!FileOperation::Move class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1287
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1288
moveFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1289
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1290
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1291
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1292
    instance moveFile:aSourceFile to:aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1293
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1294
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1295
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1296
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1297
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1298
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1299
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1300
    instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1301
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1302
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1303
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1304
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1305
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1306
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1307
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1308
    instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1309
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1310
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1311
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1312
moveFiles:aColOfSourceFiles to:aDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1313
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1314
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1315
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1316
    instance moveFiles:aColOfSourceFiles to:aDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1317
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1318
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1319
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1320
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1321
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1322
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1323
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1324
    instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1325
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1326
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1327
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1328
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1329
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1330
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1331
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1332
    instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1333
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1334
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1335
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1336
!FileOperation::Move methodsFor:'accessing'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1337
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1338
colOfMovedFiles
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1339
    "obsolete - bad name"
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1340
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1341
    ^ self collectionOfMovedFiles
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1342
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1343
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1344
collectionOfMovedFiles
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
  1345
    movedFiles isNil ifTrue:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1346
	movedFiles := OrderedCollection new.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1347
    ].
6374
f9bed8385350 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6373
diff changeset
  1348
    ^ movedFiles
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1349
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1350
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1351
!FileOperation::Move methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1352
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1353
moveFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1354
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1355
    ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1356
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1357
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1358
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1359
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1360
    ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1361
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1362
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1363
moveFiles:aColOfSourceFiles to:aDirectory
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1364
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1365
    ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1366
!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1367
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1368
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1369
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1370
    ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:true
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1371
! !
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1372
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1373
!FileOperation::Move methodsFor:'actions-basic'!
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1374
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1375
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1376
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
  1377
    |newFile fileString targetDirectory targetIsDirectory suffix doMove|
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1378
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1379
    targetIsDirectory := aDestFile isDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1380
    targetIsDirectory ifTrue:[
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1381
        targetDirectory := aDestFile.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1382
        newFile := aDestFile construct:(aSourceFile baseName).
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1383
    ] ifFalse:[
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1384
        targetDirectory := aDestFile directory.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1385
        newFile := aDestFile.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1386
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1387
    "/ do not copy if destination directory doest exist.
6250
5b0673ccff1c refactored intention revealing code:
Claus Gittinger <cg@exept.de>
parents: 6185
diff changeset
  1388
    targetDirectory exists ifFalse:[
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1389
        Dialog warn:'Cannot move to non-existing directory ', targetDirectory asString.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1390
        result := false.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1391
        ^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1392
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1393
    (newFile exists) ifTrue:[
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1394
        ((newFile asString = aSourceFile asString) and:[move]) ifTrue:[
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1395
            [newFile exists] whileTrue:[
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1396
                suffix := newFile suffix.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1397
                fileString := newFile baseName withoutSuffix, self class suffixForCopyOverExistingFile, '.', suffix.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1398
                newFile := targetDirectory construct:fileString.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1399
            ].
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1400
        ] ifFalse:[
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1401
            overWriteWarning ifTrue:[
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1402
                doMove := self fileExistsDialogForNewFile:newFile oldFile:aSourceFile withCancel:false withRemoveIfSame:true.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1403
                doMove == #removeSource ifTrue:[
8397
921162bfd791 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 8361
diff changeset
  1404
                    self shouldImplement.
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1405
                    result := false.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1406
                    ^ self.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1407
                ].
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1408
                doMove == #removeDestination ifTrue:[
8397
921162bfd791 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 8361
diff changeset
  1409
                    self shouldImplement.
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1410
                    result := false.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1411
                    ^ self.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1412
                ].
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1413
                doMove == true ifFalse:[
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1414
                    result := false.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1415
                    ^ self.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1416
                ].
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
  1417
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1418
            ] ifFalse:[
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1419
                result := false.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1420
                ^ self.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1421
            ]
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1422
        ].
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1423
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1424
    Error handle:[:ex|
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1425
        "was not able to copy it"
13703
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
  1426
        WarningBox warn:'Error in move file operation: ', ex description.
43a4a2599e17 class: FileOperation
Stefan Vogel <sv@exept.de>
parents: 13345
diff changeset
  1427
        self errorString:('Error in move file operation- ', ex description asString).
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1428
        result := false.
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1429
        ^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1430
    ] do:[
8361
122481dc0188 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8293
diff changeset
  1431
        aSourceFile moveTo:newFile.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1432
    ].
4006
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
  1433
    DirectoryContents flushCachedDirectoryFor:(aSourceFile directory).
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
  1434
    result := true.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1435
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1436
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1437
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1438
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
  1439
    |newFile suffix fileString doMove doRemoveSource doRemoveDestination|
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1440
5854
8c6042ba7495 ask if non-existing directory should be created
Claus Gittinger <cg@exept.de>
parents: 5846
diff changeset
  1441
    aDirectory exists ifFalse:[
14187
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1442
        (Dialog confirm:(AbstractFileBrowser classResources
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1443
                            stringWithCRs:'Non-existing directory "%1" .\Create ?'
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1444
                            with:aDirectory asString allBold)) ifFalse:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1445
            result := false.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1446
            ^ self
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1447
        ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1448
        aDirectory makeDirectory.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1449
        aDirectory exists ifFalse:[
14187
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1450
            Dialog warn:(AbstractFileBrowser classResources
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1451
                                stringWithCRs:'Cannot create directory "%1" !!\Create ?.'
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1452
                                with:aDirectory asString allBold).
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1453
            result := false.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1454
            ^ self
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1455
        ]
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1456
    ].
5788
c42526d05d57 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5746
diff changeset
  1457
    (aDirectory isDirectory) ifFalse:[
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1458
        Dialog warn:('Destination %1 is not a directory.' bindWith:aDirectory asString allBold).
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1459
        result := false.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1460
        ^ self
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1461
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1462
    aColOfSourceFiles do:[: filename |
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1463
        newFile := aDirectory construct:filename baseName.
5790
a20cb6fcb74b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5788
diff changeset
  1464
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1465
        doMove := true.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1466
        doRemoveSource := false.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1467
        doRemoveDestination := false.
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
  1468
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1469
        (newFile exists) ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1470
            ((newFile asString = filename asString) and:[move]) ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1471
                [newFile exists] whileTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1472
                    suffix := newFile suffix.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1473
                    fileString := newFile withoutSuffix baseName , self class suffixForCopyOverExistingFile, '.', suffix.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1474
                    newFile := aDirectory construct:fileString.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1475
                ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1476
            ] ifFalse:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1477
                overWriteWarning ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1478
                    (doMove := actionForAll) isNil ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1479
                        doMove := self 
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1480
                                    fileExistsDialogForNewFile:newFile oldFile:filename 
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1481
                                    withCancel:(aColOfSourceFiles size > 1) withRemoveIfSame:true
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1482
                                    withAllAction: true.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1483
                        doMove isNil ifTrue:[   "/ cancel
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1484
                            result := false.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1485
                            ^ self.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1486
                        ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1487
                    ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1488
                    (doMove == #removeSource) ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1489
                        doRemoveSource := true.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1490
                        doMove := false
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1491
                    ] ifFalse:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1492
                        (doMove == #removeDestination) ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1493
                            doRemoveDestination := true.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1494
                            doMove := false
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1495
                        ]
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1496
                    ]
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1497
                ]
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1498
            ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1499
        ].
4522
917245591672 default in newDir
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
  1500
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1501
        (doMove or:[doRemoveSource or:[doRemoveDestination]]) ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1502
            Error handle:[:ex|
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1503
                "was not able to copy it"
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1504
                |descriptionString|
5862
41b855c4028e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5854
diff changeset
  1505
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1506
                result := false.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1507
                descriptionString := ex description asString.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1508
                self errorString:(' Error in Move-File Operation:', descriptionString).
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1509
                ( Dialog
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1510
                    confirm:(' Error in Move-File Operation: ', descriptionString)
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1511
                    title:'Move'
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1512
                    yesLabel:'Continue'
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1513
                    noLabel:'Abort'
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1514
                ) ifFalse:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1515
                    ^ self.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1516
                ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1517
            ] do:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1518
                doRemoveSource ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1519
                    filename remove
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1520
                ] ifFalse:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1521
                    doRemoveDestination ifTrue:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1522
                        newFile remove
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1523
                    ] ifFalse:[
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1524
                        filename moveTo:newFile.
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1525
                    ]
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1526
                ]
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1527
            ].
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1528
            self collectionOfMovedFiles add:filename
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1529
        ]
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1530
    ].
4006
8c706ba8b3b5 change flushCachedDirectory: senders to flushCachedDirectoryFor:
penk
parents: 3977
diff changeset
  1531
    DirectoryContents flushCachedDirectoryFor:aDirectory.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1532
    result := true.
11444
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1533
db1f2390855a class definition
Claus Gittinger <cg@exept.de>
parents: 10383
diff changeset
  1534
    "Modified: / 20-03-2012 / 11:53:35 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1535
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1536
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1537
!FileOperation::Rename class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1538
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1539
renameFile:oldFile to:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1540
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1541
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1542
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1543
    instance renameFile:oldFile to:newName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1544
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1545
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1546
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1547
renameFiles:aColOfFiles
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1548
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1549
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1550
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1551
    instance renameFiles:aColOfFiles.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1552
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1553
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1554
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1555
!FileOperation::Rename methodsFor:'accessing'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1556
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1557
renamedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1558
    renamedFiles isNil ifTrue:[
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1559
	renamedFiles := OrderedCollection new.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1560
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1561
    ^ renamedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1562
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1563
6373
16fb0a500e0d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6355
diff changeset
  1564
!FileOperation::Rename methodsFor:'actions-basic'!
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1565
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1566
renameFile:oldFile to:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1567
    "rename a file (or directory)"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1568
7334
e0bd092badd1 care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 7084
diff changeset
  1569
    |newFile msg resources sameFile|
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1570
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1571
    (oldFile isNil or:[newName isNil]) ifTrue:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1572
        result := false.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1573
        ^ self.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1574
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1575
    (oldFile asString isBlank or:[newName isBlank]) ifTrue:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1576
        result := false.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1577
        ^ self.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1578
    ].
5656
8402ac9f6398 internationalization
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1579
    newName asFilename isAbsolute ifTrue:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1580
        newFile := newName asFilename.
5656
8402ac9f6398 internationalization
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1581
    ] ifFalse:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1582
        (oldFile baseName = newName) ifTrue:[
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1583
            result := false
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1584
        ].
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1585
        newFile := oldFile directory construct:newName.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1586
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1587
5656
8402ac9f6398 internationalization
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1588
    oldFile pathName = newFile pathName ifTrue:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1589
        ^ self.
4674
64a49fadc47e do op if newName is same as old in a rename operation
Claus Gittinger <cg@exept.de>
parents: 4665
diff changeset
  1590
    ].
7334
e0bd092badd1 care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 7084
diff changeset
  1591
    Filename isCaseSensitive ifFalse:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1592
        sameFile := (oldFile pathName sameAs: newFile pathName)
7334
e0bd092badd1 care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 7084
diff changeset
  1593
    ] ifTrue:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1594
        sameFile := false
7334
e0bd092badd1 care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 7084
diff changeset
  1595
    ].
4674
64a49fadc47e do op if newName is same as old in a rename operation
Claus Gittinger <cg@exept.de>
parents: 4665
diff changeset
  1596
5656
8402ac9f6398 internationalization
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1597
    resources := Dialog classResources.
8402ac9f6398 internationalization
Claus Gittinger <cg@exept.de>
parents: 5342
diff changeset
  1598
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1599
    OsError handle:[:ex|
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1600
        msg := resources
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1601
                stringWithCRs:'Cannot rename file %1 to %2 !!\\(%3)'
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1602
                with:oldFile baseName
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1603
                with:newName
17111
d376dcbf683a #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 16322
diff changeset
  1604
                with:ex errorString.
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1605
        Dialog warn:msg.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1606
        result := false.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1607
        ^ self.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1608
    ] do:[
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1609
        sameFile ifFalse:[
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1610
            newFile exists ifTrue:[
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1611
                (newFile sameContentsAs:oldFile) ifTrue:[
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1612
                    msg := '%1 exists [with same contents] - rename (i.e. overwrite) anyway ?'
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1613
                ] ifFalse:[
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1614
                    msg := '%1 exists - rename (i.e. overwrite) anyway ?'
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1615
                ].
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1616
                (Dialog confirmWithCancel:(resources string:msg with:newName allBold) default:false) ifFalse:[
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1617
                    result := false.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1618
                    ^ self.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1619
                ]
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1620
            ].
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1621
        ].
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1622
        oldFile renameTo:newFile.
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1623
        self renamedFiles add:newFile.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1624
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1625
    result := true.
7334
e0bd092badd1 care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 7084
diff changeset
  1626
e0bd092badd1 care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 7084
diff changeset
  1627
    "Modified: / 21-09-2006 / 18:32:12 / cg"
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1628
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1629
7637
ee7ed843e5ba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7634
diff changeset
  1630
renameFiles:aColOfFiles
5827
657cdb93ba7e rename all
Claus Gittinger <cg@exept.de>
parents: 5820
diff changeset
  1631
    |resources queryBox b lastNewName lastOldName initialText oldName newName renameAll doRename|
4584
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
  1632
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
  1633
    resources := AbstractFileBrowser classResources.
5827
657cdb93ba7e rename all
Claus Gittinger <cg@exept.de>
parents: 5820
diff changeset
  1634
    renameAll := false.
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1635
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1636
    queryBox := FilenameEnterBox new.
4584
7664dfcac0e4 resource strings
Claus Gittinger <cg@exept.de>
parents: 4582
diff changeset
  1637
    queryBox okText:(resources string:'Rename').
5827
657cdb93ba7e rename all
Claus Gittinger <cg@exept.de>
parents: 5820
diff changeset
  1638
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1639
    aColOfFiles size > 1 ifTrue:[
14187
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1640
        b := queryBox addAbortButtonLabelled:(resources string:'Cancel All').
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1641
        b action:[^ self].
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1642
        queryBox addButton:(Button label:(resources string:'Rename All') action:[renameAll := true. queryBox okPressed]) before:(queryBox okButton).
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1643
    ].
5827
657cdb93ba7e rename all
Claus Gittinger <cg@exept.de>
parents: 5820
diff changeset
  1644
    aColOfFiles do:[:oldFile |
14187
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1645
        oldName := oldFile baseName asString.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1646
        lastNewName notNil ifTrue:[
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1647
            initialText := DoWhatIMeanSupport goodRenameDefaultForFile:oldName lastOld:lastOldName lastNew:lastNewName.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1648
        ].
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1649
        doRename := false.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1650
        (renameAll and:[initialText notNil]) ifTrue:[
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1651
            doRename := true.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1652
            newName := initialText.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1653
        ] ifFalse:[
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1654
            queryBox title:(resources string:'Rename %1 to:' with:(oldName allBold)).
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1655
            queryBox initialText:(initialText ? oldName).
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1656
            queryBox action:[:newEnteredName | newName := newEnteredName. doRename := true.].
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1657
            queryBox show "showAtPointer".
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1658
            "/ queryBox accepted ifFalse:[self halt].
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1659
        ].
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1660
        doRename ifTrue:[
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1661
            (self renameFile:oldFile to:newName asString) ifTrue:[
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1662
                result := true
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1663
            ].
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1664
            lastOldName := oldName.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1665
            lastNewName := newName.
fe7fa2d23b0b Do not refer to FileBrowser methods
Stefan Vogel <sv@exept.de>
parents: 13738
diff changeset
  1666
        ].
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1667
    ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1668
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
  1669
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
  1670
!FileOperation class methodsFor:'documentation'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
  1671
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
  1672
version
15948
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
  1673
    ^ '$Header$'
9501
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
  1674
!
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
  1675
707fe892a63e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
  1676
version_CVS
15948
6c77b437c12b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 15572
diff changeset
  1677
    ^ '$Header$'
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
  1678
! !
12726
536e7ac9c601 class: FileOperation
Claus Gittinger <cg@exept.de>
parents: 11444
diff changeset
  1679