home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / propifcomb.tcl < prev    next >
Text File  |  1997-02-21  |  3KB  |  87 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)propifcomb.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)propifcomb.tcl    /main/titanic/3   21 Feb 1997 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12.  
  13. require "propifelem.tcl"
  14.  
  15. # End user added include file section
  16.  
  17. require "propinterf.tcl"
  18.  
  19. Class PropIfCombo : {PropInterface} {
  20.     method destructor
  21.     constructor
  22.     method getProperties
  23.     method setProperties
  24.     attribute extraValue
  25.     attribute textDef
  26.     attribute selectIf
  27. }
  28.  
  29. method PropIfCombo::destructor {this} {
  30.     # Start destructor user section
  31.     # End destructor user section
  32.     $this PropInterface::destructor
  33. }
  34.  
  35. constructor PropIfCombo {class this guiParent propDef} {
  36.     set this [PropInterface::constructor $class $this]
  37.     set box [PropIfElement new $guiParent [lindex [$propDef memberSet] 0]]
  38.     eval $this config -definition $propDef \
  39.               -ifElement [$box ifElement] \
  40.               -textDef [lindex [$propDef memberSet] 1] \
  41.               -selectIf $box [$propDef ifOptions]
  42.     return $this
  43. }
  44.  
  45. method PropIfCombo::getProperties {this propContainer} {
  46.     global valueMethod
  47.     set def [[$this selectIf] definition]
  48.     set key [$def name]
  49.     set class [$def ifClass]
  50.     set ifOpts [$def ifOptions]
  51.     set elem [$this ifElement]
  52.     set key2 [[$this textDef] name]
  53.     set value [$propContainer getPropertyValue $key]
  54.     if {$value == ""} {
  55.         set value [PropIfElement::defaultValue $class $ifOpts]
  56.     } elseif {$value == [$this extraValue]} {
  57.         set value [$propContainer getPropertyValue $key2]
  58.     }
  59.     $elem $valueMethod($class) $value
  60.     $elem sensitive [expr [$propContainer isPropertyEditable $key] && \
  61.                   [$propContainer isPropertyEditable $key2]]
  62. }
  63.  
  64. method PropIfCombo::setProperties {this propContainer} {
  65.     global valueMethod
  66.     set def [[$this selectIf] definition]
  67.     set elem [$this ifElement]
  68.     set class [$def ifClass]
  69.     set ifOpts [$def ifOptions]
  70.     set value [$elem $valueMethod($class)]
  71.     set defVal [PropIfElement::defaultValue $class $ifOpts]
  72.     set prop [$def name]
  73.     set textDef [$this textDef]
  74.     foreach entry [$elem entrySet] {
  75.         if {$entry == $value} {
  76.             $propContainer changeProperty $prop $value $defVal
  77.             $propContainer removeProperty $textDef
  78.             return
  79.         }
  80.     }
  81.     $propContainer changeProperty $prop [$this extraValue] $defVal
  82.     $propContainer changeProperty [$textDef name] $value ""
  83. }
  84.  
  85. # Do not delete this line -- regeneration end marker
  86.  
  87.