home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / csparamdia.tcl < prev    next >
Text File  |  1997-05-13  |  6KB  |  233 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csparamdia.tcl    /main/hindenburg/10
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csparamdia.tcl    /main/hindenburg/10   13 May 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "csintdlgel.tcl"
  13. # End user added include file section
  14.  
  15. require "reptooldia.tcl"
  16.  
  17. Class CSParamDialog : {RepToolDialog} {
  18.     constructor
  19.     method destructor
  20.     method setParameter
  21.     method getParameter
  22.     method setFields
  23.     method getFields
  24.     method ok
  25.     method apply
  26.     method cancel
  27.     attribute timeoutInitial
  28.     attribute lingerInitial
  29.     attribute reportInitial
  30.     attribute maxclientsInitial
  31.     attribute maxinstancesInitial
  32.     attribute node
  33.     attribute objects
  34.     attribute parameters
  35.     attribute paramMap
  36. }
  37.  
  38. constructor CSParamDialog {class this name view node objects parameters} {
  39.     set this [RepToolDialog::constructor $class $this $name $view]
  40.     $this node $node
  41.     $this objects $objects
  42.     $this parameters $parameters
  43.     # Start constructor user section
  44.  
  45.         $this paramMap [Dictionary new]
  46.  
  47.         $this config \
  48.             -title "Change ORB Parameters" \
  49.             -modal $win95 \
  50.             -okPressed { %this ok } \
  51.             -cancelPressed { %this cancel } \
  52.             -helpPressed { [%this view] helpOnName changeParameters }
  53.  
  54.         interface NamedGroup $this.gui {
  55.             DlgColumn params {
  56.             }
  57.         }
  58.  
  59.         set object [lindex [eval [$this objects]] 0]
  60.         $this.gui label "Parameters of [$object objType] '[$object name]'"
  61.  
  62.         foreach param $parameters {
  63.             set guiName $this.gui.params.$param
  64.             [$this paramMap] set $param $guiName
  65.  
  66.             switch -- $param {
  67.                 orb_timeout {
  68.             interface CSIntDlgElem $guiName {
  69.             label "ORB Request Time-out (seconds)"
  70.             min 0
  71.             max 600
  72.             step 30
  73.             }
  74.                 }
  75.                 orb_linger {
  76.             interface CSIntDlgElem $guiName {
  77.             label "ORB Linger Time (seconds)"
  78.             min 0
  79.             max 600
  80.             step 30
  81.             }
  82.                 }
  83.                 orb_report {
  84.             interface CSIntDlgElem $guiName {
  85.             label "ORB Report Time (seconds)"
  86.             min -1
  87.             max 600
  88.             step 30
  89.             }
  90.                 }
  91.                 orb_maxclients {
  92.             interface CSIntDlgElem $guiName {
  93.             label "Max Number of Clients"
  94.             min -1
  95.             max 10
  96.             step 2
  97.             }
  98.                 }
  99.                 orb_maxinstances {
  100.             interface CSIntDlgElem $guiName {
  101.             label "Max Number of Instances Per Host"
  102.             min -1
  103.             max 10
  104.             step 2
  105.             }
  106.                 }
  107.             }
  108.         }
  109.  
  110.         if !$win95 {
  111.         PushButton new $this.apply \
  112.         -label "Apply" \
  113.         -activated "$this apply"
  114.         }
  115.  
  116.         $this setFields 1
  117.  
  118.     # End constructor user section
  119.     return $this
  120. }
  121.  
  122. method CSParamDialog::destructor {this} {
  123.     # Start destructor user section
  124.     # End destructor user section
  125.     $this RepToolDialog::destructor
  126. }
  127.  
  128. method CSParamDialog::setParameter {this name valueScript} {
  129.     set guiElem [[$this paramMap] set $name]
  130.     if {$guiElem == ""} {
  131.     return 0
  132.     }
  133.  
  134.     regsub {%} $valueScript $guiElem valueScript
  135.     set value [expr $valueScript]
  136.  
  137.     foreach object [eval [$this objects]] {
  138.     if {$value != [$object getParameter $name]} {
  139.         $object changeParameter $name $value
  140.     }
  141.     }
  142.  
  143.     return 1
  144. }
  145.  
  146. method CSParamDialog::getParameter {this name valueScript} {
  147.     set guiElem [[$this paramMap] set $name]
  148.     if {$guiElem == ""} {
  149.     return 0
  150.     }
  151.  
  152.     set object [lindex [eval [$this objects]] 0]
  153.     set value [$object getParameter $name]
  154.     regsub {%} $valueScript $value valueScript
  155.     set guiValue [expr $valueScript]
  156.  
  157.     $guiElem value $guiValue
  158. }
  159.  
  160. method CSParamDialog::setFields {this {copyInitial 0}} {
  161.     $this getParameter orb_timeout    {% / 1000}
  162.     $this getParameter orb_linger    {%}
  163.     $this getParameter orb_report    {%}
  164.     $this getParameter orb_maxclients    {%}
  165.     $this getParameter orb_maxinstances    {%}
  166.  
  167.     if $copyInitial {
  168.     set object [lindex [eval [$this objects]] 0]
  169.     $this timeoutInitial [$object getParameter orb_timeout]
  170.     $this lingerInitial [$object getParameter orb_linger]
  171.     $this reportInitial [$object getParameter orb_report]
  172.     $this maxclientsInitial [$object getParameter orb_maxclients]
  173.     $this maxinstancesInitial [$object getParameter orb_maxinstances]
  174.     }
  175. }
  176.  
  177. method CSParamDialog::getFields {this} {
  178.     if [catch {
  179.     $this setParameter orb_timeout    {[% value] * 1000}
  180.     $this setParameter orb_linger    {[% value]}
  181.     $this setParameter orb_report    {[% value]}
  182.     $this setParameter orb_maxclients    {[% value]}
  183.     $this setParameter orb_maxinstances    {[% value]}
  184.     } error] {
  185.         [$this view] error $error
  186.         return 0
  187.     }
  188.  
  189.     return 1
  190. }
  191.  
  192. method CSParamDialog::ok {this} {
  193.     $this apply
  194. }
  195.  
  196. method CSParamDialog::apply {this} {
  197.     if ![$this getFields] {
  198.         return
  199.     }
  200.  
  201.     [$this node] update 0
  202.  
  203.     set tree [[$this view] tree]
  204.     if {[$tree selected] != [$this node]} {
  205.     $tree selected [$this node]
  206.     }
  207.     [$this node] display
  208.     [$this node] makeVisible
  209. }
  210.  
  211. method CSParamDialog::cancel {this} {
  212.     catch {
  213.     $this setParameter orb_timeout    {[$this timeoutInitial]}
  214.     $this setParameter orb_linger    {[$this lingerInitial]}
  215.     $this setParameter orb_report    {[$this reportInitial]}
  216.     $this setParameter orb_maxclients    {[$this maxclientsInitial]}
  217.     $this setParameter orb_maxinstances    {[$this maxinstancesInitial]}
  218.     }
  219.  
  220.     [$this node] update 0
  221.  
  222.     # Redisplay current node because it may be a bomb.
  223.     # 
  224.     set tree [[$this view] tree]
  225.     set obj [$tree selected]
  226.     if {$obj != ""} {
  227.         $obj display
  228.     }
  229. }
  230.  
  231. # Do not delete this line -- regeneration end marker
  232.  
  233.