diff options
Diffstat (limited to 'contrib/nvi/tk/init.tcl')
-rw-r--r-- | contrib/nvi/tk/init.tcl | 1096 |
1 files changed, 1096 insertions, 0 deletions
diff --git a/contrib/nvi/tk/init.tcl b/contrib/nvi/tk/init.tcl new file mode 100644 index 000000000000..78c5a115c0a7 --- /dev/null +++ b/contrib/nvi/tk/init.tcl @@ -0,0 +1,1096 @@ +# @(#)init.tcl 8.10 (Berkeley) 7/19/96 +proc screen {} { + global tk_ssize_row + global tk_ssize_col + + # Build menubar with File, Options and Help entries. + frame .menu -relief raised -borderwidth 1 + pack append . .menu {top fillx} + + # File pull-down menu + menubutton .menu.file -text "File" \ + -menu .menu.file.fileops -underline 0 + menu .menu.file.fileops + .menu.file.fileops add command -label "Edit ..." \ + -command "tk_edit" -underline 0 + .menu.file.fileops add command -label "Save File" \ + -command "tk_write" -underline 0 + .menu.file.fileops add command -label "Save File as ..." \ + -command "tk_writeas" -underline 1 + .menu.file.fileops add command -label "Save and Quit" \ + -command "tk_writequit" -underline 7 + .menu.file.fileops add command -label "Quit" \ + -command "tk_quit" -underline 0 + + # Options pull-down menu + menubutton .menu.option -text "Options" \ + -menu .menu.option.optionops -underline 0 + menu .menu.option.optionops + .menu.option.optionops add command -label "Set all" \ + -command tk_options -underline 0 + + # Help pull-down menu + menubutton .menu.help -text "Help" \ + -menu .menu.help.helpops -underline 0 + menu .menu.help.helpops + .menu.help.helpops add command -label "On Help" -underline 3 \ + -command tk_help + .menu.help.helpops add command -label "On Version" -underline 3 \ + -command tk_version + + pack append .menu \ + .menu.file {left} .menu.option {left} .menu.help {right} + + # Set up for keyboard-based menu traversal + tk_bindForTraversal . + bind . <Any-Enter> {focus .} + focus . + tk_menuBar .menu .menu.file .menu.help + + # Create text window + text .t -relief raised -bd 1 -setgrid true -yscrollcommand ".s set" + scrollbar .s -relief flat -command ".t yview" + pack append . .s {right filly} .t {expand fill} + + # Use tags to build a cursor for the text window. + set bg [lindex [.t config -background] 4] + set fg [lindex [.t config -foreground] 4] + .t tag configure tk_cursor -background $fg -foreground $bg + .t mark set tk_cursor_indx insert + .t tag add tk_cursor tk_cursor_indx + + # Bind the keys. + bind .t <Any-KeyPress> {tk_flash; break} + bind .t 0 {tk_key_enter "0"; break} + bind .t 1 {tk_key_enter "1"; break} + bind .t 2 {tk_key_enter "2"; break} + bind .t 3 {tk_key_enter "3"; break} + bind .t 4 {tk_key_enter "4"; break} + bind .t 5 {tk_key_enter "5"; break} + bind .t 6 {tk_key_enter "6"; break} + bind .t 7 {tk_key_enter "7"; break} + bind .t 8 {tk_key_enter "8"; break} + bind .t 9 {tk_key_enter "9"; break} + bind .t <BackSpace> {tk_key_enter "\010"; break} + bind .t <Control-a> {tk_key_enter "\001"; break} + bind .t <Control-b> {tk_key_enter "\002"; break} + bind .t <Control-c> {tk_key_enter "\003"; break} + bind .t <Control-d> {tk_key_enter "\004"; break} + bind .t <Control-e> {tk_key_enter "\005"; break} + bind .t <Control-f> {tk_key_enter "\006"; break} + bind .t <Control-g> {tk_key_enter "\007"; break} + bind .t <Control-h> {tk_key_enter "\010"; break} + bind .t <Control-i> {tk_key_enter "\011"; break} + bind .t <Control-j> {tk_key_enter "\012"; break} + bind .t <Control-k> {tk_key_enter "\013"; break} + bind .t <Control-l> {tk_key_enter "\014"; break} + bind .t <Control-m> {tk_key_enter "\015"; break} + bind .t <Control-n> {tk_key_enter "\016"; break} + bind .t <Control-o> {tk_key_enter "\017"; break} + bind .t <Control-p> {tk_key_enter "\020"; break} + bind .t <Control-q> {tk_key_enter "\021"; break} + bind .t <Control-r> {tk_key_enter "\022"; break} + bind .t <Control-s> {tk_key_enter "\023"; break} + bind .t <Control-t> {tk_key_enter "\024"; break} + bind .t <Control-u> {tk_key_enter "\025"; break} + bind .t <Control-v> {tk_key_enter "\026"; break} + bind .t <Control-w> {tk_key_enter "\027"; break} + bind .t <Control-x> {tk_key_enter "\030"; break} + bind .t <Control-y> {tk_key_enter "\031"; break} + bind .t <Control-z> {tk_key_enter "\032"; break} + bind .t <Control_L> {tk_noop; break} + bind .t <Control_R> {tk_noop; break} + bind .t <Delete> {tk_key_enter "x"; break} + bind .t <Down> {tk_key_enter "j"; break} + bind .t <End> {tk_key_enter "G"; break} + bind .t <Escape> {tk_key_enter "\033"; break} + bind .t <Home> {tk_key_enter "1G"; break} + bind .t <Insert> {tk_key_enter "i"; break} + bind .t <Left> {tk_key_enter "h"; break} + bind .t <Next> {tk_key_enter "\006"; break} + bind .t <Prior> {tk_key_enter "\002"; break} + bind .t <Return> {tk_key_enter "\015"; break} + bind .t <Right> {tk_key_enter "l"; break} + bind .t <Shift_L> {tk_noop; break} + bind .t <Shift_Lock> {tk_noop; break} + bind .t <Shift_R> {tk_noop; break} + bind .t <Tab> {tk_key_enter "\011"; break} + bind .t <Up> {tk_key_enter "k"; break} + bind .t <ampersand> {tk_key_enter "&"; break} + bind .t <asciicircum> {tk_key_enter "^"; break} + bind .t <asciitilde> {tk_key_enter "~"; break} + bind .t <asterisk> {tk_key_enter "*"; break} + bind .t <at> {tk_key_enter "@"; break} + bind .t <backslash> {tk_key_enter "\\"; break} + bind .t <bar> {tk_key_enter "|"; break} + bind .t <braceleft> {tk_key_enter "{"; break} + bind .t <braceright> {tk_key_enter "; break}"} + bind .t <bracketleft> {tk_key_enter "\["; break} + bind .t <bracketright> {tk_key_enter "]"; break} + bind .t <colon> {tk_key_enter ":"; break} + bind .t <comma> {tk_key_enter ","; break} + bind .t <dollar> {tk_key_enter "$"; break} + bind .t <equal> {tk_key_enter "="; break} + bind .t <exclam> {tk_key_enter "!"; break} + bind .t <greater> {tk_key_enter ">"; break} + bind .t <less> {tk_key_enter "<"; break} + bind .t <minus> {tk_key_enter "-"; break} + bind .t <numbersign> {tk_key_enter "#"; break} + bind .t <parenleft> {tk_key_enter "("; break} + bind .t <parenright> {tk_key_enter ")"; break} + bind .t <percent> {tk_key_enter "%"; break} + bind .t <period> {tk_key_enter "."; break} + bind .t <plus> {tk_key_enter "+"; break} + bind .t <question> {tk_key_enter "?"; break} + bind .t <quotedbl> {tk_key_enter "\""; break} + bind .t <quoteright> {tk_key_enter "'"; break} + bind .t <semicolon> {tk_key_enter ";"; break} + bind .t <slash> {tk_key_enter "/"; break} + bind .t <space> {tk_key_enter " "; break} + bind .t <underscore> {tk_key_enter "_"; break} + bind .t A {tk_key_enter "A"; break} + bind .t B {tk_key_enter "B"; break} + bind .t C {tk_key_enter "C"; break} + bind .t D {tk_key_enter "D"; break} + bind .t E {tk_key_enter "E"; break} + bind .t F {tk_key_enter "F"; break} + bind .t G {tk_key_enter "G"; break} + bind .t H {tk_key_enter "H"; break} + bind .t I {tk_key_enter "I"; break} + bind .t J {tk_key_enter "J"; break} + bind .t K {tk_key_enter "K"; break} + bind .t L {tk_key_enter "L"; break} + bind .t M {tk_key_enter "M"; break} + bind .t N {tk_key_enter "N"; break} + bind .t O {tk_key_enter "O"; break} + bind .t P {tk_key_enter "P"; break} + bind .t Q {tk_key_enter "Q"; break} + bind .t R {tk_key_enter "R"; break} + bind .t S {tk_key_enter "S"; break} + bind .t T {tk_key_enter "T"; break} + bind .t U {tk_key_enter "U"; break} + bind .t V {tk_key_enter "V"; break} + bind .t W {tk_key_enter "W"; break} + bind .t X {tk_key_enter "X"; break} + bind .t Y {tk_key_enter "Y"; break} + bind .t Z {tk_key_enter "Z"; break} + bind .t a {tk_key_enter "a"; break} + bind .t b {tk_key_enter "b"; break} + bind .t c {tk_key_enter "c"; break} + bind .t d {tk_key_enter "d"; break} + bind .t e {tk_key_enter "e"; break} + bind .t f {tk_key_enter "f"; break} + bind .t g {tk_key_enter "g"; break} + bind .t h {tk_key_enter "h"; break} + bind .t i {tk_key_enter "i"; break} + bind .t j {tk_key_enter "j"; break} + bind .t k {tk_key_enter "k"; break} + bind .t l {tk_key_enter "l"; break} + bind .t m {tk_key_enter "m"; break} + bind .t n {tk_key_enter "n"; break} + bind .t o {tk_key_enter "o"; break} + bind .t p {tk_key_enter "p"; break} + bind .t q {tk_key_enter "q"; break} + bind .t r {tk_key_enter "r"; break} + bind .t s {tk_key_enter "s"; break} + bind .t t {tk_key_enter "t"; break} + bind .t u {tk_key_enter "u"; break} + bind .t v {tk_key_enter "v"; break} + bind .t w {tk_key_enter "w"; break} + bind .t x {tk_key_enter "x"; break} + bind .t y {tk_key_enter "y"; break} + bind .t z {tk_key_enter "z"; break} + + # XXX + # I haven't been able to make Tcl/Tk write uninitialized portions + # of the text window. Fill in the screen. + tk_ssize + .t mark set insert 1.0 + for {set i 1} {$i <= $tk_ssize_row} {incr i} { + for {set j 1} {$j <= $tk_ssize_col} {incr j} { + .t insert insert " " + } + .t insert insert "\n" + } +} + +# tk_noop -- +# Do nothing. +# +# XXX +# I can't figure out how to get a binding that does nothing without +# calling a function, so this stub does it for me. +proc tk_noop {} { +} + +# tk_key_enter -- +# Enter a key. +proc tk_key_enter {val} { + global newkey + global waiting + + set waiting 0 + tk_key $val + set newkey 1 +} + +# tk_key_wait -- +# Wait for a key. +proc tk_key_wait {timeout} { + global newkey + global waiting + + if { $timeout != 0 } { + after $timeout "set newkey 1" + } + set waiting 1 + tkwait variable newkey +} + +# Callback functions for the File menu. +# tk_edit +# Edit another file. +proc tk_edit {} { +} + +# tk_quit +# Quit. +proc tk_quit {} { + global newkey + global waiting + + tk_op quit + if { $waiting != 0 } { + set newkey 1 + } +} + +# tk_write +# Write the edit buffer. +proc tk_write {} { + global newkey + global waiting + + tk_op write + if { $waiting != 0 } { + set newkey 1 + } +} + +# tk_writeas +# Write the edit buffer to a named file. +proc tk_writeas {} { +} + +# tk_writequit +# Write and quit. +proc tk_writequit {} { + global newkey + global waiting + + tk_op writequit + if { $waiting != 0 } { + set newkey 1 + } +} + +# Callback functions for the Help menu. +# +# tk_help -- +# Present a help screen. +proc tk_help {} { + tk_dialog .d {} "No help screen currently available." {} 0 Continue +} + +# tk_options +# Contains the option selector box. It is divided into three parts, the +# checkbuttons for the boolean options, the entry fields for the string +# numeric options, and a control area containing buttons. There is only +# one function. +proc tk_options {} { + + # Build option selector box with three subframes for boolean, + # numeric, and string options. Make it a toplevel window. + toplevel .os + wm title .os options + + # Option variables. + global tko_altwerase + global tko_autoindent + global tko_autoprint + global tko_autowrite + global tko_backup + global tko_beautify + global tko_cdpath + global tko_cedit + global tko_columns + global tko_comment + global tko_directory + global tko_edcompatible + global tko_escapetime + global tko_errorbells + global tko_exrc + global tko_extended + global tko_filec + global tko_flash + global tko_hardtabs + global tko_iclower + global tko_ignorecase + global tko_keytime + global tko_leftright + global tko_lines + global tko_lisp + global tko_list + global tko_lock + global tko_magic + global tko_matchtime + global tko_mesg + global tko_modeline + global tko_msgcat + global tko_noprint + global tko_number + global tko_octal + global tko_open + global tko_optimize + global tko_paragraphs + global tko_print + global tko_prompt + global tko_readonly + global tko_recdir + global tko_redraw + global tko_remap + global tko_report + global tko_ruler + global tko_scroll + global tko_searchincr + global tko_sections + global tko_secure + global tko_shell + global tko_shellmeta + global tko_shiftwidth + global tko_showmatch + global tko_showmode + global tko_sidescroll + global tko_slowopen + global tko_sourceany + global tko_tabstop + global tko_taglength + global tko_tags + global tko_term + global tko_terse + global tko_tildeop + global tko_timeout + global tko_ttywerase + global tko_verbose + global tko_warn + global tko_window + global tko_windowname + global tko_wraplen + global tko_wrapmargin + global tko_wrapscan + global tko_writeany + + # Initialize option values. + tk_opt_init + + # Build subframe for boolean options. + frame .os.bopts + + # This is the width of the edcompatible button. + set buttonwidth 13 + + # Pack the boolean os, 5 to a frame. + frame .os.bopts.f1 + pack append .os.bopts .os.bopts.f1 {top} + checkbutton .os.bopts.f1.b1 \ + -variable tko_altwerase -text "altwerase" \ + -command "tk_opt_set altwerase $tko_altwerase" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f1.b2 \ + -variable tko_autoindent -text "autoindent" \ + -command "tk_opt_set autoindent $tko_autoindent" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f1.b3 \ + -variable tko_autoprint -text "autoprint" \ + -command "tk_opt_set autoprint $tko_autoprint" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f1.b4 \ + -variable tko_autowrite -text "autowrite" \ + -command "tk_opt_set autowrite $tko_autowrite" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f1.b5 \ + -variable tko_beautify -text "beautify" \ + -command "tk_opt_set beautify $tko_beautify" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f1 \ + .os.bopts.f1.b1 {left frame w} \ + .os.bopts.f1.b2 {left frame w} \ + .os.bopts.f1.b3 {left frame w} \ + .os.bopts.f1.b4 {left frame w} \ + .os.bopts.f1.b5 {left frame w} + + frame .os.bopts.f2 + pack append .os.bopts .os.bopts.f2 {top} + checkbutton .os.bopts.f2.b1 \ + -variable tko_comment -text "comment" \ + -command "tk_opt_set comment $tko_comment" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f2.b2 \ + -variable tko_edcompatible -text "edcompatible" \ + -command "tk_opt_set edcompatible $tko_edcompatible" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f2.b3 \ + -variable tko_errorbells -text "errorbells" \ + -command "tk_opt_set errorbells $tko_errorbells" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f2.b4 \ + -variable tko_exrc -text "exrc" \ + -command "tk_opt_set exrc $tko_exrc" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f2.b5 \ + -variable tko_extended -text "extended" \ + -command "tk_opt_set extended $tko_extended" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f2 \ + .os.bopts.f2.b1 {left frame w} \ + .os.bopts.f2.b2 {left frame w} \ + .os.bopts.f2.b3 {left frame w} \ + .os.bopts.f2.b4 {left frame w} \ + .os.bopts.f2.b5 {left frame w} + + frame .os.bopts.f3 + pack append .os.bopts .os.bopts.f3 {top} + checkbutton .os.bopts.f3.b1 \ + -variable tko_flash -text "flash" \ + -command "tk_opt_set flash $tko_flash" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f3.b2 \ + -variable tko_iclower -text "iclower" \ + -command "tk_opt_set iclower $tko_iclower" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f3.b3 \ + -variable tko_ignorecase -text "ignorecase" \ + -command "tk_opt_set ignorecase $tko_ignorecase" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f3.b4 \ + -variable tko_leftright -text "leftright" \ + -command "tk_opt_set leftright $tko_leftright" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f3.b5 \ + -variable tko_lisp -text "lisp" \ + -command "tk_opt_set lisp $tko_lisp" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f3 \ + .os.bopts.f3.b1 {left frame w} \ + .os.bopts.f3.b2 {left frame w} \ + .os.bopts.f3.b3 {left frame w} \ + .os.bopts.f3.b4 {left frame w} \ + .os.bopts.f3.b5 {left frame w} + + frame .os.bopts.f4 + pack append .os.bopts .os.bopts.f4 {top} + checkbutton .os.bopts.f4.b1 \ + -variable tko_list -text "list" \ + -command "tk_opt_set list $tko_list" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f4.b2 \ + -variable tko_lock -text "lock" \ + -command "tk_opt_set lock $tko_lock" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f4.b3 \ + -variable tko_magic -text "magic" \ + -command "tk_opt_set magic $tko_magic" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f4.b4 \ + -variable tko_mesg -text "mesg" \ + -command "tk_opt_set mesg $tko_mesg" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f4.b5\ + -variable tko_number -text "number" \ + -command "tk_opt_set number $tko_number" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f4 \ + .os.bopts.f4.b1 {left frame w} \ + .os.bopts.f4.b2 {left frame w} \ + .os.bopts.f4.b3 {left frame w} \ + .os.bopts.f4.b4 {left frame w} \ + .os.bopts.f4.b5 {left frame w} + + frame .os.bopts.f5 + pack append .os.bopts .os.bopts.f5 {top} + checkbutton .os.bopts.f5.b1 \ + -variable tko_octal -text "octal" \ + -command "tk_opt_set octal $tko_octal" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f5.b2 \ + -variable tko_open -text "open" \ + -command "tk_opt_set open $tko_open" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f5.b3 \ + -variable tko_optimize -text "optimize" \ + -command "tk_opt_set optimize $tko_optimize" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f5.b4 \ + -variable tko_prompt -text "prompt" \ + -command "tk_opt_set prompt $tko_prompt" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f5.b5 \ + -variable tko_readonly -text "readonly" \ + -command "tk_opt_set readonly $tko_readonly" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f5 \ + .os.bopts.f5.b1 {left frame w} \ + .os.bopts.f5.b2 {left frame w} \ + .os.bopts.f5.b3 {left frame w} \ + .os.bopts.f5.b4 {left frame w} \ + .os.bopts.f5.b5 {left frame w} + + frame .os.bopts.f6 + pack append .os.bopts .os.bopts.f6 {top} + checkbutton .os.bopts.f6.b1 \ + -variable tko_remap -text "remap" \ + -command "tk_opt_set remap $tko_remap" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f6.b2 \ + -variable tko_ruler -text "ruler" \ + -command "tk_opt_set ruler $tko_ruler" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f6.b3 \ + -variable tko_searchincr -text "searchincr" \ + -command "tk_opt_set searchincr $tko_searchincr" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f6.b4 \ + -variable tko_secure -text "secure" \ + -command "tk_opt_set secure $tko_secure" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f6.b5 \ + -variable tko_showmatch -text "showmatch" \ + -command "tk_opt_set showmatch $tko_showmatch" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f6 \ + .os.bopts.f6.b1 {left frame w} \ + .os.bopts.f6.b2 {left frame w} \ + .os.bopts.f6.b3 {left frame w} \ + .os.bopts.f6.b4 {left frame w} \ + .os.bopts.f6.b5 {left frame w} + + frame .os.bopts.f7 + pack append .os.bopts .os.bopts.f7 {top} + checkbutton .os.bopts.f7.b1 \ + -variable tko_showmode -text "showmode" \ + -command "tk_opt_set showmode $tko_showmode" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f7.b2 \ + -variable tko_slowopen -text "slowopen" \ + -command "tk_opt_set slowopen $tko_slowopen" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f7.b3 \ + -variable tko_sourceany -text "sourceany" \ + -command "tk_opt_set sourceany $tko_sourceany" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f7.b4 \ + -variable tko_terse -text "terse" \ + -command "tk_opt_set terse $tko_terse" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f7.b5 \ + -variable tko_tildeop -text "tildeop" \ + -command "tk_opt_set tildeope $tko_tildeop" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f7 \ + .os.bopts.f7.b1 {left frame w} \ + .os.bopts.f7.b2 {left frame w} \ + .os.bopts.f7.b3 {left frame w} \ + .os.bopts.f7.b4 {left frame w} \ + .os.bopts.f7.b5 {left frame w} + + frame .os.bopts.f8 + pack append .os.bopts .os.bopts.f8 {top fillx} + checkbutton .os.bopts.f8.b1 \ + -variable tko_timeout -text "timeout" \ + -command "tk_opt_set timeout $tko_timeout" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f8.b2 \ + -variable tko_ttywerase -text "ttywerase" \ + -command "tk_opt_set ttywerase $tko_ttywerase" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f8.b3 \ + -variable tko_verbose -text "verbose" \ + -command "tk_opt_set verbose $tko_verbose" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f8.b4 \ + -variable tko_warn -text "warn" \ + -command "tk_opt_set warn $tko_warn" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f8.b5 \ + -variable tko_windowname -text "windowname" \ + -command "tk_opt_set windowname $tko_windowname" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f8 \ + .os.bopts.f8.b1 {left frame w} \ + .os.bopts.f8.b2 {left frame w} \ + .os.bopts.f8.b3 {left frame w} \ + .os.bopts.f8.b4 {left frame w} \ + .os.bopts.f8.b5 {left frame w} + + frame .os.bopts.f9 + pack append .os.bopts .os.bopts.f9 {top fillx} + checkbutton .os.bopts.f9.b1 \ + -variable tko_wrapscan -text "wrapscan" \ + -command "tk_opt_set wrapscan $tko_wrapscan" \ + -width $buttonwidth -anchor w + checkbutton .os.bopts.f9.b2 \ + -variable tko_writeany -text "writeany" \ + -command "tk_opt_set writeany $tko_writeany" \ + -width $buttonwidth -anchor w + pack append .os.bopts.f9 \ + .os.bopts.f9.b1 {left frame w} \ + .os.bopts.f9.b2 {left frame w} + + # Build frame for number options: + frame .os.nopts + + # Label and entry widths. + set lwidth 12 + set ewidth 3 + + frame .os.nopts.n1 + label .os.nopts.n1.l -text "column:" -width $lwidth -anchor w + entry .os.nopts.n1.e -width $ewidth -relief raised \ + -textvariable tko_columns + trace variable tko_columns w tk_opt_ew + pack append .os.nopts.n1 \ + .os.nopts.n1.l {left} .os.nopts.n1.e {left frame w} + + frame .os.nopts.n2 + label .os.nopts.n2.l -text "escapetime:" -width $lwidth -anchor w + entry .os.nopts.n2.e -width $ewidth -textvariable tko_escapetime \ + -relief raised + trace variable tko_escapetime w tk_opt_ew + pack append .os.nopts.n2 \ + .os.nopts.n2.l {left} .os.nopts.n2.e {left frame w} + + frame .os.nopts.n3 + label .os.nopts.n3.l -text "hardtabs:" -width $lwidth -anchor w + entry .os.nopts.n3.e -width $ewidth -textvariable tko_hardtabs \ + -relief raised + trace variable tko_hardtabs w tk_opt_ew + pack append .os.nopts.n3 \ + .os.nopts.n3.l {left} .os.nopts.n3.e {left frame w} + + frame .os.nopts.n4 + label .os.nopts.n4.l -text "keytime:" -width $lwidth -anchor w + entry .os.nopts.n4.e -width $ewidth -textvariable tko_keytime \ + -relief raised + trace variable tko_keytime w tk_opt_ew + pack append .os.nopts.n4 \ + .os.nopts.n4.l {left} .os.nopts.n4.e {left frame w} + + frame .os.nopts.n5 + label .os.nopts.n5.l -text "lines:" -width $lwidth -anchor w + entry .os.nopts.n5.e -width $ewidth -textvariable tko_lines \ + -relief raised + trace variable tko_lines w tk_opt_ew + pack append .os.nopts.n5 \ + .os.nopts.n5.l {left} .os.nopts.n5.e {left frame w} + + frame .os.nopts.n6 + label .os.nopts.n6.l -text "matchtime:" -width $lwidth -anchor w + entry .os.nopts.n6.e -width $ewidth -textvariable tko_matchtime \ + -relief raised + trace variable tko_matchtime w tk_opt_ew + pack append .os.nopts.n6 \ + .os.nopts.n6.l {left} .os.nopts.n6.e {left frame w} + + frame .os.nopts.n7 + label .os.nopts.n7.l -text "report:" -width $lwidth -anchor w + entry .os.nopts.n7.e -width $ewidth -textvariable tko_report \ + -relief raised + trace variable tko_report w tk_opt_ew + pack append .os.nopts.n7 \ + .os.nopts.n7.l {left} .os.nopts.n7.e {left frame w} + + frame .os.nopts.n8 + label .os.nopts.n8.l -text "scroll:" -width $lwidth -anchor w + entry .os.nopts.n8.e -width $ewidth -textvariable tko_scroll \ + -relief raised + trace variable tko_scroll w tk_opt_ew + pack append .os.nopts.n8 \ + .os.nopts.n8.l {left} .os.nopts.n8.e {left frame w} + + frame .os.nopts.n9 + label .os.nopts.n9.l -text "shiftwidth:" -width $lwidth -anchor w + entry .os.nopts.n9.e -width $ewidth -textvariable tko_shiftwidth \ + -relief raised + trace variable tko_shiftwidth w tk_opt_ew + pack append .os.nopts.n9 \ + .os.nopts.n9.l {left} .os.nopts.n9.e {left frame w} + + frame .os.nopts.n10 + label .os.nopts.n10.l -text "sidescroll:" -width $lwidth -anchor w + entry .os.nopts.n10.e -width $ewidth -textvariable tko_sidescroll \ + -relief raised + trace variable tko_sidescroll w tk_opt_ew + pack append .os.nopts.n10 \ + .os.nopts.n10.l {left} .os.nopts.n10.e {left frame w} + + frame .os.nopts.n11 + label .os.nopts.n11.l -text "tabstop:" -width $lwidth -anchor w + entry .os.nopts.n11.e -width $ewidth -textvariable tko_tabstop \ + -relief raised + trace variable tko_tabstop w tk_opt_ew + pack append .os.nopts.n11 \ + .os.nopts.n11.l {left} .os.nopts.n11.e {left frame w} + + frame .os.nopts.n12 + label .os.nopts.n12.l -text "taglength:" -width $lwidth -anchor w + entry .os.nopts.n12.e -width $ewidth -textvariable tko_taglength \ + -relief raised + trace variable tko_taglength w tk_opt_ew + pack append .os.nopts.n12 \ + .os.nopts.n12.l {left} .os.nopts.n12.e {left frame w} + + frame .os.nopts.n13 + label .os.nopts.n13.l -text "window:" -width $lwidth -anchor w + entry .os.nopts.n13.e -width $ewidth -textvariable tko_window \ + -relief raised + trace variable tko_window w tk_opt_ew + pack append .os.nopts.n13 \ + .os.nopts.n13.l {left} .os.nopts.n13.e {left frame w} + + frame .os.nopts.n14 + label .os.nopts.n14.l -text "wraplen:" -width $lwidth -anchor w + entry .os.nopts.n14.e -width $ewidth -textvariable tko_wraplen \ + -relief raised + trace variable tko_wraplen w tk_opt_ew + pack append .os.nopts.n14 \ + .os.nopts.n14.l {left} .os.nopts.n14.e {left frame w} + + frame .os.nopts.n15 + label .os.nopts.n15.l -text "wrapmargin:" -width $lwidth -anchor w + entry .os.nopts.n15.e -width $ewidth -textvariable tko_wrapmargin \ + -relief raised + trace variable tko_wrapmargin w tk_opt_ew + pack append .os.nopts.n15 \ + .os.nopts.n15.l {left} .os.nopts.n15.e {left frame w} + + pack append .os.nopts \ + .os.nopts.n1 {top fillx} \ + .os.nopts.n3 {top expand fillx} \ + .os.nopts.n4 {top expand fillx} \ + .os.nopts.n5 {top expand fillx} \ + .os.nopts.n6 {top expand fillx} \ + .os.nopts.n7 {top expand fillx} \ + .os.nopts.n8 {top expand fillx} \ + .os.nopts.n9 {top expand fillx} \ + .os.nopts.n10 {top expand fillx} \ + .os.nopts.n11 {top expand fillx} \ + .os.nopts.n12 {top expand fillx} \ + .os.nopts.n13 {top expand fillx} \ + .os.nopts.n14 {top expand fillx} \ + .os.nopts.n15 {top expand fillx} + + # Build frame for string options + frame .os.sopts + + # Entry width. + set ewidth 40 + + frame .os.sopts.s1 + label .os.sopts.s1.l -text "backup:" -width $lwidth -anchor w + entry .os.sopts.s1.e -width $ewidth -textvariable tko_backup \ + -relief raised + pack append .os.sopts.s1 \ + .os.sopts.s1.l {left} .os.sopts.s1.e {left frame w} + + frame .os.sopts.s2 + label .os.sopts.s2.l -text "cdpath:" -width $lwidth -anchor w + entry .os.sopts.s2.e -width $ewidth -textvariable tko_cdpath \ + -relief raised + pack append .os.sopts.s2 \ + .os.sopts.s2.l {left} .os.sopts.s2.e {left frame w} + + frame .os.sopts.s3 + label .os.sopts.s3.l -text "directory:" -width $lwidth -anchor w + entry .os.sopts.s3.e -width $ewidth -textvariable tko_directory \ + -relief raised + pack append .os.sopts.s3 \ + .os.sopts.s3.l {left} .os.sopts.s3.e {left frame w} + + frame .os.sopts.s4 + label .os.sopts.s4.l -text "cedit:" -width $lwidth -anchor w + entry .os.sopts.s4.e -width $ewidth -textvariable tko_cedit \ + -relief raised + pack append .os.sopts.s4 \ + .os.sopts.s4.l {left} .os.sopts.s4.e {left frame w} + + frame .os.sopts.s5 + label .os.sopts.s5.l -text "filec:" -width $lwidth -anchor w + entry .os.sopts.s5.e -width $ewidth -textvariable tko_filec \ + -relief raised + pack append .os.sopts.s5 \ + .os.sopts.s5.l {left} .os.sopts.s5.e {left frame w} + + frame .os.sopts.s6 + label .os.sopts.s6.l -text "msgcat:" -width $lwidth -anchor w + entry .os.sopts.s6.e -width $ewidth -textvariable tko_msgcat \ + -relief raised + pack append .os.sopts.s6 \ + .os.sopts.s6.l {left} .os.sopts.s6.e {left frame w} + + frame .os.sopts.s7 + label .os.sopts.s7.l -text "noprint:" -width $lwidth -anchor w + entry .os.sopts.s7.e -width $ewidth -textvariable tko_noprint \ + -relief raised + pack append .os.sopts.s7 \ + .os.sopts.s7.l {left} .os.sopts.s7.e {left frame w} + + frame .os.sopts.s8 + label .os.sopts.s8.l -text "paragraphs:" -width $lwidth -anchor w + entry .os.sopts.s8.e -width $ewidth -textvariable tko_paragraphs \ + -relief raised + pack append .os.sopts.s8 \ + .os.sopts.s8.l {left} .os.sopts.s8.e {left frame w} + + frame .os.sopts.s9 + label .os.sopts.s9.l -text "print:" -width $lwidth -anchor w + entry .os.sopts.s9.e -width $ewidth -textvariable tko_print \ + -relief raised + pack append .os.sopts.s9 \ + .os.sopts.s9.l {left} .os.sopts.s9.e {left frame w} + + frame .os.sopts.s10 + label .os.sopts.s10.l -text "recdir:" -width $lwidth -anchor w + entry .os.sopts.s10.e -width $ewidth -textvariable tko_recdir \ + -relief raised + pack append .os.sopts.s10 \ + .os.sopts.s10.l {left} .os.sopts.s10.e {left frame w} + + frame .os.sopts.s11 + label .os.sopts.s11.l -text "sections:" -width $lwidth -anchor w + entry .os.sopts.s11.e -width $ewidth -textvariable tko_sections \ + -relief raised + pack append .os.sopts.s11 \ + .os.sopts.s11.l {left} .os.sopts.s11.e {left frame w} + + frame .os.sopts.s12 + label .os.sopts.s12.l -text "shell:" -width $lwidth -anchor w + entry .os.sopts.s12.e -width $ewidth -textvariable tko_shell \ + -relief raised + pack append .os.sopts.s12 \ + .os.sopts.s12.l {left} .os.sopts.s12.e {left frame w} + + frame .os.sopts.s13 + label .os.sopts.s13.l -text "shellmeta:" -width $lwidth -anchor w + entry .os.sopts.s13.e -width $ewidth -textvariable tko_shellmeta \ + -relief raised + pack append .os.sopts.s13 \ + .os.sopts.s13.l {left} .os.sopts.s13.e {left frame w} + + frame .os.sopts.s14 + label .os.sopts.s14.l -text "tags:" -width $lwidth -anchor w + entry .os.sopts.s14.e -width $ewidth -textvariable tko_tags \ + -relief raised + pack append .os.sopts.s14 \ + .os.sopts.s14.l {left} .os.sopts.s14.e {left frame w} + + frame .os.sopts.s15 + label .os.sopts.s15.l -text "term:" -width $lwidth -anchor w + entry .os.sopts.s15.e -width $ewidth -textvariable tko_term \ + -relief raised + pack append .os.sopts.s15 \ + .os.sopts.s15.l {left} .os.sopts.s15.e {left frame w} + + pack append .os.sopts \ + .os.sopts.s1 {top expand fillx} \ + .os.sopts.s2 {top expand fillx} \ + .os.sopts.s3 {top expand fillx} \ + .os.sopts.s4 {top expand fillx} \ + .os.sopts.s5 {top expand fillx} \ + .os.sopts.s6 {top expand fillx} \ + .os.sopts.s7 {top expand fillx} \ + .os.sopts.s8 {top expand fillx} \ + .os.sopts.s9 {top expand fillx} \ + .os.sopts.s10 {top expand fillx} \ + .os.sopts.s11 {top expand fillx} \ + .os.sopts.s12 {top expand fillx} \ + .os.sopts.s13 {top expand fillx} \ + .os.sopts.s14 {top expand fillx} \ + .os.sopts.s15 {top expand fillx} + + # Build frame for continue button. + frame .os.control -bd 4 + button .os.control.quit -text "Continue" -command "destroy .os" + bind .os <Return> ".os.control.quit flash; destroy .os" + pack append .os.control .os.control.quit {left} + + # Pack everything together. + pack append .os \ + .os.bopts {top} \ + .os.control {bottom fillx} \ + .os.nopts {left fillx padx 4m pady 4m} \ + .os.sopts {left fillx pady 4m} + + grab .os + focus .os +} + +# tk_opt_ew -- +# Handle a change to an option entry widget. +proc tk_opt_ew {name element op} { + upvar $name x + tk_opt_set "$name=$x" +} + +# tk_err -- +# Display a Tcl/Tk error message. +proc tk_err {msg} { + tk_dialog .d {} "$msg" {} 0 Continue + + #puts "msg: $msg" +} + +# tk_addstr -- +# Add a string to the screen. +proc tk_addstr {len str} { + global tk_cursor_row + global tk_cursor_col + + # Delete the current characters, then insert the new ones. + .t mark set insert $tk_cursor_row.$tk_cursor_col + .t delete insert "insert + $len chars" + .t insert insert "$str" + incr tk_cursor_col $len + + #puts "tk_addstr: row $tk_cursor_row col $tk_cursor_col: insert $str" +} + +# tk_clrtoeol -- +# Clear to the end of the line. +proc tk_clrtoeol {} { + global tk_cursor_row + global tk_cursor_col + global tk_ssize_col + + # Overwrite to the end of the line with spaces. + .t mark set insert $tk_cursor_row.$tk_cursor_col + .t delete insert "insert lineend" + for {set j $tk_cursor_col} {$j < $tk_ssize_col} {incr j} { + .t insert insert " " + } + + #puts "tk_clrtoel: row $tk_cursor_row col $tk_cursor_col" +} + +# tk_deleteln -- +# Delete the line. +proc tk_deleteln {} { + global tk_cursor_row + global tk_cursor_col + global tk_ssize_col + + # Delete the line. + .t mark set insert $tk_cursor_row.$tk_cursor_col + .t delete insert "insert lineend + 1 chars" + + # Append a new, blank line at the end of the screen. + .t mark set insert end + for {set j 1} {$j <= $tk_ssize_col} {incr j} { + .t insert insert " " + } + .t insert insert "\n" + + #puts "tk_deleteln: row $tk_cursor_row" +} + +# tk_flash -- +# Flash the screen. +proc tk_flash {} { + set bg [lindex [.t config -background] 4] + set fg [lindex [.t config -foreground] 4] + .t configure -background $fg -foreground $bg + update idletasks + .t configure -background $bg -foreground $fg + update idletasks +} + +# tk_insertln -- +# Insert the line. +proc tk_insertln {} { + global tk_cursor_row + global tk_cursor_col + global tk_ssize_row + global tk_ssize_col + + # Delete the last line on the screen. + .t mark set insert $tk_ssize_row.0 + .t delete insert "insert lineend + 1 chars" + + # Insert a new, blank line. + .t mark set insert $tk_cursor_row.$tk_cursor_col + for {set j 1} {$j <= $tk_ssize_col} {incr j} { + .t insert insert " " + } + .t insert insert "\n" + + #puts "tk_insertln: row $tk_cursor_row" +} + +# tk_move -- +# Move the cursor. +proc tk_move {row col} { + global tk_cursor_row + global tk_cursor_col + + # Convert to Tcl/Tk coordinates, update the insert cursor. + set tk_cursor_row [ expr $row + 1 ] + set tk_cursor_col $col + .t mark set insert $tk_cursor_row.$tk_cursor_col + + # Update the screen cursor. + .t tag remove tk_cursor tk_cursor_indx + .t mark set tk_cursor_indx insert + .t tag add tk_cursor tk_cursor_indx + + #puts "tk_move: row $tk_cursor_row col $tk_cursor_col" +} + +# tk_rename -- +# Rename the screen. +proc tk_rename {name} { + wm title . "$name" +} + +# tk_ssize -- +# Return the window size. +proc tk_ssize {} { + global tk_ssize_col + global tk_ssize_row + + set s [ .t configure -width ] + set tk_ssize_col [ lindex $s [ expr [ llength $s ] -1 ] ] + set s [ .t configure -height ] + set tk_ssize_row [ lindex $s [ expr [ llength $s ] -1 ] ] + + #puts "tk_ssize: rows $tk_ssize_row, cols $tk_ssize_col" +} + +# tk_standout -- +# Change into standout mode. +proc tk_standout {} { +} + +# tk_standend -- +# Change out of standout mode. +proc tk_standend {} { +} + +# Cursor +set tk_cursor_row 1 +set tk_cursor_col 0 + +# Screen size +set tk_ssize_row 0 +set tk_ssize_col 0 + +screen +#tkwait window . |