home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / tooloption.tcl < prev    next >
Text File  |  1996-11-14  |  8KB  |  259 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)tooloption.tcl    /main/hindenburg/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)tooloption.tcl    /main/hindenburg/4   14 Nov 1996 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "classmaker.tcl"
  13. require "asciiprint.tcl"
  14. # End user added include file section
  15.  
  16.  
  17. Class ToolOptions : {Object} {
  18.     constructor
  19.     method destructor
  20.     method createBox
  21.     method setContexts
  22.     method aPrinterSetup
  23.     method psPrinterSetup
  24.     method syntax
  25.     attribute syntaxEntries
  26. }
  27.  
  28. constructor ToolOptions {class this name} {
  29.     set this [Object::constructor $class $this $name]
  30.     # Start constructor user section
  31.     # End constructor user section
  32.     return $this
  33. }
  34.  
  35. method ToolOptions::destructor {this} {
  36.     # Start destructor user section
  37.     # End destructor user section
  38. }
  39.  
  40. method ToolOptions::createBox {this name} {
  41.     # retrieve M4 variables
  42.     set m4varList ""
  43.     set m4winvarList ""
  44.     foreach context [$this ${name}Contexts] {
  45.     set m4var M4_$name
  46.     set m4winvar M4_win_$name
  47.     if {"$context" != ""} {
  48.         set ${m4var}__${context} [m4_var get $m4var -context $context]
  49.         set ${m4winvar}__${context} [m4_var get $m4winvar -context $context]
  50.         lappend m4varList ${m4var}__${context}
  51.         lappend m4winvarList ${m4winvar}__${context}
  52.     } else {
  53.         set $m4var [m4_var get $m4var]
  54.         set $m4winvar [m4_var get $m4winvar]
  55.         lappend m4varList $m4var
  56.         lappend m4winvarList $m4winvar
  57.     }
  58.     }
  59.  
  60.     # create dialog box
  61.     ClassMaker::extend TemplateDialog Options${name}TemplateDialog \
  62.     [concat name context m4varList $m4varList m4winvarList $m4winvarList]
  63.     Options${name}TemplateDialog new $wmttoolObj.$name \
  64.     -modal yes \
  65.     -title "[string toupper [string range $name 0 0]][string \
  66.         range $name 1 end]" \
  67.     -name $name \
  68.     -context "" \
  69.     -m4varList $m4varList \
  70.     -m4winvarList $m4winvarList \
  71.     -helpPressed [list .main helpOnName $name] \
  72.     -cancelPressed {%this delete} \
  73.     -okPressed {
  74.         foreach m4var [%this m4varList] {
  75.         if {"[context $m4var]" == "[%this context]"} break
  76.         }
  77.         %this $m4var [%this.top.m4var text]
  78.         foreach m4winvar [%this m4winvarList] {
  79.         if {"[context $m4winvar]" == "[%this context]"} break
  80.         }
  81.         %this $m4winvar [%this.top.m4winvar state]
  82.  
  83.         foreach m4var [%this m4varList] {
  84.         if {"[m4_var get $m4var]" != "[%this $m4var]"} {
  85.             catch {m4_var set $m4var [%this $m4var]}
  86.         }
  87.         }
  88.         foreach m4winvar [%this m4winvarList] {
  89.         if {"[m4_var get $m4winvar]" != "[%this $m4winvar]"} {
  90.             catch {m4_var set $m4winvar [%this $m4winvar]}
  91.         }
  92.         }
  93.         %this delete
  94.     }
  95.     foreach m4var $m4varList {
  96.     $wmttoolObj.$name $m4var [set $m4var]
  97.     }
  98.     foreach m4winvar $m4winvarList {
  99.     $wmttoolObj.$name $m4winvar [set $m4winvar]
  100.     }
  101.     set top [DlgColumn new $wmttoolObj.$name.top]
  102.     set m4var [lindex $m4varList 0]
  103.     set m4winvar [lindex $m4winvarList 0]
  104.     Label new $top.m4varLab \
  105.     -text "[[$wmttoolObj m4VarDes] getUiName $m4var]:"
  106.     SingleLineText new $top.m4var \
  107.     -text "[set $m4var]"
  108.     CheckButton new $top.m4winvar \
  109.     -label "[[$wmttoolObj m4VarDes] getUiName $m4winvar]" \
  110.     -state [set $m4winvar]
  111.     Label new $top.contextLab \
  112.     -text "Context:"
  113.     set entrySet ""
  114.     foreach context [$this ${name}Contexts] {
  115.     if {"$context" == ""} {
  116.         lappend entrySet none
  117.     } else {
  118.         lappend entrySet $context
  119.     }
  120.     }
  121.     ClassMaker::extend OptionMenu ${name}OptionMenu box
  122.     ${name}OptionMenu new $top.context \
  123.     -entrySet $entrySet \
  124.     -selected [lindex $entrySet 0] \
  125.     -box $wmttoolObj.$name \
  126.     -selectionChanged {
  127.         set newContext [%this selected]
  128.         if {"$newContext" == "none"} {
  129.         set newContext ""
  130.         }
  131.         set context [[%this box] context]
  132.         if {"$context" == "$newContext"} return
  133.  
  134.         foreach m4var [[%this box] m4varList] {
  135.         if {"[context $m4var]" == "$context"} break
  136.         }
  137.         [%this box] $m4var [[%this box].top.m4var text]
  138.         foreach m4winvar [[%this box] m4winvarList] {
  139.         if {"[context $m4winvar]" == "$context"} break
  140.         }
  141.         [%this box] $m4winvar [[%this box].top.m4winvar state]
  142.  
  143.         [%this box] context $newContext
  144.         foreach m4var [[%this box] m4varList] {
  145.         if {"[context $m4var]" == "$newContext"} break
  146.         }
  147.         [%this box].top.m4var text [[%this box] $m4var]
  148.         foreach m4winvar [[%this box] m4winvarList] {
  149.         if {"[context $m4winvar]" == "$newContext"} break
  150.         }
  151.         [%this box].top.m4winvar state [[%this box] $m4winvar]
  152.     }
  153.     $wmttoolObj.$name popUp
  154. }
  155.  
  156. method ToolOptions::setContexts {this name contexts} {
  157.     $this ${name}Contexts $contexts
  158. }
  159.  
  160. method ToolOptions::aPrinterSetup {this} {
  161.     # create dialog box
  162.     set box $wmttoolObj.printerSetup
  163.     AsciiPrinterDlg new $box \
  164.     -options [$wmttoolObj options]
  165.     $box popUp
  166. }
  167.  
  168. method ToolOptions::psPrinterSetup {this} {
  169.     set box $wmttoolObj.printerSetup
  170.     PrinterChooser new $box \
  171.     -title "Printer Setup" \
  172.     -psPrinterCmd "[m4_var get M4_ps_printer]" \
  173.     -pageWidth "[m4_var get M4_ps_page_w]" \
  174.     -pageHeight "[m4_var get M4_ps_page_h]" \
  175.     -helpPressed {
  176.         if [catch {$wmttoolObj helpOnName printerSetup}] {
  177.         showHelp GEN/m_prsu.html#dialogbox
  178.         }
  179.     } \
  180.     -cancelPressed {%this delete} \
  181.     -okPressed {
  182.         set dim ""
  183.         set psPageW [%this pageWidth]
  184.         set psPageH [%this pageHeight]
  185.         if {$psPageW <= 0} {
  186.         set dim Width
  187.         } elseif {$psPageH <= 0} {
  188.         set dim Height
  189.         }
  190.         if {"$dim" != ""} {
  191.         wmtkerror "Page $dim must be a positive value"
  192.         return
  193.         }
  194.         if {"[m4_var get M4_ps_page_w]" != "$psPageW"} {
  195.             catch {m4_var set M4_ps_page_w "$psPageW"}
  196.         }
  197.         if {"[m4_var get M4_ps_page_h]" != "$psPageH"} {
  198.             catch {m4_var set M4_ps_page_h "$psPageH"}
  199.         }
  200.         set psPrinter [%this psPrinterCmd]
  201.         if {"[m4_var get M4_ps_printer]" != "$psPrinter"} {
  202.             catch {m4_var set M4_ps_printer "$psPrinter"}
  203.         }
  204.         %this delete
  205.     }
  206.     $box popUp
  207. }
  208.  
  209. method ToolOptions::syntax {this} {
  210.     set box .main.syntax
  211.     TemplateDialog new $box \
  212.     -modal yes \
  213.     -autoPopDown 0 \
  214.     -title "Syntax" \
  215.     -helpPressed {.main helpOnName syntax} \
  216.     -cancelPressed {%this delete} \
  217.     -okPressed {
  218.         set errorMsg ""
  219.         foreach entry [[.main options] syntaxEntries] {
  220.         set m4var M4_${entry}_syntax
  221.         set spec [[.main m4VarDes] getUiName $m4var]
  222.         set text [%this.top.$entry text]
  223.         if {[M4SyntaxChecker::checkSyntaxSpec "$text"] == -1} {
  224.             if {"$errorMsg" != ""} {
  225.             append errorMsg "\n"
  226.             }
  227.             append errorMsg "Syntax error in $spec specification"
  228.         }
  229.         }
  230.         if {"$errorMsg" != ""} {
  231.         wmtkerror $errorMsg
  232.         return
  233.         }
  234.         foreach entry [[.main options] syntaxEntries] {
  235.         set m4var M4_${entry}_syntax
  236.         set text [%this.top.$entry text]
  237.         if {"[m4_var get $m4var]" != "$text"} {
  238.             catch {m4_var set $m4var $text}
  239.         }
  240.         }
  241.         M4SyntaxChecker::m4varsChanged
  242.         %this popDown
  243.         %this delete
  244.     }
  245.     DlgColumn new $box.top
  246.     foreach entry [$this syntaxEntries] {
  247.     set m4var M4_${entry}_syntax
  248.     set $m4var [m4_var get $m4var]
  249.     Label new $box.top.${entry}Lab \
  250.         -text "[[.main m4VarDes] getUiName $m4var]:"
  251.     SingleLineText new $box.top.$entry \
  252.         -text "[set $m4var]"
  253.     }
  254.     $box popUp
  255. }
  256.  
  257. # Do not delete this line -- regeneration end marker
  258.  
  259.