home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 December
/
PCWorld_2000-12_cd.bin
/
Komunikace
/
Comanche
/
gui
/
guiAlternate.tcl
next >
Wrap
Text File
|
2000-11-02
|
3KB
|
113 lines
class guiAlternate {
inherit guiObject
variable selectedRadioButton 0
variable buttonMapGui
variable buttonMapXui
variable radiobuttons
variable containerFrames
constructor { frame xuiObject guiBuilder} {
set subject $xuiObject
set i 0
set surrFrame $frame
if ![string compare [$subject getStyle] normal] {
set bframe [TitleFrame $frame.tf -relief groove \
-text [$subject getLabel]]
set surrFrame [$bframe getframe]
pack $bframe -fill both -expand true
}
set labeled {}
set maxLabelSize 0
foreach alternateItem [$subject getComponents] {
set newFrame [frame $surrFrame.$i]
lappend containerFrames $newFrame
set rb [radiobutton $newFrame.rb \
-variable [scope selectedRadioButton ] \
-value $i]
pack $rb -side left
lappend radiobuttons $rb
set guiFrame [frame $newFrame.gui]
set gui [$guiBuilder render $guiFrame $alternateItem]
set buttonMapGui($i) $gui
set buttonMapXui($i) $alternateItem
if [ $gui isa guiLabeled ] {
lappend labeled $gui
if [expr [$gui getLabelLength] > $maxLabelSize] {
set maxLabelSize [$gui getLabelLength]
}
}
incr i
pack $guiFrame -side left
pack $newFrame -anchor w
}
if [expr $maxLabelSize > 40] {
set maxLabelSize 40
}
foreach element $labeled {
$element setLabelLength $maxLabelSize
}
if [llength [set tmp [$subject getSelectedComponent]]] {
set pos [lsearch -exact [array get buttonMapXui] $tmp]
set selectedRadioButton [lindex [array get buttonMapXui]\
[expr ($pos - 1 )]]
}
selectGui
trace variable [scope selectedRadioButton] w [code $this valueChanged]
sync
}
destructor {
foreach {name ui} [array get buttonMapGui] {
delete object $ui
}
eval destroy $containerFrames
}
method selectGui { }
method sync {}
method valueChanged { args }
method disableAll {}
method enable {}
method disable {}
method queryState {}
}
body guiAlternate::selectGui { } {
disableAll
$buttonMapGui($selectedRadioButton) enable
}
body guiAlternate::disableAll {} {
foreach element [array names buttonMapGui] {
$buttonMapGui($element) disable
}
}
body guiAlternate::sync {} {
$subject selectComponent $buttonMapXui($selectedRadioButton)
}
body guiAlternate::valueChanged {args} {
selectGui
sync
}
body guiAlternate::enable {} {
set state 1
foreach rb $radiobuttons {
$rb configure -state normal
}
selectGui
}
body guiAlternate::disable {} {
set state 0
disableAll
foreach rb $radiobuttons {
$rb configure -state disabled
}
}
body guiAlternate::queryState {} {
return $state
}