home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / TCL / BLT / _BLT.TAR / usr / lib / blt / demos / grconf.tcl < prev    next >
Encoding:
Text File  |  1994-04-22  |  38.7 KB  |  1,196 lines

  1. #!../blt_wish -f
  2.  
  3. if [file exists ../library] {
  4.     set blt_library ../library
  5. }
  6. set graph {}
  7. set interp {}
  8. set class {}
  9. set table(dummy) {}
  10. set setProc(dummy) {}
  11. set getProc(dummy) {}
  12. set row 0
  13. set column 0
  14.  
  15. wm title . "Graph Configure Tool"
  16.  
  17. option add *Radiobutton.font *New*Century*Schoolbook-Medium*-R-*-12-*
  18. option add *Radiobutton.relief flat
  19. #option add *Entry.font *Courier-Medium-R-*-12-*
  20. option add *Label.font *Helvetica-Bold-R-*-12-*
  21. option add *title.font *Helvetica-Bold-R-*-14-*
  22. option add *Entry.font *Courier-Medium-R-*-12-*
  23. option add *Scale.length 120
  24.  
  25. #
  26. #  Controls for various options
  27.  
  28. proc GetOptions { options arrayVar defaultsVar } {
  29.     upvar $arrayVar array
  30.     upvar $defaultsVar defaults
  31.  
  32.     foreach item $options {
  33.     if {[llength $item] < 4} {
  34.         continue
  35.     }
  36.     set name [lindex $item 0] 
  37.     set value [lindex $item 4]
  38.     set array($name) $value
  39.     }
  40.     set names [lsort [array names array]]
  41.     set defaults {}
  42.     foreach i $names {
  43.     lappend defaults $i $array($i)
  44.     }
  45. }
  46.  
  47. proc AnchorControl { name option value } {
  48.     global row column table setProc 
  49.  
  50.     label $table($name).label$option -text $option 
  51.     frame $table($name).frame$option 
  52.     set frame $table($name).frame$option 
  53.     set variable $name$option
  54.  
  55.     set count 0
  56.     foreach i { nw n ne w center e sw s se } {
  57.     radiobutton $frame.rbutton_$i -variable $variable -value $i -text $i \
  58.         -command "$setProc($name) $option \$\{$variable\}"
  59.     blt_table $frame $frame.rbutton_$i $count/3,$count%3 -anchor w
  60.     incr count
  61.     }
  62.     blt_table $table($name) \
  63.     $table($name).label$option $row,$column -anchor w \
  64.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  65.  
  66.     global $variable
  67.     set $variable $value
  68.     incr row 
  69. }
  70.  
  71. proc AnchorReset { name option value } {
  72.     global setProc 
  73.  
  74.     set variable $name$option
  75.     global $variable
  76.     set $variable $value
  77.     $setProc($name) $option $value
  78. }
  79.  
  80. proc ReliefControl { name option value } {
  81.     global row column table setProc
  82.  
  83.     label $table($name).label$option -text $option 
  84.     frame $table($name).frame$option 
  85.     set frame $table($name).frame$option 
  86.     set variable $name$option
  87.  
  88.     set count 0
  89.     foreach i { sunken groove flat ridge raised } {
  90.     radiobutton $frame.rbutton_$i -variable $variable -value $i -text $i \
  91.         -command "$setProc($name) $option \$\{$variable\}"
  92.     blt_table $frame $frame.rbutton_$i $count/2,$count%2 -anchor w
  93.     incr count
  94.     }
  95.     blt_table $table($name) \
  96.     $table($name).label$option $row,$column -anchor w \
  97.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  98.     
  99.     global $variable
  100.     set $variable $value
  101.     incr row 
  102. }
  103.  
  104. proc ReliefReset { name option value } {
  105.     global setProc
  106.     set variable $name$option
  107.     global $variable
  108.     set $variable $value
  109.     $setProc($name) $option $value
  110. }
  111.  
  112.  
  113. proc SymbolControl { name option value } {
  114.     global row column table setProc
  115.  
  116.     label $table($name).label$option -text $option 
  117.     frame $table($name).frame$option 
  118.     set frame $table($name).frame$option 
  119.     set variable $name$option
  120.  
  121.     set count 0
  122.     foreach i { Line Circle Cross Diamond Plus Square Scross Splus } {
  123.     radiobutton $frame.rbutton_$i -variable $variable -value $i -text $i \
  124.         -command "$setProc($name) $option \$\{$variable\}"
  125.     blt_table $frame $frame.rbutton_$i $count/3,$count%3 -anchor w
  126.     incr count
  127.     }
  128.     blt_table $table($name) \
  129.     $table($name).label$option $row,$column -anchor w \
  130.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  131.     
  132.     global $variable
  133.     set $variable $value
  134.     incr row 
  135. }
  136.  
  137. proc SymbolReset { name option value } {
  138.     global setProc
  139.     set variable $name$option
  140.     global $variable
  141.     set $variable $value
  142.     $setProc($name) $option $value
  143. }
  144.  
  145. proc BooleanControl { name option value } {
  146.     global row column table setProc
  147.  
  148.     label $table($name).label$option -text $option 
  149.     frame $table($name).frame$option 
  150.     set frame $table($name).frame$option 
  151.     set variable $name$option
  152.  
  153.     radiobutton $frame.rbutton_true -text "true" -variable $variable \
  154.     -command "$setProc($name) $option \$\{$variable\}" \
  155.     -value 1 
  156.     radiobutton $frame.rbutton_false  -text "false" -variable $variable \
  157.     -command "$setProc($name) $option \$\{$variable\}" \
  158.     -value 0
  159.     blt_table $frame \
  160.     $frame.rbutton_true  0,0 -anchor w \
  161.     $frame.rbutton_false 0,1 -anchor w
  162.  
  163.     blt_table $table($name) \
  164.     $table($name).label$option $row,$column -anchor w \
  165.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  166.  
  167.     global $variable
  168.     set $variable $value
  169.     incr row 
  170. }
  171.  
  172. proc BooleanReset { name option value } {
  173.     global setProc
  174.     set variable $name$option
  175.     global $variable
  176.     set $variable $value
  177.     $setProc($name) $option $value
  178. }
  179.  
  180. proc SetInt { name option value } {
  181.     global table setProc
  182.  
  183.     $setProc($name) $option $value
  184.     $table($name).frame$option.scale set $value
  185.     $table($name).frame$option.entry delete 0 end
  186.     $table($name).frame$option.entry insert 0 $value
  187. }
  188.  
  189. proc IntControl { name option from to value } {
  190.     global row column table 
  191.  
  192.     label $table($name).label$option -text $option 
  193.     frame $table($name).frame$option
  194.     set frame $table($name).frame$option
  195.     entry $frame.entry -relief sunken -width 6
  196.     scale $frame.scale -from $from -to $to \
  197.     -orient horizontal  -bg bisque1 -showvalue 0 
  198.     blt_table $frame \
  199.     $frame.entry 0,0 -fill x \
  200.     $frame.scale 0,1  -fill x
  201.     $frame.scale set $value
  202.     $frame.scale configure -command "SetInt $name $option "
  203.     $frame.entry insert 0 $value
  204.     bind $frame.entry <Return> "SetInt $name $option \[%W get\]"
  205.     blt_table $table($name) \
  206.     $table($name).label$option $row,$column -anchor w \
  207.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x 
  208.     incr row 
  209. }
  210.  
  211. proc IntReset { name option value } {
  212.     global setProc
  213.  
  214.     SetInt $name $option $value
  215.     $setProc($name) $option $value
  216. }
  217.  
  218. proc SetFloatFromEntry { name option scale value } {
  219.     global table setProc
  220.  
  221.     $setProc($name) $option $value
  222.     $table($name).frame$option.scale set [expr round($value/$scale)]
  223.     $table($name).frame$option.entry delete 0 end
  224.     $table($name).frame$option.entry insert 0 $value
  225. }
  226.  
  227. proc SetFloatFromScale { name option scale value } {
  228.     global table setProc
  229.  
  230.     set x [expr $scale*$value]
  231.     $setProc($name) $option $x 
  232.     $table($name).frame$option.scale set $value
  233.     $table($name).frame$option.entry delete 0 end
  234.     $table($name).frame$option.entry insert 0 $x
  235. }
  236.  
  237. proc FloatControl { name option from to scale value } {
  238.     global row column table setProc
  239.  
  240.     label $table($name).label$option -text $option 
  241.     frame $table($name).frame$option
  242.     set frame $table($name).frame$option
  243.     entry $frame.entry -relief sunken -width 6
  244.     scale $frame.scale -from $from -to $to \
  245.     -orient horizontal  -bg bisque1 -showvalue 0  \
  246.     -command "SetFloatFromScale $name $option $scale"
  247.     blt_table $frame \
  248.     $frame.entry 0,0 -fill x \
  249.     $frame.scale 0,1  -fill x
  250.     $frame.scale set [expr round($value/$scale)]
  251.     $frame.entry insert 0 $value
  252.     bind $frame.entry <Return> \
  253.     "SetFloatFromEntry $name $option $scale \[%W get\]"
  254.     blt_table $table($name) \
  255.     $table($name).label$option $row,$column -anchor w \
  256.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x 
  257.     incr row 
  258. }
  259.  
  260. proc FloatReset { name option scale value } {
  261.     global setProc
  262.     
  263.     SetFloatFromEntry $name $option $scale $value 
  264.     $setProc($name) $option $value
  265. }
  266.  
  267.  
  268. proc RGBInit {} {
  269.     global RGB
  270.  
  271.     set RGB(dummy) 0
  272.     if ![catch { exec showrgb } colorList] {
  273.     set colorList [split $colorList \n]
  274.     foreach i $colorList {
  275.         set parts [split $i \t]
  276.         set name [lindex $parts 2]
  277.         set RGB($name) [lindex $parts 0]
  278.     }
  279.     }
  280. }
  281.  
  282. proc RGBSetColorFromScale { name option color intensity } {
  283.     global rgb-$name$option setProc table
  284.  
  285.     set rgb-$name${option}($color) $intensity
  286.     set color [format #%02x%02x%02x [set rgb-$name${option}(red)] \
  287.            [set rgb-$name${option}(green)] [set rgb-$name${option}(blue)]]
  288.     $table($name).frame$option.entry delete 0 end
  289.     $table($name).frame$option.entry insert 0 $color
  290.     $setProc($name) $option $color
  291. }
  292.  
  293. proc RGBInitControls { name option color } {
  294.     global rgb-$name$option table RGB
  295.  
  296.     set frame $table($name).frame$option
  297.     $frame.entry delete 0 end
  298.     $frame.entry insert 0 $color
  299.     if { [string match #* $color] } {
  300.     set rgb-${name}${option}(red) 0x[string range $color 1 2]
  301.     set rgb-${name}${option}(green) 0x[string range $color 3 4]
  302.     set rgb-${name}${option}(blue) 0x[string range $color 5 6]
  303.     } elseif { [info exists RGB($color)] } {
  304.     set info $RGB($color)
  305.     set rgb-${name}${option}(red) [lindex $info 0]
  306.     set rgb-${name}${option}(green) [lindex $info 1]
  307.     set rgb-${name}${option}(blue) [lindex $info 2]
  308.     } else {
  309.     set rgb-${name}${option}(red) 0
  310.     set rgb-${name}${option}(green) 0
  311.     set rgb-${name}${option}(blue) 0
  312.     return
  313.     }
  314.     foreach i { red green blue } {
  315.     $frame.scale_$i set [set rgb-${name}${option}($i)]
  316.     }
  317. }
  318.  
  319. proc RGBSetColorFromEntry { name option color } {
  320.     global setProc table 
  321.  
  322.     RGBInitControls $name $option $color
  323.     $setProc($name) $option $color
  324. }
  325.  
  326. proc RGBColorControl { name option value } {
  327.     global row column table 
  328.     
  329.     label $table($name).label$option -text $option 
  330.     frame $table($name).frame$option 
  331.     set frame $table($name).frame$option 
  332.     
  333.     entry $frame.entry -relief sunken -width 8
  334.     scale $frame.scale_red -from 0 -to 255 -orient horizontal -showvalue 0 \
  335.     -sliderforeground #ff8888 -bd 0 -bg bisque1 -activeforeground red \
  336.     -command "RGBSetColorFromScale $name $option red"
  337.     scale $frame.scale_green -from 0 -to 255 -orient horizontal -showvalue 0 \
  338.     -sliderforeground #43cd80 -bd 0 -bg bisque1 -activeforeground green \
  339.     -command "RGBSetColorFromScale $name $option green"
  340.     scale $frame.scale_blue -from 0 -to 255 -orient horizontal -showvalue 0 \
  341.     -sliderforeground #7ec0ee -bd 0 -bg bisque1 -activeforeground blue \
  342.     -command "RGBSetColorFromScale $name $option blue"
  343.     blt_table $frame \
  344.     $frame.entry 0,0 -rspan 3 \
  345.     $frame.scale_red 0,1 -fill both  \
  346.     $frame.scale_green 1,1 -fill both \
  347.     $frame.scale_blue 2,1 -fill both 
  348.  
  349.     bind $frame.entry <Return> \
  350.     "RGBSetColorFromEntry $name $option \[%W get\]"
  351.     RGBInitControls $name $option $value
  352.     blt_table $table($name) \
  353.     $table($name).label$option $row,$column -anchor w \
  354.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  355.     incr row 
  356. }
  357.  
  358. proc RGBColorReset { name option value } {
  359.     RGBSetColorFromEntry $name $option $value
  360. }
  361.  
  362. proc EntryControl { name option value } {
  363.     global row column table setProc
  364.  
  365.     label $table($name).label$option -text $option 
  366.     entry $table($name).entry$option -relief sunken
  367.     bind $table($name).entry$option <Return> \
  368.     "$setProc($name) $option \[%W get\]"
  369.     $table($name).entry$option insert 0 $value
  370.  
  371.     blt_table $table($name) \
  372.     $table($name).label$option $row,$column -anchor w \
  373.     $table($name).entry$option $row,$column+1 -cspan 2 -fill x
  374.     incr row 
  375. }
  376.  
  377. proc EntryReset { name option value } {
  378.     global table setProc
  379.  
  380.     $table($name).entry$option delete 0 end
  381.     $table($name).entry$option insert 0 $value
  382.     $setProc($name) $option $value
  383. }
  384.  
  385. proc FontControl { name option value } {
  386.     global row column table setProc
  387.  
  388.     label $table($name).label$option -text $option 
  389.     frame $table($name).frame$option 
  390.     set frame $table($name).frame$option 
  391.  
  392.     entry $frame.entry -relief sunken
  393.     frame $frame.palette -geom 15x15 -relief raised -bd 2
  394.     blt_table $frame \
  395.     $frame.entry 0,0 -fill x \
  396.     $frame.palette 0,1 -padx 2  -reqwidth 15 -fill y
  397.  
  398.     blt_table column $frame configure 1 -resize none
  399.     $frame.entry insert 0 $value
  400.     bind $frame.entry <Return> "$setProc($name) $option \[%W get\]"
  401.  
  402.     blt_table $table($name) \
  403.     $table($name).label$option $row,$column -anchor w \
  404.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  405.     incr row 
  406. }
  407.  
  408.  
  409. proc FontReset { name option value } {
  410.     global table setProc
  411.  
  412.     $table($name).frame$option.entry delete 0 end
  413.     $table($name).frame$option.entry insert 0 $value
  414.     $setProc($name) $option $value
  415. }
  416.  
  417.  
  418. proc TraceReset { name option value } {
  419.     global setProc
  420.     set variable $name$option
  421.     global $variable
  422.     set $variable $value
  423.     $setProc($name) $option $value
  424. }
  425.  
  426. proc TraceControl { name option value } {
  427.     global row column table setProc
  428.  
  429.     label $table($name).label$option -text $option 
  430.     frame $table($name).frame$option 
  431.     set frame $table($name).frame$option 
  432.     set variable $name$option
  433.  
  434.     radiobutton $frame.rbutton_dec -text "decreasing" -variable $variable \
  435.     -command "$setProc($name) $option \$\{$variable\}" \
  436.     -value "decreasing"
  437.     radiobutton $frame.rbutton_both -text "both" -variable $variable \
  438.     -command "$setProc($name) $option \$\{$variable\}" \
  439.     -value "both"
  440.     radiobutton $frame.rbutton_inc -text "increasing" -variable $variable \
  441.     -command "$setProc($name) $option \$\{$variable\}" \
  442.     -value "increasing" 
  443.     blt_table $frame \
  444.     $frame.rbutton_both 0,0 -anchor w \
  445.     $frame.rbutton_dec 0,1 -anchor w \
  446.     $frame.rbutton_inc 0,2 -anchor w 
  447.  
  448.     blt_table $table($name) \
  449.     $table($name).label$option $row,$column -anchor w \
  450.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  451.  
  452.     global $variable
  453.     set $variable $value
  454.     incr row 
  455. }
  456.  
  457.  
  458. proc MapXAxisControl { name option value } {
  459.     global row column table setProc
  460.  
  461.     label $table($name).label$option -text $option 
  462.     frame $table($name).frame$option 
  463.     set frame $table($name).frame$option 
  464.     set variable $name$option
  465.  
  466.     radiobutton $frame.rbutton_x1 -text "x" -variable $variable \
  467.     -command "$setProc($name) $option \$\{$variable\}" \
  468.     -value "x" 
  469.     radiobutton $frame.rbutton_x2 -text "x2" -variable $variable \
  470.     -command "$setProc($name) $option \$\{$variable\}" \
  471.     -value "x2"
  472.     radiobutton $frame.rbutton_both -text "both" -variable $variable \
  473.     -command "$setProc($name) $option \$\{$variable\}" \
  474.     -value "both"
  475.     blt_table $frame \
  476.     $frame.rbutton_x1 0,0 -anchor w \
  477.     $frame.rbutton_x2 0,1 -anchor w \
  478.     $frame.rbutton_both 0,2 -anchor w
  479.  
  480.     blt_table $table($name) \
  481.     $table($name).label$option $row,$column -anchor w \
  482.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  483.  
  484.     global $variable
  485.     set $variable $value
  486.     incr row 
  487. }
  488.  
  489. proc MapXAxisReset { name option value } {
  490.     global setProc
  491.     set variable $name$option
  492.     global $variable
  493.     set $variable $value
  494.     $setProc($name) $option $value
  495. }
  496.  
  497. proc MapYAxisControl { name option value } {
  498.     global row column table setProc
  499.  
  500.     label $table($name).label$option -text $option 
  501.     frame $table($name).frame$option 
  502.     set frame $table($name).frame$option 
  503.     set variable $name$option
  504.  
  505.     radiobutton $frame.rbutton_y1 -text "y" -variable $variable \
  506.     -command "$setProc($name) $option \$\{$variable\}" \
  507.     -value "y" 
  508.     radiobutton $frame.rbutton_y2 -text "y2" -variable $variable \
  509.     -command "$setProc($name) $option \$\{$variable\}" \
  510.     -value "y2"
  511.     radiobutton $frame.rbutton_both -text "both" -variable $variable \
  512.     -command "$setProc($name) $option \$\{$variable\}" \
  513.     -value "both"
  514.     blt_table $frame \
  515.     $frame.rbutton_y1 0,0 -anchor w \
  516.     $frame.rbutton_y2 0,1 -anchor w \
  517.     $frame.rbutton_both 0,2 -anchor w
  518.  
  519.     blt_table $table($name) \
  520.     $table($name).label$option $row,$column -anchor w \
  521.     $table($name).frame$option $row,$column+1 -cspan 2 -fill x
  522.  
  523.     global $variable
  524.     set $variable $value
  525.     incr row 
  526. }
  527.  
  528. proc MapYAxisReset { name option value } {
  529.     global setProc
  530.     set variable $name$option
  531.     global $variable
  532.     set $variable $value
  533.     $setProc($name) $option $value
  534. }
  535.  
  536. #
  537. #
  538. # Component configuration routines
  539. #
  540. #
  541.  
  542. proc GraphConfigure { interpName graphName } {
  543.     global graph interp class RGB
  544.  
  545.     if ![info exists RGB] {
  546.     RGBInit
  547.     }
  548.     set graph $graphName
  549.     set interp $interpName
  550.     if { $interp == "" } {
  551.     set interp [winfo name .]
  552.     }
  553.     if [catch [list send $interp winfo class $graph] class ] {
  554.     puts stderr "\"send\" disabled: can't communicate with \"$interp\""
  555.     puts stderr $class
  556.     exit 1
  557.     }
  558. }
  559.  
  560. proc ResetGraph {} {
  561.     global graphOptions graphDefaults graph interp class
  562.  
  563.     RGBColorReset graph -background $graphOptions(-background)
  564.     IntReset graph -borderwidth $graphOptions(-borderwidth)
  565.     IntReset graph -bottommargin $graphOptions(-bottommargin)
  566.     BooleanReset graph -bufferelements $graphOptions(-bufferelements)
  567.     EntryReset graph -cursor $graphOptions(-cursor)
  568.     EntryReset graph -font $graphOptions(-font)
  569.     RGBColorReset graph -foreground $graphOptions(-foreground)
  570.     IntReset graph -halo $graphOptions(-halo)
  571.     IntReset graph -height $graphOptions(-height)
  572.     BooleanReset graph -invertxy $graphOptions(-invertxy)
  573.     IntReset graph -leftmargin $graphOptions(-leftmargin)
  574.     RGBColorReset graph -plotbackground $graphOptions(-plotbackground)
  575.     IntReset graph -plotborderwidth $graphOptions(-plotborderwidth)
  576.     ReliefReset graph -plotrelief $graphOptions(-plotrelief)
  577.     ReliefReset graph -relief $graphOptions(-relief)
  578.     IntReset graph -rightmargin $graphOptions(-rightmargin)
  579.     EntryReset graph -title $graphOptions(-title)
  580.     IntReset graph -topmargin $graphOptions(-topmargin)
  581.     IntReset graph -width $graphOptions(-width)
  582.     send $interp $graph configure $graphDefaults
  583. }
  584.  
  585.  
  586. proc SetGraph { option value } {
  587.     global graph interp
  588.     send $interp [list $graph configure $option $value]
  589. }
  590.  
  591. proc GetGraph {} {
  592.     global graph interp
  593.     send $interp [list $graph configure]
  594. }
  595.  
  596.  
  597. proc ConfigureGeneral {} {
  598.     global graphOptions graphDefaults class
  599.     global table row column setProc getProc 
  600.     
  601.     set name graph
  602.     if { [info command .$name] == ".$name" } {
  603.     destroy .$name
  604.     return
  605.     }
  606.     set row 2
  607.     set column 1
  608.     set setProc($name) SetGraph
  609.     set getProc($name) GetGraph
  610.  
  611.     GetOptions [$getProc($name)] graphOptions graphDefaults
  612.     set table($name) .$name
  613.     toplevel $table($name)
  614.     wm title .$name "General Configuration"
  615.     
  616.     frame $table($name).frame -relief groove -bd 2
  617.     label $table($name).title -text "General Configuration Options"
  618.     RGBColorControl graph -background $graphOptions(-background)
  619.     IntControl graph -borderwidth 0 10 $graphOptions(-borderwidth)
  620.     IntControl graph -bottommargin 0 100 $graphOptions(-bottommargin)
  621.     BooleanControl graph -bufferelements $graphOptions(-bufferelements)
  622.     EntryControl graph -cursor $graphOptions(-cursor)
  623.     EntryControl graph -font $graphOptions(-font)
  624.     RGBColorControl graph -foreground $graphOptions(-foreground)
  625.     IntControl graph -halo 0 100 $graphOptions(-halo)
  626.     IntControl graph -height 150 800 $graphOptions(-height)
  627.     set row 2
  628.     set column 5
  629.     BooleanControl graph -invertxy $graphOptions(-invertxy)
  630.     IntControl graph -leftmargin 0 100 $graphOptions(-leftmargin)
  631.     RGBColorControl graph -plotbackground $graphOptions(-plotbackground)
  632.     IntControl graph -plotborderwidth 0 10 $graphOptions(-plotborderwidth)
  633.     ReliefControl graph -plotrelief $graphOptions(-plotrelief)
  634.     ReliefControl graph -relief $graphOptions(-relief)
  635.     IntControl graph -rightmargin 0 100 $graphOptions(-rightmargin)
  636.     EntryControl graph -title $graphOptions(-title)
  637.     IntControl graph -topmargin 0 100 $graphOptions(-topmargin)
  638.     IntControl graph -width 150 800 $graphOptions(-width)
  639.  
  640.     button $table($name).button_done -text "done" \
  641.     -command "destroy .$name; set varGeneral 0"
  642.     button $table($name).button_reset -text "reset" \
  643.     -command "ResetGraph"
  644.     incr row
  645.     if { $row & 1 } {
  646.     incr row
  647.     }
  648.     blt_table $table($name) \
  649.     $table($name).frame 0,0 -cspan 24 -rspan $row -fill both \
  650.     -padx 4 -pady 4 \
  651.     $table($name).title         1,0 -cspan 24 \
  652.     $table($name).button_reset     $row,$column -reqwidth .7i -anchor w \
  653.     $table($name).button_done     $row,$column+1 -reqwidth .7i -anchor e
  654.     blt_table column $table($name) configure { 1 5 } -padx 5
  655.     blt_table row $table($name) configure all -pady 5
  656.     blt_table column $table($name) configure { 0 4 9 } -width 0.25i
  657.     blt_table row $table($name) configure { 0 $row-1 } -height 0.125i
  658.     blt_table row $table($name) configure { $row } -height {}
  659. }
  660.  
  661.  
  662. proc ResetAxis { axis } {
  663.     global axisOptions axisDefaults graph interp
  664.  
  665.     RGBColorReset axis -color $axisOptions(-color)
  666.     BooleanReset axis -descending $axisOptions(-descending)
  667.     EntryReset axis -font $axisOptions(-font)
  668.     IntReset axis -linewidth $axisOptions(-linewidth)
  669.     BooleanReset axis -logscale $axisOptions(-logscale)
  670.     BooleanReset axis -loose $axisOptions(-loose)
  671.     BooleanReset axis -mapped $axisOptions(-mapped)
  672.     EntryReset axis -max $axisOptions(-max)
  673.     EntryReset axis -min $axisOptions(-min)
  674.     FloatReset axis -rotate 1.0 $axisOptions(-rotate)
  675.     BooleanReset axis -showticks $axisOptions(-showticks)
  676.     FloatReset axis -stepsize 1.0 $axisOptions(-stepsize)
  677.     IntReset axis -subticks $axisOptions(-subticks)
  678.     IntReset axis -ticklength $axisOptions(-ticklength)
  679.     EntryReset axis -title $axisOptions(-title)
  680.     send $interp $graph $axis configure $axisDefaults
  681. }
  682.  
  683. proc GetAxis {} {
  684.     global axis graph interp
  685.     send $interp [list $graph $axis configure]
  686. }
  687.  
  688. proc SetAxisOptions { axis } {
  689.     global getProc axisOptions axisDefaults 
  690.     GetOptions [GetAxis] axisOptions axisDefaults
  691.     ResetAxis $axis
  692. }
  693.  
  694.  
  695. proc SetAxis { option value } {
  696.     global axis graph interp
  697.     send $interp [list $graph $axis configure $option $value]
  698. }
  699.  
  700. proc ConfigureAxis {} {
  701.     global axisOptions axisDefaults 
  702.     global table row column axis setProc getProc
  703.  
  704.     set name axis
  705.     if { [info command .$name] == ".$name" } {
  706.     destroy .$name
  707.     return
  708.     }
  709.     set row 3
  710.     set column 1
  711.     set axis xaxis
  712.     set setProc($name) SetAxis
  713.     set getProc($name) GetAxis
  714.  
  715.     GetOptions [$getProc($name)] axisOptions axisDefaults
  716.     set table($name) .$name
  717.     toplevel $table($name)
  718.     wm title .$name "Axis Configuration"
  719.  
  720.     frame $table($name).frame -relief groove -bd 2
  721.     label $table($name).title -text "Axis Configuration Options"
  722.     
  723.     frame $table($name).axis 
  724.     radiobutton $table($name).axis.x -text "x" -variable axis \
  725.     -value "xaxis" \
  726.     -command "SetAxisOptions xaxis" 
  727.  
  728.     radiobutton $table($name).axis.y -text "y" -variable axis \
  729.     -value "yaxis" \
  730.     -command "SetAxisOptions yaxis" 
  731.  
  732.     radiobutton $table($name).axis.x2 -text "x2" -variable axis \
  733.     -value "x2axis" \
  734.     -command "SetAxisOptions x2axis" 
  735.  
  736.     radiobutton $table($name).axis.y2 -text "y2" -variable axis \
  737.     -value "y2axis" \
  738.     -command "SetAxisOptions y2axis" 
  739.  
  740.     pack append $table($name).axis \
  741.     $table($name).axis.x { left expand fill } \
  742.     $table($name).axis.y { left expand fill } \
  743.     $table($name).axis.x2 { left expand fill } \
  744.     $table($name).axis.y2 { left expand fill } 
  745.  
  746.     RGBColorControl axis -color $axisOptions(-color)
  747.     BooleanControl axis -descending $axisOptions(-descending)
  748.     EntryControl axis -font $axisOptions(-font)
  749.     IntControl axis -linewidth 0 10 $axisOptions(-linewidth)
  750.     BooleanControl axis -logscale $axisOptions(-logscale)
  751.     BooleanControl axis -loose $axisOptions(-loose)
  752.     BooleanControl axis -mapped $axisOptions(-mapped)
  753.     EntryControl axis -max $axisOptions(-max)
  754.     EntryControl axis -min $axisOptions(-min)
  755.     FloatControl axis -rotate 0 360 1.0 $axisOptions(-rotate)
  756.     BooleanControl axis -showticks $axisOptions(-showticks)
  757.     FloatControl axis -stepsize 0 100 1.0 $axisOptions(-stepsize)
  758.     IntControl axis -subticks 0 10 $axisOptions(-subticks)
  759.     IntControl axis -ticklength -20 20 $axisOptions(-ticklength)
  760.     EntryControl axis -title $axisOptions(-title)
  761.     
  762.     button $table($name).button_done -text "done" \
  763.     -command "destroy .$name; set varAxis 0"
  764.     button $table($name).button_reset -text "reset" \
  765.     -command "ResetAxis $axis"
  766.     incr row
  767.     blt_table $table($name) \
  768.     $table($name).frame 0,0 -cspan 14 -rspan $row -fill both \
  769.     -padx 4 -pady 4 \
  770.     $table($name).title         1,0 -cspan 7 \
  771.     $table($name).axis        2,1 -fill x -cspan 3  \
  772.     $table($name).button_reset     $row,2 -reqwidth .7i -anchor w \
  773.     $table($name).button_done     $row,3 -reqwidth .7i -anchor e
  774.     blt_table column $table($name) configure 1 -padx 5
  775.     blt_table row $table($name) configure all -pady 5
  776.     blt_table column $table($name) configure { 0 4 } -width 0.25i
  777.     blt_table row $table($name) configure { 0 $row-1 } -height 0.125i
  778.     blt_table row $table($name) configure { $row } -height {}
  779. }
  780.  
  781.  
  782. proc ResetLegend {} {
  783.     global legendOptions legendDefaults graph interp
  784.  
  785.     RGBColorReset legend -activebackground $legendOptions(-activebackground)
  786.     IntReset legend -activeborderwidth $legendOptions(-activeborderwidth)
  787.     RGBColorReset legend -activeforeground $legendOptions(-activeforeground)
  788.     ReliefReset legend -activerelief $legendOptions(-activerelief)
  789.     AnchorReset legend -anchor $legendOptions(-anchor)
  790.     RGBColorReset legend -background $legendOptions(-background)
  791.     IntReset legend -borderwidth $legendOptions(-borderwidth)
  792.     EntryReset legend -font $legendOptions(-font)
  793.     RGBColorReset legend -foreground $legendOptions(-foreground)
  794.     IntReset legend -ipadx $legendOptions(-ipadx)
  795.     IntReset legend -ipady $legendOptions(-ipady)
  796.     BooleanReset legend -mapped $legendOptions(-mapped)
  797.     IntReset legend -padx $legendOptions(-padx)
  798.     IntReset legend -pady $legendOptions(-pady)
  799.     EntryReset legend -position $legendOptions(-position)
  800.     ReliefReset legend -relief $legendOptions(-relief)
  801.     send $interp $graph legend configure $legendDefaults
  802. }
  803.  
  804.  
  805. proc SetLegend { option value } {
  806.     global graph interp
  807.     send $interp [list $graph legend configure $option $value]
  808. }
  809.  
  810. proc GetLegend {} {
  811.     global graph interp
  812.     send $interp [list $graph legend configure]
  813. }
  814.  
  815. proc ConfigureLegend {} {
  816.     global legendOptions legendDefaults
  817.     global table row column setProc getProc
  818.  
  819.     set name legend
  820.     if { [info command .$name] == ".$name" } {
  821.     destroy .$name
  822.     return
  823.     }
  824.     set row 2
  825.     set column 1
  826.     set setProc($name) SetLegend
  827.     set getProc($name) GetLegend
  828.  
  829.     GetOptions [$getProc($name)] legendOptions legendDefaults
  830.     set table($name) .$name
  831.     toplevel $table($name)
  832.     wm title .$name "Legend Configuration"
  833.  
  834.     frame $table($name).frame -relief groove -bd 2
  835.     label $table($name).title -text "Legend Configuration Options"
  836.  
  837.     RGBColorControl legend -activebackground $legendOptions(-activebackground)
  838.     IntControl legend -activeborderwidth 0 10 \
  839.     $legendOptions(-activeborderwidth)
  840.     RGBColorControl legend -activeforeground $legendOptions(-activeforeground)
  841.     ReliefControl legend -activerelief $legendOptions(-activerelief)
  842.     AnchorControl legend -anchor $legendOptions(-anchor)
  843.     RGBColorControl legend -background $legendOptions(-background)
  844.     IntControl legend -borderwidth 0 10 $legendOptions(-borderwidth)
  845.     EntryControl legend -font $legendOptions(-font)
  846.     RGBColorControl legend -foreground $legendOptions(-foreground)
  847.     IntControl legend -ipadx 0 10 $legendOptions(-ipadx)
  848.     IntControl legend -ipady 0 10 $legendOptions(-ipady)
  849.     BooleanControl legend -mapped $legendOptions(-mapped)
  850.     IntControl legend -padx 0 10 $legendOptions(-padx)
  851.     IntControl legend -pady 0 10 $legendOptions(-pady)
  852.     EntryControl legend -position $legendOptions(-position)
  853.     ReliefControl legend -relief $legendOptions(-relief)
  854.  
  855.     button $table($name).button_done -text "done" \
  856.     -command "destroy .$name; set varLegend 0"
  857.     button $table($name).button_reset -text "reset" \
  858.     -command "ResetLegend"
  859.     incr row
  860.     blt_table $table($name) \
  861.     $table($name).frame 0,0 -cspan 5 -rspan $row -fill both \
  862.         -padx 4 -pady 4 \
  863.     $table($name).title         1,0 -cspan 4 \
  864.     $table($name).button_reset     $row,2 -reqwidth .7i -anchor w \
  865.     $table($name).button_done     $row,3 -reqwidth .7i -anchor e
  866.     blt_table column $table($name) configure 1 -padx 5
  867.     blt_table row $table($name) configure all -pady 5
  868.     blt_table column $table($name) configure { 0 4 } -width 0.25i
  869.     blt_table column $table($name) configure { 0 4 } -width 0.25i
  870.     blt_table row $table($name) configure { 0 $row-1 } -height 0.125i
  871.     blt_table row $table($name) configure { $row } -height {}
  872. }
  873.  
  874. proc ResetCrosshairs {} {
  875.     global xhairsOptions xhairsDefaults graph interp
  876.  
  877.     RGBColorReset crosshairs -color $xhairsOptions(-color)
  878.     IntReset crosshairs -dashes $xhairsOptions(-dashes)
  879.     IntReset crosshairs -linewidth $xhairsOptions(-linewidth)
  880.     BooleanReset crosshairs -mapped $xhairsOptions(-mapped)
  881.     EntryReset crosshairs -position $xhairsOptions(-position)
  882.     send $interp $graph crosshairs configure $xhairsDefaults
  883. }
  884.  
  885. proc SetCrosshairs { option value } {
  886.     global graph interp
  887.     send $interp [list $graph crosshairs configure $option $value]
  888. }
  889.  
  890. proc GetCrosshairs {} {
  891.     global graph interp
  892.     send $interp [list $graph crosshairs configure]
  893. }
  894.  
  895. proc ConfigureCrosshairs {} {
  896.     global xhairsOptions xhairsDefaults 
  897.     global table row column setProc getProc
  898.  
  899.     if { [info command .crosshairs] == ".crosshairs" } {
  900.     destroy .crosshairs
  901.     return
  902.     }
  903.     set name crosshairs
  904.     set row 2
  905.     set column 1
  906.     set setProc($name) SetCrosshairs
  907.     set getProc($name) GetCrosshairs
  908.  
  909.     GetOptions [$getProc($name)] xhairsOptions xhairsDefaults
  910.     set table($name) .crosshairs
  911.     toplevel $table($name)
  912.     wm title .$name "Crosshairs Configuration"
  913.  
  914.     frame $table($name).frame -relief groove -bd 2
  915.     label $table($name).title -text "Crosshairs Configuration Options"
  916.  
  917.     RGBColorControl crosshairs -color $xhairsOptions(-color)
  918.     IntControl crosshairs -dashes 0 10 $xhairsOptions(-dashes)
  919.     IntControl crosshairs -linewidth 0 10 $xhairsOptions(-linewidth)
  920.     BooleanControl crosshairs -mapped $xhairsOptions(-mapped)
  921.     EntryControl crosshairs -position $xhairsOptions(-position)
  922.  
  923.     button $table($name).button_done -text "done" \
  924.     -command "destroy .$name; set varCrosshairs 0"
  925.     button $table($name).button_reset -text "reset" \
  926.     -command "ResetCrosshairs"
  927.     incr row
  928.     blt_table $table($name) \
  929.     $table($name).frame 0,0 -cspan 7 -rspan $row -fill both \
  930.     -padx 4 -pady 4 \
  931.     $table($name).title         1,0 -cspan 7 \
  932.     $table($name).button_reset     $row,2 -reqwidth .7i -anchor w \
  933.     $table($name).button_done    $row,3 -reqwidth .7i -anchor e
  934.     blt_table column $table($name) configure 1 -padx 5
  935.     blt_table row $table($name) configure all -pady 5
  936.     blt_table column $table($name) configure { 0 4 } -width 0.25i
  937.     blt_table row $table($name) configure { 0 $row-1 } -height 0.125i
  938. }
  939.  
  940.  
  941. proc ResetPostScript {} {
  942.     global psOptions psDefaults graph interp
  943.  
  944.     EntryReset postscript -colormap $psOptions(-colormap)
  945.     EntryReset postscript -colormode $psOptions(-colormode)
  946.     EntryReset postscript -fontmap $psOptions(-fontmap)
  947.     BooleanReset postscript -landscape $psOptions(-landscape)
  948.     AnchorReset postscript -pageanchor $psOptions(-pageanchor)
  949.     IntReset postscript -pageheight $psOptions(-pageheight)
  950.     IntReset postscript -pagewidth $psOptions(-pagewidth)
  951.     IntReset postscript -pagex $psOptions(-pagex)
  952.     IntReset postscript -pagey $psOptions(-pagey)
  953.     send $interp $graph psconfigure $psDefaults
  954. }
  955.  
  956. proc SetPostScript { option value } {
  957.     global graph interp
  958.     send $interp [list $graph psconfigure $option $value]
  959. }
  960.  
  961. proc GetPostScript {} {
  962.     global graph interp
  963.     send $interp [list $graph psconfigure]
  964. }
  965.  
  966. proc ConfigurePostScript {} {
  967.     global psOptions psDefaults 
  968.     global table row column setProc getProc
  969.  
  970.     if { [info command .postscript] == ".postscript" } {
  971.     destroy .postscript
  972.     return
  973.     }
  974.     set name postscript
  975.     set row 2
  976.     set column 1
  977.     set setProc($name) SetPostScript
  978.     set getProc($name) GetPostScript
  979.  
  980.     GetOptions [$getProc($name)] psOptions psDefaults
  981.     set table($name) .postscript
  982.     toplevel $table($name)
  983.     wm title .$name "PostScript Configuration"
  984.     
  985.     frame $table($name).frame -relief groove -bd 2
  986.     label $table($name).title -text "PostScript Configuration Options"
  987.  
  988.     EntryControl postscript -colormap $psOptions(-colormap)
  989.     EntryControl postscript -colormode $psOptions(-colormode)
  990.     EntryControl postscript -fontmap $psOptions(-fontmap)
  991.     BooleanControl postscript -landscape $psOptions(-landscape)
  992.     AnchorControl postscript -pageanchor $psOptions(-pageanchor)
  993.     IntControl postscript -pageheight 0 900 $psOptions(-pageheight)
  994.     IntControl postscript -pagewidth 0 900 $psOptions(-pagewidth)
  995.     IntControl postscript -pagex 0 900 $psOptions(-pagex)
  996.     IntControl postscript -pagey 0 900 $psOptions(-pagey)
  997.  
  998.     button $table($name).button_done -text "done" \
  999.     -command "destroy .$name; set varPostScript 0"
  1000.     button $table($name).button_reset -text "reset" \
  1001.     -command "ResetPostScript"
  1002.     incr row
  1003.     blt_table $table($name) \
  1004.     $table($name).frame 0,0 -cspan 7 -rspan $row -fill both \
  1005.     -padx 4 -pady 4 \
  1006.     $table($name).title         1,0 -cspan 7 \
  1007.     $table($name).button_reset     $row,2 -reqwidth .7i -anchor w \
  1008.     $table($name).button_done    $row,3 -reqwidth .7i -anchor e
  1009.     blt_table column $table($name) configure 1 -padx 5
  1010.     blt_table row $table($name) configure all -pady 5
  1011.     blt_table column $table($name) configure { 0 4 } -width 0.25i
  1012.     blt_table row $table($name) configure { 0 $row-1 } -height 0.125i
  1013. }
  1014.  
  1015.  
  1016. proc ResetElement {} {
  1017.     global elemOptions elemDefaults element graph interp class
  1018.  
  1019.     RGBColorReset element -activebackground $elemOptions(-activebackground)
  1020.     RGBColorReset element -activeforeground $elemOptions(-activeforeground)
  1021.     RGBColorReset element -background $elemOptions(-background)
  1022.     EntryReset element -data $elemOptions(-data)
  1023.     RGBColorReset element -foreground $elemOptions(-foreground)
  1024.     EntryReset element -label $elemOptions(-label)
  1025.     MapXAxisReset element -mapx $elemOptions(-mapx)
  1026.     MapYAxisReset element -mapy $elemOptions(-mapy)
  1027.     EntryReset element -xdata $elemOptions(-xdata)
  1028.     EntryReset element -ydata $elemOptions(-ydata)
  1029.  
  1030.     IntReset element -borderwidth $elemOptions(-borderwidth)
  1031.     if { $class == "Blt_graph" } {
  1032.     IntReset element -activelinewidth $elemOptions(-activelinewidth)
  1033.     IntReset element -dashes $elemOptions(-dashes)
  1034.     IntReset element -linewidth $elemOptions(-linewidth)
  1035.     TraceReset element -trace  $elemOptions(-trace)
  1036.     SymbolReset element -symbol $elemOptions(-symbol)
  1037.     FloatReset element -scale 0.01 $elemOptions(-scale)
  1038.     } else {
  1039.     ReliefReset element -relief $elemOptions(-relief)
  1040.     BooleanReset element -stacked $elemOptions(-stacked)
  1041.     EntryReset element -stipple $elemOptions(-stipple)
  1042.     } 
  1043.     send $interp $graph element configure $element $elemDefaults
  1044. }
  1045.  
  1046. proc SetElement { option value } {
  1047.     global graph element interp
  1048.  
  1049.     send $interp [list $graph element configure $element $option $value]
  1050. }
  1051.  
  1052. proc GetElement {} {
  1053.     global graph element interp
  1054.  
  1055.     send $interp [list $graph element configure $element]
  1056. }
  1057.  
  1058. proc GetElementNames {} {
  1059.     global graph element interp
  1060.  
  1061.     send $interp [list $graph element names]
  1062. }
  1063.  
  1064. proc SetElemOptions {} {
  1065.     global elemOptions elemDefaults graph element 
  1066.  
  1067.     GetOptions [GetElement] elemOptions elemDefaults
  1068.     ResetElement 
  1069. }
  1070.  
  1071. proc ConfigureElement {} {
  1072.     global elemOptions elemDefaults class
  1073.     global table graph row column element setProc getProc 
  1074.         
  1075.     set elements [lsort [GetElementNames]]
  1076.     if { [llength $elements] < 1 } {
  1077.     return
  1078.     }
  1079.     set element [lindex $elements 0]
  1080.     GetOptions [GetElement] elemOptions elemDefaults
  1081.  
  1082.     set name element
  1083.     if { [info command .$name] == ".$name" } {
  1084.     destroy .$name
  1085.     return
  1086.     }
  1087.     set setProc($name) SetElement
  1088.     set getProc($name) GetElement
  1089.  
  1090.     set table($name) .$name
  1091.     toplevel $table($name)
  1092.     wm title .$name "Element Configuration"
  1093.  
  1094.     frame $table($name).frame -relief groove -bd 2
  1095.     label $table($name).title -text "Element Configuration Options"
  1096.  
  1097.     set count 0
  1098.     label $table($name).name -text "Elements:"
  1099.     frame $table($name).elements 
  1100.     set frame $table($name).elements
  1101.     foreach i $elements {
  1102.     radiobutton $frame.rbutton_$i -variable element -value $i -text $i \
  1103.         -command "SetElemOptions"
  1104.     blt_table $frame $frame.rbutton_$i $count/2,$count%2 -anchor w
  1105.     incr count
  1106.     }
  1107.  
  1108.     set row 3
  1109.     set column 1
  1110.     RGBColorControl element -activebackground $elemOptions(-activebackground)
  1111.     RGBColorControl element -activeforeground $elemOptions(-activeforeground)
  1112.     if { $class == "Blt_graph" } {
  1113.     IntControl element -activelinewidth 0 10 $elemOptions(-activelinewidth)
  1114.     RGBColorControl element -background $elemOptions(-background)
  1115.     IntControl element -borderwidth 0 10 $elemOptions(-borderwidth)
  1116.     IntControl element -dashes 0 10 $elemOptions(-dashes)
  1117.     EntryControl element -data $elemOptions(-data)
  1118.     RGBColorControl element -foreground $elemOptions(-foreground)
  1119.     EntryControl element -label $elemOptions(-label)
  1120.     IntControl element -linewidth 0 10 $elemOptions(-linewidth)
  1121.     MapXAxisControl element -mapx $elemOptions(-mapx)
  1122.     MapYAxisControl element -mapy $elemOptions(-mapy)
  1123.     TraceControl element -trace  $elemOptions(-trace)
  1124.     SymbolControl element -symbol $elemOptions(-symbol)
  1125.     FloatControl element -scale 0 300 0.01 $elemOptions(-scale)
  1126.     EntryControl element -xdata $elemOptions(-xdata)
  1127.     EntryControl element -ydata $elemOptions(-ydata)
  1128.     } else {
  1129.     RGBColorControl element -background $elemOptions(-background)
  1130.     IntControl element -borderwidth 0 10 $elemOptions(-borderwidth)
  1131.     EntryControl element -data $elemOptions(-data)
  1132.     RGBColorControl element -foreground $elemOptions(-foreground)
  1133.     EntryControl element -label $elemOptions(-label)
  1134.     MapXAxisControl element -mapx $elemOptions(-mapx)
  1135.     MapYAxisControl element -mapy $elemOptions(-mapy)
  1136.     ReliefControl element -relief $elemOptions(-relief)
  1137.     BooleanControl element -stacked $elemOptions(-stacked)
  1138.     EntryControl element -stipple $elemOptions(-stipple)
  1139.     EntryControl element -xdata $elemOptions(-xdata)
  1140.     EntryControl element -ydata $elemOptions(-ydata)
  1141.     }
  1142.     button $table($name).button_done -text "done" \
  1143.     -command "destroy .$name; set varElement 0"
  1144.     button $table($name).button_reset -text "reset" \
  1145.     -command "ResetElement"
  1146.     incr row
  1147.     blt_table $table($name) \
  1148.     $table($name).frame 0,0 -cspan 14 -rspan $row -fill both -padx 4 \
  1149.     -pady 4 \
  1150.     $table($name).title         1,0 -cspan 14 \
  1151.     $table($name).name        2,1 -anchor e \
  1152.     $table($name).elements     2,2 -cspan 2 -fill x \
  1153.     $table($name).button_reset     $row,$column+1 -reqwidth .7i -anchor w \
  1154.     $table($name).button_done     $row,$column+2 -reqwidth .7i -anchor e
  1155.     blt_table column $table($name) configure { 1 5 } -padx 5
  1156.     blt_table row $table($name) configure all -pady 5
  1157.     blt_table column $table($name) configure { 0 4 } -width 0.25i
  1158.     blt_table row $table($name) configure { 0 $row-1 } -height 0.125i
  1159.     blt_table row $table($name) configure { $row } -height {}
  1160. }
  1161.  
  1162. if { $argc != 2 } {
  1163.     error "usage: grconf interp window"
  1164. }
  1165. set interps [lsort [winfo interps]]
  1166.  
  1167. set row 2
  1168. set column 0
  1169.  
  1170. foreach i { General Element Axis Legend Crosshairs PostScript } {
  1171.     checkbutton .cbutton_$i \
  1172.     -text $i \
  1173.     -command "Configure$i" \
  1174.     -relief flat \
  1175.     -variable var$i
  1176.     blt_table . \
  1177.     .cbutton_$i $row,$column -anchor w  -cspan 2 
  1178.     incr row
  1179. }
  1180. label .title -text "Graph Configure Utility"
  1181. message .msg -text "...configuring \"[lindex $argv 1]\"" -aspect 5000
  1182. label .logo -bitmap BLT
  1183. button .quit -text "quit" -command "destroy ."
  1184. blt_table . \
  1185.     .title 0,0 -fill both -cspan 2 \
  1186.     .msg   1,0 -cspan 2 -fill both  \
  1187.     .logo  $row,$column \
  1188.     .quit  $row,$column+1 -reqwidth .75i
  1189.  
  1190.  
  1191. GraphConfigure [lindex $argv 0] [lindex $argv 1]
  1192.  
  1193. #debug 50
  1194.  
  1195.