--- a/PosStream.st Mon Jun 15 21:39:03 1998 +0200
+++ b/PosStream.st Mon Jun 15 21:41:00 1998 +0200
@@ -456,8 +456,16 @@
Someone (which is usually some codeView) is notified of errors."
|lastValue pkg spc spaces
- packageQuerySignal nameSpaceQuerySignal usedNameSpaceQuerySignal|
+ packageQuerySignal nameSpaceQuerySignal usedNameSpaceQuerySignal
+ changeDefaultApplicationNotificationSignal
+ defaultApplicationQuerySignal defaultApplication
+ handledSignals|
+ "/ support for V'Age applications
+ defaultApplicationQuerySignal := Class defaultApplicationQuerySignal.
+ changeDefaultApplicationNotificationSignal := Class changeDefaultApplicationNotificationSignal.
+
+ "/ support for ST/X's namespaces & packages
packageQuerySignal := Class packageQuerySignal.
nameSpaceQuerySignal := Class nameSpaceQuerySignal.
usedNameSpaceQuerySignal := Class usedNameSpaceQuerySignal.
@@ -477,79 +485,109 @@
] ifTrue:[
spaces := someone usedNameSpaces
].
- packageQuerySignal answer:pkg
- do:[
- usedNameSpaceQuerySignal answer:spaces
- do:[
- nameSpaceQuerySignal answer:spc
- do:[
- |methodRedefinitionSignal|
+ (someone respondsTo:#defaultApplication) ifFalse:[
+ defaultApplication := defaultApplicationQuerySignal raise.
+ ] ifTrue:[
+ defaultApplication := someone defaultApplication
+ ].
- methodRedefinitionSignal := Class methodRedefinitionSignal.
-
- "
- catch any errors during fileIn
- - offer debug/abort/continue choice
- "
- ErrorSignal handle:[:ex |
- |action what sender msg param oldPackage newPackage|
+ handledSignals := SignalSet new.
+ handledSignals add:changeDefaultApplicationNotificationSignal.
+ handledSignals add:packageQuerySignal.
+ handledSignals add:usedNameSpaceQuerySignal.
+ handledSignals add:nameSpaceQuerySignal.
+ handledSignals add:defaultApplicationQuerySignal.
+ handledSignals add:ErrorSignal.
+ handledSignals handle:[:ex |
+ |sig action what sender msg param oldPackage newPackage|
- ex signal == Signal noHandlerSignal ifTrue:[
- ex parameter rejected ifTrue:[
- ex reject
- ]
- ].
+ sig := ex signal.
+ sig == changeDefaultApplicationNotificationSignal ifTrue:[
+ "/ invoked via #becomeDefault to set the defaultApp and the package.
+ "/ (only when filing in V'Age code)
+ defaultApplication := ex parameter.
+ pkg := defaultApplication name asSymbol.
+ ex proceed
+ ].
+ sig == defaultApplicationQuerySignal ifTrue:[
+ "/ query for the application to add classes & methods into
+ "/ (only when filing in V'Age code)
+ ex proceedWith:defaultApplication
+ ].
+ sig == packageQuerySignal ifTrue:[
+ "/ query for the package to use for classes & methods
+ ex proceedWith:pkg
+ ].
+ sig == usedNameSpaceQuerySignal ifTrue:[
+ "/ query for the namespaces searched when encountering globals
+ ex proceedWith:spaces
+ ].
+ sig == nameSpaceQuerySignal ifTrue:[
+ "/ query for the namespace to install new classes in
+ ex proceedWith:spc
+ ].
- "/ for your convenience ...
- ex signal == methodRedefinitionSignal ifTrue:[
- param := ex parameter. "/ an association: oldMethod -> newMethod
- oldPackage := param key package.
- newPackage := param value package.
- msg := 'trying to overwrite method:\\ %1\\in package '''
- , oldPackage , ''' with method from package ''' , newPackage , ''''
- ] ifFalse:[
- msg := 'error in fileIn: %1'
- ].
+ sig == Signal noHandlerSignal ifTrue:[
+ ex parameter rejected ifTrue:[
+ ex reject
+ ]
+ ].
- what := ex errorString.
- what isNil ifTrue:[
- what := ex signal notifierString.
- ].
-
- "/ handle the case where no GUI has been built in,
- "/ just abort the fileIn with a notification
+ "/ for your convenience ...
+ sig == Class methodRedefinitionSignal ifTrue:[
+ param := ex parameter. "/ an association: oldMethod -> newMethod
+ oldPackage := param key package.
+ newPackage := param value package.
+ msg := 'trying to overwrite method:\\ %1\\in package '''
+ , oldPackage , ''' with method from package ''' , newPackage , ''''
+ ] ifFalse:[
+ msg := 'error in fileIn: %1'
+ ].
- Display isNil ifTrue:[
- sender := ex suspendedContext sender.
- self notify:(what ,
- ' in ' , sender receiver class name ,
- '>>>' , sender selector).
- ex return
- ].
+ what := ex errorString.
+ what isNil ifTrue:[
+ what := ex signal notifierString.
+ ].
+
+ "/ handle the case where no GUI has been built in,
+ "/ just abort the fileIn with a notification
- "/ otherwise ask what should be done now and either
- "/ continue or abort the fileIn
+ Display isNil ifTrue:[
+ sender := ex suspendedContext sender.
+ self notify:(what ,
+ ' in ' , sender receiver class name ,
+ '>>>' , sender selector).
+ ex return
+ ].
+
+ msg := msg bindWith:what.
+
+ sig == Object haltSignal ifTrue:[
+ sender := ex suspendedContext.
+ msg := msg , ('\\in ' , sender receiver class name , '>>>' , sender selector) withCRs
+ ].
- action := self askForDebug:(msg bindWith:what) withCRs.
- action == #continue ifTrue:[
- ex proceed
- ].
- action == #abort ifTrue:[
- ex return
- ].
- "/ (ex signal) enterDebuggerWith:ex message:what.
- ex reject
- ] do:[
- [self atEnd] whileFalse:[
- lastValue := self fileInNextChunkNotifying:someone passChunk:passChunk
- ]
- ].
- ].
+ "/ otherwise ask what should be done now and either
+ "/ continue or abort the fileIn
+
+ action := self askForDebug:msg withCRs.
+ action == #continue ifTrue:[
+ ex proceed
].
+ action == #abort ifTrue:[
+ ex return
+ ].
+
+ "/ (ex signal) enterDebuggerWith:ex message:what.
+ ex reject
+ ] do:[
+ [self atEnd] whileFalse:[
+ lastValue := self fileInNextChunkNotifying:someone passChunk:passChunk
+ ]
].
^ lastValue
- "Modified: 14.10.1997 / 15:55:11 / cg"
+ "Modified: / 15.6.1998 / 21:40:27 / cg"
! !
!PositionableStream methodsFor:'positioning'!
@@ -795,6 +833,6 @@
!PositionableStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/PosStream.st,v 1.64 1998-06-15 16:03:52 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/PosStream.st,v 1.65 1998-06-15 19:41:00 cg Exp $'
! !
PositionableStream initialize!
--- a/PositionableStream.st Mon Jun 15 21:39:03 1998 +0200
+++ b/PositionableStream.st Mon Jun 15 21:41:00 1998 +0200
@@ -456,8 +456,16 @@
Someone (which is usually some codeView) is notified of errors."
|lastValue pkg spc spaces
- packageQuerySignal nameSpaceQuerySignal usedNameSpaceQuerySignal|
+ packageQuerySignal nameSpaceQuerySignal usedNameSpaceQuerySignal
+ changeDefaultApplicationNotificationSignal
+ defaultApplicationQuerySignal defaultApplication
+ handledSignals|
+ "/ support for V'Age applications
+ defaultApplicationQuerySignal := Class defaultApplicationQuerySignal.
+ changeDefaultApplicationNotificationSignal := Class changeDefaultApplicationNotificationSignal.
+
+ "/ support for ST/X's namespaces & packages
packageQuerySignal := Class packageQuerySignal.
nameSpaceQuerySignal := Class nameSpaceQuerySignal.
usedNameSpaceQuerySignal := Class usedNameSpaceQuerySignal.
@@ -477,79 +485,109 @@
] ifTrue:[
spaces := someone usedNameSpaces
].
- packageQuerySignal answer:pkg
- do:[
- usedNameSpaceQuerySignal answer:spaces
- do:[
- nameSpaceQuerySignal answer:spc
- do:[
- |methodRedefinitionSignal|
+ (someone respondsTo:#defaultApplication) ifFalse:[
+ defaultApplication := defaultApplicationQuerySignal raise.
+ ] ifTrue:[
+ defaultApplication := someone defaultApplication
+ ].
- methodRedefinitionSignal := Class methodRedefinitionSignal.
-
- "
- catch any errors during fileIn
- - offer debug/abort/continue choice
- "
- ErrorSignal handle:[:ex |
- |action what sender msg param oldPackage newPackage|
+ handledSignals := SignalSet new.
+ handledSignals add:changeDefaultApplicationNotificationSignal.
+ handledSignals add:packageQuerySignal.
+ handledSignals add:usedNameSpaceQuerySignal.
+ handledSignals add:nameSpaceQuerySignal.
+ handledSignals add:defaultApplicationQuerySignal.
+ handledSignals add:ErrorSignal.
+ handledSignals handle:[:ex |
+ |sig action what sender msg param oldPackage newPackage|
- ex signal == Signal noHandlerSignal ifTrue:[
- ex parameter rejected ifTrue:[
- ex reject
- ]
- ].
+ sig := ex signal.
+ sig == changeDefaultApplicationNotificationSignal ifTrue:[
+ "/ invoked via #becomeDefault to set the defaultApp and the package.
+ "/ (only when filing in V'Age code)
+ defaultApplication := ex parameter.
+ pkg := defaultApplication name asSymbol.
+ ex proceed
+ ].
+ sig == defaultApplicationQuerySignal ifTrue:[
+ "/ query for the application to add classes & methods into
+ "/ (only when filing in V'Age code)
+ ex proceedWith:defaultApplication
+ ].
+ sig == packageQuerySignal ifTrue:[
+ "/ query for the package to use for classes & methods
+ ex proceedWith:pkg
+ ].
+ sig == usedNameSpaceQuerySignal ifTrue:[
+ "/ query for the namespaces searched when encountering globals
+ ex proceedWith:spaces
+ ].
+ sig == nameSpaceQuerySignal ifTrue:[
+ "/ query for the namespace to install new classes in
+ ex proceedWith:spc
+ ].
- "/ for your convenience ...
- ex signal == methodRedefinitionSignal ifTrue:[
- param := ex parameter. "/ an association: oldMethod -> newMethod
- oldPackage := param key package.
- newPackage := param value package.
- msg := 'trying to overwrite method:\\ %1\\in package '''
- , oldPackage , ''' with method from package ''' , newPackage , ''''
- ] ifFalse:[
- msg := 'error in fileIn: %1'
- ].
+ sig == Signal noHandlerSignal ifTrue:[
+ ex parameter rejected ifTrue:[
+ ex reject
+ ]
+ ].
- what := ex errorString.
- what isNil ifTrue:[
- what := ex signal notifierString.
- ].
-
- "/ handle the case where no GUI has been built in,
- "/ just abort the fileIn with a notification
+ "/ for your convenience ...
+ sig == Class methodRedefinitionSignal ifTrue:[
+ param := ex parameter. "/ an association: oldMethod -> newMethod
+ oldPackage := param key package.
+ newPackage := param value package.
+ msg := 'trying to overwrite method:\\ %1\\in package '''
+ , oldPackage , ''' with method from package ''' , newPackage , ''''
+ ] ifFalse:[
+ msg := 'error in fileIn: %1'
+ ].
- Display isNil ifTrue:[
- sender := ex suspendedContext sender.
- self notify:(what ,
- ' in ' , sender receiver class name ,
- '>>>' , sender selector).
- ex return
- ].
+ what := ex errorString.
+ what isNil ifTrue:[
+ what := ex signal notifierString.
+ ].
+
+ "/ handle the case where no GUI has been built in,
+ "/ just abort the fileIn with a notification
- "/ otherwise ask what should be done now and either
- "/ continue or abort the fileIn
+ Display isNil ifTrue:[
+ sender := ex suspendedContext sender.
+ self notify:(what ,
+ ' in ' , sender receiver class name ,
+ '>>>' , sender selector).
+ ex return
+ ].
+
+ msg := msg bindWith:what.
+
+ sig == Object haltSignal ifTrue:[
+ sender := ex suspendedContext.
+ msg := msg , ('\\in ' , sender receiver class name , '>>>' , sender selector) withCRs
+ ].
- action := self askForDebug:(msg bindWith:what) withCRs.
- action == #continue ifTrue:[
- ex proceed
- ].
- action == #abort ifTrue:[
- ex return
- ].
- "/ (ex signal) enterDebuggerWith:ex message:what.
- ex reject
- ] do:[
- [self atEnd] whileFalse:[
- lastValue := self fileInNextChunkNotifying:someone passChunk:passChunk
- ]
- ].
- ].
+ "/ otherwise ask what should be done now and either
+ "/ continue or abort the fileIn
+
+ action := self askForDebug:msg withCRs.
+ action == #continue ifTrue:[
+ ex proceed
].
+ action == #abort ifTrue:[
+ ex return
+ ].
+
+ "/ (ex signal) enterDebuggerWith:ex message:what.
+ ex reject
+ ] do:[
+ [self atEnd] whileFalse:[
+ lastValue := self fileInNextChunkNotifying:someone passChunk:passChunk
+ ]
].
^ lastValue
- "Modified: 14.10.1997 / 15:55:11 / cg"
+ "Modified: / 15.6.1998 / 21:40:27 / cg"
! !
!PositionableStream methodsFor:'positioning'!
@@ -795,6 +833,6 @@
!PositionableStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.64 1998-06-15 16:03:52 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.65 1998-06-15 19:41:00 cg Exp $'
! !
PositionableStream initialize!