|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proc RunSample {w} { |
|
wm title $w "Doe Inc. Performance" |
|
wm geometry $w 640x300 |
|
|
|
set top [frame $w.f -bd 1 -relief raised] |
|
set box [tixButtonBox $w.b -bd 1 -relief raised] |
|
|
|
pack $box -side bottom -fill both |
|
pack $top -side top -fill both -expand yes |
|
|
|
label $top.lab -text "This widget is still under alpha |
|
Please ignore the debug messages |
|
Not all features have been implemented" -justify left |
|
pack $top.lab -side top -anchor c -padx 3 -pady 3 |
|
|
|
MakeGrid $top |
|
|
|
|
|
|
|
$box add ok -text Ok -command "destroy $w" -width 6 |
|
$box add cancel -text Cancel -command "destroy $w" -width 6 |
|
} |
|
|
|
|
|
|
|
|
|
|
|
proc gformat {w area x1 y1 x2 y2} { |
|
set bg(s-margin) gray65 |
|
set bg(x-margin) gray65 |
|
set bg(y-margin) gray65 |
|
set bg(main) gray20 |
|
|
|
case $area { |
|
main { |
|
for {set y [expr ($y1/2) * 2]} {$y <= $y2} {incr y 2} { |
|
$w format border $x1 $y $x2 $y \ |
|
-relief flat -filled 1\ |
|
-bd 0 -bg #80b080 -selectbackground #80b0ff |
|
} |
|
$w format grid $x1 $y1 $x2 $y2 \ |
|
-relief raised -bd 1 -bordercolor $bg($area) -filled 0 -bg red\ |
|
-xon 1 -yon 1 -xoff 0 -yoff 0 -anchor se |
|
} |
|
y-margin { |
|
$w format border $x1 $y1 $x2 $y2 \ |
|
-fill 1 -relief raised -bd 1 -bg $bg($area) \ |
|
-selectbackground gray80 |
|
} |
|
|
|
default { |
|
$w format border $x1 $y1 $x2 $y2 \ |
|
-filled 1 \ |
|
-relief raised -bd 1 -bg $bg($area) \ |
|
-selectbackground gray80 |
|
} |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
proc Dollar {s} { |
|
set n [string len $s] |
|
set start [expr $n % 3] |
|
if {$start == 0} { |
|
set start 3 |
|
} |
|
|
|
set str "" |
|
for {set i 0} {$i < $n} {incr i} { |
|
if {$start == 0} { |
|
append str "," |
|
set start 3 |
|
} |
|
incr start -1 |
|
append str [string index $s $i] |
|
} |
|
return $str |
|
} |
|
|
|
proc MakeGrid {w} { |
|
|
|
|
|
|
|
set data { |
|
{1970 1000000000 1000000} |
|
{1971 1100000000 2000000} |
|
{1972 1200000000 3000000} |
|
{1973 1300000000 4000000} |
|
{1974 1400000000 5000000} |
|
{1975 1500000000 6000000} |
|
{1976 1600000000 7000000} |
|
{1977 1700000000 8000000} |
|
{1978 1800000000 9000000} |
|
{1979 1900000000 10000000} |
|
{1980 2000000000 11000000} |
|
{1981 2100000000 22000000} |
|
{1982 2200000000 33000000} |
|
{1983 2300000000 44000000} |
|
{1984 2400000000 55000000} |
|
{1985 3500000000 36000000} |
|
{1986 4600000000 57000000} |
|
{1987 5700000000 68000000} |
|
{1988 6800000000 79000000} |
|
{1989 7900000000 90000000} |
|
{1990 13000000000 111000000} |
|
{1991 14100000000 122000000} |
|
{1992 16200000000 233000000} |
|
{1993 28300000000 344000000} |
|
{1994 29400000000 455000000} |
|
{1995 38500000000 536000000} |
|
} |
|
|
|
set headers { |
|
"Revenue ($)" |
|
"Rev. Growth (%)" |
|
"Profit ($)" |
|
"Profit Growth (%)" |
|
} |
|
|
|
|
|
|
|
tixScrolledGrid $w.g -bd 0 |
|
pack $w.g -expand yes -fill both -padx 3 -pady 3 |
|
|
|
set grid [$w.g subwidget grid] |
|
$grid config -formatcmd "gformat $grid" |
|
|
|
|
|
|
|
$grid size col 0 -size 10char |
|
$grid size col 1 -size auto |
|
$grid size col 2 -size auto |
|
$grid size col 3 -size auto |
|
$grid size col 4 -size auto |
|
|
|
|
|
|
|
|
|
$grid size col default -size 5char |
|
$grid size row default -size 1.1char -pad0 3 |
|
|
|
set margin [tixDisplayStyle text -refwindow $grid \ |
|
-anchor c -padx 3 -font [tix option get bold_font]] |
|
set dollar [tixDisplayStyle text -refwindow $grid \ |
|
-anchor e] |
|
|
|
|
|
|
|
set x 1 |
|
foreach h $headers { |
|
$grid set $x 0 -itemtype text -text $h -style $margin |
|
incr x |
|
} |
|
|
|
|
|
|
|
set lastRevn {} |
|
set lastProf {} |
|
set i 1 |
|
foreach line $data { |
|
set year [lindex $line 0] |
|
set revn [lindex $line 1] |
|
set prof [lindex $line 2] |
|
|
|
if {$lastRevn != {}} { |
|
set rgrowth \ |
|
[format %4.2f [expr ($revn.0-$lastRevn)/$lastRevn*100.0]] |
|
} else { |
|
set rgrowth "-" |
|
} |
|
if {$lastProf != {}} { |
|
set pgrowth \ |
|
[format %4.2f [expr ($prof.0-$lastProf)/$lastProf*100.0]] |
|
} else { |
|
set pgrowth "-" |
|
} |
|
|
|
$grid set 0 $i -itemtype text -style $margin -text $year |
|
$grid set 1 $i -itemtype text -style $dollar -text [Dollar $revn] |
|
$grid set 2 $i -itemtype text -style $dollar -text $rgrowth |
|
$grid set 3 $i -itemtype text -style $dollar -text [Dollar $prof] |
|
$grid set 4 $i -itemtype text -style $dollar -text $pgrowth |
|
|
|
set lastRevn $revn.0 |
|
set lastProf $prof.0 |
|
|
|
incr i |
|
} |
|
} |
|
|
|
|
|
if {![info exists tix_demo_running]} { |
|
wm withdraw . |
|
set w .demo |
|
toplevel $w; wm transient $w "" |
|
RunSample $w |
|
bind $w <Destroy> exit |
|
} |
|
|