From: <ro...@us...> - 2007-11-26 19:09:09
|
Revision: 1441 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1441&view=rev Author: ron-fox Date: 2007-11-26 11:09:12 -0800 (Mon, 26 Nov 2007) Log Message: ----------- BZ 327 - Fix those issues. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/TreeParam/CTreeParameter.cpp trunk/SpecTcl/TreeParam/ParameterManipulator.tcl trunk/SpecTcl/radware/CRWWrite.cpp Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2007-11-26 18:45:49 UTC (rev 1440) +++ trunk/SpecTcl/CHANGELOG 2007-11-26 19:09:12 UTC (rev 1441) @@ -717,4 +717,6 @@ - added version specific daq locations to search path for spectcldaq (gui). -November 6, 2007 - Convert to svn repository \ No newline at end of file +November 6, 2007 - Convert to svn repository +November 26, 2007 - BZ 327 - Fix multicolored monster problems with changing spectra + in resopnse to tree parameter range changes. \ No newline at end of file Modified: trunk/SpecTcl/TreeParam/CTreeParameter.cpp =================================================================== --- trunk/SpecTcl/TreeParam/CTreeParameter.cpp 2007-11-26 18:45:49 UTC (rev 1440) +++ trunk/SpecTcl/TreeParam/CTreeParameter.cpp 2007-11-26 19:09:12 UTC (rev 1441) @@ -935,7 +935,7 @@ void CTreeParameter::setUnit(string units) { - m_sUnits = units; + m_sUnits = units.c_str(); // Force a copy to prevent string pooling. m_fDefinitionChanged = true; } Modified: trunk/SpecTcl/TreeParam/ParameterManipulator.tcl =================================================================== --- trunk/SpecTcl/TreeParam/ParameterManipulator.tcl 2007-11-26 18:45:49 UTC (rev 1440) +++ trunk/SpecTcl/TreeParam/ParameterManipulator.tcl 2007-11-26 19:09:12 UTC (rev 1441) @@ -1,7 +1,8 @@ # (C) Copyright Michigan State University 2019, All rights reserved # ParameterManipulator.tcl -# Author: D. Bazin -# Date: July 2001 - Modified September 2002 +# Author: D. Bazin, R. Fox +# Date: July 2001 - see svn revision history for full modification history. +# # Version 1.2 - November 2003 proc SetupParameterManipulator {parent} { @@ -26,7 +27,6 @@ label $mod.labelname -text Name -background $modcolor label $mod.labelstart -text Low -background $modcolor label $mod.labelstop -text High -background $modcolor -# label $mod.labelinc -text Increment -background $modcolor label $mod.labelunit -text Unit -background $modcolor checkbutton $mod.array -text "Array" -variable parameter(Array) -background $modcolor grid $mod.parameter $mod.labelname $mod.labelstart $mod.labelstop $mod.labelunit x $mod.array - -sticky news @@ -52,14 +52,10 @@ set modcolor lightblue set mod $topp.modify -# menubutton $mod.parameter$id -width 8 -text Parameter -background $modcolor -# GenerateTreeMenu $mod.parameter$id "MenuLoadParameter $id" -# GenerateTreeMenu $mod.parameter$id "set parameter(Name$id)" radiobutton $mod.select$id -width 8 -text "" -variable parameter(select) -value $id -bg $modcolor entry $mod.labelparameter$id -textvariable parameter(Name$id) -background $modcolor entry $mod.start$id -width 8 -textvariable parameter(Start$id) -background $modcolor entry $mod.stop$id -width 8 -textvariable parameter(Stop$id) -background $modcolor -# entry $mod.inc$id -width 8 -textvariable parameter(Inc$id) -background $modcolor entry $mod.unit$id -width 6 -textvariable parameter(Unit$id) -background $modcolor button $mod.set$id -text Set -command "SetParameter $id" -background $modcolor button $mod.load$id -text Load -command "LoadParameter $id" -background $modcolor @@ -67,23 +63,9 @@ grid $mod.select$id $mod.labelparameter$id $mod.start$id $mod.stop$id $mod.unit$id \ $mod.load$id $mod.set$id $mod.change$id -sticky news -# trace variable parameter(Start$id) w "SetParameterStopInc $id" -# trace variable parameter(Stop$id) w "SetParameterStopInc $id" -# trace variable parameter(Inc$id) w "SetParameterStopInc $id" + } -#proc SetParameterStopInc {id name1 name2 op} { -# global topp parameter -# if {[string equal [focus -displayof $topp] $topp.modify$id.stop]} { -# set parameter(Inc$id) [expr ($parameter(Stop$id) - $parameter(Start$id)) / ($parameter(Bins$id) - 1.0)] -# } elseif {[string equal [focus -displayof $topp] $topp.modify$id.start]} { -# set parameter(Inc$id) [expr ($parameter(Stop$id) - $parameter(Start$id)) / ($parameter(Bins$id) - 1.0)] -# } elseif {[string equal [focus -displayof $topp] $topp.modify$id.inc]} { -# set parameter(Stop$id) [expr $parameter(Start$id) + $parameter(Inc$id) * ($parameter(Bins$id) - 1.0)] -# } elseif {[string equal [focus -displayof $topp] $topp.modify$id.bins]} { -# set parameter(Inc$id) [expr ($parameter(Stop$id) - $parameter(Start$id)) / ($parameter(Bins$id) - 1.0)] -# } -#} proc SetParameter {id} { global parameter @@ -93,8 +75,8 @@ global spectrumLowY spectrumHighY spectrumBinsY spectrumUnitY if {$parameter(Array) && [IsParameterArray $id]} { foreach p [ListParameterArray $id] { - treeparameter -setunit $p $parameter(Unit$id) - treeparameter -setlimits $p $parameter(Start$id) $parameter(Stop$id) + treeparameter -setunit $p $parameter(Unit$id) + treeparameter -setlimits $p $parameter(Start$id) $parameter(Stop$id) } UpdateTreeParameters } else { @@ -102,17 +84,14 @@ treeparameter -setlimits $parameter(Name$id) $parameter(Start$id) $parameter(Stop$id) UpdateTreeParameter $parameter(Name$id) } -# set spectrumInfoX [GetParameterInfo $spectrumParameterX] -# set spectrumInfoY [GetParameterInfo $spectrumParameterY] set spectrumLowX [GetParameterLow $spectrumParameterX] set spectrumHighX [GetParameterHigh $spectrumParameterX] -# set spectrumBinsX [GetParameterBins $spectrumParameterX] set spectrumUnitX [GetParameterUnit $spectrumParameterX] set spectrumLowY [GetParameterLow $spectrumParameterY] set spectrumHighY [GetParameterHigh $spectrumParameterY] set spectrumBinsY [GetParameterBins $spectrumParameterY] set spectrumUnitY [GetParameterUnit $spectrumParameterY] - Modified + Modified } proc IsParameterArray {id} { @@ -136,64 +115,221 @@ } return $pList } +# +# changeAxisLimits +# Given a spectrum axis definition (could be more than one axis def +# modifes one of the axis definitions to have a new low/high value. +# +# Parameters: +# axes - Old axis definitions. +# which - Which axis to change. +# low - new low value +# high - new high value +# Returns: +# new axis definitions. +# +proc changeAxisLimits {axes which low high} { + set axis [lindex $axes $which] + set axis [lreplace $axis 0 1 $low $high] + set axes [lreplace $axes $which $which $axis] + return $axes +} + +# +# Change the definition of a spectrum after a dependent parameter +# has been modified. What this should mean is that for every parameter +# that has been modified (remember you can modify an array of parameters), +# Spectra that depend on at least one of those parameters will be re-created +# with axis specifications for the modified parameters modifed to reflect the +# parameter's new low/high limits (same number of channels as before I'm presuming). +# +# Parameters: +# id - The id of the parameter that has been modified. +# Implicit inputs: +# SpecTcl parameter list, +# parameter(Array) is true if the array checkbox is lit indicating +# the base of the parameter should be treated as an +# array for which all parameters must be changed. +# proc ChangeSpectra {id} { - global parameter - set theList [spectrum -list] - set sList "" - set nList "" - foreach s $theList { - set sName [lindex $s 1] - set parList [lindex $s 3] - if {$parameter(Array) && [IsParameterArray $id]} { - foreach p [ListParameterArray $id] { - if {[lsearch $parList $p] != -1} { - lappend sList $sName - lappend nList [lsearch $parList $p] - break - } + global parameter + set theList [spectrum -list] + set sList "" + set nList "" + # Create the list of parameters that will be modified: + # + + if {$parameter(Array) && [IsParameterArray $id]} { + set parameterList [ListParameterArray $id] + } else { + set parameterList $parameter(Name$id) + } + foreach s $theList { + set sName [lindex $s 1] + set parList [lindex $s 3] + foreach p $parameterList { + if {[lsearch $parList $p] != -1} { + lappend sList $sName + break + } + } + } + + + # + # At this point, slist is the list of spectra that will be changed if the + # user confirms. + + + set response [tk_messageBox -icon warning -type yesno -parent .gui\ + -message "The following spectra will be erased and replaced:\n$sList\nDo you wish to continue?"] + if {[string equal $response no]} { + return + } + + # Iterate through sList and modify each spectrum according to the type + # and set of parameters that match. + # There are several sorts of spectra: + # Spectra for which the parameter index indicates the axis index to modify + # (1-d, 2-d) + # Spectra that don't get modified at all: + # Currently only the strip chart. + # Spectra where if there is any parameter match, all axes are modified: + # g1, g2, s + # Spectra that have to be handled specially: + # m2, gd, b + # + + foreach spectrum $sList { + set definition [lindex [spectrum -list $spectrum] 0]; + set name [lindex $definition 1] + set type [lindex $definition 2] + set parameters [lindex $definition 3] + set axes [lindex $definition 4] + set dataType [lindex $definition 5] + + switch -exact -- $type { + 1 - 2 { + # The index of the parameter match defines which axis is modified. + # both axes could conceivably change! + foreach p $parameterList { + set which [lsearch -exact $parameters $p] + if {$which >= 0} { + set parameterDef [lindex [treeparameter -list $p] 0] + set low [lindex $parameterDef 2] + set high [lindex $parameterDef 3] + set axes [changeAxisLimits $axes $which $low $high] + + } + } + } + g1 - g2 - s { + # For the first match, all axes are changed. + # all axes will change, first match is ok because if its an array parameter set, + # all parmeters will get the same limits + # + set axisCount [llength $axes] + foreach p $parameterList { + set which [lsearch -exact $parameters $p] + if {$which >= 0} { + set parameterDef [lindex [treeparameter -list $p] 0] + set low [lindex $parameterDef 2] + set high [lindex $parameterDef 3] + + # Change all axes: + + for {set i 0} {$i < $axisCount} {incr i} { + set axes [changeAxisLimits $axes $i $low $high] } - } else { - if {[lsearch $parList $parameter(Name$id)] != -1} { - lappend sList $sName - lappend nList [lsearch $parList $parameter(Name$id)] - } + break + } } - } - set response [tk_messageBox -icon warning -type yesno -parent .gui\ - -message "The following spectra will be erased and replaced:\n$sList\nDo you wish to continue?"] - if {[string equal $response no]} { - return - } - SetParameter $id - set index 0 - foreach s $sList { - set ss [spectrum -list $s] - set sType [lindex $ss 2] - set sParam [lindex $ss 3] - set sReso [lindex $ss 4] - set sData [lindex $ss 5] - set sNew "" - for {set i 0} {$i < [llength $sReso]} {incr i} { - if {$i == [lindex $nList $index]} { - set bins [lindex [lindex $sReso $i] 2] - lappend sNew [list $parameter(Start$id) $parameter(Stop$id) $bins] + } + m2 { + # The parameter list are x/y pairs. Therefore + # we go for all matches, even matches modify the x axis + # odd matches the y. + + foreach p $parameterList { + set which [lsearch -exact $parameters $p] + if {$which >= 0} { + set axis [expr {$which % 2}]; # 0 or 1... + set parameterDef [lindex [treeparameter -list $p] 0] + set low [lindex $parameterDef 2] + set high [lindex $parameterDef 3] + set axes [changeAxisLimits $axes $axis $low $high] + } + } + } + gd { + # Gamma deluxe: This has two lists of parameters. + # matches in the first list change x. + # matches in the second list change y. + + set xParameters [lindex $parameters 0] + set yParameters [lindex $parameters 1] + foreach p $parameterList { + set which [lsearch -exact $xParameters $p] + if {$which >= 0} { + set parameterDef [lindex [treeparameter -list $p] 0] + set low [lindex $parameterDef 2] + set high [lindex $parameterDef 3] + set axes [changeAxisLimits $axes 0 $low $high] + } + + set which [lsearch -exact $yParameters $p] + if {$which >= 0} { + set parameterDef [lindex [treeparameter -list $p] 0] + set low [lindex $parameterDef 2] + set high [lindex $parameterDef 3] + set axes [changeAxisLimits $axes 1 $low $high] + } + + } + } + b { + # Bitmask spectrum. The low/high are determined by the + # log2 of the low/high values.. e.g. + # a range of 4 - 32 gives a spectrum range of + # 2-5 can't take the log of <= 0, those are mapped to 0. + # + # we use log2(x) = loge(x)/loge(2) + # non integer weirdness is truncated on the low end and incremented on the high end + # + foreach p $parameterList { + set which [lsearch -exact $parameters $p] + if {$which == 0} { + set parameterDef [lindex [treeparameter -list $p] 0] + set low [lindex $parameterDef 2] + set high [lindex $parameterDef 3] + if {$low <= 0} { + set low 0 } else { - lappend sNew [lindex $sReso $i] + set low [expr {int(log($low)/log(2))}] } + if {$high <= 0} { + set high 0 + } else { + set high [expr {int(ceil(log($high)/log(2)))}] + } + set axes [changeAxisLimits $axes 0 $low $high] + break + } } - set gate [lindex [lindex [lindex [apply -list $s] 0] 1] 0] - spectrum -delete $s - spectrum $s $sType $sParam $sNew $sData - if {![string equal $gate -TRUE-]} { - apply $gate $s - } - puts "Spectrum $s replaced" - incr index + } } - UpdateSpectrumList - sbind -all - Modified + # Set the new spectrum definition: + + spectrum -delete $name + spectrum $name $type $parameters $axes $dataType + + } + + + UpdateSpectrumList + sbind -all + Modified } proc LoadParameter {id} { @@ -219,15 +355,3 @@ set parameter(Unit$id) [lindex $p 5] } -#proc MenuLoadParameter {id par} { -# global parameter -# set p [lindex [treeparameter -list $par] 0] -# set parameter(Name$id) [lindex $p 0] -# set parameter(Start$id) [lindex $p 2] -# set parameter(Stop$id) [lindex $p 3] -# set parameter(Unit$id) [lindex $p 5] -#} - -#proc GeneratePseudoParameter {parameter} { -# puts $parameter -#} Modified: trunk/SpecTcl/radware/CRWWrite.cpp =================================================================== --- trunk/SpecTcl/radware/CRWWrite.cpp 2007-11-26 18:45:49 UTC (rev 1440) +++ trunk/SpecTcl/radware/CRWWrite.cpp 2007-11-26 19:09:12 UTC (rev 1441) @@ -32,7 +32,7 @@ Instantiate us... our command will just be rwwrite. */ CRWWrite::CRWWrite(CTCLInterpreter& interp) : - CTCLObjectProcessor(interp, string("rwwrite")) + CTCLObjectProcessor(interp, string("RDWwrite")) {} /*! This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2007-12-04 11:53:36
|
Revision: 1442 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1442&view=rev Author: ron-fox Date: 2007-12-04 03:53:40 -0800 (Tue, 04 Dec 2007) Log Message: ----------- Change Usage so that it reflects that the command is now called 'calibrationfit' not fit, so that it will not override the 'fit' command that fits spectra. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/calibratedparams/CFitCommand.cpp Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2007-11-26 19:09:12 UTC (rev 1441) +++ trunk/SpecTcl/CHANGELOG 2007-12-04 11:53:40 UTC (rev 1442) @@ -719,4 +719,7 @@ November 6, 2007 - Convert to svn repository November 26, 2007 - BZ 327 - Fix multicolored monster problems with changing spectra - in resopnse to tree parameter range changes. \ No newline at end of file + in resopnse to tree parameter range changes. +December 4,2007 - Correct the Usage member of the calibration fit command so that + it reflects the change in the name of the command. + Modified: trunk/SpecTcl/calibratedparams/CFitCommand.cpp =================================================================== --- trunk/SpecTcl/calibratedparams/CFitCommand.cpp 2007-11-26 19:09:12 UTC (rev 1441) +++ trunk/SpecTcl/calibratedparams/CFitCommand.cpp 2007-12-04 11:53:40 UTC (rev 1442) @@ -774,12 +774,12 @@ CFitCommand::Usage() { string sUsage("Usage:\n"); - sUsage += " fit ?-create? type name\n"; - sUsage += " fit -list ?pattern?\n"; - sUsage += " fit -delete name\n"; - sUsage += " fit -perform name\n"; - sUsage += " fit -add name point1 ?point2...?\n"; - sUsage += " fit -evaluate name x\n"; + sUsage += " calibrationfit ?-create? type name\n"; + sUsage += " calibrationfit -list ?pattern?\n"; + sUsage += " calibrationfit -delete name\n"; + sUsage += " calibrationfit -perform name\n"; + sUsage += " calibrationfit -add name point1 ?point2...?\n"; + sUsage += " calibrationfit -evaluate name x\n"; sUsage += "\n"; sUsage += "Where:\n"; sUsage += " `type' is the type of fit to create (see below)\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2007-12-11 14:50:46
|
Revision: 1443 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1443&view=rev Author: ron-fox Date: 2007-12-11 06:50:50 -0800 (Tue, 11 Dec 2007) Log Message: ----------- Set the binary mimetype. Modified Paths: -------------- trunk/SpecTcl/calibratedparams/CCalibratedParameter.cpp trunk/SpecTcl/calibratedparams/CCalibratedParameterCommand.cpp Property Changed: ---------------- trunk/SpecTcl/Gui/axisicon.gif trunk/SpecTcl/Gui/gateicon.gif trunk/SpecTcl/Gui/pointicon.gif trunk/SpecTcl/Gui/pseudoicon.gif trunk/SpecTcl/Gui/spectrumicon.gif trunk/SpecTcl/Gui/treeparicon.gif trunk/SpecTcl/Gui/treevaricon.gif trunk/SpecTcl/contrib/calibratedparams/tunl-logo-seal.gif trunk/SpecTcl/contrib/treeparam/Documentation/pics/tree.jpg trunk/SpecTcl/contrib/treeparam/Example/s800.gif trunk/SpecTcl/doc/HH00706_.jpg trunk/SpecTcl/doc/Internals/_vti_cnf/hh00706_.jpg trunk/SpecTcl/doc/Internals/_vti_cnf/histog1.gif trunk/SpecTcl/doc/Internals/_vti_cnf/nscl_logo_small.gif trunk/SpecTcl/doc/Internals/hh00706_.jpg trunk/SpecTcl/doc/Internals/histog1.gif trunk/SpecTcl/doc/Internals/nscl_logo_small.gif trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/_vti_cnf/hh00706_.jpg trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/_vti_cnf/nscl_logo_small.gif trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/hh00706_.jpg trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/nscl_logo_small.gif trunk/SpecTcl/doc/_vti_cnf/HH00706_.jpg trunk/SpecTcl/doc/_vti_cnf/nscl_logo_small.gif trunk/SpecTcl/doc/hh00706_.jpg trunk/SpecTcl/doc/images/HH00706_.jpg trunk/SpecTcl/doc/images/_vti_cnf/checkbox51.gif trunk/SpecTcl/doc/images/_vti_cnf/gate.h1.gif trunk/SpecTcl/doc/images/_vti_cnf/hh00706_.jpg trunk/SpecTcl/doc/images/_vti_cnf/histog2.gif trunk/SpecTcl/doc/images/_vti_cnf/nscl_logo_small.gif trunk/SpecTcl/doc/images/_vti_cnf/undercon.gif trunk/SpecTcl/doc/images/bd21301_.gif trunk/SpecTcl/doc/images/checkbox51.gif trunk/SpecTcl/doc/images/gate.h1.gif trunk/SpecTcl/doc/images/hh00706_.jpg trunk/SpecTcl/doc/images/histog2.gif trunk/SpecTcl/doc/images/nscl_logo_small.gif trunk/SpecTcl/doc/images/undercon.gif trunk/SpecTcl/doc/nscl_logo_small.gif trunk/SpecTcl/doc/tailoring/images/_vti_cnf/spectc1.jpg trunk/SpecTcl/doc/tailoring/images/_vti_cnf/spectc2.jpg trunk/SpecTcl/doc/tailoring/images/spectc1.jpg trunk/SpecTcl/doc/tailoring/images/spectc2.jpg trunk/SpecTcl/doc/tailoring/samplecode/HH00706_.jpg trunk/SpecTcl/doc/tailoring/samplecode/nscl_logo_small.gif trunk/SpecTcl/doc/treeparam/TreeParameter_files/image001.jpg trunk/SpecTcl/doc/treeparam/TreeParameter_files/image003.jpg trunk/SpecTcl/doc/treeparam/TreeParameter_files/image013.jpg trunk/SpecTcl/doc/treeparam/TreeParameter_files/image015.jpg trunk/SpecTcl/gri-2.12.7/doc/resources/bottom_banner.gif trunk/SpecTcl/gri-2.12.7/doc/resources/math_symbols.gif trunk/SpecTcl/gri-2.12.7/doc/resources/pixel.gif trunk/SpecTcl/gri-2.12.7/doc/resources/sm_bg.gif trunk/SpecTcl/gri-2.12.7/doc/resources/symbols.gif trunk/SpecTcl/gri-2.12.7/doc/resources/top_banner.gif trunk/SpecTcl/gri-2.12.7/grilogo.gif Property changes on: trunk/SpecTcl/Gui/axisicon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/Gui/gateicon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/Gui/pointicon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/Gui/pseudoicon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/Gui/spectrumicon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/Gui/treeparicon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/Gui/treevaricon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/SpecTcl/calibratedparams/CCalibratedParameter.cpp =================================================================== --- trunk/SpecTcl/calibratedparams/CCalibratedParameter.cpp 2007-12-04 11:53:40 UTC (rev 1442) +++ trunk/SpecTcl/calibratedparams/CCalibratedParameter.cpp 2007-12-11 14:50:50 UTC (rev 1443) @@ -34,7 +34,7 @@ \post The target parameter id member is positive. */ CCalibratedParameter::CCalibratedParameter (int nTargetId, int nRawId, - string sFitName, CFit* pFit) + string sFitName, CFit* pFit) : m_nParameterId(nRawId), m_nTargetParameterId(nTargetId), m_sFitName(sFitName), Modified: trunk/SpecTcl/calibratedparams/CCalibratedParameterCommand.cpp =================================================================== --- trunk/SpecTcl/calibratedparams/CCalibratedParameterCommand.cpp 2007-12-04 11:53:40 UTC (rev 1442) +++ trunk/SpecTcl/calibratedparams/CCalibratedParameterCommand.cpp 2007-12-11 14:50:50 UTC (rev 1443) @@ -606,8 +606,8 @@ */ int CCalibratedParameterCommand::Create(string& Result, string name, - int id, string raw, string fitname, - string units) + int id, string raw, string fitname, + string units) { // The calibrated parameter must not exist // this could happen if the user deleted the target param Property changes on: trunk/SpecTcl/contrib/calibratedparams/tunl-logo-seal.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/contrib/treeparam/Documentation/pics/tree.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/contrib/treeparam/Example/s800.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/HH00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/Internals/_vti_cnf/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/Internals/_vti_cnf/histog1.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/Internals/_vti_cnf/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/Internals/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/Internals/histog1.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/Internals/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/_vti_cnf/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/_vti_cnf/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/_sharedtemplates/pages/spectcl.tem/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/_vti_cnf/HH00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/_vti_cnf/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/HH00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/_vti_cnf/checkbox51.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/_vti_cnf/gate.h1.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/_vti_cnf/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/_vti_cnf/histog2.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/_vti_cnf/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/_vti_cnf/undercon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/bd21301_.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/checkbox51.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/gate.h1.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/hh00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/histog2.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/images/undercon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/tailoring/images/_vti_cnf/spectc1.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/tailoring/images/_vti_cnf/spectc2.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/tailoring/images/spectc1.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/tailoring/images/spectc2.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/tailoring/samplecode/HH00706_.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/tailoring/samplecode/nscl_logo_small.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/treeparam/TreeParameter_files/image001.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/treeparam/TreeParameter_files/image003.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/treeparam/TreeParameter_files/image013.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/doc/treeparam/TreeParameter_files/image015.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/doc/resources/bottom_banner.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/doc/resources/math_symbols.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/doc/resources/pixel.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/doc/resources/sm_bg.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/doc/resources/symbols.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/doc/resources/top_banner.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Property changes on: trunk/SpecTcl/gri-2.12.7/grilogo.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2007-12-27 15:35:35
|
Revision: 1457 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1457&view=rev Author: ron-fox Date: 2007-12-27 07:35:38 -0800 (Thu, 27 Dec 2007) Log Message: ----------- Misc 64 bit cleanups. Modified Paths: -------------- trunk/SpecTcl/Display/colorset.cc trunk/SpecTcl/calibratedparams/Makefile.am Modified: trunk/SpecTcl/Display/colorset.cc =================================================================== --- trunk/SpecTcl/Display/colorset.cc 2007-12-27 15:35:21 UTC (rev 1456) +++ trunk/SpecTcl/Display/colorset.cc 2007-12-27 15:35:38 UTC (rev 1457) @@ -1399,7 +1399,7 @@ */ void pb_callback(XMWidget *wid, XtPointer cli, XtPointer cbd) { - int button_number = (int)cli; + lonb button_number = (long)cli; XMPushButton *help; static color_entry *entry; Modified: trunk/SpecTcl/calibratedparams/Makefile.am =================================================================== --- trunk/SpecTcl/calibratedparams/Makefile.am 2007-12-27 15:35:21 UTC (rev 1456) +++ trunk/SpecTcl/calibratedparams/Makefile.am 2007-12-27 15:35:38 UTC (rev 1457) @@ -37,7 +37,12 @@ CLinearFit.h +EXTRA_DIST = CalibIOGUI.tcl Dialogs.tcl gui.tcl TkPrompt.tcl \ + CalibIO.tcl ErrorRead.tcl packages.tcl \ + CalibrateMainGui.tcl FitIO.tcl PeakStatistics.tcl \ + CalibrationPoints.tcl GlobalData.tcl + # Install myself in $(prefix)/TclLibs/calibration install-exec-local: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-03 14:27:06
|
Revision: 1461 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1461&view=rev Author: ron-fox Date: 2008-01-03 06:26:32 -0800 (Thu, 03 Jan 2008) Log Message: ----------- 1. Make a bit more of an effort to ensure that dialogs get popped to the front on a Show (no real effect though). 2. Install the splash license to comply with its terms. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Display/XMDialogs.cc trunk/SpecTcl/splash/Makefile.am Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2007-12-28 20:41:07 UTC (rev 1460) +++ trunk/SpecTcl/CHANGELOG 2008-01-03 14:26:32 UTC (rev 1461) @@ -723,3 +723,5 @@ December 4,2007 - Correct the Usage member of the calibration fit command so that it reflects the change in the name of the command. +January 3, 2008 - Install splash/license.terms -> $(prefix)/splash.license + to comply with its license terms. Modified: trunk/SpecTcl/Display/XMDialogs.cc =================================================================== --- trunk/SpecTcl/Display/XMDialogs.cc 2007-12-28 20:41:07 UTC (rev 1460) +++ trunk/SpecTcl/Display/XMDialogs.cc 2008-01-03 14:26:32 UTC (rev 1461) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + static const char* Copyright = "(C) Copyright Michigan State University 1994, All rights reserved"; /* ** Facility: @@ -1918,7 +1657,11 @@ XMMessageBox::Show() { Manage(); - XtPopup(XtParent(id), XtGrabNone); + Widget shell = XtParent(id); + XtPopup(shell, XtGrabNone); + Window w = XtWindow(shell); + Display* d = XtDisplay(shell); + XRaiseWindow(d,w); } void Modified: trunk/SpecTcl/splash/Makefile.am =================================================================== --- trunk/SpecTcl/splash/Makefile.am 2007-12-28 20:41:07 UTC (rev 1460) +++ trunk/SpecTcl/splash/Makefile.am 2008-01-03 14:26:32 UTC (rev 1461) @@ -2,6 +2,7 @@ $(mkinstalldirs) $(prefix)/TclLibs $(mkinstalldirs) $(prefix)/TclLibs/splash $(INSTALL_SCRIPT) *.tcl $(prefix)/TclLibs/splash + $(INSTALL_DATA) license.terms $(prefix)/splash.license EXTRA_DIST = pkgIndex.tcl splash.tcl This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-03 20:49:38
|
Revision: 1467 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1467&view=rev Author: ron-fox Date: 2008-01-03 12:49:26 -0800 (Thu, 03 Jan 2008) Log Message: ----------- Start 3.2-pre5 note that depending on progress, this may change to 3.2-001 mid development. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/configure.in Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-03 20:47:44 UTC (rev 1466) +++ trunk/SpecTcl/CHANGELOG 2008-01-03 20:49:26 UTC (rev 1467) @@ -725,3 +725,6 @@ January 3, 2008 - Install splash/license.terms -> $(prefix)/splash.license to comply with its license terms. +Finalized Pre-release 4 January 3, 2008 + +Start edit level 3.2-pre5 (may change to 3.2-001 midstream.. watch the log below). \ No newline at end of file Modified: trunk/SpecTcl/configure.in =================================================================== --- trunk/SpecTcl/configure.in 2008-01-03 20:47:44 UTC (rev 1466) +++ trunk/SpecTcl/configure.in 2008-01-03 20:49:26 UTC (rev 1467) @@ -4,7 +4,7 @@ AC_CONFIG_AUX_DIR(config) AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST -AM_INIT_AUTOMAKE(SpecTcl, 3.2-pre4) +AM_INIT_AUTOMAKE(SpecTcl, 3.2-pre5) AC_EXEEXT This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-07 17:08:19
|
Revision: 1468 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1468&view=rev Author: ron-fox Date: 2008-01-07 09:08:15 -0800 (Mon, 07 Jan 2008) Log Message: ----------- Ensure the splash license file is in the tarball. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/splash/Makefile.am Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-03 20:49:26 UTC (rev 1467) +++ trunk/SpecTcl/CHANGELOG 2008-01-07 17:08:15 UTC (rev 1468) @@ -727,4 +727,5 @@ to comply with its license terms. Finalized Pre-release 4 January 3, 2008 -Start edit level 3.2-pre5 (may change to 3.2-001 midstream.. watch the log below). \ No newline at end of file +Start edit level 3.2-pre5 (may change to 3.2-001 midstream.. watch the log below). +January 7, 2008 - Fixed include license.terms in the build. \ No newline at end of file Modified: trunk/SpecTcl/splash/Makefile.am =================================================================== --- trunk/SpecTcl/splash/Makefile.am 2008-01-03 20:49:26 UTC (rev 1467) +++ trunk/SpecTcl/splash/Makefile.am 2008-01-07 17:08:15 UTC (rev 1468) @@ -4,5 +4,5 @@ $(INSTALL_SCRIPT) *.tcl $(prefix)/TclLibs/splash $(INSTALL_DATA) license.terms $(prefix)/splash.license -EXTRA_DIST = pkgIndex.tcl splash.tcl +EXTRA_DIST = pkgIndex.tcl splash.tcl license.terms This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-07 18:17:12
|
Revision: 1469 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1469&view=rev Author: ron-fox Date: 2008-01-07 10:17:14 -0800 (Mon, 07 Jan 2008) Log Message: ----------- Only set the buffersize for the attachpipe widget in the GUI after the size subwidget has been created. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Gui/datasource.tcl Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-07 17:08:15 UTC (rev 1468) +++ trunk/SpecTcl/CHANGELOG 2008-01-07 18:17:14 UTC (rev 1469) @@ -728,4 +728,7 @@ Finalized Pre-release 4 January 3, 2008 Start edit level 3.2-pre5 (may change to 3.2-001 midstream.. watch the log below). -January 7, 2008 - Fixed include license.terms in the build. \ No newline at end of file +January 7, 2008 - Fixed include license.terms in the build. + - GUI Attach -pipe was failing due to attempts to set + the value of the buffersize widget prior to the creation + of that widget's spinbox. \ No newline at end of file Modified: trunk/SpecTcl/Gui/datasource.tcl =================================================================== --- trunk/SpecTcl/Gui/datasource.tcl 2008-01-07 17:08:15 UTC (rev 1468) +++ trunk/SpecTcl/Gui/datasource.tcl 2008-01-07 18:17:14 UTC (rev 1469) @@ -142,7 +142,8 @@ proc attachPipe {} { attachpipe .attachpipe -initialdir [file dirname $::datasource::lastpipecommand] \ -initialfile $::datasource::lastpipecommand \ - -initialargs $::datasource::lastpipeargs \ + -initialargs $::datasource::lastpipeargs + .attachpipe configure \ -buffersize $::GuiPrefs::preferences(defaultBuffersize) .attachpipe modal This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-10 12:52:56
|
Revision: 1470 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1470&view=rev Author: ron-fox Date: 2008-01-10 04:52:57 -0800 (Thu, 10 Jan 2008) Log Message: ----------- Add ability to determine if a Spectrum requires a parameter. (e.g. summary spectra or gamma spectra don't have any one parameter you can point to and say it's required). Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Sorter/CGammaSpectrum.cpp trunk/SpecTcl/Sorter/CGammaSpectrum.h trunk/SpecTcl/Sorter/Spectrum.cpp trunk/SpecTcl/Sorter/Spectrum.h trunk/SpecTcl/Sorter/SummarySpectrumB.cpp trunk/SpecTcl/Sorter/SummarySpectrumB.h trunk/SpecTcl/Sorter/SummarySpectrumL.cpp trunk/SpecTcl/Sorter/SummarySpectrumL.h trunk/SpecTcl/Sorter/SummarySpectrumW.cpp trunk/SpecTcl/Sorter/SummarySpectrumW.h Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/CHANGELOG 2008-01-10 12:52:57 UTC (rev 1470) @@ -731,4 +731,6 @@ January 7, 2008 - Fixed include license.terms in the build. - GUI Attach -pipe was failing due to attempts to set the value of the buffersize widget prior to the creation - of that widget's spinbox. \ No newline at end of file + of that widget's spinbox. +January 9, 2008 - Add needParameter virtual to CSpectrum class hierarchy. + this is used to know which list spectra belong in. \ No newline at end of file Modified: trunk/SpecTcl/Sorter/CGammaSpectrum.cpp =================================================================== --- trunk/SpecTcl/Sorter/CGammaSpectrum.cpp 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/CGammaSpectrum.cpp 2008-01-10 12:52:57 UTC (rev 1470) @@ -345,3 +345,11 @@ } return kfFALSE; } +/*! + Gamma spectra don't actually need a specific parameter. +*/ +Bool_t +CGammaSpectrum::needParameter() const +{ + return kfFALSE; +} Modified: trunk/SpecTcl/Sorter/CGammaSpectrum.h =================================================================== --- trunk/SpecTcl/Sorter/CGammaSpectrum.h 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/CGammaSpectrum.h 2008-01-10 12:52:57 UTC (rev 1470) @@ -118,6 +118,8 @@ } + virtual Bool_t needParameter() const; + protected: void CreateParameterList(STD(vector)<STD(pair)<UInt_t, Float_t> >& outList, const CEvent& rEvent); Modified: trunk/SpecTcl/Sorter/Spectrum.cpp =================================================================== --- trunk/SpecTcl/Sorter/Spectrum.cpp 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/Spectrum.cpp 2008-01-10 12:52:57 UTC (rev 1470) @@ -640,3 +640,11 @@ } +/*! + By default all spectra need a parameter, and the ones that don't can override this. +*/ +Bool_t +CSpectrum::needParameter() const +{ + return kfTRUE; +} Modified: trunk/SpecTcl/Sorter/Spectrum.h =================================================================== --- trunk/SpecTcl/Sorter/Spectrum.h 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/Spectrum.h 2008-01-10 12:52:57 UTC (rev 1470) @@ -245,8 +245,9 @@ virtual Bool_t CheckGate(const CEvent& rEvent); virtual SpectrumDefinition& GetDefinition() ; - // virtual void GammaGateIncrement(const CEvent& rEvent); + virtual Bool_t needParameter() const; + protected: static Int_t Randomize(Float_t channel); Modified: trunk/SpecTcl/Sorter/SummarySpectrumB.cpp =================================================================== --- trunk/SpecTcl/Sorter/SummarySpectrumB.cpp 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/SummarySpectrumB.cpp 2008-01-10 12:52:57 UTC (rev 1470) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + static const char* Copyright = "(C) Copyright Michigan State University 2008, All rights reserved"; // CSummarySpectrumB.cpp // Encapsulates the prototypical 1-d Spectrum. @@ -663,3 +402,12 @@ } return maps; } +/*! + Summary spectra don't actually need their parameters: + +*/ +Bool_t +CSummarySpectrumB::needParameter() const +{ + return kfFALSE; +} Modified: trunk/SpecTcl/Sorter/SummarySpectrumB.h =================================================================== --- trunk/SpecTcl/Sorter/SummarySpectrumB.h 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/SummarySpectrumB.h 2008-01-10 12:52:57 UTC (rev 1470) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + // CSummarySpectrumW.h: // // This file defines the CSummarySpectrumW class. @@ -436,6 +175,8 @@ virtual void GetParameterIds(STD(vector)<UInt_t>& rvIds); virtual void GetResolutions(STD(vector)<UInt_t>& rvResolutions); virtual CSpectrum::SpectrumDefinition& GetDefinition(); + + virtual Bool_t needParameter() const; // Utility functions. protected: void CreateStorage(); Modified: trunk/SpecTcl/Sorter/SummarySpectrumL.cpp =================================================================== --- trunk/SpecTcl/Sorter/SummarySpectrumL.cpp 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/SummarySpectrumL.cpp 2008-01-10 12:52:57 UTC (rev 1470) @@ -420,3 +420,12 @@ } return maps; } + +/*! + Don't actually need a parameter. +*/ +Bool_t +CSummarySpectrumL::needParameter() const +{ + return kfFALSE; +} Modified: trunk/SpecTcl/Sorter/SummarySpectrumL.h =================================================================== --- trunk/SpecTcl/Sorter/SummarySpectrumL.h 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/SummarySpectrumL.h 2008-01-10 12:52:57 UTC (rev 1470) @@ -153,7 +153,7 @@ virtual void GetParameterIds(STD(vector)<UInt_t>& rvIds); virtual void GetResolutions(STD(vector)<UInt_t>& rvResolutions); virtual CSpectrum::SpectrumDefinition& GetDefinition(); - + virtual Bool_t needParameter() const; // Utility functions. protected: Modified: trunk/SpecTcl/Sorter/SummarySpectrumW.cpp =================================================================== --- trunk/SpecTcl/Sorter/SummarySpectrumW.cpp 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/SummarySpectrumW.cpp 2008-01-10 12:52:57 UTC (rev 1470) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + static const char* Copyright = "(C) Copyright Michigan State University 2008, All rights reserved"; // CSummarySpectrumW.cpp // Encapsulates the prototypical 1-d Spectrum. @@ -665,3 +404,10 @@ } return maps; } + + +Bool_t +CSummarySpectrumW::needParameter() const +{ + return kfFALSE; +} Modified: trunk/SpecTcl/Sorter/SummarySpectrumW.h =================================================================== --- trunk/SpecTcl/Sorter/SummarySpectrumW.h 2008-01-07 18:17:14 UTC (rev 1469) +++ trunk/SpecTcl/Sorter/SummarySpectrumW.h 2008-01-10 12:52:57 UTC (rev 1470) @@ -1,283 +1,19 @@ /* - Gnu GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a who... [truncated message content] |
From: <ro...@us...> - 2008-01-10 14:31:27
|
Revision: 1471 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1471&view=rev Author: ron-fox Date: 2008-01-10 06:31:32 -0800 (Thu, 10 Jan 2008) Log Message: ----------- Some of the overloaded constructors did not initialize axis converters correctly. These were not used by SpecTcl but could be used by people making their own spectra. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Sorter/Spectrum1DL.cpp trunk/SpecTcl/Sorter/Spectrum1DW.cpp trunk/SpecTcl/Sorter/Spectrum2DB.cpp trunk/SpecTcl/Sorter/Spectrum2DW.cpp Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-10 12:52:57 UTC (rev 1470) +++ trunk/SpecTcl/CHANGELOG 2008-01-10 14:31:32 UTC (rev 1471) @@ -733,4 +733,5 @@ the value of the buffersize widget prior to the creation of that widget's spinbox. January 9, 2008 - Add needParameter virtual to CSpectrum class hierarchy. - this is used to know which list spectra belong in. \ No newline at end of file + this is used to know which list spectra belong in. +January 10, 2008 - Fix errors in 1d construction. \ No newline at end of file Modified: trunk/SpecTcl/Sorter/Spectrum1DL.cpp =================================================================== --- trunk/SpecTcl/Sorter/Spectrum1DL.cpp 2008-01-10 12:52:57 UTC (rev 1470) +++ trunk/SpecTcl/Sorter/Spectrum1DL.cpp 2008-01-10 14:31:32 UTC (rev 1471) @@ -86,7 +86,7 @@ CSpectrum(rName, nId, Axes(1, CAxis((Float_t)0.0, (Float_t)(nChannels-1), - nChannels-1, + nChannels, CParameterMapping(rParameter)))), m_nChannels(nChannels), m_nParameter(rParameter.getNumber()) Modified: trunk/SpecTcl/Sorter/Spectrum1DW.cpp =================================================================== --- trunk/SpecTcl/Sorter/Spectrum1DW.cpp 2008-01-10 12:52:57 UTC (rev 1470) +++ trunk/SpecTcl/Sorter/Spectrum1DW.cpp 2008-01-10 14:31:32 UTC (rev 1471) @@ -1,280 +1,20 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' -*/// CSpectrum1DW.cpp +// CSpectrum1DW.cpp // Encapsulates the prototypical 1-d Spectrum. // For the purposes of the functional prototype, // the spectrum is a singly incremented Modified: trunk/SpecTcl/Sorter/Spectrum2DB.cpp =================================================================== --- trunk/SpecTcl/Sorter/Spectrum2DB.cpp 2008-01-10 12:52:57 UTC (rev 1470) +++ trunk/SpecTcl/Sorter/Spectrum2DB.cpp 2008-01-10 14:31:32 UTC (rev 1471) @@ -1,283 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + static const char* Copyright = "(C) Copyright Michigan State University 2008, All rights reserved"; // CSpectrum2DB.cpp // Encapsulates the prototypical 1-d Spectrum. @@ -374,9 +110,9 @@ UInt_t nXScale, UInt_t nYScale) : CSpectrum(rName, nId, CreateAxisVector(rXParameter, - nXScale, 0.0, (Float_t)(nXScale), + nXScale, 0.0, (Float_t)(nXScale-1), rYParameter, - nYScale, 0.0, (Float_t)(nYScale))), + nYScale, 0.0, (Float_t)(nYScale-1))), m_nXScale(nXScale), m_nYScale(nYScale), m_nXParameter(rXParameter.getNumber()), Modified: trunk/SpecTcl/Sorter/Spectrum2DW.cpp =================================================================== --- trunk/SpecTcl/Sorter/Spectrum2DW.cpp 2008-01-10 12:52:57 UTC (rev 1470) +++ trunk/SpecTcl/Sorter/Spectrum2DW.cpp 2008-01-10 14:31:32 UTC (rev 1471) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + static const char* Copyright = "(C) Copyright Michigan State University 2008, All rights reserved"; // CSpectrum2DW.cpp // Encapsulates the prototypical 1-d Spectrum. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-10 18:53:06
|
Revision: 1472 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1472&view=rev Author: ron-fox Date: 2008-01-10 10:53:10 -0800 (Thu, 10 Jan 2008) Log Message: ----------- - Flatten gate list in observers so there's no per event overhead to produce a flattened gate (not even amortized) - Use an observer to maintain a parameter organized spectrum data structure that can be used to drive histogramming. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Sorter/Histogrammer.cpp trunk/SpecTcl/Sorter/Histogrammer.h trunk/SpecTcl/Sorter/Makefile.am trunk/SpecTcl/SpecTcl/TCLHistogrammer.cpp trunk/SpecTcl/SpecTcl/TCLHistogrammer.h Added Paths: ----------- trunk/SpecTcl/Sorter/CFlattenedGateList.cpp trunk/SpecTcl/Sorter/CFlattenedGateList.h trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp trunk/SpecTcl/Sorter/CSpectrumByParameter.h trunk/SpecTcl/Sorter/DynamicList.cpp trunk/SpecTcl/Sorter/DynamicList.h Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-10 14:31:32 UTC (rev 1471) +++ trunk/SpecTcl/CHANGELOG 2008-01-10 18:53:10 UTC (rev 1472) @@ -734,4 +734,8 @@ of that widget's spinbox. January 9, 2008 - Add needParameter virtual to CSpectrum class hierarchy. this is used to know which list spectra belong in. -January 10, 2008 - Fix errors in 1d construction. \ No newline at end of file +January 10, 2008 - Fix errors in 1d construction. + - Use spectra organized by parameter to make + increments a bit more efficent. + - Use observers to maintain the flattened gate lists + so there's no increment time overhead. \ No newline at end of file Added: trunk/SpecTcl/Sorter/CFlattenedGateList.cpp =================================================================== --- trunk/SpecTcl/Sorter/CFlattenedGateList.cpp (rev 0) +++ trunk/SpecTcl/Sorter/CFlattenedGateList.cpp 2008-01-10 18:53:10 UTC (rev 1472) @@ -0,0 +1,122 @@ +/* + 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 +*/ + +#include <config.h> +#include "CFlattenedGateList.h" + +/*! + Default constructor: + The GateList constructor takes care of itself. +*/ +CFlattenedGateList::CFlattenedGateList() +{ +} +/*! + Destructor... again the gate list destructor takes care of everything: + +*/ +CFlattenedGateList::~CFlattenedGateList() +{} + +/*! + Copy consruction.. just need to copy construct the gate list: + +*/ +CFlattenedGateList::CFlattenedGateList(const CFlattenedGateList& rhs) : + m_Gates(rhs.m_Gates) +{ +} +/* + Assignment.. just need to assign the gate list: +*/ +CFlattenedGateList& +CFlattenedGateList::operator=(const CFlattenedGateList& rhs) +{ + m_Gates = rhs.m_Gates; + + return *this; +} + +/*! + Return the contents of the gate list.. this is delegated to m_Gates. +*/ +CGateContainer** +CFlattenedGateList::getList() +{ + return m_Gates.getList(); +} + +/*! + Clear the cache for all gates in the list. This is a matter of + iterating through the list invoking Reset on all gates. +*/ +void +CFlattenedGateList::clearCache() +{ + CGateContainer** theList = m_Gates.getList(); + + if(theList) { + while (*theList) { + (**theList)->Reset(); + theList++; + } + } +} + + +/*! + Reacts to the addition of new gate to the gate dictionary. +This is only called for gates that don't yet exist. Insert the +gate at the end of the flattened gates list. + +\param name - Name of the new gate. +\param container - The container that fronts the gate. + +*/ +void +CFlattenedGateList::onAdd(std::string name, CGateContainer& item) +{ + if (item->caches()) { + m_Gates.add(&item); + } + +} +/*! + Unconditionally remove the specified gate. We don't bother to check +if the gate is actually in the list in the first place (is a caching gate), +since the remove function is a no-op for items not in the list. +*/ +void +CFlattenedGateList::onRemove(std::string name, CGateContainer& item) +{ + m_Gates.remove(&item); +} + +/* + Simplest way to handle changes in gates are to delete and then + add ... add checks for cached-ness. + +*/ +void +CFlattenedGateList::onChange(std::string name, CGateContainer& item) +{ + onRemove(name, item); + onAdd(name, item); +} + + + + Added: trunk/SpecTcl/Sorter/CFlattenedGateList.h =================================================================== --- trunk/SpecTcl/Sorter/CFlattenedGateList.h (rev 0) +++ trunk/SpecTcl/Sorter/CFlattenedGateList.h 2008-01-10 18:53:10 UTC (rev 1472) @@ -0,0 +1,87 @@ +#ifndef __CFLATTENEDGATELIST_H +#define __CFLATTENEDGATELIST_H +/* + 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 +*/ +#ifndef __DICTIONARY_H +#include <Dictionary.h> +#endif + + +#ifndef __HISTOGRAMMER_H +#include <Histogrammer.h> +#endif + +#ifndef __DYNAMICLIST_H +#include "DynamicList.h" +#endif + + + +/*! + The Flattened Gate list class is a gate observer that + maintains a flat list of gates (rather than the + tree used for dictionary lookups. The list is maintained + in a DynamicList<CGateContainer*> This list can be + fetched by a histogrammer, and is maintained by the observer + callback members so that it is gaurenteed to be correct. + + The only gates stored here are gates that can cache, as the + list is intended to be used by the historammer to clear the cached + gates prior to processing events. + +*/ +class CFlattenedGateList : public CGateObserver +{ + // Types: +private: + + + typedef DynamicList<CGateContainer> GateList; + + // Member data: + +private: + GateList m_Gates; + +public: + CFlattenedGateList(); + virtual ~CFlattenedGateList(); + + CFlattenedGateList(const CFlattenedGateList& rhs); + CFlattenedGateList& operator=(const CFlattenedGateList& rhs); + + // comparisons are meaningless.. + +private: + int operator==(const CFlattenedGateList& rhs) const; + int operator!=(const CFlattenedGateList& rhs) const; + + // MemberFunctions: +public: + void clearCache(); + CGateContainer** getList(); + + // The gate observer interface: +public: + virtual void onAdd(std::string name, CGateContainer& container); + virtual void onRemove(std::string name, CGateContainer& item); + virtual void onChange(std::string name, CGateContainer& item); + +}; + + + +#endif Added: trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp =================================================================== --- trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp (rev 0) +++ trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp 2008-01-10 18:53:10 UTC (rev 1472) @@ -0,0 +1,231 @@ +/* + 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 +*/ +#include <config.h> +#include "CSpectrumByParameter.h" +#include "Spectrum.h" + +using namespace std; + +/*! + Construct an object from whole cloth. +*/ +CSpectrumByParameter::CSpectrumByParameter() +{ +} +/*! + Destruction is going to require that we destroy all the lists +*/ +CSpectrumByParameter::~CSpectrumByParameter() +{ + for (int i =0; i < m_spectraByParameter.size(); i++) { + delete m_spectraByParameter[i]; + } + +} +/*! + Copy construction: + We'll use cloneIn to get the job done. +*/ +CSpectrumByParameter::CSpectrumByParameter(const CSpectrumByParameter& rhs) +{ + cloneIn(rhs); +} +/*! + Assignment is also basically a cloneIn: +*/ +CSpectrumByParameter& +CSpectrumByParameter::operator=(const CSpectrumByParameter& rhs) +{ + if (this != &rhs) { + cloneIn(rhs); + } + return *this; +} + +/*! + Return a list of spectra that require a specific parameter + \param parameterId - Id of the parameter required. + + \return CSpectrum** + \retval NULL - There have never been spectra tha require parameterId. + \retval other- A pointer to a null terminate list of CSpectra* which in + turn point to the spectra that require parameterId. + Note that if there were once spectra requiring parameterId + and they have all been deleted, this list could be a single NULL. +*/ +CSpectrum** +CSpectrumByParameter::getSpectrumList(int parameterId) +{ + + + if (m_spectraByParameter.size() <= parameterId) { + return reinterpret_cast<CSpectrum**>(NULL); + } + if (m_spectraByParameter[parameterId]) { + return m_spectraByParameter[parameterId]->getList(); + } + else { + return reinterpret_cast<CSpectrum**>(NULL); + } +} +/*! + Return a list of spectra that have no requirements for parameters. + + See the return specification above, but replace require parameterId + with don't require a parameter. +*/ +CSpectrum** +CSpectrumByParameter::getSpectrumList() +{ + return m_remainingSpectra.getList(); + +} + +/*! + Called to increment the spectra. + \param event - reference to the event to use to increment the spectra. + +*/ +void +CSpectrumByParameter::operator()(const CEvent& event) +{ + + CEvent& e(const_cast<CEvent&>(event)); + // We have to always do the misc group: + + CSpectrum** miscList = m_remainingSpectra.getList(); + incrementList(event, miscList); + + // We have to do all lists for which a parameter is present.. until + // either we run out of parameters or run out of spectrumlists. + + for (UInt_t i = 0; (i < event.size()) && (i < m_spectraByParameter.size()); i++) { + if (e[i].isValid() && m_spectraByParameter[i]) { + CSpectrum** aList = m_spectraByParameter[i]->getList(); + incrementList(event, aList); + } + } +} + +/*! + Called when a spectrum is added to the histogrammer. + - If the spectrum does not need a parameter it is added to the m_remainingSpectra + list. + - If the spectrum does need a parameter, the first parameter is extracted, + then the spectrum is added to the appropriate m_spectraByParameter list..making + new lists if needed using addToParameter. + + \param name - Name of the new spectrum. + \param spectrum - Reference to the spectrum pointer to save. +*/ + +void CSpectrumByParameter::onAdd(std::string name, CSpectrum*& spectrum) +{ + if (!spectrum->needParameter()) { + m_remainingSpectra.add(spectrum); + } + else { + vector<UInt_t> parameterIds; + spectrum->GetParameterIds(parameterIds); + addToParameter(spectrum, parameterIds[0]); + } +} +/*! + Called when a spectrum has been removed from the histogrammer. + - If the spectrum does not need a parameter it is removed from m_remainingSpectra. + - If the spectrum does need a parameter it is removed from the appropriate element of + m_spectraByParameter. + - If the list the spectrum is supposed to be removed from does not exist, the call is a no-op. + - If the list the spectrum is supposed to be removed from exists, but does not have the + spectrum, this is also a no-op. + + \param name - Name of the new spectrum. + \param spectrum - Reference to the spectrum pointer to save. +*/ +void CSpectrumByParameter::onRemove(std::string name, CSpectrum*& spectrum) +{ + + if (spectrum->needParameter()) { + vector<UInt_t> parameters; + spectrum->GetParameterIds(parameters); + UInt_t param = parameters[0]; + if ((param < m_spectraByParameter.size()) && m_spectraByParameter[param]) { + m_spectraByParameter[param]->remove(spectrum); + } + } + else { + m_remainingSpectra.remove(spectrum); + } + +} + + + +///////////////////////////////////////////////////////////////////// +/* + Clone ourselves into this. +*/ +void +CSpectrumByParameter::cloneIn(const CSpectrumByParameter& rhs) +{ + for (int i = 0; i < rhs.m_spectraByParameter.size(); i++) { + SpectrumList* newList = reinterpret_cast<SpectrumList*>(NULL); + if(rhs.m_spectraByParameter[i]) { + newList = new SpectrumList(*m_spectraByParameter[i]); + } + m_spectraByParameter.push_back(newList); + } + m_remainingSpectra = rhs.m_remainingSpectra; +} + + +/* + Add a new spectrum to the ones needed for a specific parameter. + If needed, new spectrum lists are added, or the vector is expanded. + +*/ +void +CSpectrumByParameter::addToParameter(CSpectrum* spectrum, unsigned int parameterId) +{ + // extend m_spectraByParameter as needed: + + while(m_spectraByParameter.size() <= parameterId) { + m_spectraByParameter.push_back(reinterpret_cast<SpectrumList*>(0)); + } + + // At this point we know there are enough vector elements... + // if necessary, create a new list: + + if (!m_spectraByParameter[parameterId]) { + m_spectraByParameter[parameterId] = new SpectrumList; + } + // Add the spectrum pointer: + + m_spectraByParameter[parameterId]->add(spectrum); +} +/* + Increment the spectra in a list: +*/ +void +CSpectrumByParameter::incrementList(const CEvent& event, CSpectrum** spectra) +{ + if(spectra) { + while (*spectra) { + (**spectra)(event); + spectra++; + } + } +} Added: trunk/SpecTcl/Sorter/CSpectrumByParameter.h =================================================================== --- trunk/SpecTcl/Sorter/CSpectrumByParameter.h (rev 0) +++ trunk/SpecTcl/Sorter/CSpectrumByParameter.h 2008-01-10 18:53:10 UTC (rev 1472) @@ -0,0 +1,112 @@ +#ifndef __CSPECTRUMBYPARAMETER_H +#define __CSPECTRUMBYPARAMETER_H + + +/* + 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 +*/ +#ifndef __HISTOGRAMMER_H +#include <Histogrammer.h> +#endif + +#ifndef __DYNAMICLIST_H +#include "DynamicList.h" +#endif + +#ifndef __STL_VECTOR +#include <vector> +#ifndef __STL_VECTOR +#define __STL_VECTOR +#endif +#endif + +// Forward type/class definitions: + + +class CSpectrum; +class CEvent; + +/*! + This class is the heart of SpecTcl histogramming. + It observes the spectrum dictionary and stores it organized + in a way that is more efficiently histogrammed in the + presence of sparse events. + + There are basically two types of spectra. Those that have a + requirement for their parameters, and those that work on a soup + of parameters..where none are actually required. + + Those that require their parameters (in normal analysis the bulk of + the spectra), are organized in lists that are indexed by one of the + parameters they require. The rest are stored in a separate + miscellaneous list. + + When an event arrives, the parameters that are present are used + to traverse the lists of spectra that require them and then, finally, + the miscellaneous list is traversed. Thus if the number of spectra + that don't need to be incremented are large, it is possible to avoid + the overhead of checking the presence of spectra whose parameters are just + absent in the parameter list. + +*/ +class CSpectrumByParameter : public SpectrumDictionaryObserver +{ +private: + typedef DynamicList<CSpectrum> SpectrumList; +private: + std::vector<SpectrumList*> m_spectraByParameter; + SpectrumList m_remainingSpectra; + + // Canonicals: + +public: + CSpectrumByParameter(); + virtual ~CSpectrumByParameter(); + CSpectrumByParameter(const CSpectrumByParameter& rhs); + CSpectrumByParameter& operator=(const CSpectrumByParameter& rhs); + + // Comparisons just don't make sense: + +private: + int operator==(const CSpectrumByParameter& rhs) const; + int operator!=(const CSpectrumByParameter& rhs) const; + + // operations on the objects: + + +public: + // Get lists. + + CSpectrum** getSpectrumList(int parameterId); //!< List for parameterId. + CSpectrum** getSpectrumList(); //!< List for misc. spectra. + + void operator()(const CEvent& event); //!< Increment the event. + + // The interface for observers: + + virtual void onAdd(std::string name, CSpectrum*& spectrum); + virtual void onRemove(std::string name, CSpectrum*& spectrum); + + + // utilities: + +private: + void cloneIn(const CSpectrumByParameter& rhs); + void addToParameter(CSpectrum* spectrum, unsigned int parameterId); + static void incrementList(const CEvent& event, CSpectrum** spectra); + +}; + +#endif Added: trunk/SpecTcl/Sorter/DynamicList.cpp =================================================================== --- trunk/SpecTcl/Sorter/DynamicList.cpp (rev 0) +++ trunk/SpecTcl/Sorter/DynamicList.cpp 2008-01-10 18:53:10 UTC (rev 1472) @@ -0,0 +1,186 @@ +/* + 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 +*/ + +#include <config.h> +#include "DynamicList.h" +#include <stdlib.h> + + +static const unsigned int DefaultExtendSize(256); + +/*! + Construct a dynamic list: +*/ +template <class T> +DynamicList<T>::DynamicList() : + m_elements(0), + m_maxElements(0), + m_extendSize(DefaultExtendSize), + m_pTheElements(0) +{ +} + +/*! + Destroy the list +*/ +template<class T> +DynamicList<T>::~DynamicList() +{ + delete m_pTheElements; +} + +/*! + Copy construction we use clone_in to + copy the parameter into ourselves: + +*/ +template <class T> +DynamicList<T>::DynamicList(const DynamicList<T>& rhs) : + m_elements(0), + m_maxElements(0), + m_extendSize(DefaultExtendSize), + m_pTheElements(0) +{ + clone_in(rhs); +} + +/*! + Assignment is just like copy construction except that + we are going to protect against self assignment and return + *this when done: + +*/ +template <class T> +DynamicList<T>& +DynamicList<T>::operator=(const DynamicList<T>& rhs) +{ + if (&rhs != this) { + clone_in(rhs); + } + return *this; +} + +/*! + Get the list pointer. +*/ +template <class T> +T** +DynamicList<T>::getList() +{ + return m_pTheElements; +} + +/*! + Get the current extension size> +*/ +template <class T> +unsigned int +DynamicList<T>::extendSize() const +{ + return m_extendSize; +} + +/*! + Add an element to the list. If necessary, expanding + the list. If m_extendSize is large, this is amortized constant time. + + \param element - the element to add. + +*/ +template <class T> +void +DynamicList<T>::add(T* element) +{ + if (!(m_pTheElements) || (m_elements >= m_maxElements-1)) { // -1 to ensure there's always a trailing null. + + + if (m_pTheElements) { + m_pTheElements = reinterpret_cast<T**>(realloc(m_pTheElements, + (m_maxElements+m_extendSize)*sizeof(T*))); + // Zero the new elements: + + for (int i = 0; i < m_extendSize; i++) { + m_pTheElements[m_maxElements+i] = reinterpret_cast<T*>(0); + } + } + else { + + m_pTheElements = reinterpret_cast<T**>(calloc(m_extendSize, sizeof(T*)));// Null filled storage. + + } + m_maxElements += m_extendSize; + + } + m_pTheElements[m_elements] = element; + m_elements++; +} + +/*! + Set a new size for the extend size. The extend size determines the number of elements + added to the list if it needs to be expanded. + + \param size - The new extend size. +*/ +template <class T> +void +DynamicList<T>::setExtendSize(unsigned int size) +{ + m_extendSize = size; +} +/*! + Remove a specific element from the list. + This is linear time. The linear time requirement is to find the + element. There is no gaurantee of order preservation so we just + put the last element in place of the deleted element and clear the + former last element which is constant time once we find the element. + + \param element - Pointer to delete. + + \note it is a no-op to delete a nonexistent element. + +*/ +template <class T> +void +DynamicList<T>::remove(T* element) +{ + // This works for the case of no list as it won't get executed. + + for (int i =0; i < m_elements; i++) { + if (m_pTheElements[i] == element) { + m_elements--; + m_pTheElements[i] = m_pTheElements[m_elements]; + m_pTheElements[m_elements] = reinterpret_cast<T*>(0); + return; + } + } +} + +//// clone_in contains common code for the copy constructor and assignment +//// methods: + +template <class T> +void +DynamicList<T>::clone_in(const DynamicList<T>& rhs) +{ + free( m_pTheElements); + + m_pTheElements = reinterpret_cast<T**>(calloc(rhs.m_maxElements, sizeof(T*))); + memcpy(m_pTheElements, rhs.m_pTheElements, rhs.m_elements*sizeof(T)); + m_elements = rhs.m_elements; + m_maxElements = rhs.m_maxElements; + m_extendSize = rhs.m_extendSize; + +} Added: trunk/SpecTcl/Sorter/DynamicList.h =================================================================== --- trunk/SpecTcl/Sorter/DynamicList.h (rev 0) +++ trunk/SpecTcl/Sorter/DynamicList.h 2008-01-10 18:53:10 UTC (rev 1472) @@ -0,0 +1,72 @@ +#ifndef __DYNAMICLIST_H +#define __DYNAMICLIST_H +/* + 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 +*/ + +/*! + DynamicList is a template class that maintains a dynamically + extensible array of type T*. The array is terminated by a + NULL pointer. It extends itself as needed with a settable + granularity. + +*/ +template <class T> +class DynamicList +{ +private: + unsigned int m_elements; // Number of elements currently in the list. + unsigned int m_maxElements; // Number this list will hold before needing expansion + unsigned int m_extendSize; // How many elements are added to the list on expansion. + T** m_pTheElements; // The list itself. +public: + DynamicList(); + ~DynamicList(); + + // Other canonicals: + +public: + DynamicList(const DynamicList& rhs); + DynamicList& operator=(const DynamicList& rhs); + + // Comparisons don't make sense so: + +private: + int operator==(const DynamicList& rhs) const; + int operator!=(const DynamicList& rhs) const; + + + + // Member functions that actually do something: + +public: + + void add(T* element); + void remove(T* element); + T** getList(); + void setExtendSize(unsigned int count); + unsigned int extendSize() const; + + unsigned int capacity() const { + return m_maxElements; + } + +private: + void clone_in(const DynamicList& rhs); + +}; +#include "DynamicList.cpp" + +#endif Modified: trunk/SpecTcl/Sorter/Histogrammer.cpp =================================================================== --- trunk/SpecTcl/Sorter/Histogrammer.cpp 2008-01-10 14:31:32 UTC (rev 1471) +++ trunk/SpecTcl/Sorter/Histogrammer.cpp 2008-01-10 18:53:10 UTC (rev 1472) @@ -50,7 +50,10 @@ #include <CSpectrumFit.h> #include "CHistogrammerFitObserver.h" #include <CFitDictionary.h> +#include <CFlattenedGateList.h> +#include <CSpectrumByParameter.h> + #include <Iostream.h> #include <Sstream.h> @@ -161,6 +164,11 @@ m_pDisplayer = new CXamine(nSpecbytes); m_pDisplayer->Start(); m_pFitObserver = new CHistogrammerFitObserver(*this); // Follow changes to fits. + + // Create and register the gate/histogram observer needed to maitain the gate/spectrum + // optimized lists: + + createListObservers(); } ////////////////////////////////////////////////////////////////////////// @@ -178,6 +186,7 @@ if(!m_pDisplayer->isAlive()) m_pDisplayer->Start(); m_pFitObserver = new CHistogrammerFitObserver(*this); // Follow changes to fits. + createListObservers(); } ////////////////////////////////////////////////////////////////////////// @@ -192,7 +201,9 @@ m_pDisplayer->Stop(); delete m_pDisplayer; - delete m_pFitObserver; + delete m_pFitObserver; + delete m_pGateList; + delete m_pSpectrumLists; } ////////////////////////////////////////////////////////////////////////// @@ -209,6 +220,8 @@ m_ParameterDictionary = rRhs.m_ParameterDictionary; m_SpectrumDictionary = rRhs.m_SpectrumDictionary; m_GateDictionary = rRhs.m_GateDictionary; + + createListObservers(); } ////////////////////////////////////////////////////////////////////////// @@ -225,6 +238,8 @@ m_ParameterDictionary = rRhs.m_ParameterDictionary; m_SpectrumDictionary = rRhs.m_SpectrumDictionary; m_GateDictionary = rRhs.m_GateDictionary; + + createListObservers(); return *this; } @@ -265,29 +280,24 @@ \par Formal Parameters: \param </TT>rEvent (const CEvent& [in]): </TT> References the event to histogram. - \param </TT>nSpectra (UInt_t [in]):</TT> - Number of spectra defined. - \param </TT>ppSpectra (CSpectrum** ppSpectra)</TT> - Array of pointers to defined spectra. - \param <TT> nGates (UInt_t [in]):</TT> - Number of gates to chekc... - \param <TT>ppGates (Uint_t [in]):</TT> - Array of pointers to defined gates. + */ -void CHistogrammer::operator()(const CEvent& rEvent, - UInt_t nSpectra, CSpectrum** ppSpectra, - UInt_t nGates, CGateContainer** ppGates, - UInt_t nCached, CGateContainer** ppCached) +void CHistogrammer::operator()(const CEvent& rEvent) { // Reset the gates: - for(int i = 0; i < nCached; i++) { - (*ppCached[i])->Reset(); // Invalidate the gate value cache. + + CGateContainer** gateList = m_pGateList->getList(); + if (gateList) { + while(*gateList) { + (**gateList)->Reset(); + gateList++; + } } // Increment the histograms: - for(int i = 0; i < nSpectra; i++) { - (*ppSpectra[i])(rEvent); - } + + (*m_pSpectrumLists)(rEvent); + } ////////////////////////////////////////////////////////////////////////// @@ -299,42 +309,12 @@ // static int nEvents = 0; -void CHistogrammer::operator()(CEventList& rEvents) { - // Profiling demonstrates that it's inefficient to - // traverse the CSpectrum and CGateContainer maps for each event. - // Therefore these are traversed once now and placed in tables. - // This is redone on each batch of events in case the maps get modified. +void CHistogrammer::operator()(CEventList& rEvents) +{ nEvents = 0; - // Flatten the gates map into pGates: - UInt_t nGates = GateCount(); - UInt_t nCached= 0; - CGateContainer** pGates = new CGateContainer*[nGates]; // Holds pointer to gate containers. - CGateContainer** pCached = new CGateContainer*[nGates]; // ptrs to clrable gates - CGateDictionaryIterator pg = GateBegin(); - CGateDictionaryIterator pge= GateEnd(); - CGateContainer** ppGate = pGates; - while(pg != pge) { - *ppGate++ = &((*pg).second); - if ( (*pg).second->caches()) { - pCached[nCached++] = &((*pg).second); - } - pg++; - } - // Flatten the Spectra into pSpectra: - - UInt_t nSpectra = SpectrumCount(); - CSpectrum** pSpectra = new CSpectrum*[nSpectra]; // Pointers to spectra. - CSpectrum** ppSpectra = pSpectra; - SpectrumDictionaryIterator ps = SpectrumBegin(); - SpectrumDictionaryIterator pse= SpectrumEnd(); - while(ps != pse) { - *ppSpectra++ = (*ps).second; - ps++; - } - // Now analyze the events. // the assumption is that the first null // event or the end of the vector terminates. @@ -346,10 +326,7 @@ CEvent* pEvent = *i; if(pEvent) { nEvents++; - operator()(*pEvent, - nSpectra, pSpectra, - nGates, pGates, - nCached, pCached); + operator()(*pEvent); } else { break; @@ -371,9 +348,7 @@ catch (...) { cerr << "Unexpected exception type caught while histogramming events.\n"; } - delete []pGates; - delete []pCached; - delete []pSpectra; + } /*! @@ -2071,3 +2046,16 @@ p++; } } +// +// Create and hook in the spectrum and gate observers that ensure we keep our optimized +// gate and spectrum lists up to date. +// +void +CHistogrammer::createListObservers() +{ + m_pGateList = new CFlattenedGateList; + addGateObserver(m_pGateList); + + m_pSpectrumLists = new CSpectrumByParameter; + addSpectrumDictionaryObserver(m_pSpectrumLists); +} Modified: trunk/SpecTcl/Sorter/Histogrammer.h =================================================================== --- trunk/SpecTcl/Sorter/Histogrammer.h 2008-01-10 14:31:32 UTC (rev 1471) +++ trunk/SpecTcl/Sorter/Histogrammer.h 2008-01-10 18:53:10 UTC (rev 1472) @@ -93,6 +93,8 @@ class CSpectrumFit; class CHistogrammerFitObserver; +class CFlattenedGateList; +class CSpectrumByParameter; // Typedefs for some of instances of templated classes: // Dictionary types: @@ -140,7 +142,11 @@ static int m_nextFitlineId; // Next Xamine fitline id. + // For maintaining the flattened lists. + CFlattenedGateList* m_pGateList; + CSpectrumByParameter* m_pSpectrumLists; + public: // Constructors. CHistogrammer(UInt_t nSpecbytes = knDefaultSpectrumSize); @@ -196,11 +202,7 @@ // Operations on the object: public: // Analysis evaluation operators: - virtual void operator() (const CEvent& rEvent, - UInt_t nSpectra, CSpectrum** ppSpectra, - UInt_t nGates, CGateContainer** ppGates, - UInt_t nCached, CGateContainer** ppCached); - + virtual void operator() (const CEvent& rEvent); virtual void operator() (CEventList& rEventList); // Parameter dictionary manipulation: @@ -278,6 +280,7 @@ STD(string) createTitle(CSpectrum* pSpectrum, UInt_t maxLength); void invokeGateChangedObservers(STD(string) name, CGateContainer& gate); + void createListObservers(); }; Modified: trunk/SpecTcl/Sorter/Makefile.am =================================================================== --- trunk/SpecTcl/Sorter/Makefile.am 2008-01-10 14:31:32 UTC (rev 1471) +++ trunk/SpecTcl/Sorter/Makefile.am 2008-01-10 18:53:10 UTC (rev 1472) @@ -24,7 +24,7 @@ SpectrumS.cpp \ Spectrum2DL.cpp Gamma2DL.cpp SummarySpectrumL.cpp \ CSpectrum2Dm.cpp CSpectrum2DmL.cpp CSpectrum2DmW.cpp CSpectrum2DmB.cpp \ - CHistogrammerFitObserver.cpp Gamma2DD.cpp + CHistogrammerFitObserver.cpp Gamma2DD.cpp CFlattenedGateList.cpp CSpectrumByParameter.cpp include_HEADERS = BitSpectrumL.h BitSpectrumW.h Dictionary.h \ DictionaryException.h Gamma1DL.h Gamma1DW.h Gamma2DB.h Gamma2DW.h \ @@ -36,7 +36,8 @@ SummarySpectrumW.h CAxis.h CParameterMapping.h SpectrumS.h \ Spectrum2DL.h Gamma2DL.h SummarySpectrumL.h \ CSpectrum2Dm.h CSpectrum2DmL.h CSpectrum2DmW.h CSpectrum2DmB.h \ - CHistogrammerFitObserver.h Gamma2DD.h + CHistogrammerFitObserver.h Gamma2DD.h DynamicList.h DynamicList.cpp \ + CFlattenedGateList.h CSpectrumByParameter.h EXTRA_DIST = Sorter.WC Sorter.omt Modified: trunk/SpecTcl/SpecTcl/TCLHistogrammer.cpp =================================================================== --- trunk/SpecTcl/SpecTcl/TCLHistogrammer.cpp 2008-01-10 14:31:32 UTC (rev 1471) +++ trunk/SpecTcl/SpecTcl/TCLHistogrammer.cpp 2008-01-10 18:53:10 UTC (rev 1472) @@ -376,10 +376,7 @@ // operator()(const CEvent&) // Operation Type: // Override -void CTCLHistogrammer::operator()(const CEvent& rE, - UInt_t nSpectra, CSpectrum** ppSpectra, - UInt_t nGates, CGateContainer** ppGates, - UInt_t nCached, CGateContainer** ppCached) +void CTCLHistogrammer::operator()(const CEvent& rE) { // Overrides the base class operation as follows: // first computes all of the Pseudo parameters @@ -413,11 +410,9 @@ } // Then do the normal histogramming. // - CHistogrammer::operator()(rEvent, - nSpectra, ppSpectra, - nGates, ppGates, - nCached, ppCached); + CHistogrammer::operator()(rEvent); + } ////////////////////////////////////////////////////////////////////////////// // Modified: trunk/SpecTcl/SpecTcl/TCLHistogrammer.h =================================================================== --- trunk/SpecTcl/SpecTcl/TCLHistogrammer.h 2008-01-10 14:31:32 UTC (rev 1471) +++ trunk/SpecTcl/SpecTcl/TCLHistogrammer.h 2008-01-10 18:53:10 UTC (rev 1472) @@ -113,10 +113,8 @@ } public: - virtual void operator() (const CEvent& rEvent, - UInt_t nSpectra, CSpectrum** ppSpectra, - UInt_t nGates, CGateContainer** ppGates, - UInt_t nCached, CGateContainer** ppCached) ; + virtual void operator() (const CEvent& rEvent); + void AddPseudo (CPseudoScript& rScript) ; void RemovePseudo (const STD(string)& rPseudoName) ; CPseudoScript& FindPseudo (const STD(string)& rPsuedoName) ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-11 22:17:16
|
Revision: 1473 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1473&view=rev Author: ron-fox Date: 2008-01-11 14:17:21 -0800 (Fri, 11 Jan 2008) Log Message: ----------- CFlattenedGateList needs to be able to matche changes by gate name... as SpecTcl plays fast and loose changing/copying the gate container so you can't just use it's address to match. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Sorter/CFlattenedGateList.cpp Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-10 18:53:10 UTC (rev 1472) +++ trunk/SpecTcl/CHANGELOG 2008-01-11 22:17:21 UTC (rev 1473) @@ -738,4 +738,7 @@ - Use spectra organized by parameter to make increments a bit more efficent. - Use observers to maintain the flattened gate lists - so there's no increment time overhead. \ No newline at end of file + so there's no increment time overhead. +January 11, 2008 - Make CFlattenedGateList work even if the gate container + for the gate has changed from the inserted one.. + that is match the name. Modified: trunk/SpecTcl/Sorter/CFlattenedGateList.cpp =================================================================== --- trunk/SpecTcl/Sorter/CFlattenedGateList.cpp 2008-01-10 18:53:10 UTC (rev 1472) +++ trunk/SpecTcl/Sorter/CFlattenedGateList.cpp 2008-01-11 22:17:21 UTC (rev 1473) @@ -98,11 +98,25 @@ Unconditionally remove the specified gate. We don't bother to check if the gate is actually in the list in the first place (is a caching gate), since the remove function is a no-op for items not in the list. + +Since SpecTcl can swap around gate containers, we need +to match by name, not by pointer and then remove the right one: + */ void CFlattenedGateList::onRemove(std::string name, CGateContainer& item) { - m_Gates.remove(&item); + CGateContainer** pGates = getList(); + if (pGates) { + while (*pGates) { + CGateContainer* candidate = *pGates; + if (name == candidate->getName()) { + m_Gates.remove(candidate); + return; + } + pGates++; + } + } } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-16 13:48:56
|
Revision: 1474 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1474&view=rev Author: ron-fox Date: 2008-01-16 05:49:01 -0800 (Wed, 16 Jan 2008) Log Message: ----------- Separate event filtering from the formatting of the output filter files. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Filter/CXdrInputStream.cpp trunk/SpecTcl/Filter/CXdrInputStream.h trunk/SpecTcl/Filter/CXdrMemInputStream.cpp trunk/SpecTcl/Filter/CXdrMemInputStream.h trunk/SpecTcl/Filter/EventFilter.cpp trunk/SpecTcl/Filter/EventFilter.h trunk/SpecTcl/Filter/FilterBufferDecoder.h trunk/SpecTcl/Filter/FilterDictionary.h trunk/SpecTcl/Filter/FilterEventProcessor.cpp trunk/SpecTcl/Filter/FilterEventProcessor.h trunk/SpecTcl/Filter/GatedEventFilter.cpp trunk/SpecTcl/Filter/GatedEventFilter.h trunk/SpecTcl/Filter/Makefile.am trunk/SpecTcl/SpecTcl/FilterCommand.cpp trunk/SpecTcl/SpecTcl/FilterCommand.h Added Paths: ----------- trunk/SpecTcl/Filter/CFilterOutputStage.cpp trunk/SpecTcl/Filter/CFilterOutputStage.h trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp trunk/SpecTcl/Filter/CXdrFilterOutputStage.h Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-11 22:17:21 UTC (rev 1473) +++ trunk/SpecTcl/CHANGELOG 2008-01-16 13:49:01 UTC (rev 1474) @@ -742,3 +742,5 @@ January 11, 2008 - Make CFlattenedGateList work even if the gate container for the gate has changed from the inserted one.. that is match the name. +January 16, 2008 - Separate filter output formatting from the filter + class itself. \ No newline at end of file Added: trunk/SpecTcl/Filter/CFilterOutputStage.cpp =================================================================== --- trunk/SpecTcl/Filter/CFilterOutputStage.cpp (rev 0) +++ trunk/SpecTcl/Filter/CFilterOutputStage.cpp 2008-01-16 13:49:01 UTC (rev 1474) @@ -0,0 +1,36 @@ +/* + 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 +*/ + +#include <config.h> +#include "CFilterOutputStage.h" + +// implementation of the CFilterOutputStage method (darn few of them implemented). + +/*! + Constructor is needed to anchor the virtual destructor tree: +*/ +CFilterOutputStage::~CFilterOutputStage() +{ +} + +/*! + onAttachis not essential to all implementations so a null default implementation is + provided: +*/ +void +CFilterOutputStage::onAttach(CEventFilter& filter) +{ +} Added: trunk/SpecTcl/Filter/CFilterOutputStage.h =================================================================== --- trunk/SpecTcl/Filter/CFilterOutputStage.h (rev 0) +++ trunk/SpecTcl/Filter/CFilterOutputStage.h 2008-01-16 13:49:01 UTC (rev 1474) @@ -0,0 +1,69 @@ +#ifndef __CFILTEROUTPUTSTAGE_H +#define __CFILTEROUTPUTSTAGE_H +/* + 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 +*/ + + +#ifndef __STL_STRING +#include <string> +#ifndef __STL_STRING +#define __STL_STRING +#endif +#endif + +#ifndef __STL_VECTOR +#include <vector> +#ifndef __STL_VECTOR +#define __STL_VECTOR +#endif +#endif + +#ifndef __HISTOTTYPES_H +#include <histotypes.h> +#endif + + +// + +class CEvent; +class CEventFilter; + + +/*! + + Abstract base class for expanding filters to support arbitrarily formatted output. + for each event a filter passes, an object derived from this class will gain control + to write it to an output file. +*/ +class CFilterOutputStage +{ +public: + // Canonicals we need: + + virtual ~CFilterOutputStage(); // Usually needed for base classes. + + // The interface specfication: + +public: + virtual void open(std::string filename) = 0; + virtual void close() = 0; + virtual void onAttach(CEventFilter& filter); + virtual void DescribeEvent(std::vector<std::string> parameterNames, + std::vector<UInt_t> parameterIds) =0; + virtual void operator()(CEvent& event) = 0; +}; + +#endif Added: trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp =================================================================== --- trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp (rev 0) +++ trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp 2008-01-16 13:49:01 UTC (rev 1474) @@ -0,0 +1,215 @@ +/* + 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 +*/ + +#include <config.h> +#include "CXdrFilterOutputStage.h" + +#include "CXdrOutputStream.h" +#include <EventFilter.h> +#include <Event.h> +#include <ErrnoException.h> + +#include <errno.h> + +using namespace std; + + +/*! + Construct the output stage.. When constructed, the output stage can't actually do anything. +*/ +CXdrFilterOutputStage::CXdrFilterOutputStage() : + m_pOutputEventStream(0) +{ +} +/*! + Destruction will get rid of the output stream which will summarily close it if + necessary. +*/ +CXdrFilterOutputStage::~CXdrFilterOutputStage() +{ + close(); // Close does what we want acutally. +} + +/*! + Open the file. If the file is already open, this is an error. + If the file does not exist, the CXdrOutputStream will most likely + toss an error. + + \param filename - The name of the file to open. + + \throw CErrnoException [EEXIST] if we are already open. + \throw string from CXdrOutputStream if the file cannot be open for write (e.g. + you're trying to create it in a directory that + does not allow write access by you. +*/ + +void +CXdrFilterOutputStage::open(string filename) +{ + if (m_pOutputEventStream) { + errno = EEXIST; + throw CErrnoException("Opening XDR Filter output stream"); + } + else { + m_pOutputEventStream = new CXdrOutputStream(filename); // Construct and open. + } +} + +/*! + Close the stream. If the stream is not open, throw an exception. + + \throw CErrnoException [ENOENT] if the stream is not open. +*/ +void +CXdrFilterOutputStage::close() +{ + if (m_pOutputEventStream) { + delete m_pOutputEventStream; + m_pOutputEventStream = 0; + } + else { + errno = ENOENT; + throw CErrnoException("Closing CDR Filter output stream"); + } +} + +/*! + Called to describe the event to the output stream. This will usually + happen just after the open. + \param parameterNames - The names of the parameters that are going to be + written to the event file. + \param parameterIds - For each corresponding name in parameterNames, + this is the CEvent index of that parameter. + + \throw CErrnoException [ENOENT] if the file is not open, as we'll have to + write the headher record/ +*/ +void +CXdrFilterOutputStage::DescribeEvent(vector<string> parameterNames, + vector<UInt_t> parameterIds) +{ + if (!m_pOutputEventStream) { + errno = ENOENT; + throw CErrnoException("Describing event to closed output stream"); + } + + // We're going to need the parameter ids ourselves to fish them out of + // the events: + + m_vParameterIds = parameterIds; + + // Now format the header and write it out. + + int parameterCount = parameterNames.size(); + + (*m_pOutputEventStream) << "header"; + (*m_pOutputEventStream) << parameterCount; + for (int i= 0; i < parameterCount; i++) { + (*m_pOutputEventStream) << (parameterNames[i]); + } +} + +/*! + Write an event to the output stream. If the output stream is not open, this is an + error. + \param event - The event to write. We are only interested in the offsets in the + m_vParameterIds vector. + \throw CErrnoException [ENOENT] if the file is not open. +*/ +void +CXdrFilterOutputStage::operator()(CEvent& event) +{ + if (!m_pOutputEventStream) { + errno = ENOENT; + throw CErrnoException("Writing event to output stream"); + } + + // we need to first construct and write the bitmasks. + + int nParams = m_vParameterIds.size(); + int nBitmaskwords = ((nParams + sizeof(unsigned)*8 - 1) / + (sizeof(unsigned)*8)); // Assumes 8 bits/byte + unsigned* Bitmask = new unsigned[nBitmaskwords]; + + for(int i = 0; i < nBitmaskwords; i++) { + Bitmask[i] = 0; + } + + // Figure out the bit mask: A bit is set for each valid parameter: + + int nValid = 0; + for(int i =0; i < nParams; i++) { + int id = m_vParameterIds[i]; + if((id < event.size()) && event[id].isValid()) { + setBit(Bitmask, i); + nValid++; + } + } + + // No point in writing an event that has no valid parameters in the + // selected subset. + // + if(!nValid) { + delete []Bitmask; + return; + } + + // Declare required freespace to allow the output stream to close: + // the buffer if this event doesn't fit. + + size_t intsize = m_pOutputEventStream->sizeofInt(); + size_t floatsize = m_pOutputEventStream->sizeofFloat(); + size_t hdrsize = m_pOutputEventStream->sizeofString("event"); + + + m_pOutputEventStream->Require((nBitmaskwords*intsize + + nValid*floatsize + + hdrsize)); // Fudge?? + + // Write the header: + + *m_pOutputEventStream << "event"; + + + // Write the bitmask: + + for(int i =0; i < nBitmaskwords; i++) { + *m_pOutputEventStream << Bitmask[i]; + } + + // Write the valid parameters: + + for(int i =0; i < nParams; i++) { + int id = m_vParameterIds[i]; + if((id < event.size()) && event[id].isValid()) { + *m_pOutputEventStream << event[id]; + } + } + delete []Bitmask; +} + + +/* + Set a bit in a bit vector. The bit is assumed to fit in the vector. +*/ +inline void +CXdrFilterOutputStage::setBit(unsigned* bits, unsigned offset) +{ + // The code below assumes 8 bits per byte ... + int element = offset/(sizeof(unsigned)*8); + int mask = 1 << (offset % (sizeof(unsigned)*8)); + bits[element] |= mask; +} Added: trunk/SpecTcl/Filter/CXdrFilterOutputStage.h =================================================================== --- trunk/SpecTcl/Filter/CXdrFilterOutputStage.h (rev 0) +++ trunk/SpecTcl/Filter/CXdrFilterOutputStage.h 2008-01-16 13:49:01 UTC (rev 1474) @@ -0,0 +1,116 @@ +#ifndef __CXDRFILTEROUTPUTSTAGE_H +#define __CXDRFILTEROUTPUTSTAGE_H +/* + 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 +*/ + +#ifndef __CFILTEROUTPUTSTAGE_H +#include "CFilterOutputStage.h" +#endif + +class CXdrOutputStream; + + +/*! + The xdr filter output stage writes filtered data to file in an Xdr (machine independent) + format. Files consist of the following types of records: + + Records that describe the parameters the each event could contain: + + \verbatim + +----------------------+ + | "header" | + +----------------------+ + | NumParams | + +----------------------+ + | Name string(1) | + +----------------------+ + | ... | + +----------------------+ + |Name string(NumParams)| + +----------------------+ + \endverbatim + + The first entry a string "header" indicates this is the file header which describes the + data. + NumParams is an integer that describes the number of parameter names that follow. + Name string(i) are strings which contain the names of each parameter. + + Records containing events: + + + \verbatim + +-------------------------+ + | "event" | + +-------------------------+ + |NumParams bits of bitmask| + +-------------------------+ + |Param for lowest setbit | + +-------------------------+ + | ... | + +-------------------------+ + |Param for highest setbit | + +-------------------------+ + + \endverbatim + + The first entry is the sting "event" which indicates this record contains an event. + The "NumParams bits of bitmask" are an array of integers, such that the number of bits + is at least NumParams from the "header" record. The bitmasks indicate which parameters are + present in each event. Each bit corresponds to a single parameter. The lowest bit of + the first integer is set if the parameter described by Name string(1) is present, + and so on. + + The paramters themselves are floats, and only the ones for which bits are set are + supplied. +*/ + +class CXdrFilterOutputStage : public CFilterOutputStage +{ + // private data: +private: + CXdrOutputStream* m_pOutputEventStream; + std::vector<UInt_t> m_vParameterIds; + +public: + CXdrFilterOutputStage(); + virtual ~CXdrFilterOutputStage(); + +private: + CXdrFilterOutputStage(const CXdrFilterOutputStage& rhs); + CXdrFilterOutputStage& operator=(const CXdrFilterOutputStage& rhs); + int operator==(const CXdrFilterOutputStage& rhs) const; + int operator!=(const CXdrFilterOutputStage& rhs) const; + +public: + + + // We must implement the output stage interface: + +public: + virtual void open(std::string filename) ; + virtual void close() ; + virtual void DescribeEvent(std::vector<std::string> parameterNames, + std::vector<UInt_t> parameterIds); + + virtual void operator()(CEvent& event); + + // Utilities: +private: + void setBit(unsigned* bits, unsigned offset); +}; + + +#endif Modified: trunk/SpecTcl/Filter/CXdrInputStream.cpp =================================================================== --- trunk/SpecTcl/Filter/CXdrInputStream.cpp 2008-01-11 22:17:21 UTC (rev 1473) +++ trunk/SpecTcl/Filter/CXdrInputStream.cpp 2008-01-16 13:49:01 UTC (rev 1474) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + #include <config.h> #include "CXdrInputStream.h" #include <sys/types.h> Modified: trunk/SpecTcl/Filter/CXdrInputStream.h =================================================================== --- trunk/SpecTcl/Filter/CXdrInputStream.h 2008-01-11 22:17:21 UTC (rev 1473) +++ trunk/SpecTcl/Filter/CXdrInputStream.h 2008-01-16 13:49:01 UTC (rev 1474) @@ -1,283 +1,20 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ - #ifndef __CXDRINPUTSTREAM_H #define __CXDRINPUTSTREAM_H Modified: trunk/SpecTcl/Filter/CXdrMemInputStream.cpp =================================================================== --- trunk/SpecTcl/Filter/CXdrMemInputStream.cpp 2008-01-11 22:17:21 UTC (rev 1473) +++ trunk/SpecTcl/Filter/CXdrMemInputStream.cpp 2008-01-16 13:49:01 UTC (rev 1474) @@ -1,281 +1,20 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free So... [truncated message content] |
From: <ro...@us...> - 2008-01-18 11:55:21
|
Revision: 1475 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1475&view=rev Author: ron-fox Date: 2008-01-18 03:55:24 -0800 (Fri, 18 Jan 2008) Log Message: ----------- - Provide filter -format command with an extensible set of filter formatter. - Provide API generator calls for the newer spectrum types, specifically the Gamma deluxe spectrum, the 2d multiply incremented spectrum and the strip chart - Provide a fitler API function set, including the ability to register new filter output stages (output file formats). Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Filter/CFilterOutputStage.h trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp trunk/SpecTcl/Filter/CXdrFilterOutputStage.h trunk/SpecTcl/Filter/EventFilter.cpp trunk/SpecTcl/Filter/EventFilter.h trunk/SpecTcl/Filter/Makefile.am trunk/SpecTcl/Gui/filtercontrol.tcl trunk/SpecTcl/Gui/guistate.tcl trunk/SpecTcl/SpecTcl/FilterCommand.cpp trunk/SpecTcl/SpecTcl/FilterCommand.h trunk/SpecTcl/SpecTcl/SpecTcl.cpp trunk/SpecTcl/SpecTcl/SpecTcl.h trunk/SpecTcl/doc/Commands/filter.htm Added Paths: ----------- trunk/SpecTcl/Filter/CFilterOutputStageCreator.h trunk/SpecTcl/Filter/CFilterOutputStageFactory.cpp trunk/SpecTcl/Filter/CFilterOutputStageFactory.h trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.cpp trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.h Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/CHANGELOG 2008-01-18 11:55:24 UTC (rev 1475) @@ -743,4 +743,10 @@ for the gate has changed from the inserted one.. that is match the name. January 16, 2008 - Separate filter output formatting from the filter - class itself. \ No newline at end of file + class itself. +January 17, 2008 - Provide extensible filter format structure. + - Fix error in filter save in gui .. parameter list had + an extra layer of {}'s. + - Add ability to introspect filter format. +January 18, 2008 - Added support for the newer spectrum types to the API + - Added filter support to the API. Modified: trunk/SpecTcl/Filter/CFilterOutputStage.h =================================================================== --- trunk/SpecTcl/Filter/CFilterOutputStage.h 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Filter/CFilterOutputStage.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -64,6 +64,7 @@ virtual void DescribeEvent(std::vector<std::string> parameterNames, std::vector<UInt_t> parameterIds) =0; virtual void operator()(CEvent& event) = 0; + virtual std::string type() const = 0; }; #endif Added: trunk/SpecTcl/Filter/CFilterOutputStageCreator.h =================================================================== --- trunk/SpecTcl/Filter/CFilterOutputStageCreator.h (rev 0) +++ trunk/SpecTcl/Filter/CFilterOutputStageCreator.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -0,0 +1,108 @@ +#ifndef __CFILTEROUTPUTSTAGECREATOR_H +#define __CFILTEROUTPUTSTAGECREATOR_H + +/* + 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 +*/ + +#ifndef __STL_STRING +#include <string> +#ifndef __STL_STRING +#define __STL_STRING +#endif +#endif + + +class CFilterOutputStage; + +/*! + Abstract base class for entities that can create filter output stages for + the CFilterOutputStageFactory singleton. These are part of the extensible + factory pattern for filter output formatting. + + A concrete class must be created for each output format you want filter files + to be written in. + + See CFilterOutputStageFactory.cpp for the registration of the built in formatters. + I anticipate that many formatters will be written as plugins so that they can be + built separately from SpecTcl only in the event a specific foreign analysis + product (e.g. CERN Root) is available. + + The comments prior to each virtual function in the class describe the responsibilities + of the concrete class for the implementation of that function, as this class + is pure abstract. + +*/ +class CFilterOutputStageCreator +{ +public: + /*! + Destruction is the only canonical I need to provide and implement. + It is necessary to ensure that the destructor is appropriately polymorphic + and chains through the hierarchy> + */ + ~CFilterOutputStageCreator() {} + + + /*! + This function is called by the factory as it searches for a creator + for a specific output stage type. Your responsibility is to + compare the type parameter and, if it matches the type of + output stage you are willing to produce, return a newly allocated + output stage. + + \param type - the type of output stage being requested by the factor. + \return CFilterOutputStage* + \retval NULL - This creator does not produce the requested type of output + stage. + \retval other - A pointer to a newly created output stage for this type. + + */ + virtual CFilterOutputStage* operator()(std::string type) = 0; + + /*! + This function is called by the factory to document the set of output stage types + that are available. This should be a short string of the form: + \verbatim + 1 2 3 + col: 0123456789012345678901234567890 + type - description + + \endverbatim + + \return std::string + \retval see above. + */ + virtual std::string document() const = 0; + + /*! + In order to allow the factory to ensure that it is the one managing + the storage of its creators (in case it is destroyed), all creators + must implement this virtual copy constructor to clone a copy of themselves + in dynamic storage. Usually this is best implemented by implementing a copy + construtor, and then having this function look like: + \verbatim + + return *this; + + \endverbatim + + */ + + virtual CFilterOutputStageCreator* clone() = 0; +}; + + +#endif Added: trunk/SpecTcl/Filter/CFilterOutputStageFactory.cpp =================================================================== --- trunk/SpecTcl/Filter/CFilterOutputStageFactory.cpp (rev 0) +++ trunk/SpecTcl/Filter/CFilterOutputStageFactory.cpp 2008-01-18 11:55:24 UTC (rev 1475) @@ -0,0 +1,152 @@ +/* + 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 +*/ + +#include <config.h> +#include "CFilterOutputStageFactory.h" +#include "CFilterOutputStageCreator.h" +#include "CXdrFilterOutputStageCreator.h" + + +using namespace std; + + +// This is the singleton instance of the class. Since constructors are private, the +// class itself has control over when it is instantiated, and it refuses to instantiate +// unless/until getInstance is called the first time. + +CFilterOutputStageFactory* CFilterOutputStageFactory::m_pInstance(0); + + + +/**********************************************************************/ +/*! + The constructor is static in order to enforce the singleton + discipline. +*/ +CFilterOutputStageFactory::CFilterOutputStageFactory() +{ + registerStockCreators(); +} + +/******************************************************************/ +/*! + Destructor really should never be called, however I'll implement + it just in case the user decides that some day.... +*/ +CFilterOutputStageFactory::~CFilterOutputStageFactory() +{ + for (CreatorIterator i = m_creators.begin(); i != m_creators.end(); i++) { + CFilterOutputStageCreator* p = *i; + delete p; + } +} +/******************************************************************/ +/*! + Returns an instance to the one and only factory. + \return CFilterOutputStageFactory& + \retval CFilterOutputStageFactory::m_pInstance which will be non-null by the + time we return it. +*/ +CFilterOutputStageFactory& +CFilterOutputStageFactory::getInstance() +{ + if(!m_pInstance) { + m_pInstance = new CFilterOutputStageFactory; + } + return *m_pInstance; +} + +/*****************************************************************/ +/*! + Create a new filter output stage. + \param type - A string identifying the type of output stage + we want to create. + + \return CFilterOutputstage* + \retval NULL - no matching type. + \retval other - Pointer to an instance of the specific object. This is + dynamically created and the caller must delete it. +*/ +CFilterOutputStage* +CFilterOutputStageFactory::create(string type) const +{ + + for (ConstCreatorIterator i = m_creators.begin(); i != m_creators.end(); i++) { + CFilterOutputStageCreator* p = *i; + CFilterOutputStage* pOutputStage = (*p)(type); + if (pOutputStage) { + return pOutputStage; + } + } + + return reinterpret_cast<CFilterOutputStage*>(0); +} +/*****************************************************************/ +/*! + Register a new creator with the factory. See the documentation +of the CFilterOutputStageCreator class for information about the +responsibilities of that class. Briefly, however, a filter output +stage creator is supposed to be a generator of filter output stage +objects for a specific type of output stage. + + \param creator - Reference to a CFilterOutputStageCreator we + will add to the list create consults. + A clone of this will be inserted so if the + caller has dynamically the creator it can be + released. + +*/ +void +CFilterOutputStageFactory::Register(CFilterOutputStageCreator& creator) +{ + CFilterOutputStageCreator* pCreator = creator.clone(); + m_creators.push_back(pCreator); +} +/*******************************************************************/ +/*! + Produce a string that documents the creators. Each creator has a + document member that is supposed to produce a string describing itself. + These are concatenated separated by newlines and returned. + \return std::string + \retval documentation strings of all the creator separated by a \n +*/ +string +CFilterOutputStageFactory::document() const +{ + string result; + ConstCreatorIterator i = m_creators.begin(); + while(i != m_creators.end()) { + const CFilterOutputStageCreator* pCreator = *i; + result += pCreator->document(); + i++; + if (i != m_creators.end()) { + result += "\n"; + } + } + return result; +} + + +/********************************************************************************/ +/* +** Register the stock output stage creators: +*/ +void +CFilterOutputStageFactory::registerStockCreators() +{ + CXdrFilterOutputStageCreator xdr; + Register(xdr); // Can do this since there's a clone +} Added: trunk/SpecTcl/Filter/CFilterOutputStageFactory.h =================================================================== --- trunk/SpecTcl/Filter/CFilterOutputStageFactory.h (rev 0) +++ trunk/SpecTcl/Filter/CFilterOutputStageFactory.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -0,0 +1,88 @@ +#ifndef __CFILTEROUTPUTSTAGEFACTORY_H +#define __CFILTEROUTPUTSTAGEFACTORY_H +/* + 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 +*/ + +#ifndef __STL_STRING +#include <string> +#ifndef __STL_STRING +#define __STL_STRING +#endif +#endif + +#ifndef __STL_LIST +#include <list> +#ifndef __STL_LIST +#define __STL_LIST +#endif +#endif + +class CFilterOutputStageCreator; +class CFilterOutputStage; + +/*! + This is a factory for generating Filter output stages. + Filter output stages are responsible for formatting events + that pass the filter into an output file. This separation + of concerns, filtering and formatting allows SpecTcl to be used + to prepare events for arbitrary follow-on analysis software (e.g. root, + paw etc). + + The factory is a participant in the following software patterns: + - singleton - only one factory will exist in SpecTcl at a time. + - extensible factory - the set of formatters is not hardwired into + this class, but represented as a run-time configurable list of + creator helpers. For each creation, the factory will attempt to + find a matching creator for the type of formatter requested. + See CFilterOutputStageCreator for the requirements of creators and + the register member of this class to register new creators. + See CFilterOutputStage for the requirements of a filter output stage. + +*/ +class CFilterOutputStageFactory { +private: + typedef std::list<CFilterOutputStageCreator*> CreatorList; + typedef CreatorList::iterator CreatorIterator; + typedef CreatorList::const_iterator ConstCreatorIterator; + + CreatorList m_creators; + + static CFilterOutputStageFactory* m_pInstance; + + // Canonicals for singletons are private. +private: + CFilterOutputStageFactory(); + ~CFilterOutputStageFactory(); + CFilterOutputStageFactory(const CFilterOutputStageFactory& rhs); // unimplemented. + CFilterOutputStageFactory& operator=(const CFilterOutputStageFactory& rhs); // unimplemented + int operator==(const CFilterOutputStageFactory& rhs) const; // unimplemented. + int operator!=(const CFilterOutputStageFactory& rhs) const; // unimplemented. + +public: + static CFilterOutputStageFactory& getInstance(); + + CFilterOutputStage* create(std::string type) const; + void Register(CFilterOutputStageCreator& creator); + std::string document() const; + +private: + void registerStockCreators(); + +}; + + + +#endif Modified: trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp =================================================================== --- trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Filter/CXdrFilterOutputStage.cpp 2008-01-18 11:55:24 UTC (rev 1475) @@ -40,7 +40,7 @@ */ CXdrFilterOutputStage::~CXdrFilterOutputStage() { - close(); // Close does what we want acutally. + delete m_pOutputEventStream; } /*! @@ -201,6 +201,14 @@ delete []Bitmask; } +/*! + Return the output stage type. +*/ +string +CXdrFilterOutputStage::type() const +{ + return string("xdr"); +} /* Set a bit in a bit vector. The bit is assumed to fit in the vector. Modified: trunk/SpecTcl/Filter/CXdrFilterOutputStage.h =================================================================== --- trunk/SpecTcl/Filter/CXdrFilterOutputStage.h 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Filter/CXdrFilterOutputStage.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -106,7 +106,9 @@ std::vector<UInt_t> parameterIds); virtual void operator()(CEvent& event); + virtual std::string type() const; + // Utilities: private: void setBit(unsigned* bits, unsigned offset); Added: trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.cpp =================================================================== --- trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.cpp (rev 0) +++ trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.cpp 2008-01-18 11:55:24 UTC (rev 1475) @@ -0,0 +1,90 @@ +/* + 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 +*/ + +// Implementation of the CXdrFilterOutputStageCreator class. + +#include <config.h> +#include "CXdrFilterOutputStageCreator.h" +#include <CXdrFilterOutputStage.h> + + +using namespace std; + + +/*! + Default constructor. +*/ +CXdrFilterOutputStageCreator::CXdrFilterOutputStageCreator() +{} + +/*! + Copy constructor +*/ +CXdrFilterOutputStageCreator::CXdrFilterOutputStageCreator(const CXdrFilterOutputStageCreator& rhs) +{} + +/*! + Destructor: +*/ +CXdrFilterOutputStageCreator::~CXdrFilterOutputStageCreator() +{} + +/*! + If necessary create a new filter output stage. This will happen if we are + asked to produce an output stage of type "xdr". + + \param type - The type of output stage desired. + \return CFilterOutputStage* + \retval NULL - if type != "xdr". + \retval other- if type == "xdr". + +*/ +CFilterOutputStage* +CXdrFilterOutputStageCreator::operator()(string type) +{ + if (type == "xdr") { + return new CXdrFilterOutputStage; + } + else { + return static_cast<CFilterOutputStage*>(NULL); + } +} +/*! + Document the type of output stage we create. In this case + we will emit a string like: + "xdr - NSCL XDR system independent filter file format" + + \return std::string + \retval (see above). + +*/ +string +CXdrFilterOutputStageCreator::document() const +{ + return string("xdr - NSCL XDR system independent filter file format"); +} +/*! + Clone.. this is essentially a virtual copy constructor. + \return CFilterOutputStage* + \retval Pointer to a dynamically allocated copy of this formatter. + +*/ +CFilterOutputStageCreator* +CXdrFilterOutputStageCreator::clone() +{ + return new CXdrFilterOutputStageCreator(*this); +} + Added: trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.h =================================================================== --- trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.h (rev 0) +++ trunk/SpecTcl/Filter/CXdrFilterOutputStageCreator.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -0,0 +1,52 @@ +#ifndef __CXDRFILTEROUTPUTSTAGECREATOR_H +#define __CXDRFILTEROUTPUTSTAGECREATOR_H +/* + 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 +*/ + + +#ifndef __CFILTEROUTPUTSTAGECREATOR_H +#include "CFilterOutputStageCreator.h" +#endif + + +/*! + Output stage creator for the NSCL Xdr filter file output format. + This creator recognizes the keyword "xdr" and creates a + CXdrFilterOutputStage. + +*/ +class CXdrFilterOutputStageCreator : public CFilterOutputStageCreator +{ +public: + // Canonicals. We only require copy construction for clone: + // bit by bit operations are just fine for comparsions etc. + + CXdrFilterOutputStageCreator(); + CXdrFilterOutputStageCreator(const CXdrFilterOutputStageCreator& rhs); + virtual ~CXdrFilterOutputStageCreator(); + + // Implement the CFilterOutputStage Creator interface: + +public: + + virtual CFilterOutputStage* operator()(std::string type); + virtual std::string document() const; + virtual CFilterOutputStageCreator* clone(); +}; + + + +#endif Modified: trunk/SpecTcl/Filter/EventFilter.cpp =================================================================== --- trunk/SpecTcl/Filter/EventFilter.cpp 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Filter/EventFilter.cpp 2008-01-18 11:55:24 UTC (rev 1475) @@ -186,6 +186,19 @@ } /*! + Return the output format .. if non is attached, the value "--" is returned. +*/ +string +CEventFilter::outputFormat() const +{ + if (m_pOutput) { + return m_pOutput->type(); + } + else { + return string("--"); + } +} +/*! Function call operator with a list of events. This overridable member provides the default behavior for a filter on a list of events. For each event in the Modified: trunk/SpecTcl/Filter/EventFilter.h =================================================================== --- trunk/SpecTcl/Filter/EventFilter.h 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Filter/EventFilter.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -127,6 +127,7 @@ void Disable(); //!< Disable the filter. void setFileName(STD(string)&); //!< Choose a new filename. void setOutputFormat(CFilterOutputStage* format); + std::string outputFormat() const; virtual void operator()(CEventList& rEvents); //!< Process list of events. Modified: trunk/SpecTcl/Filter/Makefile.am =================================================================== --- trunk/SpecTcl/Filter/Makefile.am 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Filter/Makefile.am 2008-01-18 11:55:24 UTC (rev 1475) @@ -18,7 +18,9 @@ GatedEventFilter.cpp \ CXdrOutputStream.cpp CXdrInputStream.cpp \ CXdrMemInputStream.cpp \ - CFilterOutputStage.cpp CXdrFilterOutputStage.cpp + CFilterOutputStage.cpp CXdrFilterOutputStage.cpp \ + CFilterOutputStageFactory.cpp \ + CXdrFilterOutputStageCreator.cpp include_HEADERS = EventFilter.h \ FilterDictionary.h \ @@ -27,4 +29,8 @@ GatedEventFilter.h \ CXdrOutputStream.h CXdrInputStream.h \ CXdrMemInputStream.h \ - CFilterOutputStage.h CXdrFilterOutputStage.h + CFilterOutputStage.h CXdrFilterOutputStage.h \ + CFilterOutputStageFactory.h \ + CFilterOutputStageCreator.h \ + CXdrFilterOutputStageCreator.h + Modified: trunk/SpecTcl/Gui/filtercontrol.tcl =================================================================== --- trunk/SpecTcl/Gui/filtercontrol.tcl 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Gui/filtercontrol.tcl 2008-01-18 11:55:24 UTC (rev 1475) @@ -143,7 +143,7 @@ variable hidden {} constructor args { - table $win.filters -cols 6 -rows 1 -titlerows 1 -yscrollcommand [list $win.scroll set] \ + table $win.filters -cols 7 -rows 1 -titlerows 1 -yscrollcommand [list $win.scroll set] \ -justify left -cache 1 -resizeborders both scrollbar $win.scroll -orient vertical -command [list $win.filters yview] @@ -169,7 +169,7 @@ # The titles: set col 0 - foreach title {Enable Name Gate File Parameters State} { + foreach title {Enable Name Gate File Parameters State Format} { $widget set 0,$col $title incr col } @@ -201,10 +201,12 @@ set height [llength $parameters] set parameters [join $parameters "\n"] set state [lindex $filter 4] + + set format [lindex $filter 5] $widget insert rows end $widget height $row $height - $widget set row $row,1 [list $name $gate $file $parameters $state] + $widget set row $row,1 [list $name $gate $file $parameters $state $format] checkbutton $widget.enable$name if {$state == "enabled"} { Modified: trunk/SpecTcl/Gui/guistate.tcl =================================================================== --- trunk/SpecTcl/Gui/guistate.tcl 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/Gui/guistate.tcl 2008-01-18 11:55:24 UTC (rev 1475) @@ -553,10 +553,16 @@ set gate [lindex $filter 1] set file [lindex $filter 2] set parameters [lindex $filter 3] + set format [lindex $filter 5] puts $fd "catch {filter -delete [list $name]}" - puts $fd [list filter [list $name] [list $gate] [list $parameters]] + puts $fd [list filter [list $name] [list $gate] $parameters] puts $fd [list filter -file [list $file] [list $name]] + + # The catch is in case the filter format comes from a plugin that is not + # loaded in this instance. + + puts $fd "catch {[list filter -format [list $name] [list $format]]}" puts $fd "" } } Modified: trunk/SpecTcl/SpecTcl/FilterCommand.cpp =================================================================== --- trunk/SpecTcl/SpecTcl/FilterCommand.cpp 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/SpecTcl/FilterCommand.cpp 2008-01-18 11:55:24 UTC (rev 1475) @@ -21,7 +21,7 @@ #include "FilterCommand.h" #include <GatedEventFilter.h> #include <FilterDictionary.h> -#include <CXdrFilterOutputStage.h> +#include "CFilterOutputStageFactory.h" #include <SpecTcl.h> @@ -59,9 +59,12 @@ {"-disable", CFilterCommand::keDisable}, {"-regate", CFilterCommand::keRegate}, {"-file", CFilterCommand::keFile}, - {"-list", CFilterCommand::keList} + {"-list", CFilterCommand::keList}, + {"-format", CFilterCommand::keFormat} }; +static const string defaultOutputFormat("xdr"); + static const UInt_t nSwitches = sizeof(Switches)/sizeof(SwitchTableEntry); @@ -160,6 +163,9 @@ pArgs++; case keNotSwitch: // Create a new filter. return Create(rInterp, rResult, nArgs, pArgs); + case keFormat: + return Format(rInterp, rResult, nArgs, pArgs); + default: // Bug to get here: assert(0); @@ -206,7 +212,11 @@ Use += " filter -regate filtername gatename\n"; Use += " filter -file filename filtername\n"; Use += " filter -list ?glob-pattern?\n"; - Use += "\nfilter allows the gating upon a parameter in an event."; + Use += " filter -format filtername format\n"; + Use += "\nfilter creates pre-sorted event files\n"; + Use += "\nfilter formats are: \n"; + CFilterOutputStageFactory& fact(CFilterOutputStageFactory::getInstance()); + Use += fact.document(); return Use; } @@ -299,7 +309,8 @@ // Hard wire the formatter in this version: // TODO: provide mechanism to select formatter. // - pGatedEventFilter->setOutputFormat(new CXdrFilterOutputStage); + CFilterOutputStageFactory& factory(CFilterOutputStageFactory::getInstance()); + pGatedEventFilter->setOutputFormat(factory.create(defaultOutputFormat)); pFilterDictionary->Enter(pFilterName, pGatedEventFilter); @@ -407,6 +418,7 @@ return TCL_ERROR; } } else { + rResult = "Error: Invalid filter (" + std::string(pFilterName) + ")."; return TCL_ERROR; } @@ -620,7 +632,7 @@ // a string that is later set to be the result: CFilterDictionary* pFilterDictionary = CFilterDictionary::GetInstance(); - CTCLString OutputList; + CTCLString OutputList; CFilterDictionaryIterator i = pFilterDictionary->begin(); while(i != pFilterDictionary->end()) { CTCLString FilterName(i->first); @@ -637,6 +649,80 @@ return TCL_OK; } /*! + Set the output format of a filter. The format of the command is: + filter -format filtername format + + Where format is a format selector that is recognized by the filter format + factory. + + \param rInterp - Reference to the interpreter running this command. + \param rResult - Reference to the interpreter result object. + \param nArgs - Number of command words, should be exactly 3. + as the caller has sliced off the command verb. + \param pArgs - Pointers to the command words. + + \return int + \retval TCL_OK - The command worked. The result will be the filter name. + \retval TCL_ERROR - The command failed, the result will be an error message. +*/ +Int_t +CFilterCommand::Format(CTCLInterpreter& rInterp, CTCLResult& rResult, int nArgs, char* pArgs[]) +{ + if (nArgs != 3) { + rResult = "In correct number of parameters in filter -format: \n"; + rResult += Usage(); + return TCL_ERROR; + } + + // Pull out the filter name and the output type and validate them: + + char* name = pArgs[1]; + string format = pArgs[2]; + + CFilterDictionary* pFilterDictionary = CFilterDictionary::GetInstance(); + CFilterDictionaryIterator fIterator = pFilterDictionary->Lookup(name); + + + // Filter does not exist. + + if (fIterator == pFilterDictionary->end()) { + rResult = "Filter: "; + rResult += name; + rResult += " does not exist in filter -format command\n"; + rResult += Usage(); + return TCL_ERROR; + } + // It's an error to do any of this if the filter is enabled: + + CEventFilter* pFilter = fIterator->second; + if (pFilter->CheckEnabled()) { + rResult = "Filter: "; + rResult += name; + rResult += " is enabled, and filter -format can only be used on disabled filters\n"; + rResult += Usage(); + return TCL_ERROR; + } + + // Try to get the formater: + + CFilterOutputStageFactory& outFactory(CFilterOutputStageFactory::getInstance()); + CFilterOutputStage* pOutputStage = outFactory.create(format); + if (!pOutputStage) { + rResult = "Filter format type: "; + rResult += format; + rResult += " does not exist in filter -format command"; + rResult += Usage(); + return TCL_ERROR; + } + + + + pFilter->setOutputFormat(pOutputStage); + rResult = name; + return TCL_OK; +} + +/*! Lists a filter given a pointer to the filter itself. See as well the overloaded version that first looks up a filter by name in the dictionary and then calls us to do the dirty work. @@ -672,6 +758,9 @@ } else { List.AppendElement(std::string("disabled")); } + + List.AppendElement(pFilter->outputFormat()); + return string((const char*) List); } /*! Modified: trunk/SpecTcl/SpecTcl/FilterCommand.h =================================================================== --- trunk/SpecTcl/SpecTcl/FilterCommand.h 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/SpecTcl/FilterCommand.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -60,6 +60,7 @@ filter -regate filtername gatename filter -file filename filtername filter -list ?glob-pattern? + filter -format filtername format \endverbatim @@ -81,6 +82,7 @@ keRegate, keFile, keList, + keFormat, keNotSwitch }; @@ -110,6 +112,8 @@ Int_t Regate(CTCLInterpreter& rInterp, CTCLResult& rResult, int nArgs, char* pArgs[]); Int_t File(CTCLInterpreter& rInterp, CTCLResult& rResult, int nArgs, char* pArgs[]); Int_t List(CTCLInterpreter& rInterp, CTCLResult& rResult, int nArgs, char* pArgs[]); + Int_t Format(CTCLInterpreter& rInterp, CTCLResult& rResult, int Nargs, char* pArgs[]); + STD(string) ListFilter(const STD(string)& rName, CGatedEventFilter* pFilter); STD(string) ListFilter(const STD(string)& rName); Modified: trunk/SpecTcl/SpecTcl/SpecTcl.cpp =================================================================== --- trunk/SpecTcl/SpecTcl/SpecTcl.cpp 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/SpecTcl/SpecTcl.cpp 2008-01-18 11:55:24 UTC (rev 1475) @@ -52,6 +52,11 @@ #include <SpectrumFactoryException.h> #include <SpectrumFormatterFactory.h> +#include <FilterDictionary.h> +#include <CFilterOutputStageFactory.h> + +#include <DictionaryException.h> + #include <TCLInterpreter.h> #include <TCLAnalyzer.h> @@ -917,8 +922,123 @@ nChannels, low, high); } +/*! + Create a gamma 2d deluxe spectrum. This is a spectrum with independent + X/Y axis parameters. + \param name - Name of the new spectrum. + \param dataType - Type of data (defines the channel 'width'). + \param xParameters - Vector of paramters on the X axis. + \param yParameters - Vector of paramters on the y Axis. + \param xChannels - Number of bins on the xAxis. + \param xLow - Low limit of the x axis in parameter coordinates. + \param xHigh - High limit of the y axis in parameter coordinates. + \param yChannels - Number of bins on the yAxis. + \param yLow - Low limit of the y axis in parameter coordinates. + \param yHigh - High limit of the y axis in parameter coordinates. + \return CSpectrum* + \retval Pointer to the newly created spectrum object. + \retval NULL There was a problem with the creation that did not require + an exception (I don't think this actually can happen). + \throw CSpectrumFactoryException on a few different errors. + +*/ +CSpectrum* +SpecTcl::CreateGamma2DD(string name, DataType_t dataType, + vector<CParameter> xParameters, + vector<CParameter> yParameters, + UInt_t xChannels, Float_t xLow, Float_t xHigh, + UInt_t yChannels, Float_t yLow, Float_t yHigh) +{ + CSpectrumFactory factory; + return factory.CreateG2dDeluxe(name, + dataType, + xParameters, yParameters, + xChannels, xLow, xHigh, + yChannels, yLow, yHigh); +} + /*! + Creates a 2-d multiply incremented spectrum. Where the Gamma 2d Deluxe + spectrum increments for all combinations of x/y pairs, this spectrum only + increments for corresponding pairs of parameters. + + \param name Name of the new spectrumm. + \param dataType Data type for each channel. + \param xParameters Vector of x parameters. + \param yParameters Vector of y parameters. + \param xChans number of channels on the x axis. + \param xLow low limit of the x axis. + \param xHigh high limit of the x axis. + \param yChans Number of channelson the y axis. + \param yLow Low limit of the y axis. + \param yHigh High limit of the y axis. + + \return CSpectrum* + \retval Pointer to the newly created spectrum. + + \throw CSpectrumFactoryException + \throw string - if the number of x and y parameters is not the same. +*/ +CSpectrum* +SpecTcl::Create2DSum(string name, DataType_t dataType, + vector<CParameter> xParameters, vector<CParameter> yParameters, + UInt_t xChannels, Float_t xLow, Float_t xHigh, + UInt_t yChannels, Float_t yLow, Float_t yHigh) +{ + CSpectrumFactory factory; + + // Check the parameter counts an marshall the parameters into a single array: + + if (xParameters.size() != yParameters.size()) { + throw string("SpecTcl::Create2DSum - number of x/y parameters not equal"); + } + vector<CParameter> parameters; + for (int i =0; i < xParameters.size(); i++) { + parameters.push_back(xParameters[i]); + parameters.push_back(yParameters[i]); + } + + return factory.Create2DMultiple(name, dataType, + parameters, + xChannels, xLow, xHigh, + yChannels, yLow, yHigh); +} +/*! + Create a stripchart spectrum. Strip charts count some number of things + as a function of time. The user can define a parametre that is presumably + (but not required to be) monotonically increasing, as time and another parameter + as the number of times some event happens. For each event that has both parameters, + The time is converted to an x channel in the spectrum, and that channel incremented by + the value of the other spectrum. + + \param name - Name of the new spectrum. + \param dataType - Data type of the channels (determines count limits). + \param counts - Parameter that will have the increment count. + \param time - Time parameter. + \param channels - Number of channels on the axis. + \param xLow - Initial low value of the axis (the axis will shift as needed + to ensure that the time is in the spectrum. + \param xHigh - Initial high value of the axis (the axis will shift as needed + to ensure the time is displayable. + + \return CSpectrum* + \retval Pointer to the newly created spectrum object. + \throw CSpectrumFactoryException +*/ +CSpectrum* +SpecTcl::CreateStripChart(string name, DataType_t dataType, + CParameter counts, CParameter time, + UInt_t channels, Float_t xLow, Float_t xHigh) +{ + CSpectrumFactory factory; + return factory.CreateStrip(name, dataType, + counts, time, + channels, xLow, xHigh); +} + + +/*! Adds a spectrum to the spectrum dictionary. The spectrum dictionary does not manage the spectrum object. If the spectrum was created via the Createxxx operations in this class, for example @@ -2094,7 +2214,7 @@ */ CEventSinkPipeline::EventSinkIterator -SpecTcl::EventSinkPiplineEnd() +SpecTcl::EventSinkPipelineEnd() { CEventSinkPipeline* pPipeline = GetEventSinkPipeline(); return pPipeline->end(); @@ -2102,6 +2222,139 @@ /*! + Add a new filter to the filter dictionary. The filter becomes + the property of the filter dictionary and cannot be destroyed until + it is removed from the filter dictionary by command or by + deleteFilter. The filter should be dynamically created in order to allow + filter -delete to work correctly. + + \param name - Name of the event filter. + \param pFilter - pointer to the filter to add. + + \throw CDictionaryException - if the filter already exists. + +*/ +void +SpecTcl::createFilter(string name, CGatedEventFilter* pFilter) +{ + CFilterDictionary* pDict = CFilterDictionary::GetInstance(); + if (findFilter(name)) { + throw CDictionaryException(static_cast<Int_t>(CDictionaryException::knDuplicateKey), + "SpecTcl::createFilter - making a new filter", + name.c_str()); + } + pDict->Enter(name, pFilter); + +} +/*! + Find and return a pointer to a filter given its name. This allow syou to manipulate + filters by name. + + \param name - Name of the filter. + \return CGatedEventFilter* + \retval NULL - no filter found. + \retval other - Pointer to the filter. +*/ +CGatedEventFilter* +SpecTcl::findFilter(string name) +{ + CFilterDictionary* pDict = CFilterDictionary::GetInstance(); + CFilterDictionaryIterator p = pDict->Lookup(name); + if (p == pDict->end()) { + return reinterpret_cast<CGatedEventFilter*>(NULL); + } + else { + return p->second; + } +} +/*! + Determines if a specific filter, by pointer, exists in the dictionary. + In means I can find an entry for which the filter object has the same + address as pFilter. + + \param pFilter - Pointer to the filter to fine. + \return bool + \retval true - pFilter is in the dictionary. + \retval false - pFilter is not in the dictionary. +*/ +bool +SpecTcl::filterExists(CGatedEventFilter* pFilter) +{ + CFilterDictionary* pDict = CFilterDictionary::GetInstance(); + CFilterDictionaryIterator p= pDict->begin(); + while(p != pDict->end()) { + if (p->second == pFilter) { + return true; + } + p++; + } + return false; +} +/*! + Given a pointer to a filter, delete it from the dictionary. + this is a no-op if the filter does not exist. + \param pFilter - Pointer to the filter to remvoe. +*/ +void +SpecTcl::deleteFilter(CGatedEventFilter* pFilter) +{ + CFilterDictionary* pDict = CFilterDictionary::GetInstance(); + CFilterDictionaryIterator p= pDict->begin(); + while( p != pDict->end()) { + if (p->second == pFilter) { + pDict->Remove(p->first); + return; + } + } +} + +/*! + Remove a filter by name from the dictionary. + if the filter does not exist, this is a silent no-op. + \param name - name of the filter to delete. + + \note The storage is not deleted, only the dictionary entry. + It is up to the caller to decide if the filter should + be deleted, in which case, typical code will be: + +\verbatim + CGatedEventFileter* pFilter = api.findFilter(name); + if (pFilter) { + api.deleteFilter(name); + delete pFilter; + } +\endverabtim + +*/ +void +SpecTcl::deleteFilter(string filterName) +{ + CFilterDictionary* pDict = CFilterDictionary::GetInstance(); + pDict->Remove(filterName); +} +/*! + Add an output filter format to the set understood by + the filter subsystem. This is done by adding a creator + which can be consulted by the filter output stage factory + when a filter needs to have a specific output format. + + \param creator - The creator for the format we want to support. + + \note If a format by this name is already supported, then + this creator is registered, but will never be consulted because + the previously registered creator will be consulted first. + + \note A clone of the creator you are registering will be created so you + can dispose of the parameter as you desire in the caller. +*/ +void +SpecTcl::addFilterOutputFormat(CFilterOutputStageCreator& creator) +{ + CFilterOutputStageFactory& fact(CFilterOutputStageFactory::getInstance()); + fact.Register(creator); +} + +/*! Get a pointer to the TCLinterpreter. */ CTCLInterpreter* Modified: trunk/SpecTcl/SpecTcl/SpecTcl.h =================================================================== --- trunk/SpecTcl/SpecTcl/SpecTcl.h 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/SpecTcl/SpecTcl.h 2008-01-18 11:55:24 UTC (rev 1475) @@ -76,6 +76,8 @@ #include <EventSinkPipeline.h> #endif + + // Forward class definitions class CParameter; @@ -90,6 +92,10 @@ class CEventSinkPipeline; class CTCLInterpreter; +class CFilterOutputStageCreator; +class CGatedEventFilter; + + /*! Top level class that provides the user's application programming interface to SpecTcl. @@ -233,6 +239,26 @@ STD(vector)<CParameter> parameters, UInt_t nChannels, Float_t low, Float_t high); + + CSpectrum* CreateGamma2DD(STD(string) name, + DataType_t dataType, + STD(vector)<CParameter> xParameters, + STD(vector)<CParameter> yParameters, + UInt_t xChannels, Float_t xLow, Float_t xHigh, + UInt_t yChannels, Float_t yLow, Float_t yHigh); + CSpectrum* Create2DSum(STD(string) name, + DataType_t dataType, + STD(vector)<CParameter> xParameters, + STD(vector)<CParameter> yParameters, + UInt_t xChans, Float_t xLow, Float_t xHigh, + UInt_t yChans, Float_t yLow, Float_t yHigh); + CSpectrum* CreateStripChart(STD(string) name, + DataType_t dataType, + CParameter counts, + CParameter time, + UInt_t channels, Float_t xLow, Float_t xHigh); + + // Manipulate the spectrum dictionary: void AddSpectrum(CSpectrum& spectrum); @@ -336,19 +362,30 @@ CEventSink* RemoveEventSink(CEventSinkPipeline::EventSinkIterator here); UInt_t EventSinkPipelineSize(); CEventSinkPipeline::EventSinkIterator EventSinkPipelineBegin(); - CEventSinkPipeline::EventSinkIterator EventSinkPiplineEnd(); + CEventSinkPipeline::EventSinkIterator EventSinkPipelineEnd(); - CTCLInterpreter* getInterpreter(); + + + // Filter API: + + void createFilter(STD(string) name, CGatedEventFilter* pFilter); + CGatedEventFilter* findFilter(STD(string) name); + bool filterExists(CGatedEventFilter* pFilter); + void deleteFilter(CGatedEventFilter* pFilter); + void deleteFilter(STD(string) filterName); + void addFilterOutputFormat(CFilterOutputStageCreator& creator); // Expose the guts for the really curious and those who need more // than we can offer. + CTCLInterpreter* getInterpreter(); CHistogrammer* GetHistogrammer(); CTclAnalyzer* GetAnalyzer(); CEventSinkPipeline* GetEventSinkPipeline(); STD(vector)<UInt_t> parameterIds(STD(vector)<STD(string)> names); + }; Modified: trunk/SpecTcl/doc/Commands/filter.htm =================================================================== --- trunk/SpecTcl/doc/Commands/filter.htm 2008-01-16 13:49:01 UTC (rev 1474) +++ trunk/SpecTcl/doc/Commands/filter.htm 2008-01-18 11:55:24 UTC (rev 1475) @@ -29,6 +29,7 @@ filter -regate filtername gatename<br> filter -file filename filtername<br> filter -list ?glob-pattern?<br> + filter -format filtername format </p> <p><a href="#Top">Top</a></p> <h2>Synopsis</h2> @@ -42,7 +43,13 @@ <li>-disable turns a filter off</li> <li>-regate replaces the gate of an existing filter with a different gate.</li> <li>-file overrides the default file name for the filter.</li> - <li>-list lists all filters or the filters that match the glob-pattern.</li> + <li>-list lists all filters or the filters that match the + glob-pattern.</li> + <li>-format allows you to set the output format of the filter file. + SpecTcl's internal filter file output format is the format <tt>xdr</tt>. + SpecTcl plugins can register other filter format types. +</li> + </ul> <p><a href="#Top">Top</a></p> <h2>Detailed Description</h2> @@ -75,6 +82,10 @@ inactive (disabled). Note: Filters are created in the disabled state.</td> </tr> + <td>Format</td> + <td>A format for the output filter file.</td> + <tr> +</tr> </table> <p>The filter command allows you to define and manipulate these parameters. </p> @@ -113,6 +124,15 @@ parameters. Note that parameters that have not been assigned to in the event processors are never passed to the output file.</td> </tr> + <tr> + <td>format</td> + <td>A string that selects a filter output format. SpecTcl has the + <tt>xdr</tt> filter output format built in. SpecTcl plugins + can provide other filter types. The usage string for the + filter command (e.g. just type <tt>filter</tt>) provides + a list of known format strings and their meanings. + </td> +</tr> </table> <p><a href="#Top">Top</a></p> <h3>Deleting a Filter</h3> @@ -168,6 +188,19 @@ is equivalent to :</p> <p>filter -list *</p> <p><a href="#Top">Top</a></p> +<h3>Setting the filter output file format</h3> +<p> + To set the format of the output filter file (only legal when the filter is + disabled), use the <tt>-format</tt> switch: +<pre> +filter -format filtername format +</pre> + where <tt>filtername</tt> is the name of a filter and + <tt>format</tt> is a string identifying the format. +</p> +<p> +If you never specify a format, the default is <pre>xdr</pre> +</p> <h2>Examples</h2> <p>In the examples below, SpecTcl's output is given in <font color="#FF0000">red.</font></p> <p>The example below creates two filters named george and harry:</p> @@ -178,20 +211,28 @@ <p>For george, only the parameters Distribution1 and Distribution2 are written to the output filter file. For Harry, only Distribution3 is written. Note that both filters are disabled, and the filenames for both filters are the -same. </p> +same. , and the format is the <pre>xdr</pre> format.</p> <p>The example below modifies the filenames for the two filters:</p> <pre><font color="#FF0000">%</font> filter -filename george.flt george -<font color="#FF0000">harry Band1 /user/fox/filter.flt {Distribution3} disabled +<font color="#FF0000">george Band1 /user/fox/filter.flt {Distribution1 +Distribution2} disabled xdr %</font> filter -filename harry.flt harry -<font color="#FF0000">harry Band1 harry.flt {Distribution3} disabled +<font color="#FF0000">harry Band1 harry.flt {Distribution3} disabled xdr %</font> </pre> <p>Both filters are still disabled. The following enables the two filters:</p> <p><font color="#FF0000">%</font> filter -enable george<br> -<font color="#FF0000">george Slice george.flt {Distribution1 Distribution2} enabled<br> +<font color="#FF0000">george Slice george.flt {Distribution1 Distribution2} +enabled xdr<br> %</font> filter -enable harry<br> -<font color="#FF0000">harry Band1 harry.flt {Distribution3} enabled<br> +<font color="#FF0000">harry Band1 harry.flt {Distribution3} enabled xdr<br> % </font></p> <p><br> +<p> + Suppose a plugin add the filter type <pre>root</pre> that writes root output +trees we can set the filter output format for george as follows:<br /> +filter -format george root<br /> +<font color="#FF0000">george</font> <br /> +</p> <a href="#Top">Top</a></p> <hr> <p>Last Modified: <!--webbot bot="Timestamp" s-type="EDITED" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-01-25 13:19:34
|
Revision: 1476 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1476&view=rev Author: ron-fox Date: 2008-01-25 05:19:37 -0800 (Fri, 25 Jan 2008) Log Message: ----------- - Fix gate flattening was preventing proper gate application. - Debug Filter api tested with root filter plugin11~ Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Filter/EventFilter.cpp trunk/SpecTcl/Sorter/CFlattenedGateList.cpp trunk/SpecTcl/Sorter/CFlattenedGateList.h trunk/SpecTcl/Sorter/Histogrammer.cpp trunk/SpecTcl/Sorter/Makefile.am Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-01-18 11:55:24 UTC (rev 1475) +++ trunk/SpecTcl/CHANGELOG 2008-01-25 13:19:37 UTC (rev 1476) @@ -750,3 +750,6 @@ - Add ability to introspect filter format. January 18, 2008 - Added support for the newer spectrum types to the API - Added filter support to the API. +January 25, 2008 - Debugged filter support API + - Fixed error in gate flattener handling that was preventing + gate from being properly applied. \ No newline at end of file Modified: trunk/SpecTcl/Filter/EventFilter.cpp =================================================================== --- trunk/SpecTcl/Filter/EventFilter.cpp 2008-01-18 11:55:24 UTC (rev 1475) +++ trunk/SpecTcl/Filter/EventFilter.cpp 2008-01-25 13:19:37 UTC (rev 1476) @@ -211,16 +211,19 @@ void CEventFilter::operator()(CEventList& rEvents) { - CEventListIterator i; - CEventListIterator e = rEvents.end(); - for(i = rEvents.begin(); i != e; i++) { + + if (m_fEnabled) { // Don't execute if disabled!! + CEventListIterator i; + CEventListIterator e = rEvents.end(); + for(i = rEvents.begin(); i != e; i++) { CEvent* pEvent = *i; if(pEvent) { - operator()(*pEvent); + operator()(*pEvent); } else { break; } - } + } + } } /*! Function Call operator. This function call operator processes a single event. Modified: trunk/SpecTcl/Sorter/CFlattenedGateList.cpp =================================================================== --- trunk/SpecTcl/Sorter/CFlattenedGateList.cpp 2008-01-18 11:55:24 UTC (rev 1475) +++ trunk/SpecTcl/Sorter/CFlattenedGateList.cpp 2008-01-25 13:19:37 UTC (rev 1476) @@ -16,12 +16,14 @@ #include <config.h> #include "CFlattenedGateList.h" +#include "Histogrammer.h" /*! Default constructor: The GateList constructor takes care of itself. */ -CFlattenedGateList::CFlattenedGateList() +CFlattenedGateList::CFlattenedGateList(CHistogrammer *pHistogrammer) : + m_pHistogrammer(pHistogrammer) { } /*! @@ -36,7 +38,8 @@ */ CFlattenedGateList::CFlattenedGateList(const CFlattenedGateList& rhs) : - m_Gates(rhs.m_Gates) + m_Gates(rhs.m_Gates), + m_pHistogrammer(rhs.m_pHistogrammer) { } /* @@ -46,6 +49,7 @@ CFlattenedGateList::operator=(const CFlattenedGateList& rhs) { m_Gates = rhs.m_Gates; + m_pHistogrammer = rhs.m_pHistogrammer; return *this; } @@ -81,6 +85,9 @@ Reacts to the addition of new gate to the gate dictionary. This is only called for gates that don't yet exist. Insert the gate at the end of the flattened gates list. + Since SpecTcl can swap around gate containers and +since those gate containers will copy gates, we need to get the +actual gate container that's been inserted in the dictionary. \param name - Name of the new gate. \param container - The container that fronts the gate. @@ -90,7 +97,8 @@ CFlattenedGateList::onAdd(std::string name, CGateContainer& item) { if (item->caches()) { - m_Gates.add(&item); + CGateContainer* pItem = m_pHistogrammer->FindGate(name); + m_Gates.add(pItem); } } Modified: trunk/SpecTcl/Sorter/CFlattenedGateList.h =================================================================== --- trunk/SpecTcl/Sorter/CFlattenedGateList.h 2008-01-18 11:55:24 UTC (rev 1475) +++ trunk/SpecTcl/Sorter/CFlattenedGateList.h 2008-01-25 13:19:37 UTC (rev 1476) @@ -28,6 +28,7 @@ #include "DynamicList.h" #endif +class CHistogrammer; /*! @@ -54,10 +55,10 @@ // Member data: private: - GateList m_Gates; - + GateList m_Gates; + CHistogrammer* m_pHistogrammer; public: - CFlattenedGateList(); + CFlattenedGateList(CHistogrammer* histogrammer); virtual ~CFlattenedGateList(); CFlattenedGateList(const CFlattenedGateList& rhs); Modified: trunk/SpecTcl/Sorter/Histogrammer.cpp =================================================================== --- trunk/SpecTcl/Sorter/Histogrammer.cpp 2008-01-18 11:55:24 UTC (rev 1475) +++ trunk/SpecTcl/Sorter/Histogrammer.cpp 2008-01-25 13:19:37 UTC (rev 1476) @@ -2053,7 +2053,7 @@ void CHistogrammer::createListObservers() { - m_pGateList = new CFlattenedGateList; + m_pGateList = new CFlattenedGateList( this); addGateObserver(m_pGateList); m_pSpectrumLists = new CSpectrumByParameter; Modified: trunk/SpecTcl/Sorter/Makefile.am =================================================================== --- trunk/SpecTcl/Sorter/Makefile.am 2008-01-18 11:55:24 UTC (rev 1475) +++ trunk/SpecTcl/Sorter/Makefile.am 2008-01-25 13:19:37 UTC (rev 1476) @@ -1,5 +1,6 @@ INCLUDES = -I. -I../Utility -I../NSCLException -I../Xamine -I../Gates \ - -I../Events -I../Display @TCL_FLAGS@ -I.. -I@top_srcdir@/Fits + -I../Events -I../Display @TCL_FLAGS@ -I.. -I@top_srcdir@/Fits + libSorting_la_LIBADD = @top_srcdir@/Xamine/libXplus.la \ @top_srcdir@/Gates/libGates.la \ @top_srcdir@/Events/libAnalysis.la \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-02-19 21:34:17
|
Revision: 1498 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1498&view=rev Author: ron-fox Date: 2008-02-19 13:34:20 -0800 (Tue, 19 Feb 2008) Log Message: ----------- Finals for version 3.2 Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Makefile.am trunk/SpecTcl/configure.in trunk/SpecTcl/gri-2.12.7/doc/gri.info trunk/SpecTcl/gri-2.12.7/doc/stamp-vti trunk/SpecTcl/gri-2.12.7/doc/version.texi Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-02-08 13:42:10 UTC (rev 1497) +++ trunk/SpecTcl/CHANGELOG 2008-02-19 21:34:20 UTC (rev 1498) @@ -752,4 +752,5 @@ - Added filter support to the API. January 25, 2008 - Debugged filter support API - Fixed error in gate flattener handling that was preventing - gate from being properly applied. \ No newline at end of file + gate from being properly applied. +-------------------------- Finalized 3.2 Feb 19, 2008 ---------------------- Modified: trunk/SpecTcl/Makefile.am =================================================================== --- trunk/SpecTcl/Makefile.am 2008-02-08 13:42:10 UTC (rev 1497) +++ trunk/SpecTcl/Makefile.am 2008-02-19 21:34:20 UTC (rev 1498) @@ -2,7 +2,6 @@ NSCLException Xamine Tape EventSource \ TCL Events Gates Sorter SpectrumIO Filter Analysis TreeParam \ Fits SpecTcl \ - radware \ contrib TestFiles Gui splash filtsplit calibratedparams # Gri TestFiles need to be figured out still.. Modified: trunk/SpecTcl/configure.in =================================================================== --- trunk/SpecTcl/configure.in 2008-02-08 13:42:10 UTC (rev 1497) +++ trunk/SpecTcl/configure.in 2008-02-19 21:34:20 UTC (rev 1498) @@ -4,7 +4,7 @@ AC_CONFIG_AUX_DIR(config) AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST -AM_INIT_AUTOMAKE(SpecTcl, 3.2-pre5) +AM_INIT_AUTOMAKE(SpecTcl, 3.2) AC_EXEEXT @@ -919,7 +919,6 @@ TreeParam/Makefile \ Fits/Makefile \ SpecTcl/Makefile \ - radware/Makefile \ contrib/Makefile contrib/scriptable/Makefile \ TestFiles/Makefile \ Gui/Makefile splash/Makefile filtsplit/Makefile doc/Makefile \ Modified: trunk/SpecTcl/gri-2.12.7/doc/gri.info =================================================================== --- trunk/SpecTcl/gri-2.12.7/doc/gri.info 2008-02-08 13:42:10 UTC (rev 1497) +++ trunk/SpecTcl/gri-2.12.7/doc/gri.info 2008-02-19 21:34:20 UTC (rev 1498) @@ -1,374 +0,0 @@ -This is gri.info, produced by makeinfo version 4.7 from gri.texi. - -INFO-DIR-SECTION Scientific Applications -START-INFO-DIR-ENTRY -* Gri: (gri). Programming language for scientific illustration -END-INFO-DIR-ENTRY - - -Indirect: -gri.info-1: 213 -gri.info-2: 300203 -gri.info-3: 552605 - -Tag Table: -(Indirect) -Node: Top213 -Node: Introduction2246 -Node: Simple Example7746 -Node: Invoking Gri9924 -Node: Getting More Control20624 -Node: Simple Example Revisited21470 -Node: Axis Scaling25443 -Node: Log And Linear27179 -Node: Length27455 -Node: Range28087 -Node: Labels28715 -Node: Position28960 -Node: Fonts29943 -Node: Pen Color30387 -Ref: pen-color-hexadecimal31726 -Node: X-y Plots35906 -Node: Linegraphs36196 -Node: Scattergraphs38987 -Node: Formula Plots41736 -Node: Contour Plots43809 -Node: Pre-gridded Data44197 -Node: Ungridded Data48037 -Node: Images50241 -Node: Reading and Creating Image Data51187 -Node: Image PostScript Output54989 -Node: Example Image55902 -Node: Examples59553 -Node: Box Plots60786 -Node: Contouring62721 -Node: Grayscale Images66837 -Node: Combination69789 -Node: Fancy73394 -Node: Legend78614 -Node: Polygons81400 -Node: TS Diagram83125 -Node: PDF Diagram84807 -Node: Running Means90762 -Node: Finite Element Model Mesh93932 -Node: Handling Data97118 -Node: Handling Headers97626 -Node: Ignoring Columns100687 -Node: Column Algebra101985 -Node: Combining Columns103156 -Node: Plotting Several Columns103764 -Node: Commands106006 -Node: Overview Of Gri Commands106353 -Node: Command Syntax108150 -Node: List Of Gri Commands109583 -Node: Assert113361 -Node: Cd114435 -Node: Close114934 -Node: Convert115183 -Node: Convert Columns To Grid115683 -Node: Convert Columns To Spline128496 -Node: Convert Grid To Columns130054 -Node: Convert Grid To Image130951 -Node: Convert Image To Grid133077 -Node: Create133991 -Node: Create Columns From Function134307 -Node: Create Image Grayscale135066 -Node: Debug135576 -Node: Delete136692 -Node: Differentiate138163 -Node: Draw138936 -Node: Draw Arc142008 -Node: Draw Arrow142758 -Node: Draw Arrows143301 -Node: Draw Axes If Needed143825 -Node: Draw Axes144133 -Node: Draw Border Box145400 -Node: Draw Box146358 -Node: Draw Circle147835 -Node: Draw Contour148109 -Node: Draw Curve150036 -Node: Draw Essay151421 -Node: Draw Gri Logo152132 -Node: Draw Grid153172 -Node: Draw Image Histogram153394 -Node: Draw Image Palette153913 -Node: Draw Image156473 -Node: Draw Isopycnal156711 -Node: Draw Isospice160421 -Node: Draw Label Boxed161802 -Node: Draw Label Whiteunder162291 -Node: Draw Label For Last Curve162797 -Node: Draw Label163124 -Node: Draw Line From163872 -Node: Draw Line Legend164359 -Node: Draw Lines165400 -Node: Draw Patches166060 -Node: Draw Polygon166580 -Node: Draw Regression Line167043 -Node: Draw Symbol At167749 -Node: Draw Symbol Legend169185 -Node: Draw Symbol169615 -Node: Draw Time Stamp172416 -Node: Draw Title173146 -Node: Draw Values173355 -Node: Draw X Axis174699 -Node: Draw X Box Plot175621 -Node: Draw Y Axis176779 -Node: Draw Y Box Plot177818 -Node: Draw Zero Line178371 -Node: End Group178806 -Node: Expecting179023 -Node: Filter179636 -Node: Flip182353 -Node: Get Env182858 -Node: Group184181 -Node: Heal184376 -Node: Help185794 -Node: If186438 -Node: Ignore188790 -Node: Input188982 -Node: Insert190054 -Node: Interpolate190793 -Node: List191426 -Node: Ls191830 -Node: Mask192260 -Node: New193008 -Node: Newpage194845 -Node: New Postscript File195238 -Node: Open195613 -Node: Opening Simple Files196040 -Node: Ascii Files196252 -Node: Binary Files197698 -Node: NetCDF Files199624 -Node: Opening Pipes200648 -Node: Opening URLs205145 -Node: Postscript206007 -Node: Pwd207016 -Node: Query207198 -Node: Quit208455 -Node: Read208840 -Node: Read Colornames209759 -Node: Read Columns211118 -Node: Read Grid215124 -Node: Read Image Colorscale219015 -Node: Read Image Grayscale219910 -Node: Read Image Mask221666 -Node: Read Image222381 -Node: Read From224594 -Node: Read Synonym or Variable225571 -Node: Read Line227700 -Node: Regress228032 -Node: Reorder229313 -Node: Rescale230210 -Node: Resize230854 -Node: Return232338 -Node: Rewind232599 -Node: Rpnfunction232897 -Node: Set234302 -Node: Set Axes Style238143 -Node: Set Arrow Size239608 -Node: Set Arrow Type240398 -Node: Set Beep241126 -Node: Set Bounding Box241403 -Node: Set Clip243161 -Node: Set Color244481 -Node: Set Colorname246877 -Node: Set Contour Format247677 -Node: Set Contour Label For248406 -Node: Set Contour Label Position248727 -Node: Set Contour Labels249685 -Node: Set Dash250537 -Node: Set Environment251895 -Node: Set Error Action252328 -Node: Set Flag252575 -Node: Set Font Color253644 -Node: Set Font Encoding254284 -Node: Set Font Size255026 -Node: Set Font To255956 -Node: Set Graylevel256918 -Node: Set Grid Missing257627 -Node: Set Ignore Initial Newline258655 -Node: Set Ignore Error Eof259049 -Node: Set Image Colorscale259413 -Node: Set Image Grayscale261457 -Node: Set Image Missing Value Color264121 -Node: Set Image Range264843 -Node: Set Input Data Window267077 -Node: Set Input Data Separator268205 -Node: Set Line Cap269014 -Node: Set Line Join269752 -Node: Set Line Width270393 -Node: Set Missing Value272966 -Node: Set Page Size273388 -Node: Set Page274445 -Node: Set Panel275789 -Node: Set Panels276239 -Node: Set Path To277457 -Node: Set Postscript Filename279101 -Node: Set Symbol Size279378 -Node: Set Tic Size279822 -Node: Set Trace280254 -Node: Set U Scale280647 -Node: Set V Scale281181 -Node: Set X Axis281716 -Node: Set X Format284735 -Node: Set X Grid285542 -Node: Set X Margin286250 -Node: Set X Name287022 -Node: Set X Size287332 -Node: Set X Type287744 -Node: Set Y Axis288950 -Node: Set Y Format291992 -Node: Set Y Grid292801 -Node: Set Y Margin293509 -Node: Set Y Name294319 -Node: Set Y Size294629 -Node: Set Y Type295044 -Node: Set Z Missing296254 -Node: Show296581 -Node: Skip299532 -Node: Sleep300203 -Node: Smooth300752 -Node: Source303265 -Node: Sprintf303667 -Node: State304543 -Node: Superuser305314 -Node: System306336 -Node: Unlink311999 -Node: While312947 -Node: Write314504 -Node: Write Columns315470 -Node: Write Contour315699 -Node: Write Grid316676 -Node: Write Image317140 -Node: Programming318840 -Node: Defaults320489 -Node: Online Help322320 -Node: Long Command Lines324962 -Node: Variables325283 -Node: About Variables325619 -Node: User Variables327846 -Node: Built-in Variables329520 -Node: Synonyms336234 -Node: Naming Convention336849 -Node: Using Synonyms340262 -Node: Generalizing Code340702 -Node: Storing OS Output341148 -Node: Storing User Responses342210 -Node: Storing File Contents343008 -Node: Extracting Words From Strings343727 -Node: Important Builtin Synonyms345286 -Node: Alias Synonyms347094 -Node: Local Synonyms348714 -Node: If Statements352298 -Node: Loops355225 -Node: Mathematics355432 -Node: rpn Mathematics358384 -Node: Stack Operators360352 -Node: Rpn Functions361217 -Node: Tertiary Operators361736 -Node: Binary Operators362169 -Node: Unary Operators366828 -Ref: age-rpn-operator367715 -Node: Solitary Operators376867 -Node: Manipulation of Columns etc378398 -Node: rpn Examples379881 -Node: Text381924 -Node: Embedded Synonyms382732 -Node: Mathematical Text383381 -Node: Non-English Text387389 -Node: Adjustment Of Character Position391095 -Node: Adding New Commands391509 -Node: Purpose392098 -Node: Parsing393357 -Node: Simple New Command395860 -Node: Complicated New Command398137 -Node: Changeable Command Arguments400637 -Node: The Ampersand Syntax401563 -Node: Doubling A Variable403066 -Node: Manipulating A Synonym404718 -Node: Nesting405241 -Node: Using New And Delete406022 -Node: Determining Calling Information407144 -Node: Implementation of Ampersand Syntax408023 -Node: Hints410113 -Node: Debugging413663 -Node: Error Messages415783 -Node: Missing Values417618 -Node: Operating System418671 -Node: Using OS Inside Gri419022 -Node: Using Gri Inside OS423838 -Node: Resource File424667 -Node: Environment426796 -Node: Extras427353 -Node: gri_merge427656 -Node: gri_unpage429661 -Node: Using System Tools430434 -Node: Why Use The Environment431085 -Node: Grep433331 -Node: Sed433719 -Node: Awk434286 -Node: Perl436071 -Node: Discussion Group437135 -Node: Emacs Mode437620 -Node: About Gri Mode438390 -Node: Gri-mode screenshots440634 -Node: Screenshot 1440915 -Node: Screenshot 2441477 -Node: Screenshot 3442063 -Node: Screenshot 4442605 -Node: Installing gri-mode.el443084 -Node: Step 1444472 -Node: Step 2445699 -Node: Step 3449229 -Node: Step 4450449 -Node: Major Gri-mode commands451397 -Node: Gri command names452185 -Node: Possible completions453045 -Node: Command abbreviations454633 -Node: Variable completion455379 -Node: Editing the syntax456201 -Node: User commands458283 -Node: Gri code fragments458778 -Node: Info interface459978 -Node: Other features460978 -Node: Dealing with many Gri versions462321 -Node: Filename arguments when running gri464113 -Node: History465417 -Node: Stable Stream466623 -Node: Version 2.12467148 -Node: Version 2.10475553 -Node: Version 2.8479271 -Node: Version 2.6483021 -Node: Version 2.4490572 -Node: Version 2.2491989 -Node: Unstable Stream493922 -Node: Development Version494113 -Node: Plans495100 -Node: Deprecated Commands497037 -Node: Installation497388 -Node: Unix-install497617 -Node: Archiving Old Versions498017 -Node: Linux499452 -Node: Precompiled Unix500516 -Node: Uncompiled Unix501699 -Node: Msdos-install508112 -Node: OS2-install510746 -Node: Mac-install511157 -Node: Beos-install511532 -Node: Bugs511779 -Node: Known Bugs512056 -Node: Reporting Bugs515230 -Node: Killing Bugs516551 -Node: Debugging Software You Will Need516797 -Node: Debugging at a Glance517768 -Node: Debugging Example519656 -Node: Test Suite528355 -Node: Gri in the Press528926 -Node: Acknowledgments531229 -Node: License532077 -Node: Concept Index552605 -Node: Index of Commands659715 -Node: Index of Builtins673848 - -End Tag Table Modified: trunk/SpecTcl/gri-2.12.7/doc/stamp-vti =================================================================== --- trunk/SpecTcl/gri-2.12.7/doc/stamp-vti 2008-02-08 13:42:10 UTC (rev 1497) +++ trunk/SpecTcl/gri-2.12.7/doc/stamp-vti 2008-02-19 21:34:20 UTC (rev 1498) @@ -1,4 +1,4 @@ -@set UPDATED 3 September 2003 -@set UPDATED-MONTH September 2003 +@set UPDATED 5 November 2007 +@set UPDATED-MONTH November 2007 @set EDITION 2.12.7 @set VERSION 2.12.7 Modified: trunk/SpecTcl/gri-2.12.7/doc/version.texi =================================================================== --- trunk/SpecTcl/gri-2.12.7/doc/version.texi 2008-02-08 13:42:10 UTC (rev 1497) +++ trunk/SpecTcl/gri-2.12.7/doc/version.texi 2008-02-19 21:34:20 UTC (rev 1498) @@ -1,4 +1,4 @@ -@set UPDATED 3 September 2003 -@set UPDATED-MONTH September 2003 +@set UPDATED 5 November 2007 +@set UPDATED-MONTH November 2007 @set EDITION 2.12.7 @set VERSION 2.12.7 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-02-25 14:53:17
|
Revision: 1500 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1500&view=rev Author: ron-fox Date: 2008-02-25 06:53:19 -0800 (Mon, 25 Feb 2008) Log Message: ----------- Work around file selection dialog issue with lesstif. Lesstif stores the selected file in the filter mask which is not the desired (or even correct) behavior when, as Xamine does, a dialog is re-used. Explicitly assert the filter mask to be its current value with /*.win appended. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Display/XMDialogs.cc trunk/SpecTcl/Display/XMDialogs.h trunk/SpecTcl/Display/winiomenu.cc Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-02-22 22:19:25 UTC (rev 1499) +++ trunk/SpecTcl/CHANGELOG 2008-02-25 14:53:19 UTC (rev 1500) @@ -753,4 +753,8 @@ January 25, 2008 - Debugged filter support API - Fixed error in gate flattener handling that was preventing gate from being properly applied. --------------------------- Finalized 3.2 Feb 19, 2008 ---------------------- +February 25,2008 - Work around lesstif file dialog bug..For each re-use of the file selection + dialog, explicitly set the search mask to the dirname of the mask with + *.win appended. lesstif has the tendency to store the selected file + in the filter path. + Modified: trunk/SpecTcl/Display/XMDialogs.cc =================================================================== --- trunk/SpecTcl/Display/XMDialogs.cc 2008-02-22 22:19:25 UTC (rev 1499) +++ trunk/SpecTcl/Display/XMDialogs.cc 2008-02-25 14:53:19 UTC (rev 1500) @@ -2294,14 +2294,16 @@ void XMFileListDialog::DoSearch(XmString dir) { + SetAttribute(XmNdirMask, &dir); XmFileSelectionDoSearch(id, dir); } void -XMFileListDialog::DoSearch(char *dir) +XMFileListDialog::DoSearch(const char *dir) { + char* pDir = const_cast<char*>(dir); XmString d; - d = XmStringCreateLtoR(dir, XmSTRING_DEFAULT_CHARSET); + d = XmStringCreateLtoR(pDir, XmSTRING_DEFAULT_CHARSET); XmFileSelectionDoSearch(id, d); XmStringFree(d); } Modified: trunk/SpecTcl/Display/XMDialogs.h =================================================================== --- trunk/SpecTcl/Display/XMDialogs.h 2008-02-22 22:19:25 UTC (rev 1499) +++ trunk/SpecTcl/Display/XMDialogs.h 2008-02-25 14:53:19 UTC (rev 1500) @@ -802,7 +802,7 @@ /* Methods which manipulate the search strings: */ void DoSearch(XmString dir); - void DoSearch(char *dir); + void DoSearch(const char *dir); void DoSearch(); char *GetDirectory(); char *GetFileMask(); Modified: trunk/SpecTcl/Display/winiomenu.cc =================================================================== --- trunk/SpecTcl/Display/winiomenu.cc 2008-02-22 22:19:25 UTC (rev 1499) +++ trunk/SpecTcl/Display/winiomenu.cc 2008-02-25 14:53:19 UTC (rev 1500) @@ -1,280 +1,20 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' -*/ static const char* Copyright = "(C) Copyright Michigan State University 1994, All rights reserved"; /* ** Facility: @@ -317,6 +57,7 @@ #include "buttonsetup.h" #include "menusetup.h" #include <string> // STL String so I get around length problems. +#include <libgen.h> #ifdef HAVE_STD_NAMESPACE using namespace std; @@ -434,7 +175,31 @@ strncat(searchmask, mask, MAX_SEARCHMASK); return searchmask; } + +/* + Lesstif has a nasty little file dialog bug we're going to 'sort of' work + around this. In lesstif, selecting the file corrupts the filter string to + be the file that was selected. We're going to get the directory of the + selected file, pop a *.win on the back end and re-set the search string + from that. + parameters: + XMFileListDialog* widget. + +*/ +void +resetSearchMask(XMFileListDialog* widget) +{ + string currentMask(widget->GetFullSearchString()); + char *pMask = new char[strlen(currentMask.c_str()) +1]; + strcpy(pMask, currentMask.c_str()); + string searchDir(dirname(pMask)); + delete []pMask; + + searchDir += "/*.win"; + widget->DoSearch(searchDir.c_str()); +} + /* ** Functional Description: @@ -534,8 +299,9 @@ openbox->DoSearch(full); } else { + resetSearchMask(openbox); openbox->Manage(); - openbox->DoSearch(); // Update the current search stuff. + // openbox->DoSearch(); // Update the current search stuff. } /* Set the per call characteristics of the dialog: */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-03-12 18:19:49
|
Revision: 1503 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1503&view=rev Author: ron-fox Date: 2008-03-12 11:19:56 -0700 (Wed, 12 Mar 2008) Log Message: ----------- Cosmetic changes to the guis. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Gui/fileMenu.html trunk/SpecTcl/Gui/newGui.tcl trunk/SpecTcl/SpecTcl/CFoldCommand.h trunk/SpecTcl/TreeParam/SpecTclGui.tcl Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-02-25 19:15:29 UTC (rev 1502) +++ trunk/SpecTcl/CHANGELOG 2008-03-12 18:19:56 UTC (rev 1503) @@ -757,4 +757,5 @@ dialog, explicitly set the search mask to the dirname of the mask with *.win appended. lesstif has the tendency to store the selected file in the filter path. - +March 12, 2008 - Cosmetic changes to folder gui file menu and the prompter for the + which gui to use dialog. Modified: trunk/SpecTcl/Gui/fileMenu.html =================================================================== --- trunk/SpecTcl/Gui/fileMenu.html 2008-02-25 19:15:29 UTC (rev 1502) +++ trunk/SpecTcl/Gui/fileMenu.html 2008-03-12 18:19:56 UTC (rev 1503) @@ -53,7 +53,7 @@ in listbox order to the file you selected. Spectra are written using the swrite <em>-format ascii</em> command. A spectrum file can be read in using the File->Read Spectrum File... command.</p> <br><br><a href="#top">Top</a> - <h3>Restore...</h3> + <h3>Load...</h3> <p>The File->Restore... command allows you to choose a saved spectrum script and execute it to restore the state of analysis.</p> <br><br><a href="#top">Top</a> Modified: trunk/SpecTcl/Gui/newGui.tcl =================================================================== --- trunk/SpecTcl/Gui/newGui.tcl 2008-02-25 19:15:29 UTC (rev 1502) +++ trunk/SpecTcl/Gui/newGui.tcl 2008-03-12 18:19:56 UTC (rev 1503) @@ -927,7 +927,7 @@ .topmenu.filemenu add command -label {Save TreeVariables...} -command writeVariables .topmenu.filemenu add command -label {Save Contents of Spectra...} -command saveSeveralSpectra .topmenu.filemenu add separator - .topmenu.filemenu add command -label Restore... -command "restoreState; .gui.b update; .gui.b update" + .topmenu.filemenu add command -label Load... -command "restoreState; .gui.b update; .gui.b update" .topmenu.filemenu add command -label {Read Spectrum File...} -command readSpectrumFile .topmenu.filemenu add command -label {Source Tcl Script...} \ -command sourceScript Modified: trunk/SpecTcl/SpecTcl/CFoldCommand.h =================================================================== --- trunk/SpecTcl/SpecTcl/CFoldCommand.h 2008-02-25 19:15:29 UTC (rev 1502) +++ trunk/SpecTcl/SpecTcl/CFoldCommand.h 2008-03-12 18:19:56 UTC (rev 1503) @@ -29,12 +29,17 @@ class CSpectrum; /** - * Implements the fold command. The fold command has the following forms: fold - - * apply gate spectrum ... Applies a gamma gate to a gamma spectrum as a fold. - * fold -list ?pattern? For all gamma spectra that match pattern (* if omitted), - * lists the spectra with folds and the folds applied to them in the form of a - * list containing elements of the form {name fold}. fold -remove spectrum For the - * gamma spectrum 'spectrum' removes the fold that is applied to it. + * Implements the fold command. The fold command has the following forms: +\verbatim + fold -apply gate spectrum ... Applies a gamma gate to a gamma spectrum as a fold. + fold -list ?pattern? For all gamma spectra that match pattern (* if omitted), + lists the spectra with folds and the folds applied to + them in the form of a list containing elements of + the form {name fold}. + fold -remove spectrum For the + gamma spectrum 'spectrum' removes the fold that is + applied to it. +\endverbatim * @created 22-Apr-2005 12:54:15 PM * @author Ron Fox * @version 1.0 Modified: trunk/SpecTcl/TreeParam/SpecTclGui.tcl =================================================================== --- trunk/SpecTcl/TreeParam/SpecTclGui.tcl 2008-02-25 19:15:29 UTC (rev 1502) +++ trunk/SpecTcl/TreeParam/SpecTclGui.tcl 2008-03-12 18:19:56 UTC (rev 1503) @@ -51,74 +51,76 @@ } } } -set answer no; # In case we never prompt. +set answer 0; # In case we never prompt. if {![info exists NoPromptForNewGui] || (!$NoPromptForNewGui)} { - set answer [tk_messageBox -icon question -type yesno -title "New Gui" \ - -message {This is the old SpecTcl GUI. If you want to use the new GUI, click "Yes" below}] -} -if {$answer == "yes"} { - source $SpecTclHome/Script/newGui.tcl -} else { + set answer [tk_dialog .newgui "New Gui" \ + {This is the old SpecTcl GUI. If you want to use the new GUI, click "New (folder) otherwise click Old(multicolored)" below} \ + questhead 0 "Old(multicolored)" "New(Folder)"] - if {![info exist TreeParameterHome]} { - set scriptname [info script] - set scriptdir [file dirname $scriptname] - set TreeParameterHome $scriptdir + if {$answer == 1} { + source $SpecTclHome/Script/newGui.tcl } +} - source $TreeParameterHome/mclistbox.tcl - source $TreeParameterHome/notebook.tcl - source $TreeParameterHome/tabnbook.tcl - source $TreeParameterHome/TreeParameter.tcl - - source $TreeParameterHome/SpectrumGenerator.tcl - - source $TreeParameterHome/ParameterManipulator.tcl - - source $TreeParameterHome/TreeVariable.tcl - - source $TreeParameterHome/VariableManipulator.tcl - - source $TreeParameterHome/GateGenerator.tcl - - CheckVersion - - CheckFiles - - GenerateMenuBitmaps - puts "Building SpecTcl GUI ..." - update - - set version [treeparameter -version] - - toplevel .gui - wm title .gui "TreeParameter GUI version $version" - tabnotebook_create .gui.main - pack .gui.main -expand 1 -fill both - SetupSpectrumGenerator .gui.main - SetupParameterManipulator .gui.main - SetupVariableManipulator .gui.main - SetupGateGenerator .gui.main - tabnotebook_display .gui.main Gates - tabnotebook_display .gui.main Variables - tabnotebook_display .gui.main Parameters - tabnotebook_display .gui.main Spectra - trace variable spectrumParameterX w SpectrumParameterXCommand - trace variable spectrumParameterY w SpectrumParameterYCommand - for {set i 1} {$i <= 20} {incr i} { - trace variable parameter(Name$i) w "MenuLoadParameter $i" - trace variable variable(Name$i) w "MenuLoadVariable $i" - } - foreach v [treevariable -list] { - set vName [lindex [lindex $v 0] 0] - trace variable $vName w SetChanged - } - global spectrumMask gateMask - trace variable spectrumMask w DynamicSpectrumList - trace variable gateMask w DynamicGateList - puts "SpecTcl GUI loaded." - +if {![info exist TreeParameterHome]} { + set scriptname [info script] + set scriptdir [file dirname $scriptname] + set TreeParameterHome $scriptdir } + +source $TreeParameterHome/mclistbox.tcl +source $TreeParameterHome/notebook.tcl +source $TreeParameterHome/tabnbook.tcl + +source $TreeParameterHome/TreeParameter.tcl + +source $TreeParameterHome/SpectrumGenerator.tcl + +source $TreeParameterHome/ParameterManipulator.tcl + +source $TreeParameterHome/TreeVariable.tcl + +source $TreeParameterHome/VariableManipulator.tcl + +source $TreeParameterHome/GateGenerator.tcl + +CheckVersion + +CheckFiles + +GenerateMenuBitmaps +puts "Building SpecTcl GUI ..." +update + +set version [treeparameter -version] + +toplevel .gui +wm title .gui "TreeParameter GUI version $version" +tabnotebook_create .gui.main +pack .gui.main -expand 1 -fill both +SetupSpectrumGenerator .gui.main +SetupParameterManipulator .gui.main +SetupVariableManipulator .gui.main +SetupGateGenerator .gui.main +tabnotebook_display .gui.main Gates +tabnotebook_display .gui.main Variables +tabnotebook_display .gui.main Parameters +tabnotebook_display .gui.main Spectra +trace variable spectrumParameterX w SpectrumParameterXCommand +trace variable spectrumParameterY w SpectrumParameterYCommand +for {set i 1} {$i <= 20} {incr i} { + trace variable parameter(Name$i) w "MenuLoadParameter $i" + trace variable variable(Name$i) w "MenuLoadVariable $i" +} +foreach v [treevariable -list] { + set vName [lindex [lindex $v 0] 0] + trace variable $vName w SetChanged +} +global spectrumMask gateMask +trace variable spectrumMask w DynamicSpectrumList +trace variable gateMask w DynamicGateList +puts "SpecTcl GUI loaded." + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-03-21 12:17:49
|
Revision: 1509 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1509&view=rev Author: ron-fox Date: 2008-03-21 05:17:55 -0700 (Fri, 21 Mar 2008) Log Message: ----------- Fix MCM error with use of append rather than lappend to maintain lists. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/TreeParam/TreeParameter.tcl Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-03-21 12:13:39 UTC (rev 1508) +++ trunk/SpecTcl/CHANGELOG 2008-03-21 12:17:55 UTC (rev 1509) @@ -759,3 +759,8 @@ in the filter path. March 12, 2008 - Cosmetic changes to folder gui file menu and the prompter for the which gui to use dialog. +March 21, 2008 - Fix error in MCM GUI where parameters with empty units could cause + errors in the data structures keeping track of the parameters. + Specifically, the entries in the units list would collapse out of + that list due to the use of append, rather than lappend to create those lists. + Modified: trunk/SpecTcl/TreeParam/TreeParameter.tcl =================================================================== --- trunk/SpecTcl/TreeParam/TreeParameter.tcl 2008-03-21 12:13:39 UTC (rev 1508) +++ trunk/SpecTcl/TreeParam/TreeParameter.tcl 2008-03-21 12:17:55 UTC (rev 1509) @@ -15,7 +15,7 @@ append Name [lindex $thePath $j] . } set Name [string trimright $Name .] - set theIndex [lsearch $treeParameterName($Name) [lindex $thePath end]] + set theIndex [lsearch -exact $treeParameterName($Name) [lindex $thePath end]] set treeParameterBins($Name) [lreplace $treeParameterBins($Name) $theIndex $theIndex [lindex $p 1]] set treeParameterStart($Name) [lreplace $treeParameterStart($Name) $theIndex $theIndex [lindex $p 2]] set treeParameterStop($Name) [lreplace $treeParameterStop($Name) $theIndex $theIndex [lindex $p 3]] @@ -40,8 +40,8 @@ set rootName [lindex $thePath 0] # Add parameter root name if it hasn't been registered yet if {[info exist treeParameterRoot]} { - if {[lsearch $treeParameterRoot $rootName] == -1} { - append treeParameterRoot "$rootName " + if {[lsearch -exact $treeParameterRoot $rootName] == -1} { + lappend treeParameterRoot $rootName } } else { set treeParameterRoot "$rootName " @@ -55,20 +55,20 @@ set Name [string trimright $Name .] set subName [lindex $thePath [expr $i+1]] if {[info exist treeParameterName($Name)]} { - if {[set Index [lsearch $treeParameterName($Name) $subName]] == -1} { - append treeParameterName($Name) "$subName " + if {[set Index [lsearch -exact $treeParameterName($Name) $subName]] == -1} { + lappend treeParameterName($Name) $subName if {$i == [expr $theLength-2]} { - append treeParameterBins($Name) "$theBins " - append treeParameterStart($Name) "$theStart " - append treeParameterInc($Name) "$theInc " - append treeParameterStop($Name) "$theStop " - append treeParameterUnit($Name) "$theUnit " + lappend treeParameterBins($Name) $theBins + lappend treeParameterStart($Name) $theStart + lappend treeParameterInc($Name) $theInc + lappend treeParameterStop($Name) $theStop + lappend treeParameterUnit($Name) $theUnit } else { - append treeParameterBins($Name) "none " - append treeParameterStart($Name) "none " - append treeParameterInc($Name) "none " - append treeParameterStop($Name) "none " - append treeParameterUnit($Name) "none " + lappend treeParameterBins($Name) none + lappend treeParameterStart($Name) none + lappend treeParameterInc($Name) none + lappend treeParameterStop($Name) none + lappend treeParameterUnit($Name) none } } else { if {$i == [expr $theLength-2]} { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-03-24 13:25:11
|
Revision: 1510 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1510&view=rev Author: ron-fox Date: 2008-03-24 06:25:06 -0700 (Mon, 24 Mar 2008) Log Message: ----------- Add spectrum memory usage to folder GUI status line per Kevin Carnes' suggestion. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Gui/newGui.tcl Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-03-21 12:17:55 UTC (rev 1509) +++ trunk/SpecTcl/CHANGELOG 2008-03-24 13:25:06 UTC (rev 1510) @@ -763,4 +763,6 @@ errors in the data structures keeping track of the parameters. Specifically, the entries in the units list would collapse out of that list due to the use of append, rather than lappend to create those lists. +March 24, 2008 - Add spectrum memory usage to status line of folder GUI per Kevin Carnes + suggestion. Modified: trunk/SpecTcl/Gui/newGui.tcl =================================================================== --- trunk/SpecTcl/Gui/newGui.tcl 2008-03-21 12:17:55 UTC (rev 1509) +++ trunk/SpecTcl/Gui/newGui.tcl 2008-03-24 13:25:06 UTC (rev 1510) @@ -843,7 +843,7 @@ .editvariable configure -variable $name } -# modifyParameter path +# modifyParameter paths # Called to allow the user to modify a parameter. # A prompter for the parameter properties is created if # necessary and configured to edit the parameter. @@ -857,6 +857,45 @@ } .editparameter configure -parameter [pathToName $path] } + +# +# Determine how many bytes of display memory are in use: +# +proc spectrumUsage {} { + set multiplier(long) 4 + set multiplier(word) 2 + set multiplier(byte) 1 + + + set spectra [spectrum -list] + set usage 0 + + foreach spectrum $spectra { + + # Figure out the channel count for the spectrum: + + set axes [lindex $spectrum 4] + set dtype [lindex $spectrum 5] + + + set xChannels [lindex [lindex $axes 0] 2] + if {[llength $axes] == 1} { + set channels $xChannels + } else { + set yChannels [lindex [lindex $axes 1] 2] + set channels [expr $xChannels * $yChannels] + } + + # Multiply depending on the size of each channel: + + set bytes [expr $channels * $multiplier($dtype)] + + set usage [expr $usage + $bytes] + + } + return $usage + +} # updateStatus nms # Maintains the status line in an updated state. # Parameters: @@ -869,7 +908,9 @@ global BuffersAnalyzed global LastSequence global LargestSource + + # It's always possible the user destroyed the window so conditionalize # the update on the window's existence. @@ -877,9 +918,17 @@ after $nms [list updateStatus $nms]; # Reschedule. + + set spectrumMemory [spectrumUsage] + set spectrumMemory [expr $spectrumMemory/(1024*1024)] + set outOf "" + if {[info globals DisplayMegabytes] ne ""} { + set outOf "/$::DisplayMegabytes" + } + + .gui.statusline1 configure -text \ - [format "Title %s Run Number: %s" $RunTitle $RunNumber] - + [format "Display memory: %s%s MB Title %s Run Number: %s" $spectrumMemory $outOf $RunTitle $RunNumber] set source [attach -list] if {$LastSequence > 0} { set efficiency [expr 100.0*$BuffersAnalyzed/$LastSequence] @@ -909,6 +958,8 @@ # format statusline 2. + + .gui.statusline2 configure -text \ [format "Data Source: %s (%s) %d Buffers Analyzed %.2f%% efficient" $source $state $BuffersAnalyzed $efficiency] } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-03-27 11:36:27
|
Revision: 1518 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1518&view=rev Author: ron-fox Date: 2008-03-27 04:36:24 -0700 (Thu, 27 Mar 2008) Log Message: ----------- Fix defect in managing spectrum data structures for increments. If a spectrum being added or deleted has some undefined parameters, it cannot be added to or removed from the list. This happens if the user uses sread to read in a spectrum that was made on parameters that don't exist in this SpecTcl analysis case. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp trunk/SpecTcl/configure.in Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-03-24 16:34:55 UTC (rev 1517) +++ trunk/SpecTcl/CHANGELOG 2008-03-27 11:36:24 UTC (rev 1518) @@ -766,3 +766,11 @@ March 24, 2008 - Add spectrum memory usage to status line of folder GUI per Kevin Carnes suggestion. +March 24,2008 tag release of 3.2 +Start work on 3.2-001 + +March 27, 2008 - Correct error in spectrum observer. Don't try to enter a spectrum that is + not connected to all its parameters. This can happen in e.g. sread. + + + Modified: trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp =================================================================== --- trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp 2008-03-24 16:34:55 UTC (rev 1517) +++ trunk/SpecTcl/Sorter/CSpectrumByParameter.cpp 2008-03-27 11:36:24 UTC (rev 1518) @@ -16,6 +16,9 @@ #include <config.h> #include "CSpectrumByParameter.h" #include "Spectrum.h" + +#include <limits.h> + using namespace std; @@ -139,7 +142,16 @@ } else { vector<UInt_t> parameterIds; + + spectrum->GetParameterIds(parameterIds); + // If any parameter ids are UINT_MAX this spectrum is not incrementable + // (must be a spectrum read in that was not re-connected). + + for (int i=0; i < parameterIds.size(); i++) { + if (parameterIds[i] == UINT_MAX) return; + } + addToParameter(spectrum, parameterIds[0]); } } @@ -161,6 +173,14 @@ if (spectrum->needParameter()) { vector<UInt_t> parameters; spectrum->GetParameterIds(parameters); + + // We're not going to be in any of these lists if we have a parameter id + // that's UINT_MAX (see onAdd) + + for (int i=0; i < parameters.size(); i++) { + if (parameters[i] == UINT_MAX) return; + } + UInt_t param = parameters[0]; if ((param < m_spectraByParameter.size()) && m_spectraByParameter[param]) { m_spectraByParameter[param]->remove(spectrum); Modified: trunk/SpecTcl/configure.in =================================================================== --- trunk/SpecTcl/configure.in 2008-03-24 16:34:55 UTC (rev 1517) +++ trunk/SpecTcl/configure.in 2008-03-27 11:36:24 UTC (rev 1518) @@ -4,7 +4,7 @@ AC_CONFIG_AUX_DIR(config) AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST -AM_INIT_AUTOMAKE(SpecTcl, 3.2) +AM_INIT_AUTOMAKE(SpecTcl, 3.2-001) AC_EXEEXT This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-03-28 20:56:31
|
Revision: 1521 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1521&view=rev Author: ron-fox Date: 2008-03-28 13:56:37 -0700 (Fri, 28 Mar 2008) Log Message: ----------- BZ 330 - Add support for callback removal. - hook Xamine_DestroyGraphicalObject to both delete _and_ popdown events. - Xamine_DestroyGraphicalObject now also o Removes the callbacks above, o Removes the graphical input mouse hit callbacks. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Display/XMWidget.cc trunk/SpecTcl/Display/XMWidget.h trunk/SpecTcl/Display/acceptgates.cc trunk/SpecTcl/Display/expand.cc trunk/SpecTcl/Display/grafinput.cc trunk/SpecTcl/Display/grafinput.h trunk/SpecTcl/Display/marker.cc trunk/SpecTcl/Display/sumregion.cc Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/CHANGELOG 2008-03-28 20:56:37 UTC (rev 1521) @@ -772,5 +772,12 @@ March 27, 2008 - Correct error in spectrum observer. Don't try to enter a spectrum that is not connected to all its parameters. This can happen in e.g. sread. +March 28, 2008 - BZ330 (hopefully) + o Added easy ability to remove callbacks. + o Registered all graphical input widgets to call + Xamine_DestroyGraphicalInput on both delete and popdown + o Have Xamine_DestroyGraphicalInput + * Kill mouse callbacks for graph input. + * Remove the callbacks for delete and popdown. Modified: trunk/SpecTcl/Display/XMWidget.cc =================================================================== --- trunk/SpecTcl/Display/XMWidget.cc 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/XMWidget.cc 2008-03-28 20:56:37 UTC (rev 1521) @@ -1,6 +1,6 @@ #include <config.h> #include "XMWidget.h" - +using namespace std; /* ** Implementation of functions from class XMApplication */ @@ -122,6 +122,19 @@ XMWidget::~XMWidget() { XtDestroyWidget(id); + + // delete the callback data structures that were dynamically created + // XMAddCallback + + list<Callback_data*>::iterator i = m_callbacks.begin(); + while (i != m_callbacks.end()) { + Callback_data* pcb = *i; + delete []pcb->reason; // This is dynamically allocated. + delete pcb; // delete the callback struct itself. + i++; + } + // std::list can clean up after itself now. + } Widget @@ -166,9 +179,46 @@ void (*)(XMWidget *, XtPointer, XtPointer), XtPointer); - return XMAddCallback(this, reason, proc, data); + Callback_data* pData = XMAddCallback(this, reason, proc, data); + m_callbacks.push_back(pData); + return pData; + } +// +// To remove a callback we have to search our +// callback list for one that matches then call +// XMRemoveCallback and get it out of our callback list. +// XMRemoveCallback will release the resources used by +// the Callback_data struct. +// +void +XMWidget::RemoveCallback(String reason, + void (*proc)(XMWidget*, XtPointer, XtPointer), + XtPointer data) +{ + list<Callback_data*>::iterator i = m_callbacks.begin(); + while (i != m_callbacks.end()) { + Callback_data* cbd = *i; + // compare the simple fields before bothering with the strcmp on the reason: + + if ((this == cbd->object) && (proc == cbd->function) && (data == cbd->client_data)) { + if (strcmp(reason, cbd->reason) == 0) { + + // perfect match: + + XMRemoveCallback(cbd); // This deletes cbd and the string + m_callbacks.erase(i); // Get rid of the list element. + return; + + } + } + + i++; + } + // As with Xt, there's no penalty for removing a nonexistent callback. +} + void XMWidget::Map() { XtMapWidget(id); } Modified: trunk/SpecTcl/Display/XMWidget.h =================================================================== --- trunk/SpecTcl/Display/XMWidget.h 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/XMWidget.h 2008-03-28 20:56:37 UTC (rev 1521) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + /* ** Facility: ** Xamine - NSCL display program C++ widget support @@ -302,18 +41,26 @@ #include <X11/StringDefs.h> #include <Xm/Xm.h> +#ifndef __STL_LIST +#include <list> +#ifndef __STL_LIST +#define __STL_LIST +#endif +#endif + typedef char XMWidgetName[32]; struct Callback_data; class XMApplication { - protected: +protected: XtAppContext application; Widget toplevel_shell; XMWidgetName app_class; - public: + +public: XMApplication(char *cl, Cardinal *argc, char **argv, XrmOptionDescList options = NULL, Cardinal noptions = 0, @@ -338,13 +85,16 @@ class XMWidget { - protected: +private: + std::list<Callback_data*> m_callbacks; + +protected: Widget id; XMWidgetName name; void Create(char *n, WidgetClass cl, Widget parent, ArgList l, Cardinal num_args); - public: +public: /* Constructors and Destructors */ XMWidget(char *n); @@ -372,6 +122,9 @@ Callback_data *AddCallback(String reason, void (*proc)(XMWidget *, XtPointer, XtPointer), XtPointer data = NULL); + void RemoveCallback(String reason, + void (*proc)(XMWidget*, XtPointer, XtPointer), + XtPointer data); /* Management: */ Modified: trunk/SpecTcl/Display/acceptgates.cc =================================================================== --- trunk/SpecTcl/Display/acceptgates.cc 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/acceptgates.cc 2008-03-28 20:56:37 UTC (rev 1521) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + static const char* Copyright = "(C) Copyright Michigan State University 1994, All rights reserved"; /* ** Facility: @@ -294,9 +33,6 @@ /* Change Log: $Log$ - Revision 5.2 2005/06/03 15:18:50 ron-fox - Part of breaking off /merging branch to start 3.1 development - Revision 5.1.2.1 2004/12/21 17:51:12 ron-fox Port to gcc 3.x compilers. @@ -966,6 +702,8 @@ cutin = new AcceptCut("Slice_Prompt", w, help_text); cutin->AddCallback(XtNdestroyCallback, Xamine_DestroyGraphicalInput, (XtPointer)&cutin); + cutin->AddCallback(XtNpopdownCallback, Xamine_DestroyGraphicalInput, + (XtPointer)&cutin); } prompter = (AcceptSummingRegion *)cutin; @@ -975,6 +713,8 @@ contin = new AcceptContour("Contour_prompt", w, help_text); contin->AddCallback(XtNdestroyCallback, Xamine_DestroyGraphicalInput, (XtPointer)&contin); + contin->AddCallback(XtNpopdownCallback, Xamine_DestroyGraphicalInput, + (XtPointer)&contin); } prompter = (AcceptSummingRegion *)contin; break; @@ -983,6 +723,8 @@ bandin = new AcceptBand("Band input", w, help_text); bandin->AddCallback(XtNdestroyCallback, Xamine_DestroyGraphicalInput, (XtPointer)&bandin); + bandin->AddCallback(XtNpopdownCallback, Xamine_DestroyGraphicalInput, + (XtPointer)&bandin); } prompter = (AcceptSummingRegion *)bandin; break; Modified: trunk/SpecTcl/Display/expand.cc =================================================================== --- trunk/SpecTcl/Display/expand.cc 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/expand.cc 2008-03-28 20:56:37 UTC (rev 1521) @@ -1279,7 +1279,16 @@ dialog->AddPt2Callback(AddPt2); dialog->AddDeletePt1Callback(DelPt1); dialog->AddDeletePt2Callback(DelPt2); - dialog->AddCallback(XtNdestroyCallback, NullPointer, (XtPointer)&dialog); + + // In some systems destroy callbacks are called. + // in others popdowns when the window manager X is hit. + // so catch them both. + + dialog->AddCallback(XtNdestroyCallback, Xamine_DestroyGraphicalInput, + (XtPointer)&dialog); + dialog->AddCallback(XtNpopdownCallback, Xamine_DestroyGraphicalInput, + (XtPointer)&dialog); + } /* Set up the characteristics of the dialog, and our ancillary callbacks. */ Modified: trunk/SpecTcl/Display/grafinput.cc =================================================================== --- trunk/SpecTcl/Display/grafinput.cc 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/grafinput.cc 2008-03-28 20:56:37 UTC (rev 1521) @@ -745,6 +745,16 @@ GraphicalInput** ppInput = (GraphicalInput**)pClientData; GraphicalInput* pInput = *ppInput; pInput->CancelCallback(NULL); + pInput->ClearStandardCallbacks(); + // + // Get rid of the callbacks for deletion and for + // popdown so we don't have circularity. + // + + pInput->RemoveCallback(XmNdestroyCallback, Xamine_DestroyGraphicalInput, + pClientData); + pInput->RemoveCallback(XmNpopdownCallback, Xamine_DestroyGraphicalInput, + pClientData); NullPointer(pWidget, pClientData, pEvent); } Modified: trunk/SpecTcl/Display/grafinput.h =================================================================== --- trunk/SpecTcl/Display/grafinput.h 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/grafinput.h 2008-03-28 20:56:37 UTC (rev 1521) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + /* ** Facility: ** Xamine -- NSCL Display program. Modified: trunk/SpecTcl/Display/marker.cc =================================================================== --- trunk/SpecTcl/Display/marker.cc 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/marker.cc 2008-03-28 20:56:37 UTC (rev 1521) @@ -977,6 +977,8 @@ dialog->AddApplyCallback(&AcceptMarker::Marker_accept, (XtPointer)dialog); dialog->AddCallback(XtNdestroyCallback, Xamine_DestroyGraphicalInput, (XtPointer)&dialog); + dialog->AddCallback(XtNpopdownCallback, Xamine_DestroyGraphicalInput, + (XtPointer)&dialog); } Modified: trunk/SpecTcl/Display/sumregion.cc =================================================================== --- trunk/SpecTcl/Display/sumregion.cc 2008-03-28 20:24:12 UTC (rev 1520) +++ trunk/SpecTcl/Display/sumregion.cc 2008-03-28 20:56:37 UTC (rev 1521) @@ -1,19 +1,280 @@ /* - This software is Copyright by the Board of Trustees of Michigan - State University (c) Copyright 2005. + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - You may use this software under the terms of the GNU public license - (GPL). The terms of this license are described at: + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - http://www.gnu.org/licenses/gpl.txt + Preamble - Author: - Ron Fox - NSCL - Michigan State University - East Lansing, MI 48824-1321 + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have ma... [truncated message content] |
From: <ro...@us...> - 2008-04-01 21:11:47
|
Revision: 1522 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1522&view=rev Author: ron-fox Date: 2008-04-01 14:11:48 -0700 (Tue, 01 Apr 2008) Log Message: ----------- 1. Establish a pop-down callback on the properties dialog -> NullPointer 2. Have NullPointer remove existing callbacks for destroy and popdown. 3. Stop recycling the properties dialog. This is done by popping down the dialog on Ok or Cancel. The popdown invokes the NullPointer callback which removes the various callback registrations, deletes the widget and clears the 'cache' pointer for it. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Display/XMCallback.cc trunk/SpecTcl/Display/XMDialogs.cc trunk/SpecTcl/Display/XMDialogs.h trunk/SpecTcl/Display/XMWidget.h trunk/SpecTcl/Display/grafinput.cc trunk/SpecTcl/Display/properties.cc Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/CHANGELOG 2008-04-01 21:11:48 UTC (rev 1522) @@ -780,4 +780,5 @@ * Kill mouse callbacks for graph input. * Remove the callbacks for delete and popdown. - +April 1, 2008 - Stop recycling properties dialog so it gets + properly recreated (lesstif mis-remanages it). Modified: trunk/SpecTcl/Display/XMCallback.cc =================================================================== --- trunk/SpecTcl/Display/XMCallback.cc 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/Display/XMCallback.cc 2008-04-01 21:11:48 UTC (rev 1522) @@ -455,6 +455,18 @@ XtPointer pClientData, XtPointer pEvent) { XMWidget** ppWidget = (XMWidget**)(pClientData); + + XMWidget* p = *ppWidget; + + // + // Get rid of the callbacks for deletion and for + // popdown so we don't have circularity. + // + + p->RemoveCallback(XmNdestroyCallback, NullPointer, + pClientData); + p->RemoveCallback(XmNpopdownCallback, NullPointer, + pClientData); *ppWidget = (XMWidget*)NULL; delete pWidget; /* Object may as well be destroyed too. */ Modified: trunk/SpecTcl/Display/XMDialogs.cc =================================================================== --- trunk/SpecTcl/Display/XMDialogs.cc 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/Display/XMDialogs.cc 2008-04-01 21:11:48 UTC (rev 1522) @@ -286,6 +286,25 @@ } +/* + Pop the widget down: +*/ + +void XMCustomDialog::popDown() +{ + XtPopdown(id); +} + +/* + Pop the widget up: +*/ +void +XMCustomDialog::popUp() +{ + XtPopup(id, XtGrabNone); + +} + /* ** Method Description: Modified: trunk/SpecTcl/Display/XMDialogs.h =================================================================== --- trunk/SpecTcl/Display/XMDialogs.h 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/Display/XMDialogs.h 2008-04-01 21:11:48 UTC (rev 1522) @@ -1,280 +1,19 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS ' + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 */ + /* ** Facility: ** Motif C++ class support. @@ -921,6 +660,8 @@ void Manage(); void UnManage(); + void popDown(); + void popUp(); XMPanedWindow *TopManager(); XMRowColumn *ActionArea(); Modified: trunk/SpecTcl/Display/XMWidget.h =================================================================== --- trunk/SpecTcl/Display/XMWidget.h 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/Display/XMWidget.h 2008-04-01 21:11:48 UTC (rev 1522) @@ -134,6 +134,7 @@ void UnManage(); void Realize(); void UnRealize(); + }; Modified: trunk/SpecTcl/Display/grafinput.cc =================================================================== --- trunk/SpecTcl/Display/grafinput.cc 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/Display/grafinput.cc 2008-04-01 21:11:48 UTC (rev 1522) @@ -755,6 +755,7 @@ pClientData); pInput->RemoveCallback(XmNpopdownCallback, Xamine_DestroyGraphicalInput, pClientData); + NullPointer(pWidget, pClientData, pEvent); } Modified: trunk/SpecTcl/Display/properties.cc =================================================================== --- trunk/SpecTcl/Display/properties.cc 2008-03-28 20:56:37 UTC (rev 1521) +++ trunk/SpecTcl/Display/properties.cc 2008-04-01 21:11:48 UTC (rev 1522) @@ -1,280 +1,20 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: - Preamble + http://www.gnu.org/licenses/gpl.txt - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, - you may choose any version ever published by the Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS' -*/ static const char* Copyright = "(C) Copyright Michigan State University 1994, All rights reserved"; /* ** Facility: @@ -488,7 +228,8 @@ PropertyForm::Manage(); Apply->UnManage(); } - ~PropertyDialog() {} + ~PropertyDialog() { + } void Manage() { TitleForm::Manage(); ReduceForm::Manage(); @@ -754,7 +495,7 @@ /* If the cancel button was hit, we just unmanage the widget and return: */ if(w == dlg->cancel()) { - dlg->UnManage(); + dlg->popDown(); return; } @@ -769,9 +510,10 @@ /* If the OK button was hit, then we unmanage the dialog. */ - if((w == dlg->ok())) - dlg->UnManage(); - + if((w == dlg->ok())) { + dlg->popDown(); + } + } @@ -804,6 +546,7 @@ dialog->AddCancelCallback(ActionCallback, (XtPointer)dialog); dialog->AddHelpCallback(Xamine_display_help, &help); dialog->AddCallback(XtNdestroyCallback, NullPointer, (XtPointer)&dialog); + dialog->AddCallback(XtNpopdownCallback, NullPointer, (XtPointer)&dialog); /* BUGBUGBUG */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-04-04 19:47:57
|
Revision: 1523 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1523&view=rev Author: ron-fox Date: 2008-04-04 12:48:02 -0700 (Fri, 04 Apr 2008) Log Message: ----------- BZ330 - Adjust the location of the Cancel callback invocation so widgets don't get double destroyed. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Display/grafinput.cc Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-04-01 21:11:48 UTC (rev 1522) +++ trunk/SpecTcl/CHANGELOG 2008-04-04 19:48:02 UTC (rev 1523) @@ -782,3 +782,8 @@ April 1, 2008 - Stop recycling properties dialog so it gets properly recreated (lesstif mis-remanages it). +April 4, 2008 - BZ330 - Don't call cancel callback in + Xamine_DestroyGraphicalInput until the callbacks + are removed so we avoid recursion that will double + destroy the object. + Modified: trunk/SpecTcl/Display/grafinput.cc =================================================================== --- trunk/SpecTcl/Display/grafinput.cc 2008-04-01 21:11:48 UTC (rev 1522) +++ trunk/SpecTcl/Display/grafinput.cc 2008-04-04 19:48:02 UTC (rev 1523) @@ -744,7 +744,6 @@ { GraphicalInput** ppInput = (GraphicalInput**)pClientData; GraphicalInput* pInput = *ppInput; - pInput->CancelCallback(NULL); pInput->ClearStandardCallbacks(); // // Get rid of the callbacks for deletion and for @@ -756,6 +755,9 @@ pInput->RemoveCallback(XmNpopdownCallback, Xamine_DestroyGraphicalInput, pClientData); + pInput->CancelCallback(NULL); // Doing this here prevents recursion. + + NullPointer(pWidget, pClientData, pEvent); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2008-04-22 12:31:29
|
Revision: 1526 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1526&view=rev Author: ron-fox Date: 2008-04-22 05:31:35 -0700 (Tue, 22 Apr 2008) Log Message: ----------- Correct error in bin width computation. get it right for the intergeristas. Modified Paths: -------------- trunk/SpecTcl/CHANGELOG trunk/SpecTcl/Sorter/CAxis.cpp Modified: trunk/SpecTcl/CHANGELOG =================================================================== --- trunk/SpecTcl/CHANGELOG 2008-04-04 19:56:03 UTC (rev 1525) +++ trunk/SpecTcl/CHANGELOG 2008-04-22 12:31:35 UTC (rev 1526) @@ -786,4 +786,5 @@ Xamine_DestroyGraphicalInput until the callbacks are removed so we avoid recursion that will double destroy the object. - +April 22, 2008 - Fix slight errors in binning in SpecTcl.. correctly + compute the bin width for the integeristas. Modified: trunk/SpecTcl/Sorter/CAxis.cpp =================================================================== --- trunk/SpecTcl/Sorter/CAxis.cpp 2008-04-04 19:56:03 UTC (rev 1525) +++ trunk/SpecTcl/Sorter/CAxis.cpp 2008-04-22 12:31:35 UTC (rev 1526) @@ -193,6 +193,29 @@ void CAxis::ComputeScale() { + + // Here's the math. We want a scale factor such that + // the last channel includes the high limit plus a channel + // width. If n is the number of channels, r the range + // covered by those channels, and w the channel width: + // + // nw = r+w (the range is really one more channel width than claimed). + // nw - w =r + // w(n-1) = r + // w = (r/(n-1)). + // so: + + Float_t range = (m_fHigh - m_fLow); + + // The scale factor is the reciprocal of the channel width: + + m_fScaleFactor = ((float)(m_nChannels-1)/range); + + return; + +#ifdef OLDSCALEFACTOR + + // This is a bit nasty..and I'm not really sure this is right. // For a very very small range you want to be about exact. // for a larger range, you need to allow all of that last channel @@ -205,6 +228,8 @@ else { // Channel size >= 1.0 m_fScaleFactor = (float)m_nChannels/(range +1.0); } +#endif + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |