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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)ildocconge.tcl    1.5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)ildocconge.tcl    1.5   04 Jan 1996 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "ilcongen.tcl"
  15.  
  16. Class IlDocConGen : {IlConGen} {
  17.     method destructor
  18.     constructor
  19.     method generate
  20.     method genComponent
  21.     method genPicture
  22.     method genText
  23.     method genActiveLink
  24.     method section
  25.     attribute linkNr
  26.     attribute ascFid
  27.     attribute _section
  28. }
  29.  
  30. method IlDocConGen::destructor {this} {
  31.     set ref [$this _section]
  32.     if {$ref != ""} {
  33.         $ref _contentsGenerator ""
  34.     }
  35.     # Start destructor user section
  36.     # End destructor user section
  37.     $this IlConGen::destructor
  38. }
  39.  
  40. constructor IlDocConGen {class this name section} {
  41.     set this [IlConGen::constructor $class $this $name $section]
  42.     $section _contentsGenerator $this
  43.     # Start constructor user section
  44.     $this linkNr 0
  45.     # End constructor user section
  46.     return $this
  47. }
  48.  
  49. method IlDocConGen::generate {this} {
  50.     
  51.     set version [[[[$this section] document] editor] version]
  52.     
  53.     $this ascFid [$this openAsc]
  54.  
  55.     if {[$this ascFid] == ""} {
  56.         return
  57.     }
  58.  
  59.     # when the fold-level is lower than 2 the file name will be a chapter
  60.     # else the file will be a section
  61.  
  62.     set header [TextSection new]
  63.     expand_file $header [m4_path_name etc il${version}doc.asc]
  64.  
  65.     set classes [TextSection new]
  66.     expand_file $classes [m4_path_name etc il${version}class.asc]
  67.  
  68.     puts [$this ascFid] "[$header contents]"
  69.     puts [$this ascFid] "\n[$classes contents]"
  70.     puts [$this ascFid] "\n<!End Declarations>"
  71.     case [[$this section] indentation] {
  72.         {0 1}    {puts [$this ascFid] "\n<\"Chapter\">"}
  73.         {2}    {puts [$this ascFid] "\n<\"Section\">"}
  74.         {3}    {puts [$this ascFid] "\n<\"Subsection\">"}
  75.         {4}    {puts [$this ascFid] "\n<\"Sub2section\">"}
  76.     }
  77.     puts [$this ascFid] "\n[[$this section] docTitle]"
  78.  
  79.     set inSubdoc 0
  80.     set subLevel 0
  81.  
  82.     foreach sect [[$this section] getTree] {
  83.  
  84.         set level [$sect indentation]
  85.         set name  [$sect uiName]
  86.         set type  [$sect type]
  87.         set class [$sect operationClass]
  88.  
  89.         if {$inSubdoc} {
  90.             # Check for end of subdoc
  91.             if {$level <= $subLevel} {
  92.                 set inSubdoc 0
  93.                 set subLevel 0
  94.             }
  95.         }
  96.  
  97.         if {!$inSubdoc} {
  98.             # Check if the section is manipulatable. If so then skip
  99.             # this section and all it's underlying sections.
  100.             if {$class == "manipulate"} {
  101.                 # In subdocument
  102.                 set inSubdoc 1
  103.                 set subLevel $level
  104.             } else {
  105.                 # Generate contents for this section
  106.                 $this genComponent $sect
  107.             }
  108.         }
  109.     }
  110.  
  111.     close [$this ascFid]
  112. }
  113.  
  114. method IlDocConGen::genComponent {this section} {
  115.  
  116.     # Look at the doctype of the class and generate a picture 
  117.     # or a text for it in the MIF-file.
  118.     case [$section docType] {
  119.         {Epsi Epsf Eps Ximage}    {$this genPicture $section}
  120.         {default}        {$this genText $section}
  121.     }
  122. }
  123.  
  124. method IlDocConGen::genPicture {this section} {
  125.  
  126.     $this genActiveLink Interleaf $section
  127.  
  128.     puts [$this ascFid] "\n<\"para\","
  129.     puts [$this ascFid] "\tAlignment=\t\tCenter,"
  130.     puts [$this ascFid] "\tFont =\t\t\tF24@Z7@Lnl>"
  131.     puts [$this ascFid] "\n[$section docTitle]"
  132. }
  133.  
  134. method IlDocConGen::genText {this section} {
  135.  
  136.     puts [$this ascFid] "\n<\"para\","
  137.     puts [$this ascFid] "\tFont =\t\t\tF14@Z7@Lnl>"
  138.     puts [$this ascFid] "\n[$section docTitle]:"
  139.  
  140.     $this genActiveLink ASCII $section
  141. }
  142.  
  143. method IlDocConGen::genActiveLink {this linkType section} {
  144.  
  145.     # linkPath, linkNumber and linkType are used in template 'il..link.asc'
  146.     set linkPath ";[path_name file [$section docLocation]]"
  147.     set linkNumber [$this linkNr]
  148.  
  149.     set link [TextSection new]
  150.     set version [[[[$this section] document] editor] version]
  151.     expand_file $link [m4_path_name etc il${version}link.asc]
  152.     puts [$this ascFid] "\n[$link contents]"
  153.  
  154.     # linknr is used in template
  155.     $this linkNr [incr linkNumber]
  156. }
  157.  
  158. # Do not delete this line -- regeneration end marker
  159.  
  160. method IlDocConGen::section {this args} {
  161.     if {$args == ""} {
  162.         return [$this _section]
  163.     }
  164.     set ref [$this _section]
  165.     if {$ref != ""} {
  166.         $ref _contentsGenerator ""
  167.     }
  168.     set obj [lindex $args 0]
  169.     if {$obj != ""} {
  170.         $obj _contentsGenerator $this
  171.     }
  172.     $this _section $obj
  173. }
  174.  
  175.