home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / helptoc.tcl < prev    next >
Text File  |  1996-05-29  |  2KB  |  99 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)helptoc.tcl    1.3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)helptoc.tcl    1.3   13 Apr 1995 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12.  
  13. require helptocnod.tcl
  14.  
  15. # End user added include file section
  16.  
  17.  
  18. Class HelpToc : {BrowsTree} {
  19.     constructor
  20.     method destructor
  21.     method load
  22.     attribute tool
  23. }
  24.  
  25. global HelpToc::index
  26. set HelpToc::index 0
  27.  
  28.  
  29. constructor HelpToc {class this name} {
  30.     set this [BrowsTree::constructor $class $this $name]
  31.     # Start constructor user section
  32.  
  33.     $this rowCount 12
  34.  
  35.     # End constructor user section
  36.     return $this
  37. }
  38.  
  39. method HelpToc::destructor {this} {
  40.     # Start destructor user section
  41.     # End destructor user section
  42. }
  43.  
  44. method HelpToc::load {this toc} {
  45.     # Clean up old nodes
  46.     foreach node [$this rootSet] {
  47.         $node delete
  48.     }
  49.     # make new tree
  50.     global HelpToc::index
  51.     set fp [open $toc]
  52.     set l [List new]
  53.     set nodes [List new]
  54.     set index -1
  55.     while {[gets $fp line] >= 0} {
  56.         if {[string range $line 0 0] == "#"} {
  57.             continue
  58.         }
  59.         set chr {[^|][^|]*}
  60.         set exp "($chr)\\|($chr)\\|($chr)"
  61.         if {![regexp $exp $line dummy level title ref]} {
  62.             puts stderr "Illegale formatted line '$line'"
  63.             continue
  64.         }
  65.         set level [string trim $level]
  66.         set title [string trim $title]
  67.         set ref [string trim $ref]
  68.         incr HelpToc::index
  69.         set level [expr {[lindex $level 0] - 1}]
  70.         set node [HelpTocNode new $this.${HelpToc::index} \
  71.                         -label $title \
  72.                         -reference $ref]
  73.         $nodes append $node
  74.         if {$level > 0} {
  75.             set parent [$l index [expr {$level - 1}]]
  76.             $parent hasChildren 1
  77.             $node parent $parent
  78.         }
  79.         if {$level > $index} {
  80.             $l append $node
  81.             incr index
  82.         } else {
  83.             $l index $level $node
  84.         }
  85.     }
  86.     close $fp
  87.     # set icons
  88.     $nodes foreach node {
  89.         if [$node hasChildren] {
  90.             $node icon sysv_16
  91.         } else {
  92.             $node icon docv_16
  93.         }
  94.     }
  95. }
  96.  
  97. # Do not delete this line -- regeneration end marker
  98.  
  99.