home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / genfilepro.tcl < prev    next >
Text File  |  1997-10-13  |  2KB  |  96 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 {prefix ""}} {
  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.     foreach fv [$sv localFileVersions] {
  36.     if [$this match $fileTypes $fv] {
  37.         if [lempty [$fv properties]] {
  38.         # no properties, skip this one
  39.         continue
  40.         }
  41.  
  42.         set structureLine \
  43.         [$this getStructureLine $fv $properties $first $prefix]
  44.         if $first {
  45.         set structure $structureLine
  46.         } else {
  47.         set structure "$structure\n$structureLine"
  48.         }
  49.         set first 0
  50.     }
  51.     }
  52.  
  53.     return $structure
  54. }
  55.  
  56. method GenFileProp::match {this fileTypes fileVersion} {
  57.  
  58.     if {[lsearch $fileTypes [[$fileVersion file] type]] == -1} {
  59.     return 0
  60.     }
  61.     return 1
  62. }
  63.  
  64. method GenFileProp::getStructureLine {this fileVersion properties first {prefix ""}} {
  65.  
  66.     set indent "="
  67.     if {$first == "1"} {
  68.     set indent "+"
  69.     }
  70.  
  71.     set name [[$fileVersion file] qualifiedName :]
  72.     # add propertieNames to get unique names
  73.     # max 2 prop names
  74.     if {$properties != "*"} {
  75.     set prCount 0
  76.     foreach prop $properties {
  77.         if {$prCount > 1} {
  78.         break
  79.         }
  80.         incr prCount
  81.         append name "_$prop"
  82.     }
  83.     }
  84.     set type [[$fileVersion file] type]
  85.     set line "${name}_${type} | $indent | | Fileprop \
  86.     | | | $fileVersion | | $properties | Fileprop"
  87.     if {$prefix != ""} {
  88.     set line "${prefix}_$line"
  89.     }
  90.  
  91.     return $line
  92. }
  93.  
  94. # Do not delete this line -- regeneration end marker
  95.  
  96.