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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csentrydia.tcl    /main/titanic/11
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csentrydia.tcl    /main/titanic/11   10 Oct 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "repdbms.tcl"
  13. require "reppasswor.tcl"
  14. require "m4optdlgel.tcl"
  15. # End user added include file section
  16.  
  17. require "repdbdialo.tcl"
  18.  
  19. Class CSEntryDialog : {RepDbDialog} {
  20.     constructor
  21.     method destructor
  22.     method setFields
  23.     method getFields
  24.     method popUp
  25.     method shutdownServers
  26.     method checkOk
  27.     method ok
  28.     attribute id
  29.     attribute name
  30.     attribute policy
  31.     attribute protocol
  32.     attribute path
  33.     attribute host
  34.     attribute options
  35.     attribute node
  36. }
  37.  
  38. constructor CSEntryDialog {class this name view i_id node} {
  39.     set this [RepDbDialog::constructor $class $this $name $view]
  40.     $this id $i_id
  41.     $this node $node
  42.     # Start constructor user section
  43.  
  44.         $this config \
  45.             -title "Change Server Definition" \
  46.             -modal 1 \
  47.             -okPressed { %this ok } \
  48.             -cancelPressed { %this setFields } \
  49.         -helpPressed { [%this view] helpOnName changeServerEntry }
  50.  
  51.         interface NamedGroup $this.gui {
  52.         verStretchFactor 100
  53.             DlgColumn c {
  54.                 DlgColumn c {
  55.                     spaceType NONE
  56.             verStretchFactor 0
  57.             DlgRow path {
  58.             verStretchFactor 0
  59.             Label l { text "Executable Path" }
  60.             SingleLineText path {
  61.                             text ""
  62.                 verStretchFactor 0
  63.                             columnCount 30
  64.                         }
  65.             }
  66.             DlgRow host {
  67.             verStretchFactor 0
  68.             Label l { text "Host" }
  69.             SingleLineText host {
  70.                             text ""
  71.                 verStretchFactor 0
  72.                             columnCount 30
  73.                         }
  74.             }
  75.                 }
  76.         NamedGroup g {
  77.             verStretchFactor 100
  78.             label "Command Line"
  79.             DlgColumn cmdline {
  80.             verStretchFactor 100
  81.             }
  82.         }
  83.             }
  84.         }
  85.  
  86.         
  87.         set cmdline $this.gui.c.g.cmdline
  88.  
  89.         ORB::splitImplemId [$this id] id version
  90.     if {$id > 100 && $id < 1000} {
  91.         interface NamedGroup $cmdline.db {
  92.         label "Database"
  93.         verStretchFactor 0
  94.         DlgColumn col { }
  95.         }
  96.         }
  97.  
  98.         interface NamedGroup $cmdline.options {
  99.         label "M4 Options"
  100.         M4OptDlgElem options { }
  101.         }
  102.  
  103.         PushButton new $this.shutdown \
  104.             -label "Shutdown" \
  105.             -activated "busy { $this shutdownServers }"
  106.  
  107.         set params $this.gui.c.c
  108.         $this protocol $params.protocol.protocol
  109.         $this path $params.path.path
  110.         $this host $params.host.host
  111.  
  112.     $this options $cmdline.options.options
  113.  
  114.         [$this path] textModified "$this checkOk"
  115.  
  116.     set rep [[$this view] rep]
  117.     $rep getServerById [$this id] serverDef
  118.     set repName $serverDef(name)
  119.  
  120.     if {$id > 100 && $id < 1000} {
  121.         if {[$rep currentName] != $repName} {
  122.         if [catch {$rep setCurrent $repName} error] {
  123.             [$this view] error $error
  124.         }
  125.         }
  126.  
  127.         set dbColumn $this.gui.c.g.cmdline.db.col
  128.         $this createDbInterface $dbColumn 30
  129.     }
  130.  
  131.         $this setFields
  132.  
  133.     # End constructor user section
  134.     return $this
  135. }
  136.  
  137. method CSEntryDialog::destructor {this} {
  138.     # Start destructor user section
  139.     # End destructor user section
  140.     $this RepDbDialog::destructor
  141. }
  142.  
  143. method CSEntryDialog::setFields {this} {
  144.     set rep [[$this view] rep]
  145.     $rep getServerById [$this id] serverDef
  146.  
  147.     set fullId $serverDef(id).$serverDef(version)
  148.     $this.gui label "Server Definition '$serverDef(name)' ($fullId)"
  149.  
  150.     $this name $serverDef(name)
  151.     $this policy         $serverDef(policy)
  152.     $this protocol        $serverDef(protocol)
  153.     [$this path] text        $serverDef(executable)
  154.     [$this host] text        $serverDef(host)
  155.  
  156.     if ![$rep getInfoFromCmdLine $serverDef(id) $serverDef(cmdline) cmdLine] {
  157.     return
  158.     }
  159.  
  160.     [$this options] options $cmdLine(m4options)
  161.  
  162.     if {$serverDef(id) <= 100 || $serverDef(id) >= 1000} {
  163.         # Not a dbserver definition.
  164.         return
  165.     }
  166.     [$this dbname] text $cmdLine(dbname)
  167.  
  168.     if [RepositoryDBMS::hasUser] {
  169.     [$this dbuser] text $cmdLine(dbuser)
  170.     }
  171.     if [RepositoryDBMS::hasPassword] {
  172.         if [string length $cmdLine(dbpassword)] {
  173.         $this plainPassword $cmdLine(dbpassword)
  174.         $this cryptedPassword $cmdLine(dbcryptedpassword)
  175.  
  176.         regsub -all {.} $cmdLine(dbpassword) {*} hiddenPassword
  177.         [$this dbpassword] text $hiddenPassword
  178.         } elseif [string length $cmdLine(dbcryptedpassword)] {
  179.             $this plainPassword ""
  180.         $this cryptedPassword $cmdLine(dbcryptedpassword)
  181.  
  182.         [$this dbpassword] text [$this cryptedPassword]
  183.         } else {
  184.             set hiddenPassword ""
  185.             if {[$this plainPassword] != ""} {
  186.                 if {[$this cryptedPassword] == ""} {
  187.                     $this cryptedPassword [ORB::cryptPassword \
  188.                                                         [$this plainPassword]]
  189.                 }
  190.         regsub -all {.} [$this plainPassword] {*} hiddenPassword
  191.             } elseif {[$this cryptedPassword] != ""} {
  192.                 set hiddenPassword [$this cryptedPassword]
  193.             }
  194.             [$this dbpassword] text $hiddenPassword
  195.         }
  196.     }
  197.     if [RepositoryDBMS::hasDirectory] {
  198.     [$this dbdirectory] text $cmdLine(dbdir)
  199.     }
  200.     if [RepositoryDBMS::hasServer] {
  201.     [$this dbserver] text $cmdLine(dbserver)
  202.     }
  203.     if [RepositoryDBMS::hasHost] {
  204.     [$this dbhost] text $cmdLine(dbhost)
  205.     }
  206. }
  207.  
  208. method CSEntryDialog::getFields {this serverDefRef} {
  209.     upvar $serverDefRef serverDef
  210.     set rep [[$this view] rep]
  211.  
  212.     ORB::splitImplemId [$this id] id version
  213.     if {$id > 100 && $id < 1000} {
  214.     if ![$this getDbFields cmdInfo 0] {
  215.         return 0
  216.     }
  217.     }
  218.  
  219.     set cmdInfo(m4options) [[$this options] options]
  220.  
  221.     set path [[$this path] text]
  222.  
  223.     protect_backslashes {path exeName} {
  224.     set exeName [quoteIf [file tail $path]]
  225.     }
  226.  
  227.     if [catch {set cmdLine [$rep makeCmdLine $exeName cmdInfo]} error] {
  228.         [$this view] error $error
  229.         return 0
  230.     }
  231.  
  232.     set serverDef(id)        $id
  233.     set serverDef(version)    $version
  234.     set serverDef(name)        [$this name]
  235.     set serverDef(policy)    [$this policy]
  236.     set serverDef(protocol)    [$this protocol]
  237.     set serverDef(executable)    [[$this path] text]
  238.     set serverDef(cmdline)    $cmdLine
  239.     set serverDef(host)        [[$this host] text]
  240.  
  241.     return 1
  242. }
  243.  
  244. method CSEntryDialog::popUp {this} {
  245.     # Don't call passwordChanged!
  246.     $this checkOk
  247.     $this RepToolDialog::popUp
  248. }
  249.  
  250. method CSEntryDialog::shutdownServers {this} {
  251.     set rep [[$this view] rep]
  252.     set name [$this name]
  253.  
  254.     $rep shutdownDbServers $name
  255. }
  256.  
  257. method CSEntryDialog::checkOk {this} {
  258.     set ok 1
  259.  
  260.     if {[$this policy] == "shared" &&
  261.     [string length [[$this path] text]] == 0} {
  262.         set ok 0
  263.     } elseif {[$this policy] == "unshared"} {
  264.         [$this path] sensitive 0
  265.         [$this options].gui.r.t.text sensitive 0
  266.     }
  267.  
  268.     $this okSensitive $ok
  269. }
  270.  
  271. method CSEntryDialog::ok {this} {
  272.     if ![$this getFields serverDef] {
  273.         return
  274.     }
  275.  
  276.     [[$this view] rep] changeServerDefinition \
  277.     $serverDef(id) \
  278.     $serverDef(version) \
  279.     $serverDef(name) \
  280.     $serverDef(policy) \
  281.     $serverDef(protocol) \
  282.     $serverDef(executable) \
  283.     $serverDef(cmdline) \
  284.     $serverDef(host)
  285.  
  286.     if {[$this node] != ""} {
  287.     [$this node] update
  288.     [$this node] display
  289.     } else {
  290.         [$this view] update
  291.     }
  292.  
  293.     [$this view] message "Changed server entry successfully."
  294. }
  295.  
  296. # Do not delete this line -- regeneration end marker
  297.  
  298.