home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / helptool.tcl < prev    next >
Text File  |  1997-10-09  |  7KB  |  361 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)helptool.tcl    /main/titanic/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)helptool.tcl    /main/titanic/5   9 Oct 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require helpdialog.tcl
  14. require tooloption.tcl
  15. require m4vardescr.tcl
  16. require showversio.tcl
  17.  
  18. # End user added include file section
  19.  
  20. require "wmttool.tcl"
  21.  
  22. Class HelpTool : {WmtTool MainWindow} {
  23.     method destructor
  24.     constructor
  25.     method updateToolBar
  26.     method gotoURL
  27.     method gotoPrevious
  28.     method showToc
  29.     method showIndex
  30.     method firstPageURL
  31.     method tocFile
  32.     method indexFile
  33.     method print
  34.     method exit
  35.     method dialog
  36.     attribute hyperStack
  37.     attribute root
  38.     attribute _firstPageURL
  39.     attribute _tocFile
  40.     attribute _indexFile
  41.     attribute viewer
  42.     attribute _dialog
  43.     attribute m4VarDes
  44.     attribute options
  45. }
  46.  
  47. method HelpTool::destructor {this} {
  48.     set ref [$this _dialog]
  49.     if {$ref != ""} {
  50.         $ref __tool ""
  51.     }
  52.     # Start destructor user section
  53.  
  54.     $this saveToolBarPresence helptool
  55.     $this saveMessageAreaPresence helptool
  56.     $this saveWindowGeometry helptool
  57.     [$this options] delete
  58.  
  59.     # End destructor user section
  60.     $this WmtTool::destructor
  61. }
  62.  
  63. constructor HelpTool {class this name} {
  64.     set this [MainWindow::constructor $class $this $name]
  65.     WmtTool::constructor $class $this $name
  66.  
  67.     $this config -title Help -icon help_64 -iconTitle Help
  68.  
  69.     $this hyperStack [List new]
  70.     $this closed {%this exit}
  71.  
  72.     # Global Setup
  73.     #
  74.     interface MenuBar $this.bar {
  75.         MenuBarButton file {
  76.             label File
  77.             mnemonic F
  78.         }
  79.         MenuBarButton navigate {
  80.             label Navigate
  81.             mnemonic N
  82.         }
  83.         MenuBarButton view {
  84.             label View
  85.             mnemonic V
  86.         }
  87.         MenuBarButton options {
  88.             label Options
  89.             mnemonic O
  90.         }
  91.         MenuBarButton help {
  92.             label Help
  93.             mnemonic H
  94.         }
  95.     }
  96.  
  97.     [$this menuBar] helpEntry [$this menuBar].help
  98.  
  99.     # Menus
  100.     #
  101.  
  102.     # File Menu
  103.     #
  104.     interface Menu [$this menuBar].file.menu {
  105.         pinnable 1
  106.         MenuPushButton open {
  107.             label "Open File..."
  108.             mnemonic O
  109.             accelerator Ctrl+F
  110.             activated {
  111.                 if {![isCommand .main.open]} {
  112.                     FileChooser new .main.open -okPressed {
  113.                         .main gotoURL \
  114.                             [.main.open selectedSet]
  115.                     }
  116.                     .main.open delHelpButton
  117.                 }
  118.                 .main.open popUp
  119.             }
  120.         }
  121.         MenuPushButton print {
  122.             label "Print"
  123.             mnemonic P
  124.             activated {
  125.                 .main print
  126.             }
  127.         }
  128.         MenuSeparator sep {
  129.         }
  130.         MenuPushButton exit {
  131.             label "Exit"
  132.             mnemonic E
  133.             activated {
  134.                 .main exit
  135.             }
  136.         }
  137.     }
  138.  
  139.     # Navigation Menu
  140.     #
  141.     interface Menu [$this menuBar].navigate.menu {
  142.         pinnable 1
  143.         MenuPushButton contents {
  144.             label "Contents..."
  145.             mnemonic C
  146.             accelerator Ctrl+C
  147.             toolBarPixmap toc
  148.             activated {
  149.                 .main showToc
  150.             }
  151.         }
  152.         MenuPushButton index {
  153.             label "Index..."
  154.             mnemonic I
  155.             accelerator Ctrl+I
  156.             toolBarPixmap index
  157.             activated {
  158.                 .main showIndex
  159.             }
  160.         }
  161.         MenuPushButton back {
  162.             label "Previous Entry"
  163.             sensitive 0
  164.             mnemonic P
  165.             accelerator Ctrl+P
  166.             toolBarPixmap back
  167.             activated {
  168.                 .main gotoPrevious
  169.             }
  170.         }
  171.     }
  172.  
  173.     # View Menu
  174.     #
  175.     interface Menu [$this menuBar].view.menu {
  176.         pinnable 1
  177.         MenuCheckButton toolbar {
  178.             hintText "Shows or hides the toolbar."
  179.             label "ToolBar"
  180.             mnemonic T
  181.             state 1
  182.             stateChanged {
  183.                 .main toolBarPresent [[.main menuBar].view.menu.toolbar state]
  184.             }
  185.         }
  186.         MenuCheckButton messagearea {
  187.             hintText "Shows or hides the message area."
  188.             label "Message Area"
  189.             mnemonic M
  190.             state 1
  191.             stateChanged {
  192.                 .main messageAreaPresent [[.main menuBar].view.menu.messagearea state]
  193.             }
  194.         }
  195.     }
  196.  
  197.     # Options Menu
  198.     #
  199.     $this options [ToolOptions new $this.options]
  200.     $this m4VarDes [M4VarDescription new $this.m4VarDes]
  201.     interface Menu [$this menuBar].options.menu {
  202.         pinnable 1
  203.         MenuPushButton printerSetup {
  204.             label "Printer Setup..."
  205.             mnemonic P
  206.             activated {
  207.                 [.main options] psPrinterSetup
  208.             }
  209.         }
  210.     }
  211.  
  212.     # Help Menu
  213.     #
  214.     interface Menu [$this menuBar].help.menu {
  215.         pinnable 1
  216.         MenuPushButton abouthelptool {
  217.             label "About Help Tool"
  218.             mnemonic A
  219.             activated {
  220.                 showVersionDialog [%this label]
  221.             }
  222.         }
  223.     }
  224.  
  225.     $this setToolBarPresence helptool
  226.     if {[$this toolBar] != ""} {
  227.         $this updateToolBar
  228.     }
  229.  
  230.     # Other stuff
  231.     #
  232.  
  233.     $this viewer [HTMLViewer new $this.viewer -panX 0 -panY 0]
  234.     [$this viewer] setSize 550 500
  235.     [$this viewer] hotSpotClicked \
  236.         "$this gotoURL \[[$this viewer] currentHotSpot\]"
  237.  
  238.     $this setMessageAreaPresence helptool
  239.     HelpDialog new $this.help -tool $this
  240.     $this setWindowGeometry helptool
  241.  
  242.     return $this
  243. }
  244.  
  245. method HelpTool::updateToolBar {this} {
  246.     [$this toolBar] entrySet "
  247.         [$this menuBar].navigate.menu.contents
  248.         [$this menuBar].navigate.menu.index
  249.         [$this menuBar].navigate.menu.back
  250.     "
  251. }
  252.  
  253. method HelpTool::gotoURL {this url} {
  254.     # Special url to show toc dialog.
  255.     if {$url == "helptool://showtoc"} {
  256.         $this showToc
  257.         return
  258.     }
  259.     if [catch {
  260.         if [regexp {^#} $url] {
  261.             # Make relative url absolute.
  262.             set url "[[$this viewer] currentFile]$url"
  263.         } elseif {![regexp {^/} $url]} {
  264.             set url \
  265.                   "[file dirname [[$this viewer] currentFile]]/$url"
  266.         }
  267.         [$this viewer] gotoURL $url
  268.         [$this hyperStack] insert $url
  269.         if {[llength [[$this hyperStack] contents]] > 1} {
  270.             .main.bar.navigate.menu.back sensitive 1
  271.         }
  272.     } msg] {
  273.         wmtkerror $msg
  274.     }
  275. }
  276.  
  277. method HelpTool::gotoPrevious {this} {
  278.     if {[llength [[$this hyperStack] contents]] == 1} {
  279.         wmtkerror "There is no previous help topic"
  280.         return
  281.     }
  282.     if [catch {
  283.         [$this hyperStack] remove 0
  284.         [$this viewer] gotoURL [[$this hyperStack] index 0]
  285.     } msg] {
  286.         wmtkerror $msg
  287.     }
  288.     if {[llength [[$this hyperStack] contents]] == 1} {
  289.         .main.bar.navigate.menu.back sensitive 0
  290.     }
  291. }
  292.  
  293. method HelpTool::showToc {this} {
  294.     [$this dialog] showToc
  295. }
  296.  
  297. method HelpTool::showIndex {this} {
  298.     [$this dialog] showIndex
  299. }
  300.  
  301. method HelpTool::firstPageURL {this {url -}} {
  302.     if {$url == "-"} {
  303.         return [$this _firstPageURL]
  304.     }
  305.     if {[$this _firstPageURL] == ""} {
  306.         $this gotoURL $url
  307.     }
  308.     $this _firstPageURL $url
  309. }
  310.  
  311. method HelpTool::tocFile {this {file -}} {
  312.     if {$file == ""} {
  313.         return [$this _tocFile]
  314.     }
  315.     .main.help loadToc $file
  316.     $this _tocFile $file
  317. }
  318.  
  319. method HelpTool::indexFile {this {file -}} {
  320.     if {$file == ""} {
  321.         return [$this _indexFile]
  322.     }
  323.     .main.help loadIndex $file
  324.     $this _indexFile $file
  325. }
  326.  
  327. method HelpTool::print {this} {
  328.     wmtkmessage "Printing..."
  329.     set printer [Printer new]
  330.     $printer openPrinter html-print
  331.     set printOut [HTMLPrintOut new -url [[$this viewer] currentFile]]
  332.     $printer print $printOut
  333.     $printOut delete
  334.     $printer close
  335.     wmtkmessage "Done"
  336. }
  337.  
  338. method HelpTool::exit {this} {
  339.     $this delete
  340.     GCControl collect
  341.     exit
  342. }
  343.  
  344. # Do not delete this line -- regeneration end marker
  345.  
  346. method HelpTool::dialog {this args} {
  347.     if {$args == ""} {
  348.         return [$this _dialog]
  349.     }
  350.     set ref [$this _dialog]
  351.     if {$ref != ""} {
  352.         $ref __tool ""
  353.     }
  354.     set obj [lindex $args 0]
  355.     if {$obj != ""} {
  356.         $obj __tool $this
  357.     }
  358.     $this _dialog $obj
  359. }
  360.  
  361.