/contents (The\tfirst line\nThis\tis the second, and iit is very long. So long it should be broken somewhere, or cut off.\nThe third is quite short.\n4\n5\n6\n7\n8\n9\n10\nBOTTOM) def /newwindow { % string string -- olbasewindow /olbasewindow /newmember hn send dup /framelabel 5 -1 roll put dup /resizable true put dup /footer true put 10 10 600 320 /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 /@window_layout get send (Quit) /setlabel 2 index send //nullstring (/Action {systemdict /hn undef} def) /setscript 3 index send pop 20 5 null null /setposition 5 index send /map exch send /olbutton /newmember 2 index /@window_layout get send (Next) /setlabel 2 index send //nullstring (/Action {[] /goto_next_layout self Send} def) /setscript 3 index send pop null 5 20 null /setposition 5 index send /map exch send /edittext /newmember 2 index /@window_layout get send 10 40 300 150 /reshape 5 index send /@test_text /rename 2 index send pop contents /set_value 2 index send dup /map exch send hn /stext 3 -1 roll put } 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 /static_demo { % olbasewindow -- /group /newmember 2 index /@current_layout get send /left2right /setplacement 2 index send 150 210 400 20 /reshape 5 index send /group /newmember 3 index /@current_layout get send /label /newmember 2 index send (Bounding Box) /setlabel 2 index send dup /fixedwidth true put 0 null 0 0 /setposition 5 index send /map exch send /settings /newmember 2 index send //nullstring (\n \t/Action {\n \t\t0 get \(Show\) eq [exch] /set_bounding_box\n [/@window_layout /@test_text] Send\n\t} def ) /setscript 3 index send pop /olsetting /newmember 2 index send (Show) /setlabel 2 index send /map exch send /olsetting /newmember 2 index send (Hide) /setlabel 2 index send /map exch send 5 0 5 null /setposition 5 index send 0 0 110 20 /reshape 5 index send 10 210 110 40 /reshape 6 index send /map exch send /map exch send /olmenubutton /newmember 2 index send exch //nullstring (\n\t /MenuAction { [exch cvi ] /set_tabs [/@window_layout /@test_text] Send \n\t\t\t pop pop\n\t\t} def) /setscript 4 index send pop (Tabs) /setlabel 3 index send /map 2 index send [null 0 (0) 0 null (32) 2 null (72) 0 null] /setmenu 4 -1 roll send /olmenubutton /newmember 2 index send exch //nullstring (\n\t /MenuAction { pop exch pop \n\t\tdup 0 eq \n\t\t{pop [/none] } { 1 eq {[/char]} {[/word]} ifelse} ifelse\n \t\t/set_line_wrap [/@window_layout /@test_text] Send \n\t } def) /setscript 4 index send pop (Line Wrap) /setlabel 3 index send /map 2 index send [null 0 (None) 0 null (Character) 0 null (Word) 2 null] /setmenu 4 -1 roll send /olmenubutton /newmember 2 index send exch //nullstring (\n\t /MenuAction {\n \t\t\tpop exch pop \n\t\t\tdup 0 eq \n\t\t\t{pop [/Left] } { 1 eq {[/Centered]} {[/Right]} ifelse} ifelse\n \t\t\t/set_justification [/@window_layout /@test_text] Send \n\t\t} def\n\t) /setscript 4 index send pop (Justify) /setlabel 3 index send /map 2 index send [null 0 (Left) 2 null (Centre) 0 null (Right) 0 null] /setmenu 4 -1 roll send /olbutton /newmember 2 index send exch //nullstring (\n\t\t/Action { [] /clearvalue [/@window_layout /@test_text] Send } def\n\t) /setscript 4 index send pop (Clear) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action { [\n\t\(The\tfirst line\nThis\tis the second, and iit is very long. So long it should be broken somewhere or cut off.\nThe third is quite short.\n4\n5\n6\n7\n8\n9\n10\nBOTTOM\)\n] /set_value [/@window_layout /@test_text] Send } def) /setscript 4 index send pop (Revert) /setlabel 3 index send /map 3 -1 roll send /map exch send /group /newmember 3 -1 roll /@current_layout get send /left2right /setplacement 2 index send 320 40 320 150 /reshape 5 index send dup /FG 0 0 0.75 rgbcolor put /ollist /newmember 2 index send exch //nullstring (/Action {\n\t\t[ /selected_strings @sizes send 0 get cvi ]\n\t\t append /set_font [/@window_layout /@test_text] Send } def) /setscript 4 index send pop /Exclusive /setchoicemode 3 index send [(LucidaSans) (LucidaSans-Bold) (LucidaSans-Italic) (LucidaSans-BoldItalic) (Helvetica-Bold) (Helvetica-Oblique) (Palatino-Roman) (Palatino-Bold) (Palatino-Italic) (Palatino-BoldItalic) (Times-Roman) (Times-Bold) (Times-BoldItalic) (Times-Italic)] /setitems 3 index send 0 /setdefaultchoice 3 index send [0] /setselection 3 index send /@fonts /rename 3 index send pop 0 0 180 150 /reshape 6 index send /map 3 -1 roll send /ollist /newmember 2 index send exch //nullstring (/Action { 0 get cvi [ exch ]\n/selected_strings @fonts send exch append /set_font [/@window_layout /@test_text] Send } def) /setscript 4 index send pop /Exclusive /setchoicemode 3 index send [(6) (8) (10) (12) (14) (18) (24) (32) (48)] /setitems 3 index send 1 index /minwidth 60 put 3 /setdefaultchoice 3 index send [3] /setselection 3 index send 0 0 60 150 /reshape 6 index send /@sizes /rename 3 index send pop /map 3 -1 roll send /map exch send } def /selectable_demo { % olbasewindow -- dup (selectable features) newlayout /group /newmember 2 index /@current_layout get send 380 80 100 81 /reshape 5 index send /Centered /setjustification 2 index send /olbutton /newmember 2 index send exch //nullstring (/Action {[/up] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (^) /setlabel 3 index send 1 index /fixedwidth true put 0 null 0 0 /setposition 6 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/left] /move_to [/@window_layout /@test_text] Send } def) /setscript 4 index send pop (<) /setlabel 3 index send 0 0 null 0 /setposition 6 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/right] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (>) /setlabel 3 index send null 0 0 0 /setposition 6 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/down] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (v) /setlabel 3 index send 1 index /fixedwidth true put 0 0 0 null /setposition 6 index send /map 3 -1 roll send /map exch send /group /newmember 3 -1 roll /@current_layout get send /left2right /setplacement 2 index send 10 200 550 60 /reshape 5 index send /olbutton /newmember 2 index send exch //nullstring (/Action {[/start_text] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (^ text) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/end_text] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (text v) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/start_line] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (<- line) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/end_line] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (line ->) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/start_word] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (<- word) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[/end_word] /move_to [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (word ->) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[\(\nAnother line\)]\n/append_string [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (Append_String) /setlabel 3 index send /map 3 -1 roll send /map exch send } def /editable_demo { % olbasewindow -- dup (editable features) newlayout /group /newmember 2 index /@current_layout get send /left2right /setplacement 2 index send 10 200 550 60 /reshape 5 index send /olbutton /newmember 2 index send exch //nullstring (/Action {[] /cut_selection [/@window_layout /@test_text] Send\n[/clipboard_contents [/@window_layout /@test_text] find_object\nsend ]\n /set_value /@clipboard Send} def) /setscript 4 index send pop (Cut) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[] /paste_selection [/@window_layout\n/@test_text] Send \n[/clipboard_contents [/@window_layout /@test_text] find_object\nsend ]\n /set_value /@clipboard Send} def) /setscript 4 index send pop (Paste) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[] /copy_selection\n[/@window_layout /@test_text] Send\n [/clipboard_contents [/@window_layout /@test_text] find_object\nsend ]\n /set_value /@clipboard Send} def) /setscript 4 index send pop (Copy) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[] /clear_selection\n [/@window_layout /@test_text] Send\n\t[/clipboard_contents [/@window_layout /@test_text] find_object\nsend ]\n /set_value /@clipboard Send} def) /setscript 4 index send pop (Clear) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[127] /onkey [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (Delete Char \(Del\)) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[23] /onkey [/@window_layout /@test_text] Send} def) /setscript 4 index send pop (Delete Word \(Ctrl-W\)) /setlabel 3 index send /map 3 -1 roll send /olbutton /newmember 2 index send exch //nullstring (/Action {[21] /onkey [/@window_layout\n/@test_text] Send} def) /setscript 4 index send pop (Delete Line \(Ctrl-U\)) /setlabel 3 index send /map 3 -1 roll send /settings /newmember 2 index send exch //nullstring (\n \t/Action {\n\t\t0 get \(Editable\) eq [exch] /set_editable [/@window_layout /@test_text] Send\n } def ) /setscript 4 index send pop /olsetting /newmember 3 index send exch (Editable) /setlabel 3 index send /map 3 -1 roll send /olsetting /newmember 3 index send exch (Not Editable) /setlabel 3 index send /map 3 -1 roll send 0 0 220 20 /reshape 6 index send 10 30 10 10 /setposition 7 -1 roll send /map exch send /scrollable_statictext /newmember 3 -1 roll /@current_layout get send 350 50 200 100 /reshape 5 index send (Clip board contents go here ...) /set_value 2 index send /@clipboard /rename 2 index send pop /map exch send } def /main { % -- (Text Demo) (static text features) newwindow dup static_demo dup selectable_demo dup editable_demo dup /goto_first_layout exch send /map exch send } def