home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / vsdirobj.tcl < prev    next >
Text File  |  1997-08-29  |  3KB  |  136 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)vsdirobj.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)vsdirobj.tcl    /main/titanic/3   29 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. # This class represents a VCM directory in the browser.
  16.  
  17. Class VSDirObj : {Object} {
  18.     constructor
  19.     method destructor
  20.     method uiClass
  21.     method promoter
  22.     method openFile
  23.     method showFile
  24.     method editFile
  25.     method path
  26.     method addContents
  27.     method showFileVersion
  28.     method fileSet
  29.     method addFile
  30.     method removeFile
  31.     attribute _fileSet
  32. }
  33.  
  34. constructor VSDirObj {class this name} {
  35.     set this [Object::constructor $class $this $name]
  36.     $this _fileSet [List new]
  37.     # Start constructor user section
  38.     # End constructor user section
  39.     return $this
  40. }
  41.  
  42. method VSDirObj::destructor {this} {
  43.     foreach ref [[$this _fileSet] contents] {
  44.         $ref _directory ""
  45.     }
  46.     # Start destructor user section
  47.     # End destructor user section
  48. }
  49.  
  50.  
  51. # Return ExternalDirectoryVersion.
  52. #
  53. method VSDirObj::uiClass {this} {
  54.     return "ExternalDirectoryVersion"
  55. }
  56.  
  57. method VSDirObj::promoter {this} {
  58.     $this _fileSet [List new]
  59. }
  60.  
  61.  
  62. # Do nothing: the directory is always open in the browser.
  63. #
  64. method VSDirObj::openFile {this} {
  65. }
  66.  
  67.  
  68. # Do nothing: the directory contents are always shown in the browser.
  69. #
  70. method VSDirObj::showFile {this} {
  71. }
  72.  
  73.  
  74. # Do nothing: a directory cannot be edited directly.
  75. #
  76. method VSDirObj::editFile {this} {
  77. }
  78.  
  79.  
  80. # Return path of this directory using the system path and the path stored in 
  81. # ExternalLink. The latter is processed for platform conformance.
  82. #
  83. method VSDirObj::path {this} {
  84.     set systemPath [[$this systemVersion] path]
  85.  
  86.     # path part starts with ./ ; strip this
  87.     set pathPart [string range [$this ExternalLink::path] 2 end]
  88.     # convert slashes
  89.     set partList [split $pathPart {[\\\/]}]
  90.     set pathPart [eval file join $partList]
  91.  
  92.     return [path_name concat $systemPath $pathPart]
  93. }
  94.  
  95.  
  96. # Add contents of this and subdirectories to fileList
  97. # and add paths to pathList.
  98. #
  99. method VSDirObj::addContents {this fileList pathList} {
  100.     upvar $fileList files
  101.     upvar $pathList paths
  102.  
  103.     [$this fileSet] foreach file {
  104.     lappend files $file
  105.     if [$file isDirectory] {
  106.         lappend paths [$file path]
  107.         $file addContents files paths
  108.  
  109.     }
  110.     }
  111. }
  112.  
  113.  
  114. # List the contents of the specified version.
  115. #
  116. method VSDirObj::showFileVersion {this version} {
  117.     # !! Implement this function !!
  118. }
  119.  
  120. # Do not delete this line -- regeneration end marker
  121.  
  122. method VSDirObj::fileSet {this} {
  123.     return [$this _fileSet]
  124. }
  125.  
  126. method VSDirObj::addFile {this newFile} {
  127.     [$this _fileSet] append $newFile
  128.     $newFile _directory $this
  129. }
  130.  
  131. method VSDirObj::removeFile {this oldFile} {
  132.     $oldFile _directory ""
  133.     [$this _fileSet] removeValue $oldFile
  134. }
  135.  
  136.