checkin from browser
authorClaus Gittinger <cg@exept.de>
Mon, 13 Jan 1997 22:57:22 +0100
changeset 1198 314566302208
parent 1197 79c3db76cf9a
child 1199 f113f6a4c04a
checkin from browser
DevWorkst.st
DeviceWorkstation.st
--- a/DevWorkst.st	Mon Jan 13 22:43:42 1997 +0100
+++ b/DevWorkst.st	Mon Jan 13 22:57:22 1997 +0100
@@ -3684,6 +3684,8 @@
 !DeviceWorkstation methodsFor:'interactive queries'!
 
 originFromUser:extent
+    "{ Pragma: +optSpace }"
+
     "let user specify a rectangles origin on the screen, return the rectangle.
      Start with initialRectangle. 
      Can be used for dragging operations."
@@ -3705,45 +3707,45 @@
     origin := self pointerPosition.
 
     root noClipByChildren.
-    root foreground:Color black background:Color white.
+    root foreground:blackColor background:whiteColor.
 
     root xoring:[
-	|left right top bottom newOrigin newCorner p|
-
-	rect := origin extent:extent.
-	root displayRectangle:rect.
-
-	self 
-	    grabPointerIn:root id 
-	    withCursor:curs id
-	    pointerMode:#async 
-	    keyboardMode:#sync 
-	    confineTo:nil.
-
-	[self leftButtonPressed] whileTrue:[
-	    newOrigin := self pointerPosition.
-
-	    (newOrigin ~= origin) ifTrue:[
-		root displayRectangle:rect.
-
-		self 
-		    grabPointerIn:root id 
-		    withCursor:curs id
-		    pointerMode:#async 
-		    keyboardMode:#sync 
-		    confineTo:nil.
-
-		rect := newOrigin extent:extent.
-		root displayRectangle:rect.
-		self disposeButtonEventsFor:nil.
-		self flush.
-		origin := newOrigin.
-	    ] ifFalse:[
-		Processor yield
-	    ]
-	].
-	root displayRectangle:rect.
-	self ungrabPointer.
+        |left right top bottom newOrigin newCorner p|
+
+        rect := origin extent:extent.
+        root displayRectangle:rect.
+
+        self 
+            grabPointerIn:root id 
+            withCursor:curs id
+            pointerMode:#async 
+            keyboardMode:#sync 
+            confineTo:nil.
+
+        [self leftButtonPressed] whileTrue:[
+            newOrigin := self pointerPosition.
+
+            (newOrigin ~= origin) ifTrue:[
+                root displayRectangle:rect.
+
+                self 
+                    grabPointerIn:root id 
+                    withCursor:curs id
+                    pointerMode:#async 
+                    keyboardMode:#sync 
+                    confineTo:nil.
+
+                rect := newOrigin extent:extent.
+                root displayRectangle:rect.
+                self disposeButtonEventsFor:nil.
+                self flush.
+                origin := newOrigin.
+            ] ifFalse:[
+                Processor yield
+            ]
+        ].
+        root displayRectangle:rect.
+        self ungrabPointer.
     ].
 
     self ungrabPointer.
@@ -3760,9 +3762,13 @@
     "
      Display originFromUser:200@200
     "
+
+    "Modified: 13.1.1997 / 22:53:01 / cg"
 !
 
 pointFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a point on the screen (by pressing the left button)"
 
     ^ self pointFromUserShowing:(Cursor crossHair).
@@ -3770,9 +3776,13 @@
     "
      Display pointFromUser
     "
+
+    "Modified: 13.1.1997 / 22:53:05 / cg"
 !
 
 pointFromUserShowing:aCursor
+    "{ Pragma: +optSpace }"
+
     "let user specify a point on the screen (by pressing leftButton).
      Show aCursor while waiting."
 
@@ -3780,7 +3790,7 @@
 
     self ungrabPointer.
     self grabPointerIn:(self rootWindowId) withCursor:((aCursor on:self) id)
-	 pointerMode:#async keyboardMode:#sync confineTo:nil.
+         pointerMode:#async keyboardMode:#sync confineTo:nil.
     activePointerGrab := rootView.
 
     "
@@ -3802,9 +3812,13 @@
      Display pointFromUserShowing:(Cursor origin)   
      Display pointFromUser
     "
+
+    "Modified: 13.1.1997 / 22:53:07 / cg"
 !
 
 rectangleFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a rectangle in the screen, return the rectangle"
 
     |origin|
@@ -3822,9 +3836,13 @@
     "
      Display rectangleFromUser    
     "
+
+    "Modified: 13.1.1997 / 22:53:10 / cg"
 !
 
 rectangleFromUser:initialRectangle
+    "{ Pragma: +optSpace }"
+
     "let user specify a rectangle on the screen, return the rectangle.
      Start with initialRectangle. 
      A helper for rectangleFromUser; can also be used for resizing operations."
@@ -3841,77 +3859,77 @@
     origin := initialRectangle origin.
 
     root noClipByChildren.
-    root foreground:Color black background:Color white.
+    root foreground:blackColor background:whiteColor.
 
     root xoring:[
-	|left right top bottom newOrigin newCorner p curs|
-
-	corner := origin.
-	rect := origin corner:corner.
-	root displayRectangle:rect.
-
-	self 
-	    grabPointerIn:root id 
-	    withCursor:curs1 id
-	    pointerMode:#async 
-	    keyboardMode:#sync 
-	    confineTo:nil.
-
-	"
-	 just in case; wait for button to be down ...
-	"
-	[self leftButtonPressed] whileFalse:[Processor yield].
-
-	[self leftButtonPressed] whileTrue:[
-	    left := initialRectangle origin x.
-	    top := initialRectangle origin y.
-	    right := initialRectangle corner x.
-	    bottom := initialRectangle corner y.
-
-	    p := self pointerPosition.
-	    p x < initialRectangle left ifTrue:[
-		p y < initialRectangle top ifTrue:[
-		    curs := Cursor topLeft.
-		    left := p x.
-		    top := p y.
-		] ifFalse:[
-		    curs := Cursor bottomLeft.
-		    left := p x.
-		    bottom := p y
-		]
-	    ] ifFalse:[
-		p y < initialRectangle top ifTrue:[
-		    curs := Cursor topRight.
-		    right := p x.
-		    top := p y
-		] ifFalse:[
-		    curs := Cursor bottomRight.
-		    right := p x.
-		    bottom := p y
-		]
-	    ].
-
-	    newOrigin := left @ top.
-	    newCorner := right @ bottom.
-
-	    ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[
-		root displayRectangle:rect.
-
-		self grabPointerIn:root id withCursor:curs id
-			 pointerMode:#async keyboardMode:#sync confineTo:nil.
-
-		origin :=  newOrigin.
-		corner :=  newCorner.
-		rect := origin corner:corner.
-		root displayRectangle:rect.
-		self disposeButtonEventsFor:nil.
-		self flush.
-	    ] ifFalse:[
-		Processor yield
-	    ]
-	].
-	root displayRectangle:rect.
-	self ungrabPointer.
+        |left right top bottom newOrigin newCorner p curs|
+
+        corner := origin.
+        rect := origin corner:corner.
+        root displayRectangle:rect.
+
+        self 
+            grabPointerIn:root id 
+            withCursor:curs1 id
+            pointerMode:#async 
+            keyboardMode:#sync 
+            confineTo:nil.
+
+        "
+         just in case; wait for button to be down ...
+        "
+        [self leftButtonPressed] whileFalse:[Processor yield].
+
+        [self leftButtonPressed] whileTrue:[
+            left := initialRectangle origin x.
+            top := initialRectangle origin y.
+            right := initialRectangle corner x.
+            bottom := initialRectangle corner y.
+
+            p := self pointerPosition.
+            p x < initialRectangle left ifTrue:[
+                p y < initialRectangle top ifTrue:[
+                    curs := Cursor topLeft.
+                    left := p x.
+                    top := p y.
+                ] ifFalse:[
+                    curs := Cursor bottomLeft.
+                    left := p x.
+                    bottom := p y
+                ]
+            ] ifFalse:[
+                p y < initialRectangle top ifTrue:[
+                    curs := Cursor topRight.
+                    right := p x.
+                    top := p y
+                ] ifFalse:[
+                    curs := Cursor bottomRight.
+                    right := p x.
+                    bottom := p y
+                ]
+            ].
+
+            newOrigin := left @ top.
+            newCorner := right @ bottom.
+
+            ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[
+                root displayRectangle:rect.
+
+                self grabPointerIn:root id withCursor:curs id
+                         pointerMode:#async keyboardMode:#sync confineTo:nil.
+
+                origin :=  newOrigin.
+                corner :=  newCorner.
+                rect := origin corner:corner.
+                root displayRectangle:rect.
+                self disposeButtonEventsFor:nil.
+                self flush.
+            ] ifFalse:[
+                Processor yield
+            ]
+        ].
+        root displayRectangle:rect.
+        self ungrabPointer.
     ].
 
     self ungrabPointer.
@@ -3928,9 +3946,13 @@
     "
      Display rectangleFromUser:(100@100 corner:300@300)
     "
+
+    "Modified: 13.1.1997 / 22:53:12 / cg"
 !
 
 topviewFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a view on the screen; if the selected view is
      not an ST/X view, nil is returned.
      Otherwise, the topview is returned."
@@ -3939,16 +3961,20 @@
 
     v := self viewFromUser.
     v notNil ifTrue:[
-	v := v topView
+        v := v topView
     ].
     ^ v 
 
     "
      Display topviewFromUser
     "
+
+    "Modified: 13.1.1997 / 22:53:15 / cg"
 !
 
 viewFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a view on the screen; if the selected view is
      not an ST/X view, nil is returned.
      This returns the view being clicked in, which is not always a topView.
@@ -3965,9 +3991,13 @@
      v := Display viewFromUser.
      v notNil ifTrue:[v topView] ifFalse:[nil]
     "
+
+    "Modified: 13.1.1997 / 22:53:17 / cg"
 !
 
 viewIdFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a view on the screen, return its window id.
      This works even for non smalltalk views.
      This returns the id of the view being clicked in, 
@@ -3980,6 +4010,7 @@
     "
 
     "Created: 18.9.1995 / 23:07:20 / claus"
+    "Modified: 13.1.1997 / 22:53:20 / cg"
 ! !
 
 !DeviceWorkstation methodsFor:'keyboard mapping'!
@@ -4224,9 +4255,13 @@
 !DeviceWorkstation methodsFor:'misc'!
 
 beep
+    "{ Pragma: +optSpace }"
+
     "output an audible beep or bell"
 
     Stdout nextPut:(Character bell)
+
+    "Modified: 13.1.1997 / 22:56:13 / cg"
 !
 
 buffered
@@ -4252,9 +4287,13 @@
 !
 
 ringBell
+    "{ Pragma: +optSpace }"
+
     "alias for beep; for ST-80 compatibility"
 
     self beep
+
+    "Modified: 13.1.1997 / 22:56:02 / cg"
 !
 
 setInputFocusTo:aWindowId
@@ -4262,18 +4301,27 @@
 !
 
 sync
-    "send all buffered drawing to the display.
-     OBSOLETE: please use #flush for ST-80 compatibility"
+    "{ Pragma: +optSpace }"
+
+    "send all buffered drawing to the display and wait until its processed/drawn.
+     See also #flush, which does not wait.
+     ST-80 seems to only support flush."
 
     self flush
+
+    "Modified: 13.1.1997 / 22:55:44 / cg"
 !
 
 synchronizeOutput
+    "{ Pragma: +optSpace }"
+
     "send all buffered drawing to the display.
      OBSOLETE: please use #flush for ST-80 compatibility."
 
     self obsoleteMethodWarning:'use #flush'.
     ^ self flush
+
+    "Modified: 13.1.1997 / 22:53:44 / cg"
 !
 
 unBuffered
@@ -4838,6 +4886,6 @@
 !DeviceWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Attic/DevWorkst.st,v 1.155 1997-01-13 21:43:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/Attic/DevWorkst.st,v 1.156 1997-01-13 21:57:22 cg Exp $'
 ! !
 DeviceWorkstation initialize!
