Copy.st
author Claus Gittinger <cg@exept.de>
Wed, 04 Sep 2002 12:29:17 +0200
changeset 1587 91a7b38eb142
parent 1585 91ec771207a2
child 1588 6dde5ad32643
permissions -rw-r--r--
slight code beautification;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
     1
"{ Package: 'stx:libtool2' }"
91ec771207a2 initial checkin
penk
parents:
diff changeset
     2
91ec771207a2 initial checkin
penk
parents:
diff changeset
     3
FileOperations subclass:#Copy
91ec771207a2 initial checkin
penk
parents:
diff changeset
     4
	instanceVariableNames:''
91ec771207a2 initial checkin
penk
parents:
diff changeset
     5
	classVariableNames:''
91ec771207a2 initial checkin
penk
parents:
diff changeset
     6
	poolDictionaries:''
91ec771207a2 initial checkin
penk
parents:
diff changeset
     7
	category:'Interface-Support'
91ec771207a2 initial checkin
penk
parents:
diff changeset
     8
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
     9
91ec771207a2 initial checkin
penk
parents:
diff changeset
    10
91ec771207a2 initial checkin
penk
parents:
diff changeset
    11
!Copy class methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    12
91ec771207a2 initial checkin
penk
parents:
diff changeset
    13
copyFile:aSourceFile to:aDestFile
91ec771207a2 initial checkin
penk
parents:
diff changeset
    14
    "delete current selected files/directories
91ec771207a2 initial checkin
penk
parents:
diff changeset
    15
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    16
91ec771207a2 initial checkin
penk
parents:
diff changeset
    17
    |instance|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    18
91ec771207a2 initial checkin
penk
parents:
diff changeset
    19
    instance := self new.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    20
    instance copyFile:aSourceFile to:aDestFile.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    21
    ^ instance
91ec771207a2 initial checkin
penk
parents:
diff changeset
    22
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    23
91ec771207a2 initial checkin
penk
parents:
diff changeset
    24
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
91ec771207a2 initial checkin
penk
parents:
diff changeset
    25
    "delete current selected files/directories
91ec771207a2 initial checkin
penk
parents:
diff changeset
    26
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    27
91ec771207a2 initial checkin
penk
parents:
diff changeset
    28
    |instance|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    29
91ec771207a2 initial checkin
penk
parents:
diff changeset
    30
    instance := self new.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    31
    instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    32
    ^ instance
91ec771207a2 initial checkin
penk
parents:
diff changeset
    33
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    34
91ec771207a2 initial checkin
penk
parents:
diff changeset
    35
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy
91ec771207a2 initial checkin
penk
parents:
diff changeset
    36
    "delete current selected files/directories
91ec771207a2 initial checkin
penk
parents:
diff changeset
    37
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    38
91ec771207a2 initial checkin
penk
parents:
diff changeset
    39
    |instance|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    40
91ec771207a2 initial checkin
penk
parents:
diff changeset
    41
    instance := self new.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    42
    instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    43
    ^ instance
91ec771207a2 initial checkin
penk
parents:
diff changeset
    44
! !
91ec771207a2 initial checkin
penk
parents:
diff changeset
    45
91ec771207a2 initial checkin
penk
parents:
diff changeset
    46
!Copy methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    47
91ec771207a2 initial checkin
penk
parents:
diff changeset
    48
copyFile:aSourceFile to:aDestFile
91ec771207a2 initial checkin
penk
parents:
diff changeset
    49
    "defete current selected files/directories
91ec771207a2 initial checkin
penk
parents:
diff changeset
    50
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    51
91ec771207a2 initial checkin
penk
parents:
diff changeset
    52
    self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true
91ec771207a2 initial checkin
penk
parents:
diff changeset
    53
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    54
91ec771207a2 initial checkin
penk
parents:
diff changeset
    55
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
91ec771207a2 initial checkin
penk
parents:
diff changeset
    56
    "copy to
91ec771207a2 initial checkin
penk
parents:
diff changeset
    57
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    58
91ec771207a2 initial checkin
penk
parents:
diff changeset
    59
    self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true copyFileIfSame:false
91ec771207a2 initial checkin
penk
parents:
diff changeset
    60
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    61
91ec771207a2 initial checkin
penk
parents:
diff changeset
    62
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy
91ec771207a2 initial checkin
penk
parents:
diff changeset
    63
    "copy to
91ec771207a2 initial checkin
penk
parents:
diff changeset
    64
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    65
91ec771207a2 initial checkin
penk
parents:
diff changeset
    66
    |newFile fileString|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    67
91ec771207a2 initial checkin
penk
parents:
diff changeset
    68
    aDestFile exists not ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    69
        DialogBox warn:'cant copy to:', aDestFile asString. 
91ec771207a2 initial checkin
penk
parents:
diff changeset
    70
        result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    71
        ^ self
91ec771207a2 initial checkin
penk
parents:
diff changeset
    72
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    73
    newFile := (aDestFile pathName asFilename) construct:(aSourceFile baseName).
91ec771207a2 initial checkin
penk
parents:
diff changeset
    74
     (newFile exists) ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    75
        ((newFile asString = aSourceFile asString) and:[copy]) ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    76
            [newFile exists] whileTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    77
                fileString := newFile baseName.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    78
                fileString := 'CopyOf', fileString.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    79
                newFile := (aDestFile pathName asFilename) construct:fileString.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    80
            ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    81
        ] ifFalse:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    82
            overWriteWarning ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    83
                (self fileExistDialogFor:newFile) ifFalse:[ 
91ec771207a2 initial checkin
penk
parents:
diff changeset
    84
                    result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    85
                    ^ self.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    86
                ]
91ec771207a2 initial checkin
penk
parents:
diff changeset
    87
            ] ifFalse:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    88
                    result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    89
                    ^ self.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    90
            ]
91ec771207a2 initial checkin
penk
parents:
diff changeset
    91
        ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    92
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    93
    Error handle:[:ex|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    94
        "was not able to copy it"
91ec771207a2 initial checkin
penk
parents:
diff changeset
    95
        WarningBox warn:'on copy file - ', ex errorString.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    96
        self errorString:('on copy file - ', ex description asString).
91ec771207a2 initial checkin
penk
parents:
diff changeset
    97
        result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    98
    ] do:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    99
        aSourceFile isDirectory ifFalse:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
   100
            aSourceFile copyTo:newFile.
91ec771207a2 initial checkin
penk
parents:
diff changeset
   101
        ] ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
   102
            OperatingSystem recursiveCopyDirectory:(aSourceFile pathName) 
91ec771207a2 initial checkin
penk
parents:
diff changeset
   103
                                                to:newFile.
91ec771207a2 initial checkin
penk
parents:
diff changeset
   104
        ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
   105
        DirectoryContents flushCachedDirectory:(aSourceFile directory).
91ec771207a2 initial checkin
penk
parents:
diff changeset
   106
        result := true.
91ec771207a2 initial checkin
penk
parents:
diff changeset
   107
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
   108
! !
91ec771207a2 initial checkin
penk
parents:
diff changeset
   109
91ec771207a2 initial checkin
penk
parents:
diff changeset
   110
!Copy class methodsFor:'documentation'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
   111
91ec771207a2 initial checkin
penk
parents:
diff changeset
   112
version
91ec771207a2 initial checkin
penk
parents:
diff changeset
   113
    ^ '$Header$'
91ec771207a2 initial checkin
penk
parents:
diff changeset
   114
! !