From: <ro...@us...> - 2008-02-14 15:29:12
|
Revision: 1710 http://nscldaq.svn.sourceforge.net/nscldaq/?rev=1710&view=rev Author: ron-fox Date: 2008-02-14 07:29:18 -0800 (Thu, 14 Feb 2008) Log Message: ----------- - Integrate spectrodaq buffer status with the readout gui - Find and fix a few interesting host resolution problems with the spectrodaq status beast. Modified Paths: -------------- branches/daqclients-8_0_maint/clients/Stager/Experiment.tcl branches/daqclients-8_0_maint/clients/Stager/Makefile.am branches/daqclients-8_0_maint/clients/Stager/ReadoutGui.tcl Added Paths: ----------- branches/daqclients-8_0_maint/clients/Stager/Monitor.tcl Modified: branches/daqclients-8_0_maint/clients/Stager/Experiment.tcl =================================================================== --- branches/daqclients-8_0_maint/clients/Stager/Experiment.tcl 2008-02-14 12:19:21 UTC (rev 1709) +++ branches/daqclients-8_0_maint/clients/Stager/Experiment.tcl 2008-02-14 15:29:18 UTC (rev 1710) @@ -23,6 +23,7 @@ package require ExpFileSystem package require ReadoutControl package require InstallRoot +package require ReadoutGui namespace eval Experiment { variable ftpLoghost @@ -32,6 +33,7 @@ variable EventFilePath variable EventlogPid 0 + proc SetFtpLogInfo {host passwd} { variable ftpLoghost variable ftpLogpasswd @@ -41,7 +43,12 @@ } proc SetSourceHost {host} { variable SourceURL + set SourceURL tcp://$host:2602/ + + if {[winfo exists $ReadoutGui::monitor]} { + $ReadoutGUI::monitor config -host $host + } } # # Biggest run returns the number of the biggest run number Modified: branches/daqclients-8_0_maint/clients/Stager/Makefile.am =================================================================== --- branches/daqclients-8_0_maint/clients/Stager/Makefile.am 2008-02-14 12:19:21 UTC (rev 1709) +++ branches/daqclients-8_0_maint/clients/Stager/Makefile.am 2008-02-14 15:29:18 UTC (rev 1710) @@ -38,7 +38,8 @@ directories.tcl \ rsh.tcl \ warning.tcl \ - installpkg + installpkg \ + Monitor.tcl bin_PROGRAMS = SecretTk Added: branches/daqclients-8_0_maint/clients/Stager/Monitor.tcl =================================================================== --- branches/daqclients-8_0_maint/clients/Stager/Monitor.tcl (rev 0) +++ branches/daqclients-8_0_maint/clients/Stager/Monitor.tcl 2008-02-14 15:29:18 UTC (rev 1710) @@ -0,0 +1,156 @@ +# This software is Copyright by the Board of Trustees of Michigan +# State University (c) Copyright 2005. +# +# You may use this software under the terms of the GNU public license +# (GPL). The terms of this license are described at: +# +# http://www.gnu.org/licenses/gpl.txt +# +# Author: +# Ron Fox +# NSCL +# Michigan State University +# East Lansing, MI 48824-1321 + + + +# This file contains code that manages a status display of the +# spectrodaq page usage for the readout GUI. We look like +# pair of megawidgets, but only the spdaqMonitor widget should be +# used as it has a button that will bring up the spdaqUsage widget. +# + +package provide spdaqMonitor 1.0 +package require snit +package require spdaqwidgets + + +#-------------------------------------------------------------------- +# +# This widget provides a detailed status widget in a toplevel +# with some titling information, and a dimsiss box. +# dismiss and destruction of the toplevel will invoke a -destroy +# callback if defined. +# +snit::widget detailsMonitor { + hulltype toplevel + + variable afterId -1 + + option -host localhost + option -destroy {} + + constructor args { + message $win.legend -width 512 \ + -text { +The bar graphs to the right of node names are spectrodaq free +page graphs. If they are yellow, the free page count is getting +a bit low. If they are red or nonexistent, the free page count +is very low and you may have a problem. + +Below each node may appear a list of numbers and blue bargraphs. +The numbers are process ids of clients running in that node. +The bargraphs are graphs of the pages that are held by that +client. If you have a node in the red and a client whose +bar graph is pegged, you probably have a problem with that client.} + + spdaqwidgets::bufferusage $win.usage -host $options(-host) + button $win.destroy -text Dismiss -command [mymethod onDismiss] + + bind $win <Destroy> [mymethod onDestroy %W] + + grid $win.legend + grid $win.usage + grid $win.destroy + + $self configurelist $args + + $self update + + } + + destructor { + if {$afterId > 0} { + after cancel $afterId + } + } + + + method update {} { + $win.usage update + set afterId [after 2000 [mymethod update]] + } + method onDismiss {} { + destroy $win + } + method onDestroy widget { + if {$widget eq $win} { + if {$options(-destroy) ne ""} { + eval $options(-destroy) + } + } + } + onconfigure -host host { + set options(-host) $host + $win.usage configure -host $host + } +} + + +#-------------------------------------------------------------------- +# +# This widget provides a spectrodaq status strip. The strip +# consists of some text that describes the source host +# a freepage graph of that host and a button that will +# bring up the detailed status widget. The widget +# auto updates every 2 seconds or so. +# +snit::widget spdaqMonitor { + variable afterId -1 + variable details false + + option -host localhost + + + constructor args { + label $win.host -text $options(-host) + label $win.text -text " spectrodaq free pages: " + spdaqwidgets::freepagegraph $win.pages -host $options(-host) + button $win.details -text {Details...} -command [mymethod showDetails] + + $self configurelist $args + $self update + + grid $win.host $win.text $win.pages $win.details -padx 3 + } + + destructor { + if {$afterId > 0} { + after cancel $afterId + } + } + + onconfigure -host host { + $win.host config -text $host + $win.pages configure -host $host + if {$details} { + .spdaqdetails configure -host $host + } + set options(-host) $host + } + method update {} { + $win.pages update + set afterId [after 2000 [mymethod update]] + } + method showDetails {} { + if {$details} { + destroy .spdaqdetails + } + detailsMonitor .spdaqdetails -host $options(-host) -destroy [mymethod onDetailsGone] + set details true + } + method onDetailsGone {} { + set details false + } + +} Modified: branches/daqclients-8_0_maint/clients/Stager/ReadoutGui.tcl =================================================================== --- branches/daqclients-8_0_maint/clients/Stager/ReadoutGui.tcl 2008-02-14 12:19:21 UTC (rev 1709) +++ branches/daqclients-8_0_maint/clients/Stager/ReadoutGui.tcl 2008-02-14 15:29:18 UTC (rev 1710) @@ -298,7 +298,6 @@ # Revision 3.6 2004/11/08 17:31:41 ron-fox # mainline # -# Revision 3.2.4.3 2004/07/22 14:05:10 ron-fox # Add a validator to ensure that run numbers are actually numbers # otherwise the status line can blow up trying to format a textual # run number into the filenames it looks for. @@ -346,7 +345,9 @@ variable PauseButton variable RecordToggle variable RunStartedTime + variable monitor [list] + # Run number entry edit validation proc. # This procedure ensures that any edit string # inserted will be entirely numeric. @@ -757,10 +758,13 @@ # Called to do an emergency exit if the window is being destroyed. # We don't get to confirm this alas. # - proc EmergencyExit {} { - ReadoutControl::SetOnExit ReadoutGui::NoOp - ReadoutControl::ExitReadoutProgram + proc EmergencyExit {widget Top} { + if {$widget eq $Top} { + ReadoutControl::SetOnExit ReadoutGui::NoOp + ReadoutControl::ExitReadoutProgram + } + # Exit will happen automatically. } # @@ -1059,13 +1063,12 @@ if {$topname != "."} { set toplevelname $topname toplevel $toplevelname - bind $toplevelname <Destroy> EmergencyExit } else { set toplevelname "" - bind . <Destroy> EmergencyExit } wm title $topname "Run Control" + # # Build the program frame: # @@ -1144,7 +1147,16 @@ pack $rctlframe.output -side left -fill x pack $rctlframe.scrollbar -side right -fill y pack $toplevelname.evstatusline -side top -fill x + + # Here we are going to put in a status line for spectrodaq. # + + package require spdaqMonitor + set ReadoutGui::monitor [spdaqMonitor $toplevelname.spdaqmonitor] + pack $toplevelname.spdaqmonitor -side top -fill x + + + # # build the menubar`: # set menubar [menu $toplevelname.menubar -tearoff 0] @@ -1217,6 +1229,7 @@ ReadoutControl::SetOnExit "ReadoutGui::ReadoutExited" ReadoutControl::SetOnCommand "ReadoutGui::RdoCommand" + bind $topname <Destroy> [list ::ReadoutGui::EmergencyExit %W $topname] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |