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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csclientno.tcl    /main/titanic/11
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csclientno.tcl    /main/titanic/11   5 Nov 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "csprocessn.tcl"
  15.  
  16. Class CSClientNode : {CSProcessNode} {
  17.     constructor
  18.     method destructor
  19.     method context
  20.         method removeEntry
  21.         method doRemove
  22.     method simplifyCommandLine
  23.     method doUpdate
  24.     attribute client
  25. }
  26.  
  27. constructor CSClientNode {class this name i_client} {
  28.     set this [CSProcessNode::constructor $class $this $name]
  29.     $this client $i_client
  30.     # Start constructor user section
  31.  
  32.         $this process $i_client
  33.         $this label [$i_client owner]@[$i_client host]
  34.         $this hasChildren 0
  35.  
  36.     $this canDelete 1
  37.  
  38.        if {[$i_client host] == [ORB::currentHost] &&
  39.            [$i_client pid] == [ORB::currentProcessId]} {
  40.         $this icon rep_clself_16
  41.         $this activeIcon rep_clself_16
  42.         } else {
  43.         $this icon rep_client_16
  44.         $this activeIcon rep_client_16
  45.         }
  46.  
  47.         # Allow clients to be dropped in the lock list of the
  48.         # Lock Management window, to initialize the "Set Lock..."
  49.         # dialog with this client's host, pid and user.
  50.         #
  51.         $this conversionSet "CSCLIENTNODE context"
  52.  
  53.     # End constructor user section
  54.     return $this
  55. }
  56.  
  57. method CSClientNode::destructor {this} {
  58.     # Start destructor user section
  59.     # End destructor user section
  60.     $this CSProcessNode::destructor
  61. }
  62.  
  63. method CSClientNode::context {this} {
  64.     set client [$this client]
  65.     set cmd [$client commandLine]
  66.  
  67.     set object ""
  68.     if {[string first ude.tcl $cmd] != -1} {
  69.         set cmdLen [llength $cmd]
  70.         incr cmdLen -1
  71.         set object [lindex $cmd $cmdLen]
  72.     }
  73.  
  74.     return [list [$client host] [$client pid] [$client owner] $object]
  75. }
  76.  
  77. method CSClientNode::removeEntry {this} {
  78.     set dlg [YesNoWarningDialog new [$this view].removeclientconfirm \
  79.         -title "Confirm Client Registration Delete" \
  80.         -message "Are you sure you want to delete the registration of client\
  81.          '[$this name]'?" \
  82.         -yesPressed "$this doRemove" \
  83.         -helpPressed "[$this view] helpOnName deleteClientNode"]
  84.  
  85.     $dlg delCancelButton
  86.     $dlg popUp
  87. }
  88.  
  89. method CSClientNode::doRemove {this} {
  90.     set view [$this view]
  91.     [[$this client] server] disconnect [$this client]
  92.     [$this parent] update 1
  93.     $view selectionChanged
  94. }
  95.  
  96. method CSClientNode::simplifyCommandLine {this cmdLine} {
  97.     if [lempty $cmdLine] {
  98.         return ""
  99.     }
  100.  
  101.     protect_backslashes cmdLine {
  102.     # Try to show "M4_home" instead of actual path.
  103.     #
  104.     set m4home [m4_var get M4_home]
  105.     if $win95 {
  106.         set m4homeName {%M4_home%}
  107.     } else {
  108.         set m4homeName {$M4_home}
  109.     }
  110.  
  111.         set newCmdLine ""
  112.         foreach part $cmdLine {
  113.         protect_backslashes {m4home} {
  114.                 regsub -all $m4home $part $m4homeName part
  115.         }
  116.             if [string length $newCmdLine] {
  117.                 append newCmdLine " "
  118.             }
  119.             append newCmdLine $part
  120.         }
  121.         set cmdLine $newCmdLine
  122.     }
  123.  
  124.     return $cmdLine
  125. }
  126.  
  127. method CSClientNode::doUpdate {this {rebuild 1}} {
  128.     $this CSProcessNode::doUpdate $rebuild
  129.  
  130.     set info [$this info]
  131.     set client [$this client]
  132.  
  133.     $info addHeader "Client"
  134.     set cmdLine [$this simplifyCommandLine [$client commandLine]]
  135.     $info addItem "Of Server" [[$client server] name]
  136.     if {$cmdLine != ""} {
  137.     $info addItem "Command Line" $cmdLine
  138.     }
  139. }
  140.  
  141. # Do not delete this line -- regeneration end marker
  142.  
  143.