home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / wd97doccon.tcl < prev    next >
Text File  |  1997-05-23  |  4KB  |  168 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)wd97doccon.tcl    /main/hindenburg/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)wd97doccon.tcl    /main/hindenburg/1   23 May 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class Wd97DocConGen : {Object} {
  16.     method destructor
  17.     constructor
  18.     method generate
  19.     method genComponent
  20.     method getText
  21.     method genPicture
  22.     method section
  23.     attribute section
  24.     attribute word
  25.     attribute _section
  26. }
  27.  
  28. method Wd97DocConGen::destructor {this} {
  29.     set ref [$this _section]
  30.     if {$ref != ""} {
  31.         $ref _contentsGenerator ""
  32.     }
  33.     # Start destructor user section
  34.     # End destructor user section
  35. }
  36.  
  37. constructor Wd97DocConGen {class this name section} {
  38.     set this [Object::constructor $class $this $name]
  39.     $this section $section
  40.     return $this
  41. }
  42.  
  43. method Wd97DocConGen::generate {this} {
  44.     if [catch {
  45.         set app [[[docTool document] editor] app]
  46.         set docs [$app property Documents]
  47.         set dest [[$this section] docLocation]
  48.         # open file
  49.         set d [$docs Open $dest]
  50.         # set in Master Document View
  51.         set activeWindow [$d property ActiveWindow]
  52.         set view [$activeWindow property View]
  53.         $view property Type 5
  54.         # expand sub documents
  55.         set subDocs [$d property SubDocuments]
  56.         $subDocs property Expanded true
  57.         # delete current contents
  58.         set cnt [$d property Content]
  59.         $cnt Select
  60.         $cnt Delete
  61.  
  62.         set indentLevel [[$this section] indentation]
  63.         $cnt InsertAfter [[$this section] uiName]
  64.         $cnt property Style "OT Hdg $indentLevel"
  65.         $cnt InsertParagraphAfter
  66.         $cnt Collapse 0
  67.  
  68.         set inSubdoc 0
  69.         set subLevel 0
  70.  
  71.         foreach sect [[$this section] getTree] {
  72.             set level [$sect indentation]
  73.             set name  [$sect uiName]
  74.             set type  [$sect type]
  75.             set class [$sect operationClass]
  76.             if {$inSubdoc} {
  77.                 # Check for end of subdoc
  78.                 if {$level <= $subLevel} {
  79.                     set inSubdoc 0
  80.                     set subLevel 0
  81.                 }
  82.             }
  83.  
  84.             if {!$inSubdoc} {
  85.                 # Check if the section is
  86.                 # manipulatable. If so then skip
  87.                 # this section and all it's underlying sections.
  88.                 if {$class == "manipulate"} {
  89.                     # In subdocument
  90.                     set inSubdoc 1
  91.                     set subLevel $level
  92.                     $cnt Collapse 0
  93.                     $cnt Select
  94.                     $subDocs AddFromFile [$sect docLocation]
  95.                 } else {
  96.                     # Generate contents for this section
  97.                     $this genComponent $sect
  98.                 }
  99.             }
  100.         }
  101.         $d Close -1
  102.     } msg] {
  103.         wmtkerror "Word Automation Error: $msg"
  104.     }
  105. }
  106.  
  107. method Wd97DocConGen::genComponent {this section} {
  108.     case [$section docType] {
  109.         {Emf} {$this genPicture $section}
  110.         {default} { $this getText $section}
  111.     }
  112. }
  113.  
  114. method Wd97DocConGen::getText {this section} {
  115.     set app [[[docTool document] editor] app]
  116.     set d [$app property ActiveDocument]
  117.     set cnt [$d Range]
  118.     $cnt Collapse 0
  119.     set indentLevel [$section indentation]
  120.     $cnt property Style "OT Hdg $indentLevel"
  121.     $cnt InsertAfter [$section docTitle]
  122.     $cnt InsertParagraphAfter
  123.     $cnt Collapse 0
  124.     $cnt property Style "OT Body Text"
  125.     $cnt Select
  126.     set file [$section docLocation]
  127.     $cnt InsertFile $file "" 0.0 1.0 0.0
  128.     $cnt InsertParagraphAfter
  129.     $cnt Collapse 0
  130. }
  131.  
  132. method Wd97DocConGen::genPicture {this section} {
  133.     set app [[[docTool document] editor] app]
  134.     set d [$app property ActiveDocument]
  135.     set cnt [$d Range]
  136.     $cnt Collapse 0
  137.     set indentLevel [$section indentation]
  138.     $cnt property Style "OT Hdg $indentLevel"
  139.     $cnt InsertAfter [$section docTitle]
  140.     $cnt InsertParagraphAfter
  141.     $cnt Collapse 0
  142.     $cnt Select
  143.     set sh [$d property InlineShapes]
  144.     $sh AddPicture [$section docLocation] true true $cnt
  145.     set cnt [$d Range]
  146.     $cnt Collapse 0
  147.     $cnt InsertParagraphAfter
  148.     $cnt Collapse 0
  149. }
  150.  
  151. # Do not delete this line -- regeneration end marker
  152.  
  153. method Wd97DocConGen::section {this args} {
  154.     if {$args == ""} {
  155.         return [$this _section]
  156.     }
  157.     set ref [$this _section]
  158.     if {$ref != ""} {
  159.         $ref _contentsGenerator ""
  160.     }
  161.     set obj [lindex $args 0]
  162.     if {$obj != ""} {
  163.         $obj _contentsGenerator $this
  164.     }
  165.     $this _section $obj
  166. }
  167.  
  168.