home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / gui / guiBooleanRadioButton.tcl < prev    next >
Text File  |  2000-11-02  |  1KB  |  67 lines

  1.  
  2.  
  3. class guiBooleanRadioButton {
  4.     inherit guiObject
  5.     variable checkBox
  6.     variable value 
  7.     variable state
  8.     constructor {frame xuiObject} {
  9.     set subject $xuiObject
  10.     set bframe [frame $frame.f]
  11.     
  12.     # In the future change this to be defined by style (Yes/No On/Off)
  13.  
  14.     set i 1
  15.     pack [label $bframe.l -text [$subject getLabel]] -side left 
  16.     foreach one { Yes No } {
  17.         set rb [radiobutton $bframe.$i \
  18.             -variable [scope value] \
  19.             -value $i -text $one]   
  20.             pack $rb -anchor w
  21.         incr i -1
  22.     }
  23.     if ![string compare [set value [$subject getValue]] {}] {
  24.         if ![string compare \
  25.             [set value [set default [$subject getDefault]]] {} ] {
  26.         set value 0
  27.         }
  28.     }
  29.     trace variable [scope value] w [code $this valueChanged]  
  30.     pack $bframe -side left
  31.     sync
  32.     }
  33.     method enable {}
  34.     method disable {}
  35.     method queryState {}
  36.     method sync {}
  37.     method valueChanged {args}
  38. }
  39.  
  40. body guiBooleanRadioButton::sync {} {
  41.     if $value {
  42.     $subject setValue
  43.     } else {
  44.     $subject clearValue
  45.     }
  46. }
  47.  
  48. body guiBooleanRadioButton::valueChanged {args} {
  49.     sync
  50. }
  51.  
  52. body guiBooleanRadioButton::enable {} {
  53.     set state 1
  54.     $checkBox configure -state normal
  55. }
  56.  
  57. body guiBooleanRadioButton::disable {} {
  58.     set state 0
  59.     $checkBox configure -state disabled
  60. }
  61.  
  62. body guiBooleanRadioButton::queryState {} {
  63.     return $state
  64. }
  65.  
  66.  
  67.