diff -r 3f9586203b24 -r 3a70c4f5afe0 PeekableStream.st --- a/PeekableStream.st Thu Sep 21 17:42:44 2006 +0200 +++ b/PeekableStream.st Thu Sep 21 18:21:27 2006 +0200 @@ -14,7 +14,8 @@ Stream subclass:#PeekableStream instanceVariableNames:'' - classVariableNames:'ErrorDuringFileInSignal CurrentFileInDirectoryQuerySignal' + classVariableNames:'ErrorDuringFileInSignal CurrentFileInDirectoryQuerySignal + CurrentSourceContainerQuery' poolDictionaries:'' category:'Streams' ! @@ -60,6 +61,11 @@ CurrentFileInDirectoryQuerySignal nameClass:self message:#currentFileInDirectoryQuerySignal. CurrentFileInDirectoryQuerySignal notifierString:'query for current directory when filing in'. CurrentFileInDirectoryQuerySignal handlerBlock:[:ex | ex proceedWith:Filename currentDirectory]. + + CurrentSourceContainerQuery := QuerySignal new. + CurrentSourceContainerQuery nameClass:self message:#currentClassFilenameQuery. + CurrentSourceContainerQuery notifierString:'query for current sorce container name when filing in'. + CurrentSourceContainerQuery handlerBlock:[:ex | ex proceedWith:nil]. ] " @@ -77,6 +83,14 @@ current directory, by asking this querySignal (which is nice sometimes)." ^ CurrentFileInDirectoryQuerySignal +! + +currentSourceContainerQuery + "return the querySignal, which can be used to ask for the current source container filename + during a fileIn + Using this, allows for the loaded code to remember the classes file name." + + ^ CurrentSourceContainerQuery ! ! !PeekableStream class methodsFor:'queries'! @@ -85,6 +99,12 @@ "during a fileIn (if a script), the script can ask for the current directory" ^ CurrentFileInDirectoryQuerySignal query +! + +currentSourceContainer + "during a fileIn (if a script), the script can ask for the current filename" + + ^ CurrentSourceContainerQuery query ! ! !PeekableStream methodsFor:'chunk input/output'! @@ -573,7 +593,9 @@ [ Smalltalk systemPath:(oldPath copy addFirst:thisDirectoryPathName; yourself). CurrentFileInDirectoryQuerySignal answer:thisDirectory do:[ - val := self basicFileInNotifying:notifiedLoader passChunk:passChunk. + CurrentSourceContainerQuery answer:self do:[ + val := self basicFileInNotifying:notifiedLoader passChunk:passChunk. + ]. ] ] ensure:[ "take care, someone could have changed SystemPath during fileIn!!" @@ -949,7 +971,7 @@ !PeekableStream class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.29 2006-05-08 16:54:42 stefan Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.30 2006-09-21 16:21:27 stefan Exp $' ! ! PeekableStream initialize!