Delete.st
author penk
Wed, 04 Sep 2002 17:26:34 +0200
changeset 1590 89e229528104
parent 1585 91ec771207a2
permissions -rw-r--r--
*** empty log message ***
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:#Delete
91ec771207a2 initial checkin
penk
parents:
diff changeset
     4
	instanceVariableNames:'fileName errorString'
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
!Delete class methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    12
91ec771207a2 initial checkin
penk
parents:
diff changeset
    13
deleteFile:aFileOrDirectory
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 deleteFile:aFileOrDirectory.
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
deleteFiles:aColOfFiles
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 deleteFiles:aColOfFiles.
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
!Delete methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    36
91ec771207a2 initial checkin
penk
parents:
diff changeset
    37
deleteFile:aFileOrDirectory
91ec771207a2 initial checkin
penk
parents:
diff changeset
    38
91ec771207a2 initial checkin
penk
parents:
diff changeset
    39
    | file isDirectory |
91ec771207a2 initial checkin
penk
parents:
diff changeset
    40
91ec771207a2 initial checkin
penk
parents:
diff changeset
    41
    aFileOrDirectory notNil ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    42
        file := aFileOrDirectory asFilename.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    43
91ec771207a2 initial checkin
penk
parents:
diff changeset
    44
        file exists ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    45
            isDirectory := file isDirectory.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    46
91ec771207a2 initial checkin
penk
parents:
diff changeset
    47
            Error handle:[:ex|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    48
                "was not able to remove it"
91ec771207a2 initial checkin
penk
parents:
diff changeset
    49
                Smalltalk beep.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    50
                self errorString:((ex description, '\', ex signal notifierString) withCRs).
91ec771207a2 initial checkin
penk
parents:
diff changeset
    51
                result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    52
            ] do:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    53
                isDirectory ifTrue:[file recursiveRemove] ifFalse:[file remove].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    54
91ec771207a2 initial checkin
penk
parents:
diff changeset
    55
             "/ flush parent directory or directory
91ec771207a2 initial checkin
penk
parents:
diff changeset
    56
                DirectoryContents flushCachedDirectory:(file directory).
91ec771207a2 initial checkin
penk
parents:
diff changeset
    57
            ]
91ec771207a2 initial checkin
penk
parents:
diff changeset
    58
        ]
91ec771207a2 initial checkin
penk
parents:
diff changeset
    59
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    60
    result := true.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    61
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    62
91ec771207a2 initial checkin
penk
parents:
diff changeset
    63
deleteFiles:colOfFiles
91ec771207a2 initial checkin
penk
parents:
diff changeset
    64
    "delete current selected files/directories
91ec771207a2 initial checkin
penk
parents:
diff changeset
    65
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    66
    | retVal ask size|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    67
91ec771207a2 initial checkin
penk
parents:
diff changeset
    68
    ask := true.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    69
    size := colOfFiles size.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    70
    colOfFiles do:[: filename |
91ec771207a2 initial checkin
penk
parents:
diff changeset
    71
        ask ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    72
            size = 1 ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    73
                retVal := Dialog 
91ec771207a2 initial checkin
penk
parents:
diff changeset
    74
                    confirmWithCancel:('really delete ', filename asString , ' ?')
91ec771207a2 initial checkin
penk
parents:
diff changeset
    75
                               labels:#('Yes' 'No' 'Cancel')
91ec771207a2 initial checkin
penk
parents:
diff changeset
    76
                               values:#(#yes #no #cancel)
91ec771207a2 initial checkin
penk
parents:
diff changeset
    77
                              default:1.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    78
            ] ifFalse:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    79
                retVal := Dialog 
91ec771207a2 initial checkin
penk
parents:
diff changeset
    80
                    confirmWithCancel:('really delete ', filename asString , ' ?')
91ec771207a2 initial checkin
penk
parents:
diff changeset
    81
                               labels:#('Yes' 'No' 'Yes to All' 'Cancel')
91ec771207a2 initial checkin
penk
parents:
diff changeset
    82
                               values:#(#yes #no #yesToAll #cancel)
91ec771207a2 initial checkin
penk
parents:
diff changeset
    83
                              default:1.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    84
            ]
91ec771207a2 initial checkin
penk
parents:
diff changeset
    85
        ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    86
        retVal == #cancel ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    87
            ^ self.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    88
        ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    89
        retVal == #yes ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    90
            self deleteFile:filename.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    91
        ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    92
        retVal == #yesToAll ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    93
            self deleteFile:filename.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    94
            ask := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    95
            retVal := #yes.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    96
        ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    97
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    98
! !
91ec771207a2 initial checkin
penk
parents:
diff changeset
    99
91ec771207a2 initial checkin
penk
parents:
diff changeset
   100
!Delete class methodsFor:'documentation'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
   101
91ec771207a2 initial checkin
penk
parents:
diff changeset
   102
version
91ec771207a2 initial checkin
penk
parents:
diff changeset
   103
    ^ '$Header$'
91ec771207a2 initial checkin
penk
parents:
diff changeset
   104
! !