|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tixWidgetClass tixMeter { |
|
-classname TixMeter |
|
-superclass tixPrimitive |
|
-method { |
|
} |
|
-flag { |
|
-foreground -text -value |
|
} |
|
-configspec { |
|
{-fillcolor fillColor FillColor #8080ff} |
|
{-foreground foreground Foreground black} |
|
{-text text Text ""} |
|
{-value value Value 0} |
|
} |
|
-default { |
|
{.relief sunken} |
|
{.borderWidth 2} |
|
{.width 150} |
|
} |
|
} |
|
|
|
proc tixMeter:InitWidgetRec {w} { |
|
upvar #0 $w data |
|
global env |
|
|
|
tixChainMethod $w InitWidgetRec |
|
} |
|
|
|
|
|
|
|
|
|
proc tixMeter:ConstructWidget {w} { |
|
upvar #0 $w data |
|
|
|
tixChainMethod $w ConstructWidget |
|
|
|
set data(w:canvas) [canvas $w.canvas] |
|
pack $data(w:canvas) -expand yes -fill both |
|
|
|
tixMeter:Update $w |
|
} |
|
|
|
proc tixMeter:SetBindings {w} { |
|
upvar #0 $w data |
|
|
|
tixChainMethod $w SetBindings |
|
} |
|
|
|
proc tixMeter:Update {w} { |
|
upvar #0 $w data |
|
|
|
|
|
set W [expr $data(-width)-\ |
|
([$data(w:root) cget -bd]+[$data(w:root) cget -highlightthickness]*2)] |
|
$data(w:canvas) config -width $W |
|
|
|
if {$data(-text) == ""} { |
|
set text [format "%d%%" [expr int($data(-value)*100)]] |
|
} else { |
|
set text $data(-text) |
|
} |
|
|
|
|
|
|
|
if {![info exists data(text)]} { |
|
set data(text) [$data(w:canvas) create text 0 0 -text $text] |
|
} else { |
|
$data(w:canvas) itemconfig $data(text) -text $text |
|
} |
|
|
|
set bbox [$data(w:canvas) bbox $data(text)] |
|
|
|
set itemW [expr [lindex $bbox 2]-[lindex $bbox 0]] |
|
set itemH [expr [lindex $bbox 3]-[lindex $bbox 1]] |
|
|
|
|
|
$data(w:canvas) coord $data(text) [expr $W/2] [expr $itemH/2+4] |
|
|
|
set H [expr $itemH + 4] |
|
$data(w:canvas) config -height [expr $H] |
|
|
|
|
|
set rectW [expr int($W*$data(-value))] |
|
|
|
if {![info exists data(rect)]} { |
|
set data(rect) [$data(w:canvas) create rectangle 0 0 $rectW 1000] |
|
} else { |
|
$data(w:canvas) coord $data(rect) 0 0 $rectW 1000 |
|
} |
|
|
|
$data(w:canvas) itemconfig $data(rect) \ |
|
-fill $data(-fillcolor) -outline $data(-fillcolor) |
|
|
|
$data(w:canvas) raise $data(text) |
|
} |
|
|
|
|
|
|
|
|
|
proc tixMeter:config-value {w value} { |
|
upvar #0 $w data |
|
|
|
set data(-value) $value |
|
tixMeter:Update $w |
|
} |
|
|
|
proc tixMeter:config-text {w value} { |
|
upvar #0 $w data |
|
|
|
set data(-text) $value |
|
tixMeter:Update $w |
|
} |
|
|
|
proc tixMeter:config-fillcolor {w value} { |
|
upvar #0 $w data |
|
|
|
set data(-fillcolor) $value |
|
tixMeter:Update $w |
|
} |
|
|
|
|
|
|