#! /usr/NeWS/bin/psh /init_ps { (/usr/NeWS/lib/NeWS/liteitem.ps) run (news_knob.ps) run /mousenotify { MouseValue 15 eq { get_pos 1 typedprint 4 typedprint X typedprint Y typedprint (Mouse: %, X: %, Y: %) [MouseValue X Y] /printf messages send } { 2 typedprint (Mouse: %) [MouseValue] /printf messages send } ifelse } def /menunotify { 3 typedprint MenuValue typedprint (Menu: %) [MenuValue] /printf messages send } def /posnotify { 4 typedprint X typedprint Y typedprint (X: %Y: %) [X Y] /printf messages send } def /knobnotify { 5 typedprint KnobNum typedprint ItemValue typedprint (%: %) [KnobLabel ItemValue] /printf messages send } def /keyboardnotify { 6 typedprint ItemValue typedprint (Input: %) [ItemValue] /printf messages send ItemValue () ne { /ASCII 127 /inserttext intext send } if } def /outnotify { (%) [OutPut] /printf messages send } def /killwindow { menunotify currentprocess killprocessgroup } def /DragOk? false def /myknob KnobItem [] classbegin /new { /new super send begin /KnobLabel exch def /KnobNum exch def /KnobInc .01 def currentdict end } def /PaintItem { /PaintItem super send ItemWidth 2 div 5 moveto KnobLabel cshow } def /ClientDrag {ClientDown} def /SetKnobInc { /KnobInc exch def } def classend def /get_pos { can setcanvas currentmouse /y exch def /x exch def win begin FrameWidth FrameHeight end /h exch def /w exch def /Y y h 30 sub div def /X x w 30 sub div def } def /createitems { /items 15 dict dup begin /knob1 1 (X Trans) -10 10 0 /knobnotify can 75 75 /new myknob send 25 25 /move 3 index send def .25 /SetKnobInc knob1 send /knob2 2 (Y Trans) -10 10 0 /knobnotify can 75 75 /new myknob send 125 25 /move 3 index send def .25 /SetKnobInc knob2 send /knob3 3 (Z Trans) -10 10 0 /knobnotify can 75 75 /new myknob send 225 25 /move 3 index send def .25 /SetKnobInc knob3 send /knob4 4 (X Rot) 0 90 0 /knobnotify can 75 75 /new myknob send 25 125 /move 3 index send def 1 /SetKnobInc knob4 send /knob5 5 (Y Rot) 0 90 0 /knobnotify can 75 75 /new myknob send 125 125 /move 3 index send def 1 /SetKnobInc knob5 send /knob6 6 (Z Rot) 0 90 0 /knobnotify can 75 75 /new myknob send 225 125 /move 3 index send def 1 /SetKnobInc knob6 send /knob7 7 (X Scale) .1 2 0 /knobnotify can 75 75 /new myknob send 25 225 /move 3 index send def .1 /SetKnobInc knob7 send /knob8 8 (Y Scale) .1 2 0 /knobnotify can 75 75 /new myknob send 125 225 /move 3 index send def .1 /SetKnobInc knob8 send /knob9 9 (Z Scale) .1 2 0 /knobnotify can 75 75 /new myknob send 225 225 /move 3 index send def .1 /SetKnobInc knob9 send /knob10 10 (X P/Z) -10 10 0 /knobnotify can 75 75 /new myknob send 25 325 /move 3 index send def .25 /SetKnobInc knob10 send /knob11 11 (Y P/Z) -10 10 0 /knobnotify can 75 75 /new myknob send 125 325 /move 3 index send def .25 /SetKnobInc knob11 send /knob12 12 (Z P/Z) .1 2 0 /knobnotify can 75 75 /new myknob send 225 325 /move 3 index send def .1 /SetKnobInc knob12 send /intext () () /Right /keyboardnotify can 25 0 /new TextItem send dup begin /ItemFrame 1 def /ItemBorder 4 def end 0 410 /move 3 index send def /messages (Output:) () /Right {} can 250 0 /new MessageItem send dup begin /ItemFrame 1 def /ItemBorder 4 def end 50 410 /move 3 index send def end def /messages items /messages get def /intext items /intext get def } def /createevents { /ImageMenu [(No Images Somethings Wrong) {} ] /new DefaultMenu send def /TopMenu [ (Images =>) ImageMenu (WireFrame) {/ItemValue (w) def keyboardnotify } (Hidden Surface){/ItemValue (h) def keyboardnotify } (Shaded Image) {/ItemValue (n) def keyboardnotify } (Identity) {/ItemValue (i) def keyboardnotify } (Redisplay) {/ItemValue (g) def keyboardnotify } (EXIT) {/MenuValue 999 def killwindow } ] /new DefaultMenu send def /eventmgr [ MouseDragged { DragOk? {get_pos posnotify} if} null can eventmgrinterest LeftMouseButton {/DragOk? true def } DownTransition can eventmgrinterest LeftMouseButton {/MouseValue 15 def mousenotify /DragOk? false def} UpTransition can eventmgrinterest MiddleMouseButton {/MouseValue 16 def mousenotify} DownTransition can eventmgrinterest MenuButton {TopMenu showmenu} DownTransition can eventmgrinterest ] forkeventmgr def } def /main { /itembackground .75 def /paintcan { can setcanvas itembackground fillcanvas items paintitems } def /win { /PaintClient {paintcan } def /FrameLabel (Dial Box Fun) def } 355 500 makewindow dup 0 0 showwindow def /can win /ClientCanvas get def createitems /itemmgr items forkitems def createevents 0 delete_menu_item 1 (Menu Item 1) add_menu_item 2 (Menu Item 2) add_menu_item 3 (Menu Item 3) add_menu_item 4 (Menu Item 4) add_menu_item 5 (Menu Item 5) add_menu_item } def } def /add_menu_item { /name exch def /value exch def value name {/MenuValue value def menunotify} /insertitem ImageMenu send } def /delete_menu_item { /deleteitem ImageMenu send } def init_ps main