/wx 0 def /wy 250 def /newwindow { % string string -- olbasewindow /olbasewindow /newmember hn send dup /framelabel 5 -1 roll put dup /resizable true put dup /footer true put wx 50 add dup /wx exch store wy 25 sub dup /wy exch store 300 200 /reshape 5 index send //nullstring (/OnOpen {[FOOT number 10 string cvs] /setfooters @parent Send} def) /setscript 3 index /@current_layout get send pop dup /@current_layout get /FOOT 4 -1 roll put /olbutton /newmember 2 index /@current_layout get send //nullstring (/Action {systemdict /hn undef} def) /setscript 3 index send pop (Quit) /setlabel 2 index send 20 5 null null /setposition 5 index send /map exch send /olbutton /newmember 2 index /@window_layout get send //nullstring (/Action {[] /goto_next_layout self Send} def) /setscript 3 index send pop (Next) /setlabel 2 index send null 5 20 null /setposition 5 index send /map exch send } def /newlayout { % olbasewindow string -- /new_layout 2 index send //nullstring (/OnOpen {[FOOT number 10 string cvs] /setfooters @parent Send} def) /setscript 4 index /@current_layout get send pop exch /@current_layout get /FOOT 3 -1 roll put } def /demo1 { % -- olbasewindow (scrolling list demo) (Exclusive) newwindow /ollist /newmember 2 index /@current_layout get send 10 30 10 10 /setposition 5 index send /Exclusive /setchoicemode 2 index send [(TNT) logo (OpenLook) (OpenWindows) (X-windows) (Macintosh)] /setitems 2 index send 1 /setdefaultchoice 2 index send /map exch send dup (Exclusive Variation) newlayout /ollist /newmember 2 index /@current_layout get send 10 30 10 10 /setposition 5 index send /ExclusiveVariation /setchoicemode 2 index send [[(red) 1 0 0 rgbcolor] [(green) 0 1 0 rgbcolor] [ (blue) 0 0 1 rgbcolor]] /setitems 2 index send /map exch send dup (Non Exclusive) newlayout /ollist /newmember 2 index /@current_layout get send 10 30 10 10 /setposition 5 index send /NonExclusive /setchoicemode 2 index send //nullarray hn { pop exch [3 -1 roll 64 string cvs] append } forall /setitems 2 index send /map exch send dup /goto_first_layout exch send } def /demo2group { % drawable -- group /group /newmember 3 -1 roll send [(First) (Second) (Third) (Fourth) (Last)] { exch /olbutton /newmember 2 index send 3 -1 roll /setlabel 2 index send /map exch send } forall 10 30 10 10 /setposition 5 index send dup /map exch send } def /demo2 { % -- olbasewindow (placement demo) (left to right) newwindow dup /@current_layout get demo2group /left2right /setplacement 3 -1 roll send dup (left to right and centered) newlayout dup /@current_layout get demo2group /left2right /setplacement 2 index send /Centered /setjustification 3 -1 roll send dup (top to bottom) newlayout dup /@current_layout get demo2group /top2bottom /setplacement 3 -1 roll send dup (top to bottom and centered) newlayout dup /@current_layout get demo2group /top2bottom /setplacement 2 index send /Centered /setjustification 3 -1 roll send dup /goto_first_layout exch send } def /demo3settings { % drawable -- settings /settings /newmember 3 -1 roll send [(First) (Second) (Third) (Fourth) (Last)] { exch /olsetting /newmember 2 index send 3 -1 roll /setlabel 2 index send /map exch send } forall 10 30 10 10 /setposition 5 index send dup /map exch send } def /demo3checkboxes { % drawable -- group /group /newmember 3 -1 roll send 0 exch { 1 index 5 ge { exch pop exit } if /olcheckbox /newmember 2 index send /map exch send exch 1 add exch } loop 10 30 10 10 /setposition 5 index send dup /map exch send } def /demo3 { % -- olbasewindow (settings demo) (Exclusive) newwindow dup /@current_layout get demo3settings pop dup (Exclusive Variation) newlayout dup /@current_layout get demo3settings /ExclusiveVariation /setchoicemode 3 -1 roll send dup (Non Exclusive) newlayout dup /@current_layout get demo3settings /NonExclusive /setchoicemode 3 -1 roll send dup (Check boxes) newlayout dup /@current_layout get demo3checkboxes /top2bottom /setplacement 3 -1 roll send dup /goto_first_layout exch send } def /demo4 { % -- olbasewindow (notice demo) (Hello) newwindow /olbutton /newmember 2 index /@current_layout get send /olnotice newobject 0 0 400 100 /reshape 5 index send //nullstring (/Action {w 2 div h 2 div /mapxy n send} def) /setscript 4 index send pop dup /addslave 3 index send (Show notice) /setlabel 3 index send 40 40 /move 4 index send 1 index /n 2 index put /map 3 -1 roll send /olbutton /newmember 2 index /@current_layout get send exch //nullstring (/Action {[] /unmap @window Send} def) /setscript 4 index send pop (Cancel) /setlabel 3 index send true /setdefaultchoice 3 index send 1 index /minwidth /preferredwidth 4 index send put 1 index /fixedwidth true put 0 10 0 null /setposition 6 index send /map 3 -1 roll send /@current_layout get demo3settings /Centered /setjustification 3 -1 roll send dup /goto_first_layout exch send } def /demo5 { % -- olbasewindow /olbasewindow /newmember hn send dup /framelabel (ClassButtons Demo) put dup /resizable true put dup /footer true put wx 50 add dup /wx exch store wy 25 sub dup /wy exch store 300 200 /reshape 5 index send /group /newmember 2 index /@current_layout get send [(Weather) (Sport) (Gossip) (NeWS) (Entertainment) (Finance) (Happy Talk)] { exch /olbutton /newmember 2 index send //nullstring (/Action {[\(The % is extremely boring...\)[str] sprintf] /setleftfooter /@window Send} def) /setscript 3 index send pop 3 -1 roll /setlabel 2 index send /map exch send } forall true /setdefaultchoice 2 index /members get 3 get send //nullstring (/Action {5 {beep 0.0005 sleep} repeat} def) /setscript 3 index /members get 3 get send pop /left2right /setplacement 2 index send 10 10 10 10 /setposition 5 index send /map exch send } def /demo6 { % -- olbasewindow /olbasewindow /newmember hn send dup /framelabel (ClassTextField Demo) put dup /resizable true put dup /footer true put wx 50 add dup /wx exch store wy 25 sub dup /wy exch store 300 200 /reshape 5 index send /oltextfield /newmember 2 index /@current_layout get send //nullstring (/Action {[exch] /setleftfooter /@window Send} def) /setscript 3 index send pop (Sample Text) /setvalue 2 index send 10 10 10 50 /setposition 5 index send /map exch send /label /newmember 2 index /@current_layout get send [(Cathy) 1 0 0 rgbcolor] /setlabel 2 index send 10 null null 0 /setposition 5 index send /map exch send } def /main { % -- /map demo1 send /map demo2 send /map demo3 send /map demo4 send /map demo5 send /map demo6 send } def