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

  1.  
  2.  
  3.  
  4. class xuiChoice {
  5.     inherit xuiObject
  6.  
  7.     variable choices
  8.     variable default {}
  9.     variable selected {}
  10.     
  11.     constructor {} {
  12.     set choices {}
  13.     setXuiClass choice
  14.     }
  15.  
  16.     method setDefault { choiceName }
  17.     method getDefault {}
  18.     method addChoice { choiceName {text {}} }
  19.     method getChoices {}
  20.     method selectItem { choiceName }
  21.     method getSelected {}
  22.     method getItemText { choiceName }
  23.     method getText {}
  24.     method clone 
  25.     method copyClone { clone }
  26.     method clear {}
  27.     method reset {}
  28. }
  29.  
  30. body xuiChoice::reset {} {
  31.     set selected $default
  32. }
  33.  
  34. body xuiChoice::clear {} {
  35.      set default {}
  36.      set selected {}
  37.      catch {unset  choices}
  38.      variable choices
  39.      set choices {}
  40. }
  41.  
  42. body xuiChoice::clone {{parentName {::#auto}}} {
  43.    set clone [xuiChoice $parentName.$name]
  44.    copyClone $clone
  45.    return $clone
  46. }
  47.  
  48. body xuiChoice::copyClone {clone} {
  49.    xuiObject::copyClone $clone
  50.    $clone clear
  51.    foreach {choiceName text} $choices {
  52.      $clone addChoice $choiceName $text
  53.    }
  54.    $clone setDefault $default
  55.    $clone selectItem $selected
  56.    $clone setXuiClass $xuiClass
  57. }
  58.  
  59. body xuiChoice::setDefault { choiceName } {
  60.      set default [string tolower $choiceName]
  61. }
  62.  
  63. body xuiChoice::getDefault { } {
  64.      return $default
  65. }
  66.  
  67. body xuiChoice::addChoice { choiceName {text {}} } {
  68.  
  69.     # XXX Sacrifice case sensitivity to ease programming
  70.     # may need to change in the future
  71.     
  72.     set choiceName [string tolower $choiceName]
  73.     if ![llength $text] {
  74.     set text $choiceName
  75.     } 
  76.     lappend choices $choiceName 
  77.     lappend choices $text
  78. }    
  79.  
  80. body xuiChoice::getChoices {} {
  81.     return $choices
  82. }
  83.  
  84. body xuiChoice::selectItem { choiceName } {
  85.     set selected [string tolower $choiceName]
  86. }
  87.  
  88. body xuiChoice::getSelected {} {
  89.     return $selected
  90. }
  91.  
  92. body xuiChoice::getItemText {choiceName} {
  93.     array set tmp $choices
  94.     return $tmp($choiceName)
  95. }
  96.  
  97.  
  98. body xuiChoice::getText {} {
  99. if [llength $selected] {
  100.     array set tmp $choices
  101.     return $tmp($selected)
  102.     } else {
  103.     return {}
  104.     }
  105. }
  106.