FileOperation.st
changeset 9576 4505159b2222
parent 9512 fc8df478d3f1
child 9650 adae3f000284
equal deleted inserted replaced
9575:548adf8e9d98 9576:4505159b2222
  1031 
  1031 
  1032     "Modified: / 17-03-2004 / 12:42:02 / cg"
  1032     "Modified: / 17-03-2004 / 12:42:02 / cg"
  1033 !
  1033 !
  1034 
  1034 
  1035 deleteFiles:colOfFiles confirm:confirm
  1035 deleteFiles:colOfFiles confirm:confirm
  1036     |resources answer nFilesToDelete ask labels values fileTypeString msg lbls vals dontAskForNonEmptyDirectory|
  1036     |resources answer nFilesToDelete ask labels values fileTypeString msg lbls vals dontAskForNonEmptyDirectory
       
  1037      nFilesDone|
  1037 
  1038 
  1038     dontAskForNonEmptyDirectory := false.
  1039     dontAskForNonEmptyDirectory := false.
  1039     ask := confirm.
  1040     ask := confirm.
  1040     resources := AbstractFileBrowser classResources.
  1041     resources := AbstractFileBrowser classResources.
  1041 
  1042 
  1042     nFilesToDelete := colOfFiles size.
  1043     nFilesToDelete := colOfFiles size.
       
  1044     nFilesDone := 0.
  1043     colOfFiles do:[:filenameOrString |
  1045     colOfFiles do:[:filenameOrString |
  1044 	|filename doDelete skip|
  1046         |filename doDelete skip|
  1045 
  1047 
  1046 	filename := filenameOrString asFilename.
  1048         filename := filenameOrString asFilename.
  1047 
  1049         skip := false.
  1048 	skip := false.
  1050         fileTypeString := ''.
  1049 	fileTypeString := ''.
  1051         filename isSymbolicLink ifTrue:[
  1050 	filename isSymbolicLink ifTrue:[
  1052             fileTypeString := 'symbolic link '.
  1051 	    fileTypeString := 'symbolic link '.
  1053         ] ifFalse:[
  1052 	] ifFalse:[
  1054             filename exists ifFalse:[
  1053 	    filename exists ifFalse:[
  1055                 (Dialog
  1054 		(Dialog
  1056                     confirm:('%1 does not exist.' bindWith:filename asString allBold)
  1055 		    confirm:('%1 does not exist.' bindWith:filename asString allBold)
  1057                     yesLabel:(resources string:'Proceed')
  1056 		    yesLabel:(resources string:'Proceed')
  1058                     noLabel:(resources string:'Cancel'))
  1057 		    noLabel:(resources string:'Cancel'))
  1059                 ifFalse:[
  1058 		ifFalse:[
  1060                     ^ self.
  1059 		    ^ self.
  1061                 ].
  1060 		].
  1062                 skip := true.
  1061 		skip := true.
  1063             ]
  1062 	    ]
  1064         ].
  1063 	].
  1065         skip ifFalse:[
  1064 	skip ifFalse:[
  1066             ask ifTrue:[
  1065 	    ask ifTrue:[
  1067                 nFilesToDelete = 1 ifTrue:[
  1066 		nFilesToDelete = 1 ifTrue:[
  1068                     labels := #('No' 'Yes').
  1067 		    labels := #('No' 'Yes').
  1069                     values := #(#no #yes).
  1068 		    values := #(#no #yes).
  1070                 ] ifFalse:[
  1069 		] ifFalse:[
  1071                     labels := #('Cancel' 'No' 'Yes' 'Yes to All' ).
  1070 		    labels := #('Cancel' 'No' 'Yes' 'Yes to All' ).
  1072                     values := #(#cancel #no #yes #yesToAll).
  1071 		    values := #(#cancel #no #yes #yesToAll).
  1073                 ].
  1072 		].
  1074                 msg := self isErase ifTrue:'Really erase' ifFalse:'Really delete'.
  1073 		msg := self isErase ifTrue:'Really erase' ifFalse:'Really delete'.
  1075                 msg := msg ,
  1074 		msg := msg ,
  1076                        (nFilesToDelete = 1
  1075 		       (nFilesToDelete = 1
  1077                             ifTrue:'\\%1%2 ?'
  1076 			    ifTrue:'\\%1%2 ?'
  1078                             ifFalse:'\\%1%2 \\(%3 files alltogether)').
  1077 			    ifFalse:'\\%1%2 \\(%3 files alltogether)').
  1079                 answer := Dialog
  1078 		answer := Dialog
  1080                     confirmWithCancel:(resources
  1079 		    confirmWithCancel:(resources
  1081                                         stringWithCRs:msg
  1080 					stringWithCRs:msg
  1082                                         with:fileTypeString
  1081 					with:fileTypeString
  1083                                         with:(filename asString allBold)
  1082 					with:(filename asString allBold)
  1084                                         with:nFilesToDelete)
  1083 					with:nFilesToDelete)
  1085                     labels:(resources array:labels)
  1084 		    labels:(resources array:labels)
  1086                     values:values
  1085 		    values:values
  1087                     default:(values indexOf:#yes).
  1086 		    default:(values indexOf:#yes).
  1088             ] ifFalse:[
  1087 	    ] ifFalse:[
  1089                 answer := #yesToAll.
  1088 		answer := #yesToAll.
  1090             ].
  1089 	    ].
  1091 
  1090 
  1092             answer == #cancel ifTrue:[
  1091 	    answer == #cancel ifTrue:[
  1093                 ^ self.
  1092 		^ self.
  1094             ].
  1093 	    ].
  1095 
  1094 
  1096             answer == #yesToAll ifTrue:[
  1095 	    answer == #yesToAll ifTrue:[
  1097                 ask := false.
  1096 		ask := false.
  1098                 answer := #yes.
  1097 		answer := #yes.
  1099             ].
  1098 	    ].
  1100 
  1099 
  1101             answer == #yes ifTrue:[
  1100 	    answer == #yes ifTrue:[
  1102                 doDelete := true.
  1101 		doDelete := true.
  1103                 filename isSymbolicLink ifFalse:[
  1102 		filename isSymbolicLink ifFalse:[
  1104                     dontAskForNonEmptyDirectory ifFalse:[
  1103 		    dontAskForNonEmptyDirectory ifFalse:[
  1105                         filename isNonEmptyDirectory ifTrue:[
  1104 			filename isNonEmptyDirectory ifTrue:[
  1106                             colOfFiles size == 1 ifTrue:[
  1105 			    colOfFiles size == 1 ifTrue:[
  1107                                 lbls := #('Cancel' 'Remove').
  1106 				lbls := #('Cancel' 'Remove').
  1108                                 vals := #(false true).
  1107 				vals := #(false true).
  1109                             ] ifFalse:[
  1108 			    ] ifFalse:[
  1110                                 lbls := #('Cancel All' 'Keep' 'Remove' 'Remove All').
  1109 				lbls := #('Cancel All' 'Keep' 'Remove' 'Remove All').
  1111                                 vals := #(nil false true #removeAll).
  1110 				vals := #(nil false true #removeAll).
  1112                             ].
  1111 			    ].
  1113                             doDelete := Dialog
  1112 			    doDelete := Dialog
  1114                                         confirmWithCancel:(resources
  1113 					confirmWithCancel:(resources
  1115                                                             stringWithCRs:'Directory ''%1'' is not empty\remove anyway ?'
  1114 							    stringWithCRs:'Directory ''%1'' is not empty\remove anyway ?'
  1116                                                             with:filename pathName allBold)
  1115 							    with:filename pathName allBold)
  1117                                         labels:( resources array:lbls )
  1116 					labels:( resources array:lbls )
  1118                                         values:vals
  1117 					values:vals
  1119                                         default:(vals indexOf:true).
  1118 					default:(vals indexOf:true).
  1120                             doDelete == nil ifTrue:[
  1119 			    doDelete == nil ifTrue:[
  1121                                 ^ self
  1120 				^ self
  1122                             ].
  1121 			    ].
  1123                             doDelete == #removeAll ifTrue:[
  1122 			    doDelete == #removeAll ifTrue:[
  1124                                 dontAskForNonEmptyDirectory := true.
  1123 				dontAskForNonEmptyDirectory := true.
  1125                                 doDelete := true.
  1124 				doDelete := true.
  1126                             ].
  1125 			    ].
  1127                         ].
  1126 			].
  1128                     ].
  1127 		    ].
  1129                 ].
  1128 		].
  1130                 doDelete ifTrue:[
  1129 		doDelete ifTrue:[
  1131                     ProgressNotification progressPercentage:(nFilesDone / nFilesToDelete)*100.
  1130 		    self deleteFile:filename.
  1132                     self deleteFile:filename.
  1131 		]
  1133                     nFilesDone := nFilesDone + 1.
  1132 	    ].
  1134                     ProgressNotification progressPercentage:(nFilesDone / nFilesToDelete)*100.
  1133 	].
  1135                 ]
  1134     ].
  1136             ].
  1135 
  1137         ].
  1136     "Modified: / 05-09-2006 / 11:52:35 / cg"
  1138     ].
       
  1139 
       
  1140     "Modified: / 11-10-2010 / 13:08:20 / cg"
  1137 ! !
  1141 ! !
  1138 
  1142 
  1139 !FileOperation::Erase methodsFor:'actions-basic'!
  1143 !FileOperation::Erase methodsFor:'actions-basic'!
  1140 
  1144 
  1141 eraseFilesContentsBeforeRemoving:file
  1145 eraseFilesContentsBeforeRemoving:file
  1549 ! !
  1553 ! !
  1550 
  1554 
  1551 !FileOperation class methodsFor:'documentation'!
  1555 !FileOperation class methodsFor:'documentation'!
  1552 
  1556 
  1553 version
  1557 version
  1554     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.85 2010-07-09 17:14:26 cg Exp $'
  1558     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.86 2010-10-11 11:09:40 cg Exp $'
  1555 !
  1559 !
  1556 
  1560 
  1557 version_CVS
  1561 version_CVS
  1558     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.85 2010-07-09 17:14:26 cg Exp $'
  1562     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.86 2010-10-11 11:09:40 cg Exp $'
  1559 ! !
  1563 ! !