--- a/DeviceWorkstation.st	Mon Jan 13 22:43:42 1997 +0100
+++ b/DeviceWorkstation.st	Mon Jan 13 22:57:22 1997 +0100
@@ -3684,6 +3684,8 @@
 !DeviceWorkstation methodsFor:'interactive queries'!
 
 originFromUser:extent
+    "{ Pragma: +optSpace }"
+
     "let user specify a rectangles origin on the screen, return the rectangle.
      Start with initialRectangle. 
      Can be used for dragging operations."
@@ -3705,45 +3707,45 @@
     origin := self pointerPosition.
 
     root noClipByChildren.
-    root foreground:Color black background:Color white.
+    root foreground:blackColor background:whiteColor.
 
     root xoring:[
-	|left right top bottom newOrigin newCorner p|
-
-	rect := origin extent:extent.
-	root displayRectangle:rect.
-
-	self 
-	    grabPointerIn:root id 
-	    withCursor:curs id
-	    pointerMode:#async 
-	    keyboardMode:#sync 
-	    confineTo:nil.
-
-	[self leftButtonPressed] whileTrue:[
-	    newOrigin := self pointerPosition.
-
-	    (newOrigin ~= origin) ifTrue:[
-		root displayRectangle:rect.
-
-		self 
-		    grabPointerIn:root id 
-		    withCursor:curs id
-		    pointerMode:#async 
-		    keyboardMode:#sync 
-		    confineTo:nil.
-
-		rect := newOrigin extent:extent.
-		root displayRectangle:rect.
-		self disposeButtonEventsFor:nil.
-		self flush.
-		origin := newOrigin.
-	    ] ifFalse:[
-		Processor yield
-	    ]
-	].
-	root displayRectangle:rect.
-	self ungrabPointer.
+        |left right top bottom newOrigin newCorner p|
+
+        rect := origin extent:extent.
+        root displayRectangle:rect.
+
+        self 
+            grabPointerIn:root id 
+            withCursor:curs id
+            pointerMode:#async 
+            keyboardMode:#sync 
+            confineTo:nil.
+
+        [self leftButtonPressed] whileTrue:[
+            newOrigin := self pointerPosition.
+
+            (newOrigin ~= origin) ifTrue:[
+                root displayRectangle:rect.
+
+                self 
+                    grabPointerIn:root id 
+                    withCursor:curs id
+                    pointerMode:#async 
+                    keyboardMode:#sync 
+                    confineTo:nil.
+
+                rect := newOrigin extent:extent.
+                root displayRectangle:rect.
+                self disposeButtonEventsFor:nil.
+                self flush.
+                origin := newOrigin.
+            ] ifFalse:[
+                Processor yield
+            ]
+        ].
+        root displayRectangle:rect.
+        self ungrabPointer.
     ].
 
     self ungrabPointer.
@@ -3760,9 +3762,13 @@
     "
      Display originFromUser:200@200
     "
+
+    "Modified: 13.1.1997 / 22:53:01 / cg"
 !
 
 pointFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a point on the screen (by pressing the left button)"
 
     ^ self pointFromUserShowing:(Cursor crossHair).
@@ -3770,9 +3776,13 @@
     "
      Display pointFromUser
     "
+
+    "Modified: 13.1.1997 / 22:53:05 / cg"
 !
 
 pointFromUserShowing:aCursor
+    "{ Pragma: +optSpace }"
+
     "let user specify a point on the screen (by pressing leftButton).
      Show aCursor while waiting."
 
@@ -3780,7 +3790,7 @@
 
     self ungrabPointer.
     self grabPointerIn:(self rootWindowId) withCursor:((aCursor on:self) id)
-	 pointerMode:#async keyboardMode:#sync confineTo:nil.
+         pointerMode:#async keyboardMode:#sync confineTo:nil.
     activePointerGrab := rootView.
 
     "
@@ -3802,9 +3812,13 @@
      Display pointFromUserShowing:(Cursor origin)   
      Display pointFromUser
     "
