home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / tooloption.tcl < prev    next >
Text File  |  1997-11-25  |  9KB  |  300 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)tooloption.tcl    /main/titanic/10
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)tooloption.tcl    /main/titanic/10   25 Nov 1997 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 {isWinVar 1}} {
  41.     if $win95 {
  42.         set isWinVar 0
  43.     }
  44.     # retrieve M4 variables
  45.     set m4varList ""
  46.     set m4winvarList ""
  47.     foreach context [$this ${name}Contexts] {
  48.     set m4var M4_$name
  49.     set m4winvar M4_win_$name
  50.     if {"$context" != ""} {
  51.         set ${m4var}__${context} [m4_var get $m4var -context $context]
  52.         set ${m4winvar}__${context} [m4_var get $m4winvar -context $context]
  53.         lappend m4varList ${m4var}__${context}
  54.         lappend m4winvarList ${m4winvar}__${context}
  55.     } else {
  56.         set $m4var [m4_var get $m4var]
  57.         set $m4winvar [m4_var get $m4winvar]
  58.         lappend m4varList $m4var
  59.         lappend m4winvarList $m4winvar
  60.     }
  61.     }
  62.  
  63.     # create dialog box
  64.     ClassMaker::extend TemplateDialog Options${name}TemplateDialog \
  65.     [concat name context isWinVar m4varList $m4varList \
  66.                                       m4winvarList $m4winvarList]
  67.     Options${name}TemplateDialog new $wmttoolObj.$name \
  68.     -modal yes \
  69.         -title [cap_underscores $name] \
  70.     -name $name \
  71.     -context "" \
  72.     -isWinVar $isWinVar \
  73.     -m4varList $m4varList \
  74.     -m4winvarList $m4winvarList \
  75.     -helpPressed [list .main helpOnName $name] \
  76.     -cancelPressed {%this delete} \
  77.     -okPressed {
  78.         foreach m4var [%this m4varList] {
  79.         if {"[context $m4var]" == "[%this context]"} break
  80.         }
  81.         %this $m4var [%this.ng.top.r.m4var text]
  82.             if [%this isWinVar] {
  83.         foreach m4winvar [%this m4winvarList] {
  84.             if {"[context $m4winvar]" == "[%this context]"} break
  85.         }
  86.         %this $m4winvar [%this.ng.top.m4winvar state]
  87.             }
  88.  
  89.         foreach m4var [%this m4varList] {
  90.         if {"[m4_var get $m4var]" != "[%this $m4var]"} {
  91.             catch {m4_var set $m4var [%this $m4var]}
  92.         }
  93.         }
  94.             if [%this isWinVar] {
  95.         foreach m4winvar [%this m4winvarList] {
  96.             if {"[m4_var get $m4winvar]" != "[%this $m4winvar]"} {
  97.             catch {m4_var set $m4winvar [%this $m4winvar]}
  98.             }
  99.         }
  100.             }
  101.         %this delete
  102.     }
  103.     foreach m4var $m4varList {
  104.     $wmttoolObj.$name $m4var [set $m4var]
  105.     }
  106.     if $isWinVar {
  107.     foreach m4winvar $m4winvarList {
  108.         $wmttoolObj.$name $m4winvar [set $m4winvar]
  109.     }
  110.     }
  111.     NamedGroup new $wmttoolObj.$name.ng
  112.     set top [DlgColumn new $wmttoolObj.$name.ng.top]
  113.     set m4var [lindex $m4varList 0]
  114.     if $isWinVar {
  115.     set m4winvar [lindex $m4winvarList 0]
  116.     }
  117.     $wmttoolObj.$name.ng label "[[$wmttoolObj m4VarDes] getUiName $m4var]"
  118.     DlgRow new $top.r -spaceType NONE -justification FILLED -verShrinkFactor 0
  119.     SingleLineText new $top.r.m4var -columnCount 40 \
  120.     -text "[set $m4var]" -justification CENTER -horStretchFactor 100
  121.     PushButton new $top.r.browse -label "Browse..." -activated {
  122.     if $win95 {
  123.         set filter "Programs|*.com;*.exe;*.bat;*.cmd|All Files (*.*)|*|"
  124.     } else {
  125.         set filter "*"
  126.     }
  127.     FileChooser new .main.browsedit \
  128.         -title "Browse" \
  129.         -filter $filter \
  130.         -okPressed {
  131.             [%this parent].m4var text \
  132.             [lindex [.main.browsedit selectedSet] 0]
  133.         }
  134.     set dir [path_name directory [[%this parent].m4var text]]
  135.     if {$dir != ""} {
  136.         .main.browsedit directory $dir
  137.     }
  138.     .main.browsedit delHelpButton
  139.     .main.browsedit popUp
  140.     } -horStretchFactor 0 -justification CENTER
  141.     if $isWinVar {
  142.     CheckButton new $top.m4winvar \
  143.         -label "[[$wmttoolObj m4VarDes] getUiName $m4winvar]" \
  144.         -state [set $m4winvar]
  145.     }
  146.     Label new $top.contextLab \
  147.     -text "Context:"
  148.     set entrySet ""
  149.     foreach context [$this ${name}Contexts] {
  150.     if {"$context" == ""} {
  151.         lappend entrySet none
  152.     } else {
  153.         lappend entrySet $context
  154.     }
  155.     }
  156.     ClassMaker::extend OptionMenu ${name}OptionMenu [list box isWinVar]
  157.     ${name}OptionMenu new $top.context \
  158.         -isWinVar $isWinVar \
  159.     -entrySet $entrySet \
  160.     -selected [lindex $entrySet 0] \
  161.     -box $wmttoolObj.$name \
  162.     -selectionChanged {
  163.         set newContext [%this selected]
  164.         if {"$newContext" == "none"} {
  165.         set newContext ""
  166.         }
  167.         set context [[%this box] context]
  168.         if {"$context" == "$newContext"} return
  169.  
  170.         foreach m4var [[%this box] m4varList] {
  171.         if {"[context $m4var]" == "$context"} break
  172.         }
  173.         [%this box] $m4var [[%this box].ng.top.r.m4var text]
  174.             if [%this isWinVar] {
  175.         foreach m4winvar [[%this box] m4winvarList] {
  176.             if {"[context $m4winvar]" == "$context"} break
  177.         }
  178.         [%this box] $m4winvar [[%this box].ng.top.m4winvar state]
  179.             }
  180.  
  181.         [%this box] context $newContext
  182.         foreach m4var [[%this box] m4varList] {
  183.         if {"[context $m4var]" == "$newContext"} break
  184.         }
  185.         [%this box].ng.top.r.m4var text [[%this box] $m4var]
  186.  
  187.             if [%this isWinVar] {
  188.         foreach m4winvar [[%this box] m4winvarList] {
  189.             if {"[context $m4winvar]" == "$newContext"} break
  190.         }
  191.         [%this box].ng.top.m4winvar state [[%this box] $m4winvar]
  192.             }
  193.     }
  194.     $wmttoolObj.$name popUp
  195. }
  196.  
  197. method ToolOptions::setContexts {this name contexts} {
  198.     $this ${name}Contexts $contexts
  199. }
  200.  
  201. method ToolOptions::aPrinterSetup {this} {
  202.     # create dialog box
  203.     set box $wmttoolObj.printerSetup
  204.     AsciiPrinterDlg new $box \
  205.     -options [$wmttoolObj options]
  206.     $box popUp
  207. }
  208.  
  209. method ToolOptions::psPrinterSetup {this} {
  210.     set box $wmttoolObj.printerSetup
  211.     PrinterChooser new $box \
  212.     -title "Printer Setup" \
  213.     -psPrinterCmd "[m4_var get M4_ps_printer]" \
  214.     -pageWidth "[m4_var get M4_ps_page_w]" \
  215.     -pageHeight "[m4_var get M4_ps_page_h]" \
  216.     -helpPressed {
  217.         if [catch {$wmttoolObj helpOnName printerSetup}] {
  218.         showHelp GEN/m_prsu.html#dialogbox
  219.         }
  220.     } \
  221.     -cancelPressed {%this delete} \
  222.     -okPressed {
  223.         set dim ""
  224.         set psPageW [%this pageWidth]
  225.         set psPageH [%this pageHeight]
  226.         if {$psPageW <= 0} {
  227.         set dim Width
  228.         } elseif {$psPageH <= 0} {
  229.         set dim Height
  230.         }
  231.         if {"$dim" != ""} {
  232.         wmtkerror "Page $dim must be a positive value"
  233.         return
  234.         }
  235.         if {"[m4_var get M4_ps_page_w]" != "$psPageW"} {
  236.             catch {m4_var set M4_ps_page_w "$psPageW"}
  237.         }
  238.         if {"[m4_var get M4_ps_page_h]" != "$psPageH"} {
  239.             catch {m4_var set M4_ps_page_h "$psPageH"}
  240.         }
  241.         set psPrinter [%this psPrinterCmd]
  242.         if {"[m4_var get M4_ps_printer]" != "$psPrinter"} {
  243.             catch {m4_var set M4_ps_printer "$psPrinter"}
  244.         }
  245.         %this delete
  246.     }
  247.     $box popUp
  248. }
  249.  
  250. method ToolOptions::syntax {this} {
  251.     set box .main.syntax
  252.     TemplateDialog new $box \
  253.     -modal yes \
  254.     -autoPopDown 0 \
  255.     -title "Syntax" \
  256.     -helpPressed {.main helpOnName syntax} \
  257.     -cancelPressed {%this delete} \
  258.     -okPressed {
  259.         set errorMsg ""
  260.         foreach entry [[.main options] syntaxEntries] {
  261.         set m4var M4_${entry}_syntax
  262.         set spec [[.main m4VarDes] getUiName $m4var]
  263.         set text [%this.top.$entry text]
  264.         if {[M4SyntaxChecker::checkSyntaxSpec "$text"] == -1} {
  265.             if {"$errorMsg" != ""} {
  266.             append errorMsg "\n"
  267.             }
  268.             append errorMsg "Syntax error in $spec specification"
  269.         }
  270.         }
  271.         if {"$errorMsg" != ""} {
  272.         wmtkerror $errorMsg
  273.         return
  274.         }
  275.         foreach entry [[.main options] syntaxEntries] {
  276.         set m4var M4_${entry}_syntax
  277.         set text [%this.top.$entry text]
  278.         if {"[m4_var get $m4var]" != "$text"} {
  279.             catch {m4_var set $m4var $text}
  280.         }
  281.         }
  282.         M4SyntaxChecker::m4varsChanged
  283.         %this popDown
  284.         %this delete
  285.     }
  286.     DlgColumn new $box.top
  287.     foreach entry [$this syntaxEntries] {
  288.     set m4var M4_${entry}_syntax
  289.     set $m4var [m4_var get $m4var]
  290.     Label new $box.top.${entry}Lab \
  291.         -text "[[.main m4VarDes] getUiName $m4var]:"
  292.     SingleLineText new $box.top.$entry \
  293.         -text "[set $m4var]"
  294.     }
  295.     $box popUp
  296. }
  297.  
  298. # Do not delete this line -- regeneration end marker
  299.  
  300.