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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)vsfileobj.tcl    /main/titanic/6
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)vsfileobj.tcl    /main/titanic/6   12 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "browsuiobj.tcl"
  15.  
  16. # This class represents a VCM file.
  17. # It contains general VCM functionality.
  18.  
  19. Class VSFileObj : {BrowsUiObj} {
  20.     constructor
  21.     method destructor
  22.     method uiClass
  23.     method browserType
  24.     method hasChildren
  25.     method initializeInfo
  26.     method canBeDragged
  27.     method openFile
  28.     method editFile
  29.     method showFile
  30.     method showFileVersion
  31.     method promoter
  32.     method isDirectory
  33.     method uiIdentity
  34.     method directory
  35.     attribute initializedAllInfo
  36.     attribute _directory
  37. }
  38.  
  39. constructor VSFileObj {class this name i_name} {
  40.     set this [BrowsUiObj::constructor $class $this $name]
  41.     $this initializedAllInfo 0
  42.     # Start constructor user section
  43.     # End constructor user section
  44.     return $this
  45. }
  46.  
  47. method VSFileObj::destructor {this} {
  48.     set ref [$this _directory]
  49.     if {$ref != ""} {
  50.         [$ref _fileSet] removeValue $this
  51.     }
  52.     # Start destructor user section
  53.     # End destructor user section
  54.     $this BrowsUiObj::destructor
  55. }
  56.  
  57.  
  58. # Return 'ExternalFileVersion' as the uiClass in order
  59. # to share defined object types.
  60. #
  61. method VSFileObj::uiClass {this} {
  62.     return "ExternalFileVersion"
  63. }
  64.  
  65.  
  66. # Associations of a VSFile, reused by all VCM
  67. # specific objects.
  68. #
  69. proc VSFileObj::associations {} {
  70.     return {}
  71. }
  72.  
  73.  
  74. # childTypes of a VSFile, reused by all VCM specific objects.
  75. #
  76. proc VSFileObj::childTypes {assoc} {
  77.     return "[BrowsUiObj::childTypes $assoc]"
  78. }
  79.  
  80.  
  81. # Controlled lists of a VSFile, reused by all VCM specific objects.
  82. #
  83. proc VSFileObj::controlledLists {} {
  84.     return ""
  85. }
  86.  
  87.  
  88. # Return standard properties plus general VCM properties.
  89. #
  90. proc VSFileObj::infoProperties {} {
  91.     return [concat \
  92.         [BrowserProcs::infoProperties] \
  93.         { "Generated From Class" } \
  94.         ]
  95. }
  96.  
  97.  
  98. # Returns the browser type of this file.
  99. #
  100. method VSFileObj::browserType {this} {
  101.     return [$this type]
  102. }
  103.  
  104.  
  105. # VSFile object has no children: return 0.
  106. #
  107. method VSFileObj::hasChildren {this} {
  108.     return 0
  109. }
  110.  
  111.  
  112. # Initialize general VCM properties.
  113. #
  114. method VSFileObj::initializeInfo {this dummy} {
  115.     $this BrowsUiObj::initializeInfo $dummy
  116. }
  117.  
  118. method VSFileObj::canBeDragged {this} {
  119.     return 1
  120. }
  121.  
  122. method VSFileObj::openFile {this} {
  123.     $this editFile
  124. }
  125.  
  126.  
  127. # Start editor for this file.
  128. #
  129. method VSFileObj::editFile {this} {
  130.     if {! [file writable [$this path]]} {
  131.     $this showFile
  132.     return
  133.     }
  134.     set file [$this path]
  135.     $wmttoolObj startM4Command editor "$file" "" "$file"
  136.     if {! [file exists $file]} {
  137.     wmtkwarning "File '$file' does not exist"
  138.     }
  139. }
  140.  
  141.  
  142. # Show the file.
  143. #
  144. method VSFileObj::showFile {this} {
  145.     set filePath [$this getReference]
  146.     if { $filePath == "" } {
  147.     return
  148.     }
  149.     $wmttoolObj startM4Command viewer "$filePath" \
  150.         "[list $this] deleteReference [list $filePath]" "$filePath"
  151. }
  152.  
  153.  
  154. # Show another version of this file.
  155. #
  156. method VSFileObj::showFileVersion {this version} {
  157.     set filePath [$this getReference $version]
  158.     $wmttoolObj startM4Command viewer "$filePath" \
  159.         "[list $this] deleteReference [list $filePath]" "$filePath"
  160. }
  161.  
  162. method VSFileObj::promoter {this} {
  163.     $this uiName [$this name]
  164.     $this parent [$this systemVersion]
  165.     $this initializedAllInfo 0
  166.     $this BrowsUiObj::promoter
  167. }
  168.  
  169.  
  170. # Returns 0.
  171. #
  172. method VSFileObj::isDirectory {this} {
  173.     return 0
  174. }
  175.  
  176. method VSFileObj::uiIdentity {this} {
  177.     regexp {.*(VSFile:.*)$} $this dummy uiIdentity
  178.     return $uiIdentity
  179. }
  180.  
  181. # Do not delete this line -- regeneration end marker
  182.  
  183. method VSFileObj::directory {this args} {
  184.     if {$args == ""} {
  185.         return [$this _directory]
  186.     }
  187.     set ref [$this _directory]
  188.     if {$ref != ""} {
  189.         [$ref _fileSet] removeValue $this
  190.     }
  191.     set obj [lindex $args 0]
  192.     if {$obj != ""} {
  193.         [$obj _fileSet] append $this
  194.     }
  195.     $this _directory $obj
  196. }
  197.  
  198.