/usr/share/blt2.5/demos/barchart1.tcl is in blt-demo 2.5.3+dfsg-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | #!/usr/bin/wish8.6
package require BLT
# --------------------------------------------------------------------------
# Starting with Tcl 8.x, the BLT commands are stored in their own
# namespace called "blt". The idea is to prevent name clashes with
# Tcl commands and variables from other packages, such as a "table"
# command in two different packages.
#
# You can access the BLT commands in a couple of ways. You can prefix
# all the BLT commands with the namespace qualifier "blt::"
#
# blt::graph .g
# blt::table . .g -resize both
#
# or you can import all the command into the global namespace.
#
# namespace import blt::*
# graph .g
# table . .g -resize both
#
# --------------------------------------------------------------------------
if { $tcl_version >= 8.0 } {
namespace import blt::*
namespace import -force blt::tile::*
}
source scripts/demo.tcl
set graph .bc
proc random {{max 1.0} {min 0.0}} {
global randomSeed
set randomSeed [expr (7141*$randomSeed+54773) % 259200]
set num [expr $randomSeed/259200.0*($max-$min)+$min]
return $num
}
set randomSeed 148230
proc FormatLabel { w value } {
# Determine the element name from the value
set names [$w element show]
set index [expr round($value)]
if { $index != $value } {
return $value
}
global elemLabels
if { [info exists elemLabels($index)] } {
return $elemLabels($index)
}
return $value
}
source scripts/stipples.tcl
image create photo bgTexture -file ./images/rain.gif
option add *tile bgTexture
option add *Button.tile ""
option add *Htext.tileOffset no
option add *Htext.font { Times 12 }
option add *Barchart.title "A Simple Barchart"
option add *Axis.tickFont { Courier 10 }
option add *Axis.titleFont { Helvetica 12 bold }
option add *x.Title "X Axis Label"
option add *x.Rotate 90
option add *x.Command FormatLabel
option add *y.Title "Y Axis Label"
option add *Element.Background white
option add *Element.Relief solid
option add *Element.BorderWidth 1
option add *Legend.hide yes
option add *Grid.hide no
option add *Grid.dashes { 2 4 }
option add *Grid.mapX ""
set visual [winfo screenvisual .]
if { $visual != "staticgray" && $visual != "grayscale" } {
option add *print.background yellow
option add *quit.background red
option add *graph.background palegreen
}
htext .header -text {
The barchart has several components: coordinate axes, data
elements, legend, crosshairs, grid, postscript, and markers.
They each control various aspects of the barchart. For example,
the postscript component lets you generate PostScript output.
Pressing the %%
set w $htext(widget)
button $w.print -text {Print} -command {
.bc postscript output bar.ps
}
$w append $w.print
%% button will create a file "bar.ps"
}
htext .footer -text {
Hit the %%
set w $htext(widget)
button $w.quit -text quit -command exit
$w append $w.quit
%% button when you've seen enough.%%
label $w.logo -bitmap BLT
$w append $w.logo -padx 20
%% }
barchart .bc
#
# Element attributes:
#
# Label Foreground Background Stipple Pattern
source scripts/stipples.tcl
set bitmaps {
bdiagonal1 bdiagonal2 checker2 checker3 cross1 cross2 cross3 crossdiag
dot1 dot2 dot3 dot4 fdiagonal1 fdiagonal2 hline1 hline2 lbottom ltop
rbottom rtop vline1 vline2
}
set count 1
foreach stipple $bitmaps {
set label [file tail $stipple]
set label [file root $label]
set y [random -2 10]
set yhigh [expr $y + 0.5]
set ylow [expr $y - 0.5]
.bc element create $label -y $y -x $count \
-fg brown -bg orange -stipple $stipple -yhigh $yhigh -ylow $ylow
set elemLabels($count) $label
incr count
}
table . \
0,0 .header -fill x \
1,0 .bc -fill both \
2,0 .footer -fill x
table configure . r0 r2 -resize none
Blt_ZoomStack .bc
Blt_Crosshairs .bc
Blt_ActiveLegend .bc
Blt_ClosestPoint .bc
if 0 {
set printer [printer open [lindex [printer names] 0]]
printer getattr $printer attrs
set attrs(Orientation) Portrait
printer setattr $printer attrs
after 2000 {
$graph print2 $printer
printer close $printer
}
}
.bc axis bind x <Enter> {
set axis [%W axis get current]
%W axis configure $axis -color blue3 -titlecolor blue3
}
.bc axis bind x <Leave> {
set axis [%W axis get current]
%W axis configure $axis -color black -titlecolor black
}
|