Create.st
author penk
Wed, 04 Sep 2002 14:23:01 +0200
changeset 1588 6dde5ad32643
parent 1585 91ec771207a2
permissions -rw-r--r--
now ready to use
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:#Create
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
!Create class methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    12
91ec771207a2 initial checkin
penk
parents:
diff changeset
    13
createDirectory:newName
91ec771207a2 initial checkin
penk
parents:
diff changeset
    14
91ec771207a2 initial checkin
penk
parents:
diff changeset
    15
    |instance|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    16
91ec771207a2 initial checkin
penk
parents:
diff changeset
    17
    instance := self new.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    18
    instance createDirectory:newName.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    19
    ^ instance
91ec771207a2 initial checkin
penk
parents:
diff changeset
    20
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    21
91ec771207a2 initial checkin
penk
parents:
diff changeset
    22
createFile:newName
91ec771207a2 initial checkin
penk
parents:
diff changeset
    23
91ec771207a2 initial checkin
penk
parents:
diff changeset
    24
    |instance|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    25
91ec771207a2 initial checkin
penk
parents:
diff changeset
    26
    instance := self new.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    27
    instance createFile:newName.
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
91ec771207a2 initial checkin
penk
parents:
diff changeset
    31
!Create methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    32
91ec771207a2 initial checkin
penk
parents:
diff changeset
    33
createDirectory:newName
91ec771207a2 initial checkin
penk
parents:
diff changeset
    34
    |msg|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    35
91ec771207a2 initial checkin
penk
parents:
diff changeset
    36
    newName exists ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    37
        DialogBox warn:(newName, ' already exists.').
91ec771207a2 initial checkin
penk
parents:
diff changeset
    38
        result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    39
        ^ self
91ec771207a2 initial checkin
penk
parents:
diff changeset
    40
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    41
91ec771207a2 initial checkin
penk
parents:
diff changeset
    42
    newName makeDirectory ifFalse:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    43
        msg := errorString := ('cannot create directory '', newName,'' !!') , '\\(' , (OperatingSystem lastErrorString) , ')'.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    44
        errorString := msg withCRs.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    45
        DialogBox warn:errorString.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    46
        result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    47
        ^ self
91ec771207a2 initial checkin
penk
parents:
diff changeset
    48
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    49
    result := true.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    50
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    51
91ec771207a2 initial checkin
penk
parents:
diff changeset
    52
createFile:file
91ec771207a2 initial checkin
penk
parents:
diff changeset
    53
    "create an empty file"
91ec771207a2 initial checkin
penk
parents:
diff changeset
    54
91ec771207a2 initial checkin
penk
parents:
diff changeset
    55
    |aStream newName msg|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    56
91ec771207a2 initial checkin
penk
parents:
diff changeset
    57
    newName := file baseName.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    58
    file exists ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    59
        (Dialog 
91ec771207a2 initial checkin
penk
parents:
diff changeset
    60
            confirm:(newName, ' already exists\\truncate ?') withCRs
91ec771207a2 initial checkin
penk
parents:
diff changeset
    61
            yesLabel:('Truncate')
91ec771207a2 initial checkin
penk
parents:
diff changeset
    62
            noLabel:('Cancel'))
91ec771207a2 initial checkin
penk
parents:
diff changeset
    63
        ifFalse:[^ self].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    64
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    65
91ec771207a2 initial checkin
penk
parents:
diff changeset
    66
    FileStream openErrorSignal handle:[:ex|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    67
        msg := ('Cannot create file '', newName,'' !!') , '\\(' , (FileStream lastErrorString) , ')'.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    68
        errorString := msg withCRs.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    69
        ^ DialogBox warn:errorString
91ec771207a2 initial checkin
penk
parents:
diff changeset
    70
    ] do:[    
91ec771207a2 initial checkin
penk
parents:
diff changeset
    71
        aStream := file newReadWriteStream.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    72
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    73
    aStream notNil ifTrue:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    74
        aStream close.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    75
    ] ifFalse:[
91ec771207a2 initial checkin
penk
parents:
diff changeset
    76
        msg := ('Cannot create file '', newName, '' !!') , '\\(' , (FileStream lastErrorString) , ')'.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    77
        errorString := msg withCRs.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    78
        ^ DialogBox warn:errorString
91ec771207a2 initial checkin
penk
parents:
diff changeset
    79
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
    80
! !
91ec771207a2 initial checkin
penk
parents:
diff changeset
    81
91ec771207a2 initial checkin
penk
parents:
diff changeset
    82
!Create class methodsFor:'documentation'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    83
91ec771207a2 initial checkin
penk
parents:
diff changeset
    84
version
91ec771207a2 initial checkin
penk
parents:
diff changeset
    85
    ^ '$Header$'
91ec771207a2 initial checkin
penk
parents:
diff changeset
    86
! !