home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / genfilepro.tcl < prev    next >
Text File  |  1996-05-29  |  2KB  |  94 lines

  1. Class GenFileProp : {Object} {
  2.     method destructor
  3.     constructor
  4.     method getDocStructure
  5.     method getStructureLine
  6.     method match
  7.     attribute document
  8. }
  9.  
  10. method GenFileProp::destructor {this} {
  11.     # Start destructor user section
  12.     # End destructor user section
  13. }
  14.  
  15. constructor GenFileProp {class this name document} {
  16.     set this [Object::constructor $class $this $name]
  17.     $this document $document
  18.     # Start constructor user section
  19.     # End constructor user section
  20.     return $this
  21. }
  22.  
  23. method GenFileProp::getDocStructure {this fileTypes properties} {
  24.  
  25.     set structure ""
  26.     set first 1
  27.  
  28.         set sv [[$this document] documentedSystem]
  29.  
  30.     if [$sv isNil] {
  31.         wmtkerror "Invalid documented system"
  32.         return $structure
  33.     }
  34.  
  35.  
  36.     foreach fv [$sv localFileVersions] {
  37.         if [$this match $fileTypes $fv] {
  38.             if [lempty [$fv properties]] {
  39.                 # no properties, skip this one
  40.                 continue
  41.             }
  42.  
  43.             set structureLine [$this getStructureLine $fv \
  44.                 $properties $first]
  45.             if {$first == "1"} {
  46.                 set structure $structureLine
  47.             } else {
  48.                 set structure "$structure\n$structureLine"
  49.             }
  50.             set first 0
  51.         }
  52.     }
  53.  
  54.     return $structure
  55. }
  56.  
  57. method GenFileProp::match {this fileTypes fileVersion} {
  58.  
  59.     if {[lsearch $fileTypes [[$fileVersion file] type]] == -1} {
  60.         return 0
  61.     }
  62.     return 1
  63. }
  64.  
  65. method GenFileProp::getStructureLine {this fileVersion properties first} {
  66.  
  67.     set indent "="
  68.     if {$first == "1"} {
  69.         set indent "+"
  70.     }
  71.  
  72.     set name [[$fileVersion file] qualifiedName :]
  73.     # add propertieNames to get unique names
  74.     # max 2 prop names
  75.     if {$properties != "*"} {
  76.         set prCount 0
  77.         foreach prop $properties {
  78.             if {$prCount > 1} {
  79.                 break
  80.             }    
  81.             incr prCount
  82.             set name "${name}_$prop"
  83.         }
  84.     }
  85.     set type [[$fileVersion file] type]
  86.     set line "p_${name}_${type} | $indent | | Fileprop | | | \
  87.         $fileVersion | | $properties | Fileprop"
  88.  
  89.     return $line
  90. }
  91.  
  92. # Do not delete this line -- regeneration end marker
  93.  
  94.