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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)filerefsec.tcl    /main/titanic/8
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)filerefsec.tcl    /main/titanic/8   7 Mar 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require_module_file "docsection.tcl" docwriter
  15. require_module_file "sfileldbob.tcl" docwriter
  16.  
  17. Class FileRefSection : {DocSection SFileLDbObj} {
  18.     method destructor
  19.     constructor
  20.     method promoter
  21.     method edit
  22.     method isDocDirUpToDate
  23.     method uiName
  24.     method removeSpecials
  25. }
  26.  
  27. method FileRefSection::destructor {this} {
  28.     # Start destructor user section
  29.     # End destructor user section
  30.     $this DocSection::destructor
  31.     $this SFileLDbObj::destructor
  32. }
  33.  
  34. constructor FileRefSection {class this name document} {
  35.     set this [SFileLDbObj::constructor $class $this $name]
  36.     set this [DocSection::constructor $class $this $name $document]
  37.     return $this
  38. }
  39.  
  40. proc FileRefSection::validDocument {obj} {
  41.  
  42.     set document [$obj systemVersion]
  43.     if {"[[$document system] type]" != "document"} {return 0}
  44.  
  45.     set editor [$document editor]
  46.     if {! [isCommand $editor]} {return 0}
  47.  
  48.     return 1
  49. }
  50.  
  51. method FileRefSection::promoter {this} {
  52.  
  53.     $this SFileLDbObj::promoter
  54.  
  55.     if {![FileRefSection::validDocument $this]} {
  56.         return
  57.     }
  58.  
  59.     set document [$this systemVersion]
  60.     set editor [$document editor]
  61.  
  62.     $this document $document
  63.     set editorName [$editor name]
  64.     set editorVersion [$editor version]
  65.     set class [Document::getClass $editorName $editorVersion [$this type]]
  66.  
  67.     if {$class != ""} {
  68.         if {![$this isA $class]} {
  69.             $class promote $this
  70.         }
  71.     } else {
  72.         set fileV [$this referredFileVersion]
  73.         if {![$fileV isNil]} {
  74.             if {[$fileV isA ExternalFileVersion]} {
  75.                 # for text file references without 
  76.                 # a section class
  77.                 TextRefSection promote $this
  78.             }
  79.         }
  80.     }
  81.  
  82.     # now promote to DocSection
  83.     DocSection::promoter $this
  84. }
  85.  
  86. method FileRefSection::edit {this} {
  87.     $this DocSection::edit
  88. }
  89.  
  90. method FileRefSection::isDocDirUpToDate {this} {
  91.  
  92.     # do not update if document is frozen
  93.     if {"[[$this document] getInfo Status]" == "frozen"} {
  94.         return 1
  95.     }
  96.  
  97.     # if the timestamp of the docLocation is > then the
  98.     # one of the location the section is up to date
  99.     if {! [file exists [$this docLocation]]} {
  100.         return 0
  101.     }
  102.     set fileV [$this referredFileVersion]
  103.     if [$fileV isNil] {
  104.         return 0
  105.     }
  106.     set source [$fileV updateTime]
  107.     file stat [$this docLocation] info
  108.     if {$source > $info(mtime)} {
  109.         return 0
  110.     }
  111.     return 1
  112. }
  113.  
  114. method FileRefSection::uiName {this args} {
  115.  
  116.     if {$args == ""} {
  117.         return [$this name]
  118.     } else {
  119.         # can not change name
  120.     }
  121.  
  122.     return ""
  123. }
  124.  
  125. method FileRefSection::removeSpecials {this} {
  126.     
  127.     BasicFS::removeFile [$this docLocation]
  128. }
  129.  
  130. # Do not delete this line -- regeneration end marker
  131.  
  132.