home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / propifelem.tcl < prev    next >
Text File  |  1996-12-17  |  3KB  |  117 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)propifelem.tcl    /main/hindenburg/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)propifelem.tcl    /main/hindenburg/4   17 Dec 1996 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. global valueMethod
  14. global labelMethod
  15.  
  16. set valueMethod(CheckButton)    state
  17. set labelMethod(CheckButton)    label
  18.  
  19. set valueMethod(ComboBox)    text
  20. set valueMethod(DropDwnComboBox) text
  21. set valueMethod(DropDwnList)    selected
  22. set valueMethod(FloatField)    text
  23. set valueMethod(HorControlPanel) selected
  24. set valueMethod(HorRadioGroup)    selected
  25. set valueMethod(Image)        pixmap
  26. set valueMethod(IntField)    text
  27. set valueMethod(Label)        text
  28. set valueMethod(MultiLineText)    text
  29. set valueMethod(OptionMenu)    selected
  30. set valueMethod(SingleLineText) text
  31. set valueMethod(TextList)    selectedSet
  32. set valueMethod(VerControlPanel) selected
  33. set valueMethod(VerRadioGroup)    selected
  34.  
  35. require "propifdefs.tcl"
  36.  
  37. # End user added include file section
  38.  
  39. require "propinterf.tcl"
  40.  
  41. Class PropIfElement : {PropInterface} {
  42.     method destructor
  43.     constructor
  44.     method getProperties
  45.     method setProperties
  46. }
  47.  
  48. method PropIfElement::destructor {this} {
  49.     # Start destructor user section
  50.     # End destructor user section
  51.     $this PropInterface::destructor
  52. }
  53.  
  54. constructor PropIfElement {class this guiParent propDef} {
  55.     set this [PropInterface::constructor $class $this]
  56.     $this definition $propDef
  57.     set name [$propDef name]
  58.     set class [$propDef ifClass]
  59.     global valueMethod labelMethod
  60.     if {![PropIfElement::canHandle $class]} {
  61.         error "Invalid interface class '$class'"
  62.     }
  63.     if [info exists labelMethod($class)] {
  64.         $this ifElement [eval $class new $guiParent.$name \
  65.                       [$propDef ifOptions]]
  66.         [$this ifElement] $labelMethod($class) [$propDef longName]
  67.     } else {
  68.         Label new $guiParent.${name}l -text [$propDef longName]
  69.         $this ifElement [eval $class new $guiParent.$name \
  70.                       [$propDef ifOptions]]
  71.     }
  72.     return $this
  73. }
  74.  
  75. proc PropIfElement::defaultValue {className elm} {
  76.     global hasEntrySet defIndex
  77.     if [info exists defIndex($className)] {
  78.         if [info exists hasEntrySet($className)] {
  79.             return [lindex [$elm entrySet] $defIndex($className)]
  80.         }
  81.         return $defIndex($className)
  82.     }
  83.     return ""
  84. }
  85.  
  86. proc PropIfElement::canHandle {className} {
  87.     global valueMethod
  88.     return [info exists valueMethod($className)]
  89. }
  90.  
  91. method PropIfElement::getProperties {this propContainer} {
  92.     global valueMethod
  93.     set def [$this definition]
  94.     set key [$def name]
  95.     set class [$def ifClass]
  96.     set elem [$this ifElement]
  97.     set value [$propContainer getPropertyValue $key]
  98.     if {[string length $value] == 0} {
  99.         set value [PropIfElement::defaultValue $class $elem]
  100.     }
  101.     $elem $valueMethod($class) $value
  102.     $elem sensitive [$propContainer isPropertyEditable $key]
  103. }
  104.  
  105. method PropIfElement::setProperties {this propContainer} {
  106.     global valueMethod
  107.     set def [$this definition]
  108.     set elem [$this ifElement]
  109.     set class [$def ifClass]
  110.     set value [$elem $valueMethod($class)]
  111.     set defVal [PropIfElement::defaultValue $class $elem]
  112.     $propContainer changeProperty [$def name] $value $defVal
  113. }
  114.  
  115. # Do not delete this line -- regeneration end marker
  116.  
  117.