home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / filerefsec.tcl < prev    next >
Text File  |  1996-10-17  |  3KB  |  108 lines

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