home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / propdefdia.tcl < prev    next >
Text File  |  1997-03-14  |  5KB  |  205 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)propdefdia.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)propdefdia.tcl    /main/titanic/1   14 Mar 1997 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "definedial.tcl"
  15.  
  16. Class PropDefDialog : {DefineDialog} {
  17.     constructor
  18.     method destructor
  19.     method createInterface
  20.     method clearInterface
  21.     method fromInterface
  22.     method toInterface
  23.     method load
  24.     method save
  25.     method objName
  26.     attribute dPage
  27. }
  28.  
  29. constructor PropDefDialog {class this name} {
  30.     set this [DefineDialog::constructor $class $this $name]
  31.     # Start constructor user section
  32.  
  33.     $this helpPressed ".main helpOnName editPropdefProperties"
  34.  
  35.     # End constructor user section
  36.     return $this
  37. }
  38.  
  39. method PropDefDialog::destructor {this} {
  40.     # Start destructor user section
  41.     # End destructor user section
  42.     $this DefineDialog::destructor
  43. }
  44.  
  45. method PropDefDialog::createInterface {this} {
  46.  
  47.     ClassMaker::extend BrowsObject ICMember isOld
  48.  
  49.     interface NoteBkPage $this.definitionNBP {
  50.         label "Property Definition"
  51.         DlgColumn DC {
  52.             Label L {
  53.                 text "Name:"
  54.             }
  55.             SingleLineText shortNameSLT {
  56.                 editable FALSE
  57.             }
  58.             Label L {
  59.                 text "Long Name:"
  60.             }
  61.             SingleLineText longNameSLT {
  62.             }
  63.             Label L {
  64.                 text "Interface Class:"
  65.             }
  66.             DropDwnComboBox ifClassDDCB {
  67.                 rowCount 10
  68.             }
  69.             Label L {
  70.                 text "Interface Class Options:"
  71.             }
  72.             SingleLineText ifOptionsSLT {
  73.             }
  74.             Label L {
  75.                 text "Interface Class Members:"
  76.             }
  77.             BrowsView ifMemberBV {
  78.                 rowCount 10
  79.                 selectionPolicy MULTIPLE
  80.                 BrowsHeader shortBH {
  81.                     label Name
  82.                     width 12
  83.                 }
  84.                 BrowsHeader longBH {
  85.                     label "Long Name"
  86.                     width 30
  87.                 }
  88.             }
  89.         }
  90.     }
  91.  
  92.     $this dPage $this.definitionNBP.DC
  93.  
  94.     global PropDefEdArea::ifClasses
  95.     [$this dPage].ifClassDDCB entrySet ${PropDefEdArea::ifClasses}
  96. }
  97.  
  98. method PropDefDialog::clearInterface {this} {
  99.     [$this dPage].shortNameSLT text ""
  100.     [$this dPage].longNameSLT text ""
  101.     [$this dPage].ifClassDDCB text ""
  102.     [$this dPage].ifOptionsSLT text ""
  103.     [$this dPage].ifMemberBV selectedSet ""
  104. }
  105.  
  106. method PropDefDialog::fromInterface {this} {
  107.     [$this curObject] longName [[$this dPage].longNameSLT text]
  108.     [$this curObject] ifClass [[$this dPage].ifClassDDCB text]
  109.     [$this curObject] ifOptions [[$this dPage].ifOptionsSLT text]
  110.     set lst {}
  111.     set objs [[.main editorArea] objectSet]
  112.     foreach obj [[$this dPage].ifMemberBV selectedSet] {
  113.         lappend lst [$obj label]
  114.     }
  115.     [$this curObject] ifMembers $lst
  116.     return ""
  117. }
  118.  
  119. method PropDefDialog::toInterface {this} {
  120.  
  121.     [$this dPage].shortNameSLT text [[$this curObject] shortName]
  122.     [$this dPage].longNameSLT text [[$this curObject] longName]
  123.     [$this dPage].ifClassDDCB text [[$this curObject] ifClass]
  124.     [$this dPage].ifOptionsSLT text [[$this curObject] ifOptions]
  125.     set lst {}
  126.     foreach member [[$this curObject] ifMembers] {
  127.         foreach obj [[$this dPage].ifMemberBV objectSet] {
  128.             if {[$obj label] == $member} {
  129.                 lappend lst $obj
  130.             }
  131.         }
  132.     }
  133.     [$this dPage].ifMemberBV selectedSet $lst
  134. }
  135.  
  136. method PropDefDialog::load {this object} {
  137.  
  138.     $this clearInterface
  139.     $this curObject $object
  140.     $this title "Property Definition '[$object shortName]'"
  141.  
  142.     # show all the properties that are defined before this one
  143.  
  144.     foreach loopObject [[$this dPage].ifMemberBV objectSet] {
  145.         $loopObject isOld 1
  146.     }
  147.  
  148.     set index [$object index]
  149.  
  150.     foreach loopObject [[.main editorArea] objectSet] {
  151.         if {$index == [$loopObject index]} {
  152.             break
  153.         }
  154.         set objName [$this dPage].ifMemberBV.[$loopObject shortName]
  155.         if {![isCommand $objName]} {
  156.             ICMember new $objName
  157.         }
  158.         $objName label [$loopObject shortName]
  159.         $objName details [list [$loopObject longName]]
  160.         $objName isOld 0
  161.     }
  162.  
  163.     foreach loopObject [[$this dPage].ifMemberBV objectSet] {
  164.         if [$loopObject isOld] {
  165.             $loopObject delete
  166.         }
  167.     }
  168.  
  169.     $this popUp
  170.     $this toInterface
  171. }
  172.  
  173. method PropDefDialog::save {this popDown} {
  174.  
  175.     set longName [[$this dPage].longNameSLT text]
  176.     set ifClass [[$this dPage].ifClassDDCB text]
  177.     set ifOptions [[$this dPage].ifOptionsSLT text]
  178.  
  179.     if {$longName == ""} {
  180.         wmtkerror "Property Definition must have a 'Long Name'."
  181.         return 0
  182.     }
  183.     if {$ifClass == ""} {
  184.         wmtkerror "Property Definition must have an 'Interface Class'."
  185.         return 0
  186.     }
  187.  
  188.     $this fromInterface
  189.     [.main editorArea] isChanged 1
  190.     if {$popDown == 1} {
  191.         $this popDown
  192.     }
  193.     [$this curObject] updateView
  194.     return 1
  195. }
  196.  
  197. method PropDefDialog::objName {this args} {
  198.  
  199.     # return the objects name, it can not change in this dialog
  200.     return [[$this curObject] name]
  201. }
  202.  
  203. # Do not delete this line -- regeneration end marker
  204.  
  205.