+
+    "Modified: 13.1.1997 / 22:53:07 / cg"
 !
 
 rectangleFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a rectangle in the screen, return the rectangle"
 
     |origin|
@@ -3822,9 +3836,13 @@
     "
      Display rectangleFromUser    
     "
+
+    "Modified: 13.1.1997 / 22:53:10 / cg"
 !
 
 rectangleFromUser:initialRectangle
+    "{ Pragma: +optSpace }"
+
     "let user specify a rectangle on the screen, return the rectangle.
      Start with initialRectangle. 
      A helper for rectangleFromUser; can also be used for resizing operations."
@@ -3841,77 +3859,77 @@
     origin := initialRectangle origin.
 
     root noClipByChildren.
-    root foreground:Color black background:Color white.
+    root foreground:blackColor background:whiteColor.
 
     root xoring:[
-	|left right top bottom newOrigin newCorner p curs|
-
-	corner := origin.
-	rect := origin corner:corner.
-	root displayRectangle:rect.
-
-	self 
-	    grabPointerIn:root id 
-	    withCursor:curs1 id
-	    pointerMode:#async 
-	    keyboardMode:#sync 
-	    confineTo:nil.
-
-	"
-	 just in case; wait for button to be down ...
-	"
-	[self leftButtonPressed] whileFalse:[Processor yield].
-
-	[self leftButtonPressed] whileTrue:[
-	    left := initialRectangle origin x.
-	    top := initialRectangle origin y.
-	    right := initialRectangle corner x.
-	    bottom := initialRectangle corner y.
-
-	    p := self pointerPosition.
-	    p x < initialRectangle left ifTrue:[
-		p y < initialRectangle top ifTrue:[
-		    curs := Cursor topLeft.
-		    left := p x.
-		    top := p y.
-		] ifFalse:[
-		    curs := Cursor bottomLeft.
-		    left := p x.
-		    bottom := p y
-		]
-	    ] ifFalse:[
-		p y < initialRectangle top ifTrue:[
-		    curs := Cursor topRight.
-		    right := p x.
-		    top := p y
-		] ifFalse:[
-		    curs := Cursor bottomRight.
-		    right := p x.
-		    bottom := p y
-		]
-	    ].
-
-	    newOrigin := left @ top.
-	    newCorner := right @ bottom.
-
-	    ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[
-		root displayRectangle:rect.
-
-		self grabPointerIn:root id withCursor:curs id
-			 pointerMode:#async keyboardMode:#sync confineTo:nil.
-
-		origin :=  newOrigin.
-		corner :=  newCorner.
-		rect := origin corner:corner.
-		root displayRectangle:rect.
-		self disposeButtonEventsFor:nil.
-		self flush.
-	    ] ifFalse:[
-		Processor yield
-	    ]
-	].
-	root displayRectangle:rect.
-	self ungrabPointer.
+        |left right top bottom newOrigin newCorner p curs|
+
+        corner := origin.
+        rect := origin corner:corner.
+        root displayRectangle:rect.
+
+        self 
+            grabPointerIn:root id 
+            withCursor:curs1 id
+            pointerMode:#async 
+            keyboardMode:#sync 
+            confineTo:nil.
+
+        "
+         just in case; wait for button to be down ...
+        "
+        [self leftButtonPressed] whileFalse:[Processor yield].
+
+        [self leftButtonPressed] whileTrue:[
+            left := initialRectangle origin x.
+            top := initialRectangle origin y.
+            right := initialRectangle corner x.
+            bottom := initialRectangle corner y.
+
+            p := self pointerPosition.
+            p x < initialRectangle left ifTrue:[
+                p y < initialRectangle top ifTrue:[
+                    curs := Cursor topLeft.
+                    left := p x.
+                    top := p y.
+                ] ifFalse:[
+                    curs := Cursor bottomLeft.
+                    left := p x.
+                    bottom := p y
+                ]
+            ] ifFalse:[
+                p y < initialRectangle top ifTrue:[
+                    curs := Cursor topRight.
+                    right := p x.
+                    top := p y
+                ] ifFalse:[
+                    curs := Cursor bottomRight.
+                    right := p x.
+                    bottom := p y
+                ]
+            ].
+
+            newOrigin := left @ top.
+            newCorner := right @ bottom.
+
+            ((newOrigin ~= origin) or:[newCorner ~= corner]) ifTrue:[
+                root displayRectangle:rect.
+
+                self grabPointerIn:root id withCursor:curs id
+                         pointerMode:#async keyboardMode:#sync confineTo:nil.
+
+                origin :=  newOrigin.
+                corner :=  newCorner.
+                rect := origin corner:corner.
+                root displayRectangle:rect.
+                self disposeButtonEventsFor:nil.
+                self flush.
+            ] ifFalse:[
+                Processor yield
+            ]
+        ].
+        root displayRectangle:rect.
+        self ungrabPointer.
     ].
 
     self ungrabPointer.
