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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)gdrfile.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)gdrfile.tcl    /main/titanic/1   16 Apr 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require config.tcl
  13. # End user added include file section
  14.  
  15.  
  16. Class GDRFile : {GCObject} {
  17.     constructor
  18.     method destructor
  19.     method read
  20.     method write
  21.     method edit
  22.     method quit
  23.     method addItemSelector
  24.     method addFileSelector
  25.     method fileSelectors
  26.     method findItemSelectors
  27.     method findItemSelector
  28.     method itemSelectorSet
  29.     method fileSelectorSet
  30.     attribute customLevel
  31.     attribute customFileVersion
  32.         attribute description
  33.     attribute _itemSelectorSet
  34.     attribute _fileSelectorSet
  35. }
  36.  
  37. constructor GDRFile {class this customFileVersion} {
  38.     set this [GCObject::constructor $class $this]
  39.     $this customFileVersion $customFileVersion
  40.     $this _itemSelectorSet [List new]
  41.     $this _fileSelectorSet [List new]
  42.     # Start constructor user section
  43.     # End constructor user section
  44.     return $this
  45. }
  46.  
  47. method GDRFile::destructor {this} {
  48.     # Start destructor user section
  49.     # End destructor user section
  50. }
  51.  
  52. method GDRFile::read {this} {
  53.     set tmpFile [BasicFS::tmpFile]
  54.     [$this customFileVersion] downLoad $tmpFile
  55.     set file [open $tmpFile]
  56.     
  57.     # get description
  58.     set description ""
  59.     if [[$this customFileVersion] isA RepositoryObject] {
  60.     set description [[$this customFileVersion] getPropertyValue freeText]
  61.     }
  62.     if { $description == "" } {
  63.     set contents [read $file]
  64.     seek $file 0
  65.     regexp {Description:([ -z]*)} $contents dummy description
  66.     set description [string trim $description]
  67.     }
  68.     $this description $description
  69.  
  70.     while { [get_config_line $file line] != -1 } {
  71.     set line [sep_clean $line "|"]
  72.     set lineList [split $line "|"]
  73.     set selectorType [lindex $lineList 0]
  74.     case $selectorType in {
  75.         {FileSelector} {
  76.         $this addFileSelector [lindex $lineList 1] \
  77.             [lindex $lineList 2] \
  78.             [lindex $lineList 3]
  79.         }
  80.         {ItemSelector} {
  81.         $this addItemSelector [lindex $lineList 1] \
  82.             [lindex $lineList 2] \
  83.             [lindex $lineList 3]
  84.         }
  85.     }
  86.     }
  87.  
  88.     close $file
  89.     BasicFS::removeFile $tmpFile
  90. }
  91.  
  92. method GDRFile::write {this} {
  93.     set tmpFile [BasicFS::tmpFile]
  94.     set file [open $tmpFile w]
  95.     puts $file "#---------------------------------------------------------------------------"
  96.     puts $file "#  (c) Cayenne Software Inc.    1997"
  97.     puts $file "#      Description:     [$this description]"
  98.     puts $file "#---------------------------------------------------------------------------\n"
  99.  
  100.     [$this itemSelectorSet] foreach itemSelector {
  101.     puts $file "ItemSelector | [$itemSelector fileType] | [$itemSelector itemType] | [$itemSelector qualified]"
  102.     }
  103.     [$this fileSelectorSet] foreach fileSelector {
  104.     puts $file "FileSelector | [$fileSelector itemType] | [$fileSelector decompFlags] | [$fileSelector fileTypes]"
  105.     }
  106.  
  107.     close $file
  108.     [$this customFileVersion] upLoad $tmpFile
  109.     BasicFS::removeFile $tmpFile
  110.  
  111.     # set description for repository customization files
  112.     if [[$this customFileVersion] isA RepositoryObject] {
  113.     [$this customFileVersion] setProperty freeText [$this description]
  114.     }
  115. }
  116.  
  117. method GDRFile::edit {this} {
  118.     if [[$this customFileVersion] isA RepositoryObject] {
  119.     [$this customFileVersion] edit
  120.     }
  121. }
  122.  
  123. method GDRFile::quit {this} {
  124.     if [[$this customFileVersion] isA RepositoryObject] {
  125.     [$this customFileVersion] quit
  126.     }
  127. }
  128.  
  129. method GDRFile::addItemSelector {this fileType itemType qualified} {
  130.     GDRItemSelector new $fileType $itemType $qualified $this
  131. }
  132.  
  133. method GDRFile::addFileSelector {this itemType decompFlags fileTypes} {
  134.     # strip 'decomp' from the flags
  135.     regsub -all decomp $decompFlags "" decompFlags
  136.  
  137.     GDRFileSelector new $itemType $decompFlags $fileTypes $this
  138. }
  139.  
  140.  
  141. method GDRFile::fileSelectors {this} {
  142.     return [[$this fileSelectorSet] contents]
  143. }
  144.  
  145. method GDRFile::findItemSelectors {this fileType} {
  146.     set itemSelectors {}
  147.     [$this itemSelectorSet] foreach itemSelector {
  148.     if { [$itemSelector fileType] == $fileType } {
  149.         lappend itemSelectors [list \
  150.             [$itemSelector fileType] [$itemSelector itemType] \
  151.             [$itemSelector qualified]]
  152.     }
  153.     }
  154.  
  155.     return $itemSelectors
  156. }
  157.  
  158. method GDRFile::findItemSelector {this fileType itemType} {
  159.      [$this itemSelectorSet] foreach itemSelector {
  160.     if { ([$itemSelector fileType] == $fileType) && \
  161.         ([$itemSelector itemType] == $itemType) } {
  162.         return $itemSelector
  163.     }
  164.     }
  165.  
  166.     return [ORB::nil]
  167. }
  168.  
  169. # Do not delete this line -- regeneration end marker
  170.  
  171. method GDRFile::itemSelectorSet {this} {
  172.     return [$this _itemSelectorSet]
  173. }
  174.  
  175. method GDRFile::fileSelectorSet {this} {
  176.     return [$this _fileSelectorSet]
  177. }
  178.  
  179.