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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)fmbookcong.tcl    1.5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)fmbookcong.tcl    1.5   09 Jan 1996 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "fmcongen.tcl"
  15.  
  16. Class FmBookConGen : {FmConGen} {
  17.     method destructor
  18.     constructor
  19.     method generate
  20.     method genComponent
  21.     method section
  22.     attribute mifFid
  23.     attribute _section
  24. }
  25.  
  26. method FmBookConGen::destructor {this} {
  27.     set ref [$this _section]
  28.     if {$ref != ""} {
  29.         $ref _contentsGenerator ""
  30.     }
  31.     # Start destructor user section
  32.     # End destructor user section
  33.     $this FmConGen::destructor
  34. }
  35.  
  36. constructor FmBookConGen {class this name section} {
  37.     set this [FmConGen::constructor $class $this $name $section]
  38.     $section _contentsGenerator $this
  39.     return $this
  40. }
  41.  
  42. method FmBookConGen::generate {this} {
  43.  
  44.     $this mifFid [$this openMif]
  45.  
  46.     if {[$this mifFid] == ""} {
  47.         return
  48.     }
  49.  
  50.     set inSubBook 0
  51.     set subBookLevel 0
  52.  
  53.     # Start the MIF-file with a Book-identification
  54.     puts [$this mifFid] "<Book 4.00>"
  55.  
  56.     foreach sect [[$this section] getTree] {
  57.         
  58.         set level   [$sect indentation]
  59.         set name    [$sect uiName]
  60.         set docType [$sect docType]
  61.  
  62.         set class [$sect operationClass]
  63.  
  64.         if {$inSubBook} {
  65.             # Check for end of subbook
  66.             if {$level <= $subBookLevel} {
  67.                 set inSubBook 0
  68.             }
  69.         }
  70.         if {!$inSubBook} {
  71.             # Check if the section is manipulatable.
  72.             # If so then skip this section and 
  73.             # all it's underlying sections.
  74.             if {$docType == [[$this section] docType]} {
  75.                 # In subbook
  76.                 set inSubBook 1
  77.                 set subBookLevel $level
  78.             } else {
  79.                 if {$class == "manipulate"} {
  80.                     # Section is manipulatable. 
  81.                     # Put it in the book
  82.                     $this genComponent $sect
  83.                 }
  84.             }
  85.         }
  86.     }
  87.  
  88.     # Close the MIF-file
  89.     close [$this mifFid]
  90.  
  91.     $this mif2Bin
  92. }
  93.  
  94. method FmBookConGen::genComponent {this section} {
  95.  
  96.     set mif [$this mifFid]
  97.  
  98.     # Start the Bookcomponent
  99.     puts $mif "<BookComponent"
  100.     puts $mif "  <PageNumbering Continue>"
  101.     puts $mif "  <PgfNumbering Continue>"
  102.     puts $mif "  <FileName `<c\\>[$section docLocation]'>"
  103.  
  104.     # If the section is a Table of Contents then specify which 
  105.     # paragraph-tag's must be included in the Table of Contents
  106.     if {[$section docType] == "Toc"} {
  107.         puts $mif "  <DeriveType TOC>"
  108.         puts $mif "  <DeriveTag `Chapter'>"
  109.         puts $mif "  <DeriveTag `Chapter1'>"
  110.         puts $mif "  <DeriveTag `Section'>"
  111.         puts $mif "  <DeriveTag `Section1'>"
  112.         puts $mif "  <DeriveTag `SubSection'>"
  113.         puts $mif "  <DeriveTag `SubSection1'>"
  114.         puts $mif "  <DeriveTag `SubSubSection'>"
  115.         puts $mif "  <DeriveTag `SubSubSection1'>"
  116.     }
  117.  
  118.     # Finish the Bookcomponent
  119.     puts $mif ">"
  120. }
  121.  
  122. # Do not delete this line -- regeneration end marker
  123.  
  124. method FmBookConGen::section {this args} {
  125.     if {$args == ""} {
  126.         return [$this _section]
  127.     }
  128.     set ref [$this _section]
  129.     if {$ref != ""} {
  130.         $ref _contentsGenerator ""
  131.     }
  132.     set obj [lindex $args 0]
  133.     if {$obj != ""} {
  134.         $obj _contentsGenerator $this
  135.     }
  136.     $this _section $obj
  137. }
  138.  
  139.