home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / propdefeda.tcl < prev    next >
Text File  |  1997-04-24  |  4KB  |  158 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)propdefeda.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)propdefeda.tcl    /main/titanic/4   24 Apr 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "propdefobj.tcl"
  13. require "propdefdia.tcl"
  14. # End user added include file section
  15.  
  16. require "custdefsar.tcl"
  17.  
  18. Class PropDefEdArea : {CustDefsArea} {
  19.     constructor
  20.     method destructor
  21.     method parseLines
  22.     method deleteObjects
  23.     method newObject
  24.     method createObject
  25.     method clearArea
  26.     method getDefObject
  27.     method setDefObject
  28.     method removeDefObject
  29.     attribute propDefiner
  30.     attribute defObject
  31. }
  32.  
  33. global PropDefEdArea::ifClasses
  34. set PropDefEdArea::ifClasses ""
  35.  
  36.  
  37. constructor PropDefEdArea {class this name} {
  38.     set this [CustDefsArea::constructor $class $this $name]
  39.     $this defObject [Dictionary new]
  40.     # Start constructor user section
  41.     $this rowCount 12
  42.     $this columnCount 75
  43.     $this font "[m4_var get M4_font -context uce]"
  44.     $this destinationSet "PROPDEF dropEvent"
  45.     $this mode DETAIL
  46.     BrowsHeader new $this.name  -label Name -width 17
  47.     BrowsHeader new $this.name  -label "Long Name" -width 25
  48.     BrowsHeader new $this.type  -label "Interface class" -width 15
  49.     BrowsHeader new $this.level -label Level -width 25
  50.  
  51.     global PropDefEdArea::ifClasses
  52.     set PropDefEdArea::ifClasses {
  53.         CheckButton
  54.         ComboBox
  55.         DropDwnComboBox
  56.         DropDwnList
  57.         FloatField
  58.         IntField
  59.         MultiLineText
  60.         OptionMenu
  61.         RadioGroup
  62.         SingleLineText
  63.         TextList
  64.     }
  65.  
  66.     # End constructor user section
  67.     return $this
  68. }
  69.  
  70. method PropDefEdArea::destructor {this} {
  71.     # Start destructor user section
  72.     # End destructor user section
  73.     $this CustDefsArea::destructor
  74. }
  75.  
  76. method PropDefEdArea::parseLines {this lines level} {
  77.  
  78.     global PropDefEdArea::ifClasses
  79.     set ifClasses ${PropDefEdArea::ifClasses}
  80.  
  81.     foreach defLine $lines {
  82.         lappend_unique ifClasses [lindex $defLine 2]
  83.         regsub -all {(\\)([#!|\])} [lindex $defLine 3] {\2} ifOptions
  84.         $this createObject [list shortName    [lindex $defLine 0] \
  85.                      longName    [lindex $defLine 1] \
  86.                      ifClass    [lindex $defLine 2] \
  87.                      ifOptions    $ifOptions \
  88.                      ifMembers    [lindex $defLine 4]] \
  89.                    $level
  90.     }
  91.  
  92.     set PropDefEdArea::ifClasses [lsort $ifClasses]
  93. }
  94.  
  95. method PropDefEdArea::deleteObjects {this objs} {
  96.     foreach obj $objs {
  97.         $this removeDefObject [$obj shortName]
  98.     }
  99.     $this CustDefsArea::deleteObjects $objs
  100. }
  101.  
  102. method PropDefEdArea::newObject {this shortName longName ifClass {edit 0}} {
  103.     $this isChanged 1
  104.  
  105.     global PropDefEdArea::ifClasses
  106.     set ifClasses ${PropDefEdArea::ifClasses}
  107.     lappend_unique ifClasses "$ifClass"
  108.     set PropDefEdArea::ifClasses [lsort $ifClasses]
  109.  
  110.     set obj [$this createObject [list shortName    $shortName \
  111.                       longName    $longName \
  112.                       ifClass    $ifClass \
  113.                       specLevel    [$this _level]] \
  114.                     [$this _level]]
  115.  
  116.     $this sortArea
  117.  
  118.     if $edit {
  119.         $obj open
  120.     }
  121. }
  122.  
  123. method PropDefEdArea::createObject {this objSpec level} {
  124.     
  125.     global classCount
  126.     set newIndex [llength [$this objectSet]]
  127.     set object [PropDefObject new $this.Object$classCount $objSpec]
  128.     $this setDefObject [$object shortName] $object
  129.     $object index $newIndex
  130.     incr classCount
  131.  
  132.     $this adjustCreatedObject $object $level
  133.  
  134.     # update the object-details in the view
  135.     $object updateView
  136.  
  137.     return $object
  138. }
  139.  
  140. method PropDefEdArea::clearArea {this} {
  141.     $this CustDefsArea::clearArea
  142. }
  143.  
  144. # Do not delete this line -- regeneration end marker
  145.  
  146. method PropDefEdArea::getDefObject {this shortName} {
  147.     return [[$this defObject] set $shortName]
  148. }
  149.  
  150. method PropDefEdArea::setDefObject {this shortName newDefObject} {
  151.     [$this defObject] set $shortName $newDefObject
  152. }
  153.  
  154. method PropDefEdArea::removeDefObject {this shortName} {
  155.     [$this defObject] unset $shortName
  156. }
  157.  
  158.