diff -r e8e47b1b290f -r 3dd6584ffe92 FileBrowser.st --- a/FileBrowser.st Mon Apr 25 16:33:08 2005 +0200 +++ b/FileBrowser.st Mon Apr 25 16:34:54 2005 +0200 @@ -2259,10 +2259,14 @@ fileFileIn:fileName lazy:lazy "fileIn fileName" - |aStream path wasLazy prevCurrentFileName| + |aStream path wasLazy prevCurrentFileName dontAskSignals| path := currentDirectory filenameFor:fileName. - path type == #regular ifTrue:[ + path isRegularFile ifFalse:[ + ^ self. + ]. + + [ prevCurrentFileName := currentFileInFileName. currentFileInFileName := fileName. @@ -2335,6 +2339,83 @@ ] ]]]] ]] + ] on:Error, HaltInterrupt, Class packageRedefinitionNotification do:[:ex| + |sig msg label labels values action proceedValue isRedef| + + isRedef := false. + sig := ex signal. + sig == Class methodRedefinitionNotification ifTrue:[ + msg := 'trying to overwrite method:\\ ' , ex oldMethod whoString , '\\in package ''' + , ex oldPackage , ''' with method from package ''' , ex newPackage , ''''. + label := 'Method redefinition in fileIn'. + isRedef := true. + ] ifFalse:[sig == Class classRedefinitionNotification ifTrue:[ + msg := 'trying to redefine class: ' , ex oldClass name allBold , '\\in package ''' + , ex oldPackage , ''' with new definition from package ''' , ex newPackage , ''''. + label := 'Class redefinition in fileIn'. + isRedef := true. + ] ifFalse:[sig == HaltInterrupt ifTrue:[ |sender| + label := 'Breakpoint/Halt in fileIn'. + sender := ex suspendedContext. + msg := msg , '\\in ' , sender receiver class name , '>>' , sender selector + ] ifFalse:[ + label := 'Error in fileIn'. + msg := 'error in fileIn: %1' + ]]]. + + msg := msg bindWith:ex description. + + isRedef ifTrue:[ + labels := #('Cancel' 'Skip' 'Debug' 'Continue' 'ContinueForAll'). + values := #(abort skip debug continue continueForAll). + ] ifFalse:[ + labels := #('Cancel' 'Skip' 'Debug' 'Continue'). + values := #(abort skip debug continue). + ]. + + AbortAllOperationRequest isHandled ifTrue:[ + labels := #('Cancel All') , labels. + values := #(cancelAll) , values. + ]. + + action := OptionBox + request:(msg withCRs) + label:label + image:(WarningBox iconBitmap) + buttonLabels:labels + values:values + default:#continue + onCancel:#abort. + + action == #continueForAll ifTrue:[ + dontAskSignals isNil ifTrue:[ + dontAskSignals := IdentityDictionary new. + ]. + dontAskSignals at:sig put:#continue. + action := #continue. + ]. + + action == #continue ifTrue:[ + ex proceedWith:(isRedef ifTrue:[#keep] ifFalse:[#continue]). + ]. + action == #abort ifTrue:[ + AbortOperationRequest raise. + ex return + ]. + action == #cancelAll ifTrue:[ + AbortAllOperationRequest raise. + ex return + ]. + action == #skip ifTrue:[ + ex proceedWith:nil + ]. + action == #debug ifTrue:[ + Debugger enter:ex suspendedContext + withMessage:ex description + mayProceed:true. + ex proceedWith:nil. "skip this change" + ]. + ex reject ]. currentFileInFileName := prevCurrentFileName @@ -7433,5 +7514,5 @@ !FileBrowser class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.600 2005-04-14 09:12:45 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.601 2005-04-25 14:34:54 stefan Exp $' ! !