@@ -3928,9 +3946,13 @@
     "
      Display rectangleFromUser:(100@100 corner:300@300)
     "
+
+    "Modified: 13.1.1997 / 22:53:12 / cg"
 !
 
 topviewFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a view on the screen; if the selected view is
      not an ST/X view, nil is returned.
      Otherwise, the topview is returned."
@@ -3939,16 +3961,20 @@
 
     v := self viewFromUser.
     v notNil ifTrue:[
-	v := v topView
+        v := v topView
     ].
     ^ v 
 
     "
      Display topviewFromUser
     "
+
+    "Modified: 13.1.1997 / 22:53:15 / cg"
 !
 
 viewFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a view on the screen; if the selected view is
      not an ST/X view, nil is returned.
      This returns the view being clicked in, which is not always a topView.
@@ -3965,9 +3991,13 @@
      v := Display viewFromUser.
      v notNil ifTrue:[v topView] ifFalse:[nil]
     "
+
+    "Modified: 13.1.1997 / 22:53:17 / cg"
 !
 
 viewIdFromUser
+    "{ Pragma: +optSpace }"
+
     "let user specify a view on the screen, return its window id.
      This works even for non smalltalk views.
      This returns the id of the view being clicked in, 
@@ -3980,6 +4010,7 @@
     "
 
     "Created: 18.9.1995 / 23:07:20 / claus"
+    "Modified: 13.1.1997 / 22:53:20 / cg"
 ! !
 
 !DeviceWorkstation methodsFor:'keyboard mapping'!
@@ -4224,9 +4255,13 @@
 !DeviceWorkstation methodsFor:'misc'!
 
 beep
+    "{ Pragma: +optSpace }"
+
     "output an audible beep or bell"
 
     Stdout nextPut:(Character bell)
+
+    "Modified: 13.1.1997 / 22:56:13 / cg"
 !
 
 buffered
@@ -4252,9 +4287,13 @@
 !
 
 ringBell
+    "{ Pragma: +optSpace }"
+
     "alias for beep; for ST-80 compatibility"
 
     self beep
+
+    "Modified: 13.1.1997 / 22:56:02 / cg"
 !
 
 setInputFocusTo:aWindowId
@@ -4262,18 +4301,27 @@
 !
 
 sync
-    "send all buffered drawing to the display.
-     OBSOLETE: please use #flush for ST-80 compatibility"
+    "{ Pragma: +optSpace }"
+
+    "send all buffered drawing to the display and wait until its processed/drawn.
+     See also #flush, which does not wait.
+     ST-80 seems to only support flush."
 
     self flush
+
+    "Modified: 13.1.1997 / 22:55:44 / cg"
 !
 
 synchronizeOutput
+    "{ Pragma: +optSpace }"
+
     "send all buffered drawing to the display.
      OBSOLETE: please use #flush for ST-80 compatibility."
 
     self obsoleteMethodWarning:'use #flush'.
     ^ self flush
+
+    "Modified: 13.1.1997 / 22:53:44 / cg"
 !
 
 unBuffered
@@ -4838,6 +4886,6 @@
 !DeviceWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/DeviceWorkstation.st,v 1.155 1997-01-13 21:43:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/DeviceWorkstation.st,v 1.156 1997-01-13 21:57:22 cg Exp $'
 ! !
 DeviceWorkstation initialize!