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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)custmodobj.tcl    /main/titanic/12
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)custmodobj.tcl    /main/titanic/12   3 Oct 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "moduledb.tcl"
  13. # End user added include file section
  14.  
  15. require "custdefsob.tcl"
  16.  
  17. Class CustModObject : {CustDefsObject} {
  18.     constructor
  19.     method destructor
  20.     method updateInfo
  21.     method getRequiredElements
  22.     method getConflictingElements
  23.     method updateView
  24.     method writeObject
  25.     method infoList
  26.     method open
  27.     attribute longName
  28.     attribute select-state
  29.     attribute location
  30.     attribute properties
  31. }
  32.  
  33. constructor CustModObject {class this name specification} {
  34.     set this [CustDefsObject::constructor $class $this $name $specification]
  35.     # Start constructor user section
  36.     $this smallIcon folder_16
  37.     $this largeIcon folder_32
  38.     $this conversionSet "MODULE id"
  39.     $this id $this
  40.  
  41.     while {![lempty $specification]} {
  42.         set key [lvarpop specification]
  43.         $this $key [lvarpop specification]
  44.     }
  45.  
  46.     $this updateInfo
  47.  
  48.     # End constructor user section
  49.     return $this
  50. }
  51.  
  52. method CustModObject::destructor {this} {
  53.     # Start destructor user section
  54.     # End destructor user section
  55.     $this CustDefsObject::destructor
  56. }
  57.  
  58. method CustModObject::updateInfo {this} {
  59.     if {[$this select-state] == ""}  {
  60.         $this select-state on
  61.     }
  62.  
  63.     if {[$this location] == ""}  {
  64.         set dir [path_name concat [m4_var get M4_home] modules]
  65.         $this location [path_name concat $dir [$this name]]
  66.     }
  67.  
  68.     set propDict [[ModuleDB::global] getModulePropDict [$this location]]
  69.     $this properties $propDict
  70.     if {[$propDict size] == 0} {
  71.         $propDict set "Property File" "Empty or not found"
  72.     } else {
  73.         $this longName [$propDict set "longName"]
  74.         $this type [$propDict set "type"]
  75.     }
  76.  
  77.     if {[$this longName] == ""} {
  78.         $this longName [$this name]
  79.     }
  80.  
  81.     $this updateView
  82. }
  83.  
  84. method CustModObject::getRequiredElements {this} {
  85.  
  86.     set requiredModules [[$this properties] set "requiredModules"]
  87.     set requiredModuleTypes [[$this properties] set "requiredModuleTypes"]
  88.  
  89.     return [list $requiredModules $requiredModuleTypes]
  90. }
  91.  
  92. method CustModObject::getConflictingElements {this} {
  93.  
  94.     set conflictingModules [[$this properties] set "conflictingModules"]
  95.     set conflictingModuleTypes \
  96.         [[$this properties] set "conflictingModuleTypes"]
  97.  
  98.     return [list $conflictingModules $conflictingModuleTypes]
  99. }
  100.  
  101. method CustModObject::updateView {this} {
  102.  
  103.     if [$this editable] {
  104.         set level "[$this specLevel] *"
  105.     } else {
  106.         set level [$this specLevel]
  107.     }
  108.  
  109.     $this label "[$this longName]"
  110.     set dt ""
  111.     lappend dt [$this type]
  112.     lappend dt [$this select-state]
  113.     lappend dt $level
  114.     lappend dt [$this location]
  115.     $this details $dt
  116. }
  117.  
  118. method CustModObject::writeObject {this fid} {
  119.     set defaultDir [location [m4_var get M4_home] modules]
  120.     set curDir [path_name directory [$this location]]
  121.     if $win95 {
  122.         set defaultDir [string tolower $defaultDir]
  123.         set curDir [string tolower $curDir]
  124.     }
  125.     if {$defaultDir == $curDir} {
  126.         set format "%-25s | %-15s"
  127.         puts $fid [format $format "[$this name]" "[$this select-state]"]
  128.     } else {
  129.         set format "%-25s | %-15s | %s"
  130.                 set location [$this location]
  131.                 if $win95 {
  132.                         regsub -all {\\} $location {\\\\} location
  133.                 }
  134.         puts $fid [format $format "[$this name]" \
  135.         "[$this select-state]" "$location"]
  136.     }
  137. }
  138.  
  139. method CustModObject::infoList {this} {
  140.  
  141.     set props ""
  142.     set propDict [$this properties]
  143.     set propNames [[ModuleDB::global] getModulePropNames [$this location]]
  144.     $propNames foreach name {
  145.         if {$name == "longName"} {
  146.             # Skip: this one is standard in the list already
  147.             continue
  148.         }
  149.         lappend props [cap $name]
  150.         lappend props [$propDict set $name]
  151.     }
  152.  
  153.     return "{Long Name} \{[$this longName]\} \
  154.         {Select State} \{[$this select-state]\} \
  155.         Level \{[$this specLevel]\} \
  156.         Location \{[$this location]\} \
  157.         {} {} $props"
  158. }
  159.  
  160. method CustModObject::open {this} {
  161.     if {![$this editable]} {
  162.         return
  163.     }
  164.  
  165.     busy {
  166.         [.main editorArea] addRequiredModules $this
  167.     }
  168. }
  169.  
  170. # Do not delete this line -- regeneration end marker
  171.  
  172.