You can subscribe to this list here.
2003 |
Jan
|
Feb
(25) |
Mar
(121) |
Apr
(44) |
May
(21) |
Jun
(28) |
Jul
(18) |
Aug
(63) |
Sep
(15) |
Oct
(40) |
Nov
(65) |
Dec
(8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(46) |
Feb
(13) |
Mar
(9) |
Apr
(49) |
May
(44) |
Jun
(13) |
Jul
(23) |
Aug
(43) |
Sep
(34) |
Oct
(53) |
Nov
(44) |
Dec
(51) |
2005 |
Jan
(50) |
Feb
(25) |
Mar
(26) |
Apr
(45) |
May
(87) |
Jun
(58) |
Jul
(26) |
Aug
(21) |
Sep
(25) |
Oct
(37) |
Nov
(7) |
Dec
(6) |
2006 |
Jan
(41) |
Feb
(21) |
Mar
(32) |
Apr
(35) |
May
(28) |
Jun
(88) |
Jul
(47) |
Aug
(17) |
Sep
(55) |
Oct
(86) |
Nov
(39) |
Dec
(21) |
2007 |
Jan
(7) |
Feb
(21) |
Mar
(35) |
Apr
(23) |
May
(106) |
Jun
(49) |
Jul
(19) |
Aug
(9) |
Sep
(15) |
Oct
(25) |
Nov
(10) |
Dec
(19) |
2008 |
Jan
(22) |
Feb
(20) |
Mar
(19) |
Apr
(9) |
May
(9) |
Jun
(1) |
Jul
(3) |
Aug
(1) |
Sep
(15) |
Oct
(5) |
Nov
(1) |
Dec
(10) |
2009 |
Jan
(11) |
Feb
(4) |
Mar
(9) |
Apr
|
May
(12) |
Jun
|
Jul
(3) |
Aug
(13) |
Sep
(4) |
Oct
(6) |
Nov
|
Dec
(5) |
2010 |
Jan
(8) |
Feb
(3) |
Mar
(1) |
Apr
(1) |
May
(24) |
Jun
(10) |
Jul
(6) |
Aug
(5) |
Sep
(8) |
Oct
(3) |
Nov
(14) |
Dec
(13) |
2011 |
Jan
(50) |
Feb
(13) |
Mar
(36) |
Apr
(20) |
May
|
Jun
(21) |
Jul
(2) |
Aug
(1) |
Sep
(3) |
Oct
(3) |
Nov
(5) |
Dec
(53) |
2012 |
Jan
(19) |
Feb
(3) |
Mar
(5) |
Apr
|
May
(24) |
Jun
(27) |
Jul
(7) |
Aug
(5) |
Sep
(2) |
Oct
|
Nov
(1) |
Dec
(14) |
2013 |
Jan
(3) |
Feb
(2) |
Mar
(1) |
Apr
(10) |
May
(9) |
Jun
(14) |
Jul
(18) |
Aug
(14) |
Sep
(11) |
Oct
(13) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
(2) |
Mar
(6) |
Apr
(11) |
May
(2) |
Jun
|
Jul
(6) |
Aug
(9) |
Sep
|
Oct
(14) |
Nov
(10) |
Dec
(11) |
2015 |
Jan
(3) |
Feb
(33) |
Mar
(13) |
Apr
(30) |
May
(13) |
Jun
(6) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(18) |
Dec
|
From: <ro...@us...> - 2015-11-16 12:02:09
|
Revision: 2347 http://sourceforge.net/p/nsclspectcl/code/2347 Author: ron-fox Date: 2015-11-16 12:02:07 +0000 (Mon, 16 Nov 2015) Log Message: ----------- Fix errors in spectrum table introduced by adding the data type to the spectrum type column. Modified Paths: -------------- branches/3.5dev/CHANGELOG branches/3.5dev/configure.ac branches/3.5dev/treegui/spectrumTabActions.tcl Modified: branches/3.5dev/CHANGELOG =================================================================== --- branches/3.5dev/CHANGELOG 2015-11-16 11:01:38 UTC (rev 2346) +++ branches/3.5dev/CHANGELOG 2015-11-16 12:02:07 UTC (rev 2347) @@ -1073,4 +1073,7 @@ * Bug #4861 - Fix error that happens when one blansk out the parameter field. -3.5-000 \ No newline at end of file +3.5-001 + * Fix Bug #4969 - when I added the data type to the spectrum type column + that invalidated the code in spectrumTabActions.tcl's is2dSpectrum + \ No newline at end of file Modified: branches/3.5dev/configure.ac =================================================================== --- branches/3.5dev/configure.ac 2015-11-16 11:01:38 UTC (rev 2346) +++ branches/3.5dev/configure.ac 2015-11-16 12:02:07 UTC (rev 2347) @@ -1,5 +1,5 @@ # Process this file with autoconf to produce a configure script. -AC_INIT(SpecTcl,3.5-000) +AC_INIT(SpecTcl,3.5-001) AC_CONFIG_SRCDIR(SpecTcl/MySpecTclApp.cpp) AC_CONFIG_AUX_DIR(config) Modified: branches/3.5dev/treegui/spectrumTabActions.tcl =================================================================== --- branches/3.5dev/treegui/spectrumTabActions.tcl 2015-11-16 11:01:38 UTC (rev 2346) +++ branches/3.5dev/treegui/spectrumTabActions.tcl 2015-11-16 12:02:07 UTC (rev 2347) @@ -517,6 +517,7 @@ # @retval true if a y parameter should be displayed/loaded. # private method is2DSpectrum type { + set type [lindex $type 0]; # Pull spectype from spectype dtype list return [expr {$type in [list 2 S m2 gd]}] } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-16 11:01:41
|
Revision: 2346 http://sourceforge.net/p/nsclspectcl/code/2346 Author: ron-fox Date: 2015-11-16 11:01:38 +0000 (Mon, 16 Nov 2015) Log Message: ----------- Bug #4969 - Adding the spectrum data type to the type column invalidated isSpectrum2d in spectrumTabActions.tcl Modified Paths: -------------- trunk/main/CHANGELOG trunk/main/configure.ac trunk/main/treegui/spectrumTabActions.tcl Modified: trunk/main/CHANGELOG =================================================================== --- trunk/main/CHANGELOG 2015-11-13 15:36:17 UTC (rev 2345) +++ trunk/main/CHANGELOG 2015-11-16 11:01:38 UTC (rev 2346) @@ -1071,4 +1071,7 @@ re-create them. * Bug #4858 - Indicate width of channel in tree gui. * Bug #4861 - Fix error that happens when one blansk out the parameter - field. \ No newline at end of file + field. + * Bug #4969 - Fix error in 2d spectrum determination in + spectrumTabActions.tcl : Adding the data type to the spectrum type + invalidted the isSpectrum2d code. \ No newline at end of file Modified: trunk/main/configure.ac =================================================================== --- trunk/main/configure.ac 2015-11-13 15:36:17 UTC (rev 2345) +++ trunk/main/configure.ac 2015-11-16 11:01:38 UTC (rev 2346) @@ -1,5 +1,5 @@ # Process this file with autoconf to produce a configure script. -AC_INIT(SpecTcl,3.4-005) +AC_INIT(SpecTcl,3.4-006) AC_CONFIG_SRCDIR(SpecTcl/MySpecTclApp.cpp) AC_CONFIG_AUX_DIR(config) Modified: trunk/main/treegui/spectrumTabActions.tcl =================================================================== --- trunk/main/treegui/spectrumTabActions.tcl 2015-11-13 15:36:17 UTC (rev 2345) +++ trunk/main/treegui/spectrumTabActions.tcl 2015-11-16 11:01:38 UTC (rev 2346) @@ -517,6 +517,7 @@ # @retval true if a y parameter should be displayed/loaded. # private method is2DSpectrum type { + set type [lindex $type 0]; # Pull out the type from the type dtype list return [expr {$type in [list 2 S m2 gd]}] } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-13 15:36:21
|
Revision: 2345 http://sourceforge.net/p/nsclspectcl/code/2345 Author: ron-fox Date: 2015-11-13 15:36:17 +0000 (Fri, 13 Nov 2015) Log Message: ----------- Tag SpecTcl-3.5-000 - performance enhancements in gui Added Paths: ----------- tags/SpecTcl-3.5-000/ tags/SpecTcl-3.5-000/CHANGELOG tags/SpecTcl-3.5-000/Gui/folderGui.tcl tags/SpecTcl-3.5-000/Gui/ttkbrowser.tcl tags/SpecTcl-3.5-000/Sorter/Spectrum.h tags/SpecTcl-3.5-000/SpecTcl/SpectrumPackage.cpp tags/SpecTcl-3.5-000/configure.ac tags/SpecTcl-3.5-000/tcl++incorp.sh tags/SpecTcl-3.5-000/testBuildTarball Removed Paths: ------------- tags/SpecTcl-3.5-000/CHANGELOG tags/SpecTcl-3.5-000/Gui/folderGui.tcl tags/SpecTcl-3.5-000/Gui/ttkbrowser.tcl tags/SpecTcl-3.5-000/Sorter/Spectrum.h tags/SpecTcl-3.5-000/SpecTcl/SpectrumPackage.cpp tags/SpecTcl-3.5-000/configure.ac tags/SpecTcl-3.5-000/tcl++incorp.sh tags/SpecTcl-3.5-000/testBuildTarball Index: tags/SpecTcl-3.5-000 =================================================================== --- branches/3.5dev 2015-11-11 10:41:08 UTC (rev 2342) +++ tags/SpecTcl-3.5-000 2015-11-13 15:36:17 UTC (rev 2345) Property changes on: tags/SpecTcl-3.5-000 ___________________________________________________________________ Added: svn:mergeinfo ## -0,0 +1,7 ## +/branches/3.3-007-dev:1983-1986 +/branches/3.3-008-dev:1987-1996 +/branches/3.3-009-development:2000-2014 +/branches/3.4-getcontents:2262-2277 +/branches/SpecTcl-3.3-010-development:2016-2031 +/branches/SpecTcl-3.3-013:2051-2061 +/tags/SpecTcl-3.3-013-premerge:2062-2063 \ No newline at end of property Deleted: tags/SpecTcl-3.5-000/CHANGELOG =================================================================== --- branches/3.5dev/CHANGELOG 2015-11-11 10:41:08 UTC (rev 2342) +++ tags/SpecTcl-3.5-000/CHANGELOG 2015-11-13 15:36:17 UTC (rev 2345) @@ -1,1074 +0,0 @@ -] -2.1-006 - Incorporate fix 113 - low level cutoffs lead to corrupted - 1-d displays. - - Have build procedures clean any pre-built Gri prior to - tarring up the distribution. -2.1-007 - Incorporate fix 120 - memory leak on spectrum -delete -all - - Date/time/version stamp installation. -2.1-008 - - Incorporate fix for issue 95: parameter -list -byid fails to parse - the output list for sorting. - - Incorporate fix for issue 105: sbind usage level help refers to - itself as the bind command not sbind. - - Incorporate fix for issue 111: swrite creates a file even if - no valid spectra are included on the command line. -2.1-009 - - Incorporate printing fixes for last channel of 1-d. - - Incorporate printinf fix ensure that 2-d spectrum channels display - all non zeroes even if they are below the threshold for the lowest - color range. - - Place upper limits on 1-d graphical entries at the top of the - channel rather than at the bottom. This more realistically - describes what's going on - - Fix issue 118 Superpositions in window files are by id not name. - - Fix issue 122 Speclist with a single spectrum gives blank output. - - Fix issue 123 Print with superpositions crashes gri (gives it a - bad command file). - - Fix issue 124 FWHM not transformed to mapped coordinates. -2.1-010 - Fix Display/Makefile issues with lingering bison/flex output - Add missing return value in ValidValue::operator=. -2.1-011 - Fix issue 135 swrite -format ascii does not retain the axis - mapping information correctly. - - Fallout from issue 133; fixed a defect in Display/axes.cc where - computation of mapped channel tick mark intervals could cause - DIV0 crashes in Xamine when the axis decreases from left to right. - - Backport colormanager intelligent visual choices from 2.2 -2.1-012 - Backport fix for defect 144 from 2.2: Memory leak when user - rejects events. - - Backport repair for defect 149: Some cases where spectrum - deletion from Xamine can kill both Xamine and SpecTcl - - Backport repair for defect 145 Names with special characters - cause saveall to produce bad files. -2.1-013 - Backport filter generation fix from 2.2 - Repair defect 157: Graphical object copies fail if target - is spectrum slot > 999 -2.1-014 - - Fixed defect 151: printing 2-d's the channels have incorrect - values, and log prints are just plain flat lined. -2.1-015 - - Fix un-numbered defect channel command gets/sets wrong channel - on Gamma 2-d's. This was broken with the introduction of - arbitrary binning in 2.1. -Modifications for SpecTcl 2.2 -January 30,2004 - Updated gri to gri-2.12.7 -March 23, 2004 - Issue 97b - Add hierarchical unpacking capability to scripted spectcl. - - Also don't require begin run to pick up config. -March 31, 2004 - Added -rpath to contrib/scripted Makefile so that - LD_LIBRARY_PATH or ld.so.conf not needed. -April 5, 2004 - Fix issue 118 - low level cutoff display bug. -April 12, 2004 - Extract as many defs as possible from skeleton makefiles - to centrally located include files in order to keep the - user makefiles constant. - - Use etc not Etc for etcetera stuff. - - Add buildstamp -April 13, 2004 - Fix memory leak on delete -all command: Spectrum - storage itself is not getting deleted. - - Fix lack of error checking on insufficient memory for - binding 2d spectrum (can segfault). -April 29, 2004 - Fix issue 95: parameter -list -byid fails. -April 29, 2004 - Fix issue 105: sbind Usage level help calls itself the - bind command which conflicts, of course, with the TCL - bind command. -April 29, 2004 - Fix issue 111 - swrite command creates a file even if no - existing spectra have been specified. -May 5, 2004 - Fix little diddly issues with printing and also - Put right limit at the top of a channel rather than the - left side of a channel. - - Fix ISSUE 118 superpositions in window files are written - as id's not as names. - - Fix issue 123 superpositions don't print - - Fix issue 124 FWHM is not translated to mapped coordinates - when spectrum is in mapped mode. -May 12, 2004 - Fix issue 49 - Fetching values from ValidValues that are in the - invalid state will now throw exceptions - - Fix issue with Display/Makefile that clean leaves behind - detritus from flex and bison. (Added MOSTLYCLEANFILES - to Display/Makefile.am). -June 8, 2004 - Increase spectrum size limits to 2^31. -June 17, 2004 - Defect 131 - There were problems generating the print tick - intervals when the axis specifications went in 'reverse' - (e.g. {100 -100 200}). Fixed in modifications to - griprint.cc I think. - - Fix build issues in TestFiles directory so that the - event test generting programs can be built again Yeah. -July 1, 2004 - Defect 135 - swrite does not properly preserve the - axis mapping information. - Fallout from defect 133 discovered and fixed a defect - that causes the axis tick computation to DIV0 when - mapped axes have decreasing values going away from the - origin (e.g. {100 -100 201}). -July 2, 2004 - Defect 132 - Translator pointers are constrained to - natural data boundaries. - - Defect 137 - Fix defect introducec by fix of Defect 132: - assumed getOffset was returning T offset it's now returning - byte offsets. -July 9, 2004 - Added DesignByContract to the Utility headers. -July 27, 2004 - Added contrib/calibratedparams (TUNL) for linear - calibrations for parameters first the fit functions. -July 30, 2004 - Added CCAENV1x90Data.h to contrib/scriptable in order - to support unpacking of this module. -August 9, 2004 - Modified colormgr.cc to better deal with systems that - have visuals that are not in decent order nor good: - Look through all the visuals and choose the true/direct - color visual with the most bits, if none exist, then - Choose the Pseudo color visual with the most bits. - If none of those exist drop back to bitonal. -August 16, 2004 - Fix broken link to apply.htm in categories.htm documentation -August 17, 2004 - Added the calbrated parameters sources to the mix - (need to get them to compile!). - Debugged as of August 20. -August 25, 2004 - Fixed defect 144 - memory leak if user rejects events. -September 2, 2004 - Made pseudo parameters pass validity flags too. -September 7, 2004 - Fix error in CEventFilter::setBit... which did not - count on there being 8 bits per byte. -September 8, 2004 - Removed in-linedness of CGate::RecursiveReest I had - thought this was triggering a compiler error but - it was not in fact. Since this is a virt. there's no - gain to inlining it anyway. -September 23,2004 - NamedItem.h - decided to finally trust stl's string - constructors.. the way I was doing named item - constructors was giving Purify fits. -September 24,2004 - Added CalibrationDistribution to produce evenly spaced - identical peaks. - - Added mechanism to fetch the applicatino's test data - source so that it can be modified etc. - - Fixed defect in CTclGrammerApp::SetupTestDatsSource - there was a local declaration of a m_pMultiTestSource - that masked the member data.: - -September 30,2004 - Happy Birthday Ron!! - - Fixed issue 133 Centroids and - FWHM not correct for mapped parameters (still). - - Made test distributions produce floating point params - to make the more flexible.. Gaussian is a symmetric - cutoff now. -October 4, 2004 - Added a bit of defensive programming in view of defect - 149. -October 19, 2004 - Changed default gate names in Xamine to be better in line - with well behaved TCL Strings. -October 18-20 2004 - Factor all coordinate transformations into common spots - part of trying to fix defect 133. -October 20, 2004 - Additional code reorganization of Xamine stuff that - I just could not stand to look at in fixing defect 133. -October 20, 2004 - Factor acceptgates.cc DrawPoints functions back into - the base class where it belongs. Could not stand to look - at it duplicated in 3 different places. -October 20-22 2004 - Fix defect 145: Spaces and special characters in names - can make saveall loadall fail miserably...and other misc. - things uncovered while repairing the defect. -October 25,26 2004 - Optimize 1d long histogram increments. Note that many - but not all changes will help 2d word increments too, but - these (less often used) histograms won't get full benefit - as there are modifications to the Spectrum1DL file that - are deliberately not propagated back to Spectrum1DW -October 27, 2004 -Optimize2d short histogram increments - -November 3,2004 - Fixed position computations on expanded spectra. -November 4,2004 - Fixed defect 60 in Xamine: Spectrum choosers should come out - sorted by name. -November 102004 - Repaired defect 147: Xamine copy object copies to wrong - spectrum if slot # > 999 - -Edit level 2.2-001 -November 30, 2004 - - Forward port fix to defect 151 from 2.1: - colorscales on griprint were way off for 2-d prints. - - Fix unnumbered defect: channel get/set broke for 2-d gamma - spectra starting with SpecTcl 2.2 - spectrum if slot # > 999 - -SpecTcl 3.0: - Port to gcc/g++ 3.x: - o Lots of gruntwork with config.h etc. in all sources. - o Added Tcl Channel inquiry functions to CTCLInterpreter to - allow the location of Tcl_Channel given it's name. - GetChannel - GetChannelNames - o Added CTCLChannel object that can do simple channel operations. - Read - Write - atEof - Flush - Close - o In {Write,Read}Command.cpp use tcl[io]streams to connect - swrite/sread to Tcl channel parameters rather than decoding the - filename. - Propagate fix for defect 151 from 2.1 -> 2.2-> 3.0 - -December 28, 2004 - - Switch ExprLong -> strtol in contrib/scriptable CIntConfigParam.cpp - and CIntArrayParam.cpp since ExprLong, as of Tcl 8.4 does not work - with large unsigned values. -December 31, 2004 - - D. Bazin removed the treeparam Makefiles. Adjust the - contrib/Makefile.am accordingly. -January 06, 2005 - - Fixed up some missing quotes on makefile.skel's. -January 11, 2005 - - Roll in another treeparmaeter update from D. Bazin -January 12, 2005 - - swrite file creation needs an ios::trunc else existing files will - leave postpended data if they were larger. -January 13, 2005 - - Xamine superposition fix for id's > 999 -January 26, 2005 - - Fix problem with long spectrum names: - o Xamine's truncation was making CHistogrammer::UnbindFromDisplay - assert fail. - o Xamine was not putting up the correct spectrum list due to a buffer - overflow problem in spectra.cc -January 27, 2005 - - Fix low level cutoff in 1-ds that had been fixed in 2.1 but not - propagated to new versions. - -3.0-001 -February 11, 2005 - - Added Analysis subdirectory to the build. This directory will have stuff - that's used by buffer analysis it is NSCL specific. -February 14, 2005 - - Completed testing of Analysis library. -February 15, 2005 - - Added C interface to Analysis library and unit tests for those. - - Added check for paths for the 'check' c unit test framework. -February 22, 2005 - - Added/debugged classes to TCL++ that make it easy to - do variable tracing (TCLTracedVariable, and VariableTraceCallbac e.g.). - - Added stuff to SpecTcl that allows it to pull stuff out of string list - buffers that represent TCL scriptlets and execute those scripts. this - is currently useful to reconstruct control system data and other stuff - that may be in statevariable and runvariable buffers which look like - a bunch of set varname value commands. - - Fix 1/0 month counting problem with run control timestamps in - Analysis library. -February 25, 2005 - - Documented the variable tracing support. - - Documented run/state variable recovery. -March 4, 2005 - - Set the version string to 3.0pre1 -March 8, 2005 - - Move the event sink pipeline class into Events and out of - the Filter directory. - - Add SpecTcl API (tested) to the build and cvs. -March 17, 2005 - - Add documentation for the SpecTcl api as a spectcl man page. -March 21, 2005 - - Added -fno-elide-constructors to user's makefile to ensure that - TreeParameter construction is handled correctly. - - Support settable I/O poll dwell time. -April 15, 2005 - - Began integrating a rewritten treeparameter into the software. -April 16, 2005 - - In contrib/calibparam : add a random number in [-.5, .5] to the - input of the calibration under the assumption that the input is - integer and therefore needs to be turned into a real. -April 18, 2005 - - Added documentation to the treeparamter package. -April 19, 2005 - - Fix up a tcl 8.4 dependency in CTreeVariableProperties.cpp -April 21, 2005 - - Fix up coordinate transform problems in Xamine with grobj locations. - Scaled wrong and offset wrong. - - Make it a bit clearer that the Treeparameter GUI version is decoupled - from SpecTcl's version... for now. -April 22, 2005 - - Remove nulls from Xamine's log files and replace them with \n's instead. -April 29, 2005 - - TreeParameter save function didn't always get the dependencies right - causing error in loading. Changed functions in SpectrumGenerator.tcl. - Fix for bugzilla bug 173 -May 2, 2005 - - Ensure filters get closed if active at program normal exit. - - Encapsulate Xamine's gates and grobs inside a vector so that there's no - longer a fixed compilation limit on the number of gates /objects that - can be defined. - - Support GCC-3.4 compiler -May 11, 2005 - - Added support for StripChart Spectra - - Check the compiler type in configure to see if we can use -pedantic - and do so if we can. - - Debug -pedantic effects on compilation. - - Fix defects nobody noticed in swrite -format binary/sread -format binary - Probably introduced about SpecTcl-2.0 -May 12, 2005 - - Fixed attach -format .... error that probably only expresses on - gcc-3.x since nobody's seen/reported it but me until now -May 13, 2005 - - Fixed problem in Strip chart so that the parameter list is returned - in the correct order ---------------------------- End of Pre3 mods ------------ -May 17, 2005 - - Set map to on by default in Xamine. -May 18, 2005 - - Add support for CTCLString::AppendElement(DFloat_t, const char* format) - use it in parameter package's parameter list of mapped parameters - as a test. - - Add support for CTCLString::AppendElement(long, const char* format) - - Add support for mask equals gates as well as define the mask gate base class. - Add Support for "not mask" and "and mask" gates -May 20, 2005 - - Support for compilation on gcc/g++ 4.0 -May 23, 2005 - - Integrate gamma gate redo======= - - Add Support for "not mask" and "and mask" gates - - Added support for "gate -list [pattern]" so that users can filter - the results of the gate -list command - - Added support for "spectrum -list [pattern]" so that users can filter - the results of the spectrum -list command -May 27, 2005 - - Added support for a glob like pattern in the switch of the clear, pararmeter - bind, apply, and pseudo commands. When a pattern is given after -list, the - command returns objects whose name matches the pattern. -May 31, 2005 - - Remove extra copy construction in TreeParameter ThrowIf's.. as that's an - enormous performance hit. -June 1, 2005 - - Fix documentation errors in gate command wrt mask gates. - -3.1 -June 7, 2005 - - Incorporate defect fix in guiintegrate.cc into this version. -June 20, 2005 - - Fix type on Spectrum.h getAxisMapCount() had been spelled GetAxisMapCout().June 21, 2005 - - Forward port some fixes for tree parameter gui: - o gui writing tree variables and parameters with "" units doesn't put - {} for units but leaves it empty. - o Allow treevariable -set units optional. -June 22, 2005 - - Support for projection spectra. -June 29, 2005 - - Remove need for working fortran compiler. -July 7, 2005 - - Add ia64 adjustments from 3.0 branch -July 27, 2005 - - Fix up some automake incorrectnesses that old versions of AM let slide. - This is part of an effort to port to Cygwin. - - Fix up issues with the definition of PAGESIZE in Xamine (Display subdir) - That make it not build correctly on CYGWIN. -August 16, 2005 - - Add support to scripted readout for caenv1785 adc (primitive). -September 2, 2005 - - Added support for 2d long spectra. -September 22, 2005 - - Fix defect in Gamma 2d increment: If no valid parameters are left, - the outer loop limits are very very bad. - - Forward port the inclusion of bitmask gates - - Support dynamic creation of treeparameters. - - Document treeparameter -create command in online user guide. -September 30, 2005 - Happy Birthday Ron: 48 - - Add -listnew to treeparameter command so that new gui can - figure out which parameters have been created since program - started ... and save them. -October 5, 2005 - - Retry select in pipe data source in case of EINTR. - - Add attach -list to support determination of event source. -October 7, 2005 - - Fix defects in eventsink pipeline add/delete code. Predicates - not constructed correctly. -October 17, 2005 - - Add the new browser based GUI to the system. -October 18, 2005 - - Add fix for defect 188 - grobj files need to specify spectra by name. -October 21, 2005 - - Fix error in old tree gui handling of old list mode save files: - treeparameter -set was invoked with the wrong number of parameters. -October 24, 2005 - - Fix error in old tree gui: Saving list mode files treeparameterList - was missing a $ when being appended to the list of lists...so no modified - treeparameters were saved. -October 31, 2005 - - Fix buffer overflow problem in griprint.cc found by D. Caussyn. -November 29, 2005 - - Put spectrum names in integrations (and hence in logfiles), rather - than slot numbers - - Defect 174 - Make +/- buttons kick out of autoscale. - - Defect 162 - Document user's obligation to delete buffer - translators. -Decemberr 19, 2005 - - Remove illegal default parameter from PointlistGate.h's InGate with - parameters. -February 1, 2006 - - Factor adding a configuration parameter to a CModule in Scriptable SpecTcl - into AddParameter member function so extenders can add new parameter types. -3.1-pre5 -February 17, 2006 - - Factor out multiple identical definitions of some typedefs into - xamineDataTypes.h -February 20, 2006 - - Add longer descriptive titles to the Xamine names (parameter, gates etc). - - Fix some quoting errors in gui with respect to spectrum names with spaces. -February 21, 2006 - - Protect evals from parameters that have spaces in them by quoting - with [list]. - - Add ability to list gates with spectra in SpectrumPackage.cpp's - DescribeSpectrum and immediate callers. - - Add -showgate switch to -list operation on spectrum command. - - Fix PseudoScript.cpp - did not properly handle cases where pseudo names - had spaces in them. -February 23, 2006 - - Fix typo in Gui/spectrum.tcl -March 10, 2006 - - Unit tested migration of TCL++ library to object interfaces (remove - deprecated interfaces). - - Added Docbook generating stuff to configure.in -March 13, 2006 - - Made operator=, operator== and operator!= of CTCLChannel private as there - are no implementations. -March 16, 2006 - - Added extensive XML based manpages for the tclPlus CTCL class - library. - - Support pre/post command functions for CTCLProcessor. - this is used in nscldaq to implement the CDAQTCLProcessor. - - Need to implement CTCLProcssor::Bind to bind itself and the adaptor. -March 20, 2006 - - Added a bit more error checking/reporting to spectrum creation gui. -March 22, 2006 - - Fixed an error in 1-d spectrum creation.. syntax -March 30, 2006 - - Credit D. Bazin with concept of treeparameter in treeparam C++ sources. -April 17, 2006 - - Fix some 64 bit uncleanliness in Xamine so SpecTcl/Xamine can run - reliably on 64bit systems in 64bit mode. -April 18, 2006 - - Old method of long titles did not work very well as it made - old .win files worthless. -April 20, 2006 - - Fix error in sourcing file from GUI.. file should execute at global level. -April 21, 2006 - - Add buffersize selector to event source dialogs. -April 23, 2006 - - Fix typos in event source dialogs buffersize stuff. - - Add many credits. -April 26, 2006 - - Added screen dump based printing for the A1900 group and the - KSU folks who want a wysiwyg printing mechanism. -May 23, 2006 - - Fix defect 195,196: gri was emitting epsf which caused multiple pages - to smoosh onto a single page, printer.cc: Print setup dialog had a - widget that duplicated the name of another widget causing it to operate - funny. -SpecTcl-3.1-001 - - Try to make the docbook builds more robust even in the presence of missing - or broken(?) docbook installs. - - configure for libgd. - -SpecTcl 3.2-pre1 starts. - June 20, 2006 defect 206: Check parameter validity in mask gates. - Catch exceptions while histogramming - Defect 197: Averaging reduction boxes too large by - 1 channel in x. - Defect 200: Gamma 1dL spectrum increments no 64 bit clean - Defect 209: Mor of the same as 200. - June 23, 2006 Defect 210: Problems with scaning ints -> longs. - June 28, 2006 Xamine has some 64 bit defects as well, these manifest - on longword 2d spectra - Gui has problems if the user makes e.g. a and a.b fix this. - Defect 211 - crash if making g1 spectrum with empty parameter - list - June 29, 2006 Improve performance of terminal parent creation in gui. - Fix defect in allocatro.c's alignment mask computation that - causes free list corruption on e.g. 64 bit systems. - July 5, 2006 Propagate fix for 64 bit problems with mask equal gates. - Work around issue with tclsh 8.4 early where - string is integer 0x80000000 (e.g.) returns false.. - makes creation of mask gates fail. - July 13, 2006 Forward propagate fix for defect 213 to this version. - Took the easy way out copying all of *.cc,*.h from Display - and ChanCommand.cpp from SpecTcl. - July 17, 2006 Fix bitmask gate inconsistency between mask size in command - and in the classes implemebnting the gates....do this - by loading the gate mask value into the base class. - July 19, 2006 Fix error in newGui.tcl. When used with scaler processing, - RunNumber could be >Unknown< when formatting the status - line. - July 28, 2006 Fix error in wysiwyg printing for zoomed displays. - July 31, 2006 Fix off by one error in scaling.cc - for small scale ranges, - and small channel values, the channel height was visibly - lower than the corresponding tick mark. - August 8, 2006 Enhancement 194 - increase precision in output of - integrations. - August 15,2006 Enhancement 205 - Limited the length of the attach spec on the - GUI status line to at most 50 chars with the middle ones - replaced by ... this prevents the window from becoming - >very large< for e.g. cluster file analysis. - August 16, 2006 Do performance tuning of browser.tcl for 64 bit system. - on those systems, treeview find is terribly slow. - August 29, 2006 Added setResult functions to CTCLInterpreter to factor - object based result setting into one spot. - September 7, 2006 Added support for super-events with - CAnalyzer::entityNotDone() function. - Sept 8, 2006b Related to the above, allow event processors to indicate that - 0 bytes of the event were processed if the event was not complete. - Sept 27,2006 Added code to support multiply incremented 2-d sum spectra. - Oct. 03, 2006 Gui: Add preferences control panel with ~/.SpecTclDefaults - save file. Use this to default the length of 2-d spectrum - axes. - Oct 03, 2006 Gui: Prevent status lines from expanding in height. - Oct 04, 2006 rwio package - added permissions letter to the cvs and - to the distro. - - Oct 05, 2006 Xamine- add support for entering fitlines. - Oct 09, 2006 GUI - Bugzilla 207 - Increase the sophistication used - by SpecTcl's gui to located spectcldaq. - Oct 10, 2006 - GUI - Bugzilla 208 - Enhancement request for File->Save... - to support a selective store. - - Filter processor Bugzilla 217 - Put a bit of code in the - filter event processor to attempt to determine if it has - been pointed at something that is not a filter file. - Seems to work for the cases I've tried, so it's - certainly better than it was before. - Oct 16, 2006 - Bugzilla 219 : Added code to TclGrammerApp.cpp to output - the VERSION file to tkcon. - - BZ 220 Allow user to disable prompt for - new gui. If NoPromptForNewGui is defined and true, - prompting will be disabled. - Oct 19, 2006 - BZ 224 - 2d long integrations were incorrect on 64 bit plats. - - BZ 226 - Added support for attach and eof callouts to - event processors. - - Documented new functions in the event processors. - Oct 20,2006 - BZ 87 Added basic fitting... still some kinks to work out - in the Xamine display but it does work...also need - to Xamine drive Gui to create the fit. - Oct 23, 2006 - Added documentation for the fit command and how to - extend the fitting subsystem. - Oct 24, 2006 - Fixed error in log display of fitlines (actually convert1d error). - Made fitlines solid lines not just dots. - Fixed defect introduced with fitlines - where 1-d objects - got deleted on updates. - Ensured that fitlines get sent in on sbind. - Added framework for user processing of Xamine buttons in - the Xamine custom button box. - Oct 25, 2006 - CXamineEvent::addButtonHandler needs to be public. - Expose ability to get the histogrammer etc. in SpecTcl.h - Expose fit id allocation in CfitCommand. - Added credits for gsl.{cpp,h} and permission grant to the - November 1, 2006 - Fix some issues for building from the distro rather than - from CVS. - distribution - Nov 2, 2006 - Get the calibrated parameter contrib install to stop polluting - $(prefix)/include with its headers. - - Fix wierd issues with make dist on ubuntu edgy edge... - was not putting config dir into the distro.======= - distribution - Nov 3, 2006 - Fix error introduced in scaler display by attempt to - format totals as %u when they are actually floating point - exactly to keep them from overflowing. - - Support a default buffersize preference. - Nov 8, 2006 - Add Xamine restart handler capability to Xamine interface. - Nov 9, 2006 - Install CHANGELOG - Nov 17, 2006 - Fix defect 228 - Xamine.Defaults can get printing defaults - all garbled causing printing to fail or crash Xamine - - Fix defect 299 - setup.tcl is obsolete now, don't distribute - in Skel dir. -December 1, 2006 - - Fix defect in edit2dmulti.tcl (pre-release). If selecting - a spectrum and an axis parameter is not a treeparameter, - use the source spectrum axis definitions to provide the - appropriate axis def for the new spectrum. -December 7, 2006 - - Fix 2 defects: - o Removing fits from xamine via SpecTcl failed due to - not allowing that 'gate type' to be recognized for - deletion. - o Deleting a spectrum should delete all fits that are - defined on that spectrum. -December 19, 2006 - - Fix defect per D. Caussyn FSU: CXdrInputStream.cpp was - doing delete m_pBuffer -> delete [] m_pBuffer. -Decmeber 21,2006 - - Ensure that the scriptable makefile also links in - the fits library. -Release Jan 15, 2007 - -Pre 2 starts. - -January 18, 2007 - Defect 288 : applygate.tcl did not handle case of - multiple target spectra correctly. -February 12, 2007 - Enh Request 232 : when treevariable -set is invoked, - fire the traces on that variable so that any GUI elements - bound to that treevariable are updated -February 13, 2007 - Defect/enh. 234 : When a configuration is restored, - and the config script has an error, keep on trying to - execute the script but report all the errors in a dialog... - at present, hopefully there are not very many errors as - the dialog is not a scrolling dialog. -February 15,2007 - Synch gpVersion with VERSION symbol in config.h -Week of Feb 22, 2007 - BZ enhancement request 291 Gamma 2d deluxe - spectrum. -Week of Feb 26, 2007 - BZ 292? Ensure that tk app name is unique - so multiple tkcons will open. - - Fix inadvertent leaving of Gamma 2d as Ulong_t not - UInt_t and same for gamma deluxe, for 3.1 , Gamma 2dL - was already correct. -Week of March 5 - Add Splash screen. - - Adjust chisquare calculation to be correct for CGaussianFit - (thanks to Dirk Weisshaar). -Week of March 12, 2007- - - Ensure that SpecTcl does not crash if VERSION not readable. - (BZ 294). -Week of March 19, 2007 - - Make CEvent::clear() O(1) time.bg -Week of April 2, 2007 - - Add disclaimer to filterread.htm about data beyond the last used - position in filter buffers as someone made an assumption that is not - true about it. - - Added whatsnew3.1.htm page linked to front page that allows - users to see what's new in SpecTcl 3.1 - -Pre-released April 26, 2007 - -Pre-3. - -Week of April 30, 2007 - - Added observer capability to all dictionaries types. This will - allow support of traces on e.g. spectrum dictionary. - - Added tests for dictionary observers and the observer manager - helper classes. - - Added capability to add/remove observers from the spectrum dictionary - to CHistogrammer. - - Added API entries to add/remove spectrum observers. - - Added spectrum -trace command. - - Added docs for the -trace command. - - Made Xamine's Xamine_DrawFittedString also attempt truncation - rather than just leaving a string blank if it does not fit. - e.g. a title that is: - "this is a very long string that does not fit" - could get rendered/displayed as: - "this is a very lo..." if that's all the room there is - - Port in the jumbo buffer decoder and put it in scriptable unpacker - too -Week of May 7, 2007 - - BZ 295 - add support for splitting/joining filter files. Note that - cat can join perfectly well, so this reduces to writing a program - filtsplit that can split. We'll choose to write: - filtspilt --size blocks_per_file --output stem_name input_file - blocks_per_file - number of input filter blocks per output file. - stem_name - Is the stem of the split output files which - will have names like stem_name_nnn.flt - input_file - Is the input file to split. - - Changed swrite format level to 3: Make NSCLAsciiFormatter able to read: - rev 2,1 and even 2 where summary spectra only have 1 coord. - - Fix some issues with Gamma Delux 2d spectrum classes that don't compile - on 4.x compilers - - get NSCLAsciiFormatter to properly read rev 2,3 and 'malformed rev2' - produced by the pre2 version of 3.2. - - Make the spectrum file read functions able to correctly report errors in - reads (e.g. not a spectrum file). -Week of May 14, 2007 - - BZ 297 - Make axis tick marks draw correctly if there's only one channel in - the spectrum (well really just don't draw tick marks at all. - - Add code to support gate observers.. for new displayer. - - Add -trace subcommand to gate. - - Fix error in TreeParameter/SpectrumGenerator.tcl -state normal not - -state enabled. - - Fix error in TreeParameter/SpectrumGenerator.tcl - Duplicate button - did not correctly decode parameters of spectrum being duplicated. - - Add docs for the gate -trace subcommand to the web docs. - - Fix CNSCLJumboBuffer::size32() member, was not correctly picking up - the buffer revision level. -Week of May 24, 2007 - - Only clear gates that are worth clearing. -Week of May 28,l 2007 - - Fix channel position to pixel position coversions which had - the width of a channel to be too large (too few channels in displayed - range. - - Do some jiggerypokery with 1-d gates to make them more consistent with - their integration: - o On acceptance the right point is adjusted to the right by a channel. - o Gate checking is now exclusive of the right point. - o On entering in the display the adjustment is un-done so that - Xamine will display correctly. - Week of June 4, 2007 - - Ensure that Xamine's SuperPrompt::SetList message boxes - from Xamine_error_msg() get displayed by making them - children of the prompter's parent rather than of the prompter - which, after all is hidden. - Week of June 11, 2007 - - Get nice support for ubuntu edgy eft. - Week of June 25, 2007 - - Begin adding the 'integrate' command. - Week of July 2, 2007 - - 2-d integrations in Xamine had displayed standard deviations not - fwhm's as advertised. - - Add docs for integrate command. -Week of July 9, 2007 - - Corrected CPacket.cpp for jumbos in scriptable. -Week of August 13, 2007 - - BZ 318 - Old GUI SpectrumGenerator.tcl was not listing applied - gates correctly when the filter mask was not * -Week of Sept 10,2007 - - BZ 318 revisited... need to use hash tables for the applied gates - rather than lists to be utterly reliable. - - Fix error in gamma 2d deluxe where if only one y parameter was specified - one of the constructors would segfault because it was mistakenly getting units - from y[1] not y[0]. - - Fix error in swrite NSCLAsciiSpectrumFormatter...get axis limits directly from the - spectrum description rather than dorking around to get them from - the converter. -Pre3 released - -October 11, 2007 Pre 4 (or possibly 3.2-001) opened. - -October 12, 2007 - Make multicolored monster understand Gamman deluxe spectra. -October 15, 2007 - Redid a bunch of stuff with the test data sources to - allow attach, re-attach , re-re attach etc. Don't think there - are any memory leaks. -October 23, 2007 - Add detach menu entry.. really stops processing and does an - attach -file /dev/null - - added version specific daq locations to search path for - spectcldaq (gui). - -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. -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. -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. - - 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. -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. - - 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. -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. -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. -January 25, 2008 - Debugged filter support API - - Fixed error in gate flattener handling that was preventing - gate from being properly applied. -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. -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. -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. - -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. - -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. -April 22, 2008 - Fix slight errors in binning in SpecTcl.. correctly - compute the bin width for the integeristas. - Per Thomas Baumann. -May 7, 2008 - Fix defect in Xamine gate acceptor on m2 spectra. - Needed to select appropriately between adding the gate - and modifying the existing gate, rather than unconditionally - adding the gate.. which can throw an uncaught exception. - Thanks to Kevin Carnes KSU for stepping into this defect - and alerting me to it. - - Added Kevin Carnes and Dirk Weisshaar to the acknowledgements. -June 5, 2008 - Fix typeo in BufferAnalysis.h - -July 11, 2008 - Gui/slice.tcl - re-init the browser on accepting a gate (reinit member) - that restores the parameters used to the list. - - Expose the treeview interface to clients of - Gui/browser.tcl -August 18, 2008 - Update to tkcon V2.4 -September 17, 2008 - - Fixed error in RunState handling.. Set it to - "Inactive" on event source EOF. This is needed to - support batchmode processing of e.g. filter files. - -Start on 3.3 -September 17, 2008 - - Added extensible factory template class directory - factories. This can be used both by new factories - and to refactor the code provided by existing factories. - - Use extensible factory to generate the buffer decoder - selected by the attach -format switch so that buffer decoders - are extensible. -September 18, 2008 - - Registered default decoders with DataSourcePackage -September 22, 2008 - - Added CRingBufferDecoder support so that ring buffer - data can be decoded. -September 26, 2008 - - Provided mechanisms for buffer decoders to specify they - operate either on fixed sized blocks of data or on streams. - This is needed to ensure SpecTcl's input stage does not - get permanently blocked when data taking pauses or - a run ends on a stream oriented pipe data source. - - Indicated that the CRingBufferDecoder is a stream decoder. - - Documented SpecTcl::addBufferDecoder. - - Documented new behavior of the -format switch on the - attach command. - - Xamine - integrate superimposed spectra as well - as base spectra. -October 2, 2008 - Add ungate context menu option to new GUI. - - Don't write applications if the gate is -Ungated- - (spectrum was ungated). - - Correct the count of buffers analyzed to account for the - fact that the first buffer is sequence 0 so we need - the first buffer to increment our buffers analyzed -> 0. - -January 5, 2009 - Added gamma summary spectrum. -January 15, 2009 - - Fix Xamine compilation errors with -pedantic. - Need to use reinterpret_cast to cast XtPointer -> - function pointers. - - Document gamma summary spectra in the on-board html. - - Document GUI gamma summary spectrum creator. - - Added API docs for gamma deluxe and gamma summary spectra -February 18, 2008 - - Made the background of the button box a clear indicator of whether - or not SpecTcl is in a test system. -pre2: - March 6, 2009 - Make the rEvent array hold doubles not floats. - March 18, 2009 - Fix tkcon.tcl so it does not implement a clear command - that interferes with the SpecTcl clear command. - March 24, 2009 - Make the delgrob dialog a multiselect. - May 1, 2009 - CSpectrum2Dm.{h,cpp} Ensure these spectra get put in the - don't need a parameter list rather than some need a parameter list - which causes them to be grossly underincremented. -pre3: - May 2009 - Port to debian lenny with minimized compiler warnings. - May 20,2009 - In source files add back the newline after each lineof - a multiline command to prevent syntax errors on e.g. - pseudo defs. - May 27, 2009 - Fix error switch/case for handling gate point scaling. - gamma gates resulted in no points being accepted. - August 13, 2009 - Fix error in Strip chart spectrum was not requiring - that target parameter was defined. - - Fix error in strip chart shift. If shift is larger than spectrum - channel count would segfault. - Sep 4, 2009 - Fix BZ 378 - Segfaults can happen when cutting down the - Y parameters of a g2d spectrum to generate the title. - -pre4: - October 11, 2009 - BZ 379 when SpecTcl started using double for parameters - in an event, filters broke. The fix allows both filters - from older and current versions of SpecTcl to be read. - October 14, 2009 - Strip chart spectrum was miscalculateing m_nOffset on - shifts to the left leaving gaps in the spectra for - continuously varying parameters. - December 4, 2009 - Fix error in XMWarningDialog::Create .. was referencing - button objects prior to ensuring they were created. - December 4, 2009 - BZ384 - Provide some fallback fonts in case the adobe-courier - family is not present. - BZ384 - Provide a const char* exception handler in main() - when caught displays a modal warning box with the - exception displayed and when dismissed exits Xamine. - - Throw an appropriate const char* exception when - no suitable fonts can be found in text.cc:LoadFonts - -February 2, 2010 - Export CRingBufferDecoder.h to the world rather than - hiding it in noinst_HEADERS. -Feburary 11, 2010 - Modify data source GUI elements to include a data - format selector that includes support for ring so people - can attach to ring buffers or event files from the ring - buffer system. - -pre6: -May 6, 2010 - Fold in KSU fix for tkcon problems on ubuntu 10.?? -May 6, 2010 - Update to gri-2.12.20 -May 14, 2010- Remove memswap usage in CIntegrateCommand.cpp. - - Remove all -lpub's from Makefile.am and includes. - - Fix buffer overflow (BZ 404) in griprint.c -pre7: -May 18, 2010 - Fix error in GUI spectrum usage calculation. Was under - calcluating summary spectrum usage. -June 2, 2010 - - Fix treegui problems: - * Gate dependencies not calculated right if only one gate. - * mclistbox now clean for tcl 8.5 -June 3, 2010 - - WO 2529-005-CP-005 - Add an extra layer of indirection - (parameter scoreboarding) to improve the performance - of histogramming when spectra and parameters are sparse. - -June 13, 2011 - Fix some memory double deallocations found by Coupland. - -3.3-002 - - Fixes pointed out by cppcheck static analyzer. - - Misc. warning removals. - - Use mkstemp rather than tmpnam in wsyswig printing. -3.3-003 -June 30, 2011 - - Fix error in CRingBufferDecoder - premature free of glued buffer -3.3-004 -November 14, 2011 - - Increase the capacity of the integration widget in Xamine to - 50,000 chars (Carpino request). - -3.3-005 -December 5, 2011 - - TR 6912 - undo changes in dfltmgr.cc suggested by cppcheck specifically: - - assignment operator of win_*d infinitely recurses - - use memcpy instead which causes ccpcheck to complain about memcpy-ing objects - circumventing assignment. Must still see why the recursion occurs. - - The earlier assignment was ill motivated and did not actually change the caller's - win_xd for Xamine_CreatexdDefault.... functions as it just did pointer assignment - rather than actually transferring the attributes to the caller. This resulted in - unconditionally using a scatter plot rendition rather than the more usual color. - - -3.3-006 -November 30-?? 2011 - - Added flag to guistate.tcl so that new/treegui can ask it to - save without spectrum -delete and thus support the 'cumulate' - (sic) checkbutton. - - Fix errors in Stripchart spectrum shifting and channel caculation. - - Fix case in spectrum definition where we might ask Tcl to delete - storage we never allocated. - - Remove use of TkTable which disappears eventually in Tcl. -3.3-007 -?? - Ensure this all works on ring buffers. - -3.3-008 - - issue 107 Fix SpecTcl-2d integration command (gives wrong answers) - - issue 108 Support Xamine builds if OpenMotif is the motif version installed. - - issue 105 In folder gui make spectrum save a 2-step wizard so that it fits - on small screens better. - - issue 973 Do a smart search for the ring buffer clients in data source tcl. - - issue 866 Protect GUIs (folder standalone and tree) from multiple startups. - -3.3-009 - - May 4, 2012 - Added cusbSpecTcl to the build. - - June 6, 2012 - Added vmusbSpecTcl to the build. - - June 6, 2012 Tell user about missing parameters array elements. - - June 6, 2012 VMUSBSpecTcl - process madc -resolution config option. -3.3-010 - - June 8, 2012 Branched the development repository and upped the - configure.ac version to 3.3-010 - - June 11, 2012 Issue #1089 fix order of gui startup with respect - to config file processing. - - June 11, 2012 Issue #1087 correct handling when saving gates for - gates that have spaces in their name. - - June 14, 2012 Issue #1008 Provide error information and exit if SpecTclRC.tcl - or SpecTclInit.tcl failed. - - June 14, 2012 Issue #1070 Provide error information for failing Pseudo params. - - June 15, 2012 Issue #1046: - * Default to ring format if online. - * Allow user to specify ring name. - - - June 15, 2012 Issue #1063 Improve new gui startup time. -3.3-011 - July 2, 2012 Issue # 1191 Save spectrum channel type (byte word longword e.g.) - when doing a save of failsafe write. - - July 9, 2012 Issue #1152, Issue #1150, Issue #1151, Issue #1153 - Get clean builds - on Ubuntu Precise Pangolin.. - - July 24, 2012 - Use 64bit clean DataFormat.h (time_t -> uint32_t). -3.3-012 - - Issue #1322 - Add product name to VERSION file e.g. SpecTcl- -3.3-013 - - Issue #1451 - Re cast the Xamine shared memory region in terms of - the types in stdint.h - this due to observation that 64bit - shared memory requirements were significantly larger than - 32 bit systems due to the use of architecture specific types. - - Issue #1328 - Remove SpecTcl's local instance of gri and require gri - be installed on systems using SpecTcl. Note that lack of gri will - result in warning at configuration/install time. - - Issue #1111 Add -rpaths in the case of links to shared libraries - that are may not be in the normal places (e.g. provided by --with - flags at build time). - - Issue #1142 - Remove all dependencies on BLT as this package will - likely become unavailable with Tcl 8.6 - which is now out of beta - test. - - Fixed various compile warnings in anticipation of compiler versions - that will treat these as errors (finally solved the callbacks - as data in Xt casting problem). -3.3-015 - * Fix error in griprint.cc - buffer overflow for printing spectra with - numbers above 99. Thanks to Dave Caussyn at FSU for finding this one. - * Fix redef errors in NSCLAsciiFormatter.. - -3.4 - * Provide support code for NSCLDAQ-11/10 ring item decoding. - * Issue # 1713, Issue# 1712 Support ringformat specification in - all data source dialogs. In addtion add the format selection - to the bottom of data source prompters that did not originally - have them. - * Issue #1659 Provide mechanisms for ring buffer analyzers - to fish data out of the event body header if it exists. - * Issue #1658 Add ability for CRingBufferDecoder to autoselect - the format helper if a ring format item is seen in the input data. - * Issue #1633 Provide event processors with a post SpecTclRC.tcl - initialization hook. - * Much more documentation on how to build event processors etc. - * Extract the tcl++ and exception libs so they can be centrally - maintained. -3.4-001 - * Update AC_INIT to provide version number. - * Add some tests to m4 and use them there instead of in - configure.ac - * Set up to use Jenkins CI server. - * Only let the cppunit tests that don't need a display survive. - * Properly integrate the V1729 FADC in VMUSB's spectclSetup.tcl - file. - * Fix error in vmusb spectclSetup.tcl typo on V1x90 configuration -3.4-002 - * Bug #2100 - gates on m2 spectra incorrectly convert their points. - * Issue #2101 - Axis definitions for m2 and gd spectra are not clear. - * Feature #2102 Want to display gates on m2 spectra. -3.4-003 - * Feature #2103 - Allow users to hide the gates on displayed spectra - Spectra->Hide Gates and then refresh the menu is a toggle button. - * Feature #1484 - Make work with Tcl 8.6. - * Fix error in 11 ring format helper - was not getting the runnumber properly. - * Remove clear command from new Tkcon so it does not interfere with - SpecTcl's. -3.4-004 - * Factor in the daqroot preference in finding ringselector. - * Figure out if ringselector supports --non-blocking and - if so turn it on. - * Make strip chart spectra able to do 64 bit shifts. - * Fix error in displaying gates on 2dsum spectra: was the case that all but - gates on the first two parameters were displayed flipped. - * Fix error in compound get visual editor - was calling a deprecated browser - method. -3.4-005 - * Feature #3531 - add version command. - * Feature #3532 - add scontents command. - * Feature #3538 - add compress package with deflate/inflate commands. - -3.4-006 - * Feature #4192, Bug #4897 - All variables that can be set in - SpecTclInit.tcl now have traces established on them that make it a - Tcl script error to modify them after SpecTclInit.tcl has been - run. - * Bug #4900 - if bind fails in spectrum creation: - * Give meaningful message to the user. - * Delete any spectra the operation may have created - * If there are previously defined spectra with the same name, - re-create them. - * Bug #4858 - Indicate width of channel in tree gui. - * Bug #4861 - Fix error that happens when one blansk out the parameter - field. \ No newline at end of file Copied: tags/SpecTcl-3.5-000/CHANGELOG (from rev 2343, branches/3.5dev/CHANGELOG) =================================================================== --- tags/SpecTcl-3.5-000/CHANGELOG (rev 0) +++ tags/SpecTcl-3.5-000/CHANGELOG 2015-11-13 15:36:17 UTC (rev 2345) @@ -0,0 +1,1076 @@ +] +2.1-006 - Incorporate fix 113 - low level cutoffs lead to corrupted + 1-d displays. + - Have build procedures clean any pre-built Gri prior to + tarring up the distribution. +2.1-007 - Incorporate fix 120 - memory leak on spectrum -delete -all + - Date/time/version stamp installation. +2.1-008 + - Incorporate fix for issue 95: parameter -list -byid fails to parse + the output list for sorting. + - Incorporate fix for issue 105: sbind usage level help refers to + itself as the bind command not sbind. + - Incorporate fix for issue 111: swrite creates a file even if + no valid spectra are included on the command line. +2.1-009 + - Incorporate printing fixes for last channel of 1-d. + - Incorporate printinf fix ensure that 2-d spectrum channels display + all non zeroes even if they are below the threshold for the lowest + color range. + - Place upper limits on 1-d graphical entries at the top of the + channel rather than at the bottom. This more realistically + describes what's going on + - Fix issue 118 Superpositions in window files are by id not name. + - Fix issue 122 Speclist with a single spectrum gives blank output. + - Fix issue 123 Print with superpositions crashes gri (gives it a + bad command file). + - Fix issue 124 FWHM not transformed to mapped co... [truncated message content] |
From: <ro...@us...> - 2015-11-13 14:53:07
|
Revision: 2344 http://sourceforge.net/p/nsclspectcl/code/2344 Author: ron-fox Date: 2015-11-13 14:53:05 +0000 (Fri, 13 Nov 2015) Log Message: ----------- Improve ttk browser performance. Modified Paths: -------------- branches/3.5dev/Gui/folderGui.tcl branches/3.5dev/Gui/ttkbrowser.tcl branches/3.5dev/Sorter/Spectrum.h branches/3.5dev/SpecTcl/SpectrumPackage.cpp Modified: branches/3.5dev/Gui/folderGui.tcl =================================================================== --- branches/3.5dev/Gui/folderGui.tcl 2015-11-11 12:39:54 UTC (rev 2343) +++ branches/3.5dev/Gui/folderGui.tcl 2015-11-13 14:53:05 UTC (rev 2344) @@ -1122,7 +1122,7 @@ }] - puts "Preliminaries: $time" + # puts "Preliminaries: $time" set timing [time { browser $parent.b -spectrumfoldercommand spectrumFolderContextMenu \ -parameterfoldercommand parameterFolderContextMenu \ @@ -1136,7 +1136,7 @@ -parameterrightclick parameterContextMenu \ -gaterightclick gateContextMenu } 1] - puts "Browser creation $timing" + # puts "Browser creation $timing" pack $parent.b -fill both -expand 1 @@ -1152,11 +1152,11 @@ set timing [time { updateStatus 1000 }] - puts "Status update $timing" + # puts "Status update $timing" set ::SpecTclIODwellMax 100 set timing [time { preferences::readPrefs }] - puts "Read prefs $timing" + # puts "Read prefs $timing" } Modified: branches/3.5dev/Gui/ttkbrowser.tcl =================================================================== --- branches/3.5dev/Gui/ttkbrowser.tcl 2015-11-11 12:39:54 UTC (rev 2343) +++ branches/3.5dev/Gui/ttkbrowser.tcl 2015-11-13 14:53:05 UTC (rev 2344) @@ -140,6 +140,7 @@ variable parameterTerminals -array [list] variable spectrumTerminals -array [list] + variable variableTerminals -array [list] #--- @@ -250,26 +251,22 @@ set timing [time { $self fillSpectrumFolder }] - puts "Fill Spectrum folder: $timing" } if {[lsearch -exact $options(-restrict) parameters] != -1} { set timing [time { $self fillParameterFolder }] - puts "Fill parameter folder $timing" } if {[lsearch -exact $options(-restrict) variables] != -1} { set timing [time { $self fillVariableFolder }] - } if {[lsearch -exact $options(-restrict) gates] != -1} { set timing [time { $self fillGateFolder }] - } # Bindings for folders: @@ -333,22 +330,6 @@ -open 0 -tags spectrumFolder -image ::browser::foldericon] lappend topLevelIds $spectrumFolder - # Step 1: Create an array indexed by spectrum name whose value is the gate on that - # spectrum "-TRUE-" is filtered out to an empty string: - # NOTE: All spectra have a gate applied to them even if it's a -TRUE- gate. - # this is how SpecTcl works. - # - set timing [time { - foreach application [apply -list] { - set name [lindex $application 0] - set gate [lindex [lindex $application 1] 0] - if {$gate eq "-TRUE-"} { - set gate "" - } - set applications($name) $gate - } - }] - puts "Getting gate applications $timing" # Now we're ready to populate the subtree: # Step 2: Create a list of spectra filtered by any -filterspectra script each element @@ -357,29 +338,31 @@ # set timing [time { set spectrumList [list] - foreach definition [spectrum -list] { + foreach definition [spectrum -list -showgate] { if {$options(-filterspectra) ne ""} { if {![uplevel #0 $options(-filterspectra) [list $definition]] } { continue; # Skip if filter script rejected. } } set name [lindex $definition 1] + set gate [lindex $definition end] + if {$gate eq "-TRUE-"} { + set gate "" + } lappend spectrumList [list \ $name \ "[lindex $definition 2] [lindex $definition 5]" \ - $applications($name) \ + $gate \ "" "" "" "" "" \ $definition] } }] - puts "Getting cooked spectrum defs $timing" # Fill in the spectrum tree: set timing [time { $self fillSpectrumSubtree $spectrumFolder $spectrumList }] - puts "Populating tree: $timing" } # fillParameterFolder @@ -410,17 +393,16 @@ } lappend parameterList [list [lindex $parameter 0] $parameter] } -}] - puts "Preparing parameter list $timing" + }] # Recursively stock the parameter tree algorithm is pretty much the same as # for fillSpectrumSubtree set timing [time { $self fillParameterSubtree $paramFolder $parameterList -}] - puts "Filling parameter tree : $timing" + }] + } # fillVariableFolder @@ -1172,12 +1154,7 @@ } # Enter the terminal nodes: - foreach variable [lsort [array names terminal]] { - set varInfo $terminal($variable) - set valueList [list "" "" "" "" "" [lindex $varInfo 1] [lindex $varInfo 2]] - $tree insert $id end -text $variable -image ::browser::varicon \ - -values $valueList -tags variable - } + set variableTerminals($id) [array get terminal] } ## # fillGateSubtree @@ -1554,8 +1531,17 @@ array unset spectrumTerminals $id return } + if {[array names variableTerminals $id] ne ""} { + array set terminal $variableTerminals($id) + foreach variable [lsort [array names terminal]] { + set varInfo $terminal($variable) + set valueList [list "" "" "" "" "" [lindex $varInfo 1] [lindex $varInfo 2]] + $tree insert $id end -text $variable -image ::browser::varicon \ + -values $valueList -tags variable + } + + } - } } Modified: branches/3.5dev/Sorter/Spectrum.h =================================================================== --- branches/3.5dev/Sorter/Spectrum.h 2015-11-11 12:39:54 UTC (rev 2343) +++ branches/3.5dev/Sorter/Spectrum.h 2015-11-13 14:53:05 UTC (rev 2344) @@ -114,6 +114,7 @@ STD(vector)<Float_t> m_fHighs; //!< STD(vector) of axis high limits. STD(vector)<STD(string)> m_Units; //!< Axis units. static Bool_t m_Seedrandom; //!< True if need to seed. + std::string m_description; public: // Constructor @@ -168,6 +169,9 @@ Int_t getAxisMapCount() const { return m_AxisMappings.size(); } + std::string getTextDescription() const { + return m_description; + } virtual SpectrumType_t getSpectrumType() = 0; @@ -193,6 +197,10 @@ m_Units.push_back(Units); } +public: + void setTextDescription(std::string d) { + m_description = d; + } // // Operations: // Modified: branches/3.5dev/SpecTcl/SpectrumPackage.cpp =================================================================== --- branches/3.5dev/SpecTcl/SpectrumPackage.cpp 2015-11-11 12:39:54 UTC (rev 2343) +++ branches/3.5dev/SpecTcl/SpectrumPackage.cpp 2015-11-13 14:53:05 UTC (rev 2344) @@ -249,6 +249,12 @@ rResult = rExcept.ReasonText(); return TCL_ERROR; } + // pre-compute the description string and set it: + + pSpec->setTextDescription(DescribeSpectrum(*pSpec, false)); + + // Return the name as the result. + rResult = pSpec->getName(); return TCL_OK; } @@ -419,8 +425,29 @@ const char* name = ((p->second)->getName()).c_str(); if (Tcl_StringMatch(name, pattern) ) { + // Spectra have pre-computed definition strings that we use if they + // are available else we compute/cache one. + // The showGates flag gets handled here regardless: + + CSpectrum* rSpec((*p).second); - rvProperties.push_back(DescribeSpectrum(*rSpec, showGates)); + std::string d = rSpec->getTextDescription(); + if (d == "") { + // Need to compute/cache. + + d = DescribeSpectrum(*rSpec, false); + rSpec->setTextDescription(d); + } + // If necessary fold in the gate to the definition: + + if (showGates) { + CTCLString Description(d); + const CGateContainer& g(*(rSpec->getGate())); + Description.AppendElement(g.getName()); + d = std::string((const char*)(Description)); + } + + rvProperties.push_back(d); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-11 12:39:56
|
Revision: 2343 http://sourceforge.net/p/nsclspectcl/code/2343 Author: ron-fox Date: 2015-11-11 12:39:54 +0000 (Wed, 11 Nov 2015) Log Message: ----------- Open development on 3.5 branch. Modified Paths: -------------- branches/3.5dev/CHANGELOG branches/3.5dev/configure.ac branches/3.5dev/tcl++incorp.sh branches/3.5dev/testBuildTarball Modified: branches/3.5dev/CHANGELOG =================================================================== --- branches/3.5dev/CHANGELOG 2015-11-11 10:41:08 UTC (rev 2342) +++ branches/3.5dev/CHANGELOG 2015-11-11 12:39:54 UTC (rev 2343) @@ -1071,4 +1071,6 @@ re-create them. * Bug #4858 - Indicate width of channel in tree gui. * Bug #4861 - Fix error that happens when one blansk out the parameter - field. \ No newline at end of file + field. + +3.5-000 \ No newline at end of file Modified: branches/3.5dev/configure.ac =================================================================== --- branches/3.5dev/configure.ac 2015-11-11 10:41:08 UTC (rev 2342) +++ branches/3.5dev/configure.ac 2015-11-11 12:39:54 UTC (rev 2343) @@ -1,5 +1,5 @@ # Process this file with autoconf to produce a configure script. -AC_INIT(SpecTcl,3.4-005) +AC_INIT(SpecTcl,3.5-000) AC_CONFIG_SRCDIR(SpecTcl/MySpecTclApp.cpp) AC_CONFIG_AUX_DIR(config) Modified: branches/3.5dev/tcl++incorp.sh =================================================================== --- branches/3.5dev/tcl++incorp.sh 2015-11-11 10:41:08 UTC (rev 2342) +++ branches/3.5dev/tcl++incorp.sh 2015-11-11 12:39:54 UTC (rev 2343) @@ -11,7 +11,7 @@ # The idea is that libtcl/libexception could be or not be centrally # installed, but if not, built from the export directory. # -# Last used with libtclplus-v2.0-000 +# Last used with libtclplus-v2.0-002 baseURL="https://svn.code.sf.net/p/nscldaq/code/tags" Modified: branches/3.5dev/testBuildTarball =================================================================== --- branches/3.5dev/testBuildTarball 2015-11-11 10:41:08 UTC (rev 2342) +++ branches/3.5dev/testBuildTarball 2015-11-11 12:39:54 UTC (rev 2343) @@ -1,7 +1,7 @@ #!/bin/bash -xe -rm -rf ${WORKSPACE}/3.4 +rm -rf ${WORKSPACE}/3.5 amversion=`grep AM_INIT_AUTOMAKE configure.ac | cut -f2 -d" " | sed s/,//` acversion=`grep AC_INIT configure.ac | cut -f2 -d"," | sed s/,// | sed s/")"//` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-11 10:41:12
|
Revision: 2342 http://sourceforge.net/p/nsclspectcl/code/2342 Author: ron-fox Date: 2015-11-11 10:41:08 +0000 (Wed, 11 Nov 2015) Log Message: ----------- Branch to improve performance of spectrum -list Added Paths: ----------- branches/3.5dev/ branches/3.5dev/CHANGELOG branches/3.5dev/Gui/folderGui.tcl branches/3.5dev/Gui/newGui.tcl branches/3.5dev/Gui/ttkbrowser.tcl branches/3.5dev/SpecTcl/TclGrammerApp.cpp branches/3.5dev/SpecTcl/TclGrammerApp.h branches/3.5dev/TreeParam/SpecTclGui.tcl branches/3.5dev/treegui/spectrumAxis.tcl branches/3.5dev/treegui/spectrumTabActions.tcl branches/3.5dev/treegui/treeGui.tcl branches/3.5dev/treegui/treeUtilities.tcl branches/3.5dev/vmusb/vmusb.xml Removed Paths: ------------- branches/3.5dev/CHANGELOG branches/3.5dev/Gui/folderGui.tcl branches/3.5dev/Gui/newGui.tcl branches/3.5dev/Gui/ttkbrowser.tcl branches/3.5dev/SpecTcl/TclGrammerApp.cpp branches/3.5dev/SpecTcl/TclGrammerApp.h branches/3.5dev/TreeParam/SpecTclGui.tcl branches/3.5dev/treegui/spectrumAxis.tcl branches/3.5dev/treegui/spectrumTabActions.tcl branches/3.5dev/treegui/treeGui.tcl branches/3.5dev/treegui/treeUtilities.tcl branches/3.5dev/vmusb/vmusb.xml Index: branches/3.5dev =================================================================== --- trunk/main 2015-06-14 15:29:34 UTC (rev 2329) +++ branches/3.5dev 2015-11-11 10:41:08 UTC (rev 2342) Property changes on: branches/3.5dev ___________________________________________________________________ Added: svn:mergeinfo ## -0,0 +1,7 ## +/branches/3.3-007-dev:1983-1986 +/branches/3.3-008-dev:1987-1996 +/branches/3.3-009-development:2000-2014 +/branches/3.4-getcontents:2262-2277 +/branches/SpecTcl-3.3-010-development:2016-2031 +/branches/SpecTcl-3.3-013:2051-2061 +/tags/SpecTcl-3.3-013-premerge:2062-2063 \ No newline at end of property Deleted: branches/3.5dev/CHANGELOG =================================================================== --- trunk/main/CHANGELOG 2015-06-14 15:29:34 UTC (rev 2329) +++ branches/3.5dev/CHANGELOG 2015-11-11 10:41:08 UTC (rev 2342) @@ -1,1061 +0,0 @@ -] -2.1-006 - Incorporate fix 113 - low level cutoffs lead to corrupted - 1-d displays. - - Have build procedures clean any pre-built Gri prior to - tarring up the distribution. -2.1-007 - Incorporate fix 120 - memory leak on spectrum -delete -all - - Date/time/version stamp installation. -2.1-008 - - Incorporate fix for issue 95: parameter -list -byid fails to parse - the output list for sorting. - - Incorporate fix for issue 105: sbind usage level help refers to - itself as the bind command not sbind. - - Incorporate fix for issue 111: swrite creates a file even if - no valid spectra are included on the command line. -2.1-009 - - Incorporate printing fixes for last channel of 1-d. - - Incorporate printinf fix ensure that 2-d spectrum channels display - all non zeroes even if they are below the threshold for the lowest - color range. - - Place upper limits on 1-d graphical entries at the top of the - channel rather than at the bottom. This more realistically - describes what's going on - - Fix issue 118 Superpositions in window files are by id not name. - - Fix issue 122 Speclist with a single spectrum gives blank output. - - Fix issue 123 Print with superpositions crashes gri (gives it a - bad command file). - - Fix issue 124 FWHM not transformed to mapped coordinates. -2.1-010 - Fix Display/Makefile issues with lingering bison/flex output - Add missing return value in ValidValue::operator=. -2.1-011 - Fix issue 135 swrite -format ascii does not retain the axis - mapping information correctly. - - Fallout from issue 133; fixed a defect in Display/axes.cc where - computation of mapped channel tick mark intervals could cause - DIV0 crashes in Xamine when the axis decreases from left to right. - - Backport colormanager intelligent visual choices from 2.2 -2.1-012 - Backport fix for defect 144 from 2.2: Memory leak when user - rejects events. - - Backport repair for defect 149: Some cases where spectrum - deletion from Xamine can kill both Xamine and SpecTcl - - Backport repair for defect 145 Names with special characters - cause saveall to produce bad files. -2.1-013 - Backport filter generation fix from 2.2 - Repair defect 157: Graphical object copies fail if target - is spectrum slot > 999 -2.1-014 - - Fixed defect 151: printing 2-d's the channels have incorrect - values, and log prints are just plain flat lined. -2.1-015 - - Fix un-numbered defect channel command gets/sets wrong channel - on Gamma 2-d's. This was broken with the introduction of - arbitrary binning in 2.1. -Modifications for SpecTcl 2.2 -January 30,2004 - Updated gri to gri-2.12.7 -March 23, 2004 - Issue 97b - Add hierarchical unpacking capability to scripted spectcl. - - Also don't require begin run to pick up config. -March 31, 2004 - Added -rpath to contrib/scripted Makefile so that - LD_LIBRARY_PATH or ld.so.conf not needed. -April 5, 2004 - Fix issue 118 - low level cutoff display bug. -April 12, 2004 - Extract as many defs as possible from skeleton makefiles - to centrally located include files in order to keep the - user makefiles constant. - - Use etc not Etc for etcetera stuff. - - Add buildstamp -April 13, 2004 - Fix memory leak on delete -all command: Spectrum - storage itself is not getting deleted. - - Fix lack of error checking on insufficient memory for - binding 2d spectrum (can segfault). -April 29, 2004 - Fix issue 95: parameter -list -byid fails. -April 29, 2004 - Fix issue 105: sbind Usage level help calls itself the - bind command which conflicts, of course, with the TCL - bind command. -April 29, 2004 - Fix issue 111 - swrite command creates a file even if no - existing spectra have been specified. -May 5, 2004 - Fix little diddly issues with printing and also - Put right limit at the top of a channel rather than the - left side of a channel. - - Fix ISSUE 118 superpositions in window files are written - as id's not as names. - - Fix issue 123 superpositions don't print - - Fix issue 124 FWHM is not translated to mapped coordinates - when spectrum is in mapped mode. -May 12, 2004 - Fix issue 49 - Fetching values from ValidValues that are in the - invalid state will now throw exceptions - - Fix issue with Display/Makefile that clean leaves behind - detritus from flex and bison. (Added MOSTLYCLEANFILES - to Display/Makefile.am). -June 8, 2004 - Increase spectrum size limits to 2^31. -June 17, 2004 - Defect 131 - There were problems generating the print tick - intervals when the axis specifications went in 'reverse' - (e.g. {100 -100 200}). Fixed in modifications to - griprint.cc I think. - - Fix build issues in TestFiles directory so that the - event test generting programs can be built again Yeah. -July 1, 2004 - Defect 135 - swrite does not properly preserve the - axis mapping information. - Fallout from defect 133 discovered and fixed a defect - that causes the axis tick computation to DIV0 when - mapped axes have decreasing values going away from the - origin (e.g. {100 -100 201}). -July 2, 2004 - Defect 132 - Translator pointers are constrained to - natural data boundaries. - - Defect 137 - Fix defect introducec by fix of Defect 132: - assumed getOffset was returning T offset it's now returning - byte offsets. -July 9, 2004 - Added DesignByContract to the Utility headers. -July 27, 2004 - Added contrib/calibratedparams (TUNL) for linear - calibrations for parameters first the fit functions. -July 30, 2004 - Added CCAENV1x90Data.h to contrib/scriptable in order - to support unpacking of this module. -August 9, 2004 - Modified colormgr.cc to better deal with systems that - have visuals that are not in decent order nor good: - Look through all the visuals and choose the true/direct - color visual with the most bits, if none exist, then - Choose the Pseudo color visual with the most bits. - If none of those exist drop back to bitonal. -August 16, 2004 - Fix broken link to apply.htm in categories.htm documentation -August 17, 2004 - Added the calbrated parameters sources to the mix - (need to get them to compile!). - Debugged as of August 20. -August 25, 2004 - Fixed defect 144 - memory leak if user rejects events. -September 2, 2004 - Made pseudo parameters pass validity flags too. -September 7, 2004 - Fix error in CEventFilter::setBit... which did not - count on there being 8 bits per byte. -September 8, 2004 - Removed in-linedness of CGate::RecursiveReest I had - thought this was triggering a compiler error but - it was not in fact. Since this is a virt. there's no - gain to inlining it anyway. -September 23,2004 - NamedItem.h - decided to finally trust stl's string - constructors.. the way I was doing named item - constructors was giving Purify fits. -September 24,2004 - Added CalibrationDistribution to produce evenly spaced - identical peaks. - - Added mechanism to fetch the applicatino's test data - source so that it can be modified etc. - - Fixed defect in CTclGrammerApp::SetupTestDatsSource - there was a local declaration of a m_pMultiTestSource - that masked the member data.: - -September 30,2004 - Happy Birthday Ron!! - - Fixed issue 133 Centroids and - FWHM not correct for mapped parameters (still). - - Made test distributions produce floating point params - to make the more flexible.. Gaussian is a symmetric - cutoff now. -October 4, 2004 - Added a bit of defensive programming in view of defect - 149. -October 19, 2004 - Changed default gate names in Xamine to be better in line - with well behaved TCL Strings. -October 18-20 2004 - Factor all coordinate transformations into common spots - part of trying to fix defect 133. -October 20, 2004 - Additional code reorganization of Xamine stuff that - I just could not stand to look at in fixing defect 133. -October 20, 2004 - Factor acceptgates.cc DrawPoints functions back into - the base class where it belongs. Could not stand to look - at it duplicated in 3 different places. -October 20-22 2004 - Fix defect 145: Spaces and special characters in names - can make saveall loadall fail miserably...and other misc. - things uncovered while repairing the defect. -October 25,26 2004 - Optimize 1d long histogram increments. Note that many - but not all changes will help 2d word increments too, but - these (less often used) histograms won't get full benefit - as there are modifications to the Spectrum1DL file that - are deliberately not propagated back to Spectrum1DW -October 27, 2004 -Optimize2d short histogram increments - -November 3,2004 - Fixed position computations on expanded spectra. -November 4,2004 - Fixed defect 60 in Xamine: Spectrum choosers should come out - sorted by name. -November 102004 - Repaired defect 147: Xamine copy object copies to wrong - spectrum if slot # > 999 - -Edit level 2.2-001 -November 30, 2004 - - Forward port fix to defect 151 from 2.1: - colorscales on griprint were way off for 2-d prints. - - Fix unnumbered defect: channel get/set broke for 2-d gamma - spectra starting with SpecTcl 2.2 - spectrum if slot # > 999 - -SpecTcl 3.0: - Port to gcc/g++ 3.x: - o Lots of gruntwork with config.h etc. in all sources. - o Added Tcl Channel inquiry functions to CTCLInterpreter to - allow the location of Tcl_Channel given it's name. - GetChannel - GetChannelNames - o Added CTCLChannel object that can do simple channel operations. - Read - Write - atEof - Flush - Close - o In {Write,Read}Command.cpp use tcl[io]streams to connect - swrite/sread to Tcl channel parameters rather than decoding the - filename. - Propagate fix for defect 151 from 2.1 -> 2.2-> 3.0 - -December 28, 2004 - - Switch ExprLong -> strtol in contrib/scriptable CIntConfigParam.cpp - and CIntArrayParam.cpp since ExprLong, as of Tcl 8.4 does not work - with large unsigned values. -December 31, 2004 - - D. Bazin removed the treeparam Makefiles. Adjust the - contrib/Makefile.am accordingly. -January 06, 2005 - - Fixed up some missing quotes on makefile.skel's. -January 11, 2005 - - Roll in another treeparmaeter update from D. Bazin -January 12, 2005 - - swrite file creation needs an ios::trunc else existing files will - leave postpended data if they were larger. -January 13, 2005 - - Xamine superposition fix for id's > 999 -January 26, 2005 - - Fix problem with long spectrum names: - o Xamine's truncation was making CHistogrammer::UnbindFromDisplay - assert fail. - o Xamine was not putting up the correct spectrum list due to a buffer - overflow problem in spectra.cc -January 27, 2005 - - Fix low level cutoff in 1-ds that had been fixed in 2.1 but not - propagated to new versions. - -3.0-001 -February 11, 2005 - - Added Analysis subdirectory to the build. This directory will have stuff - that's used by buffer analysis it is NSCL specific. -February 14, 2005 - - Completed testing of Analysis library. -February 15, 2005 - - Added C interface to Analysis library and unit tests for those. - - Added check for paths for the 'check' c unit test framework. -February 22, 2005 - - Added/debugged classes to TCL++ that make it easy to - do variable tracing (TCLTracedVariable, and VariableTraceCallbac e.g.). - - Added stuff to SpecTcl that allows it to pull stuff out of string list - buffers that represent TCL scriptlets and execute those scripts. this - is currently useful to reconstruct control system data and other stuff - that may be in statevariable and runvariable buffers which look like - a bunch of set varname value commands. - - Fix 1/0 month counting problem with run control timestamps in - Analysis library. -February 25, 2005 - - Documented the variable tracing support. - - Documented run/state variable recovery. -March 4, 2005 - - Set the version string to 3.0pre1 -March 8, 2005 - - Move the event sink pipeline class into Events and out of - the Filter directory. - - Add SpecTcl API (tested) to the build and cvs. -March 17, 2005 - - Add documentation for the SpecTcl api as a spectcl man page. -March 21, 2005 - - Added -fno-elide-constructors to user's makefile to ensure that - TreeParameter construction is handled correctly. - - Support settable I/O poll dwell time. -April 15, 2005 - - Began integrating a rewritten treeparameter into the software. -April 16, 2005 - - In contrib/calibparam : add a random number in [-.5, .5] to the - input of the calibration under the assumption that the input is - integer and therefore needs to be turned into a real. -April 18, 2005 - - Added documentation to the treeparamter package. -April 19, 2005 - - Fix up a tcl 8.4 dependency in CTreeVariableProperties.cpp -April 21, 2005 - - Fix up coordinate transform problems in Xamine with grobj locations. - Scaled wrong and offset wrong. - - Make it a bit clearer that the Treeparameter GUI version is decoupled - from SpecTcl's version... for now. -April 22, 2005 - - Remove nulls from Xamine's log files and replace them with \n's instead. -April 29, 2005 - - TreeParameter save function didn't always get the dependencies right - causing error in loading. Changed functions in SpectrumGenerator.tcl. - Fix for bugzilla bug 173 -May 2, 2005 - - Ensure filters get closed if active at program normal exit. - - Encapsulate Xamine's gates and grobs inside a vector so that there's no - longer a fixed compilation limit on the number of gates /objects that - can be defined. - - Support GCC-3.4 compiler -May 11, 2005 - - Added support for StripChart Spectra - - Check the compiler type in configure to see if we can use -pedantic - and do so if we can. - - Debug -pedantic effects on compilation. - - Fix defects nobody noticed in swrite -format binary/sread -format binary - Probably introduced about SpecTcl-2.0 -May 12, 2005 - - Fixed attach -format .... error that probably only expresses on - gcc-3.x since nobody's seen/reported it but me until now -May 13, 2005 - - Fixed problem in Strip chart so that the parameter list is returned - in the correct order ---------------------------- End of Pre3 mods ------------ -May 17, 2005 - - Set map to on by default in Xamine. -May 18, 2005 - - Add support for CTCLString::AppendElement(DFloat_t, const char* format) - use it in parameter package's parameter list of mapped parameters - as a test. - - Add support for CTCLString::AppendElement(long, const char* format) - - Add support for mask equals gates as well as define the mask gate base class. - Add Support for "not mask" and "and mask" gates -May 20, 2005 - - Support for compilation on gcc/g++ 4.0 -May 23, 2005 - - Integrate gamma gate redo======= - - Add Support for "not mask" and "and mask" gates - - Added support for "gate -list [pattern]" so that users can filter - the results of the gate -list command - - Added support for "spectrum -list [pattern]" so that users can filter - the results of the spectrum -list command -May 27, 2005 - - Added support for a glob like pattern in the switch of the clear, pararmeter - bind, apply, and pseudo commands. When a pattern is given after -list, the - command returns objects whose name matches the pattern. -May 31, 2005 - - Remove extra copy construction in TreeParameter ThrowIf's.. as that's an - enormous performance hit. -June 1, 2005 - - Fix documentation errors in gate command wrt mask gates. - -3.1 -June 7, 2005 - - Incorporate defect fix in guiintegrate.cc into this version. -June 20, 2005 - - Fix type on Spectrum.h getAxisMapCount() had been spelled GetAxisMapCout().June 21, 2005 - - Forward port some fixes for tree parameter gui: - o gui writing tree variables and parameters with "" units doesn't put - {} for units but leaves it empty. - o Allow treevariable -set units optional. -June 22, 2005 - - Support for projection spectra. -June 29, 2005 - - Remove need for working fortran compiler. -July 7, 2005 - - Add ia64 adjustments from 3.0 branch -July 27, 2005 - - Fix up some automake incorrectnesses that old versions of AM let slide. - This is part of an effort to port to Cygwin. - - Fix up issues with the definition of PAGESIZE in Xamine (Display subdir) - That make it not build correctly on CYGWIN. -August 16, 2005 - - Add support to scripted readout for caenv1785 adc (primitive). -September 2, 2005 - - Added support for 2d long spectra. -September 22, 2005 - - Fix defect in Gamma 2d increment: If no valid parameters are left, - the outer loop limits are very very bad. - - Forward port the inclusion of bitmask gates - - Support dynamic creation of treeparameters. - - Document treeparameter -create command in online user guide. -September 30, 2005 - Happy Birthday Ron: 48 - - Add -listnew to treeparameter command so that new gui can - figure out which parameters have been created since program - started ... and save them. -October 5, 2005 - - Retry select in pipe data source in case of EINTR. - - Add attach -list to support determination of event source. -October 7, 2005 - - Fix defects in eventsink pipeline add/delete code. Predicates - not constructed correctly. -October 17, 2005 - - Add the new browser based GUI to the system. -October 18, 2005 - - Add fix for defect 188 - grobj files need to specify spectra by name. -October 21, 2005 - - Fix error in old tree gui handling of old list mode save files: - treeparameter -set was invoked with the wrong number of parameters. -October 24, 2005 - - Fix error in old tree gui: Saving list mode files treeparameterList - was missing a $ when being appended to the list of lists...so no modified - treeparameters were saved. -October 31, 2005 - - Fix buffer overflow problem in griprint.cc found by D. Caussyn. -November 29, 2005 - - Put spectrum names in integrations (and hence in logfiles), rather - than slot numbers - - Defect 174 - Make +/- buttons kick out of autoscale. - - Defect 162 - Document user's obligation to delete buffer - translators. -Decemberr 19, 2005 - - Remove illegal default parameter from PointlistGate.h's InGate with - parameters. -February 1, 2006 - - Factor adding a configuration parameter to a CModule in Scriptable SpecTcl - into AddParameter member function so extenders can add new parameter types. -3.1-pre5 -February 17, 2006 - - Factor out multiple identical definitions of some typedefs into - xamineDataTypes.h -February 20, 2006 - - Add longer descriptive titles to the Xamine names (parameter, gates etc). - - Fix some quoting errors in gui with respect to spectrum names with spaces. -February 21, 2006 - - Protect evals from parameters that have spaces in them by quoting - with [list]. - - Add ability to list gates with spectra in SpectrumPackage.cpp's - DescribeSpectrum and immediate callers. - - Add -showgate switch to -list operation on spectrum command. - - Fix PseudoScript.cpp - did not properly handle cases where pseudo names - had spaces in them. -February 23, 2006 - - Fix typo in Gui/spectrum.tcl -March 10, 2006 - - Unit tested migration of TCL++ library to object interfaces (remove - deprecated interfaces). - - Added Docbook generating stuff to configure.in -March 13, 2006 - - Made operator=, operator== and operator!= of CTCLChannel private as there - are no implementations. -March 16, 2006 - - Added extensive XML based manpages for the tclPlus CTCL class - library. - - Support pre/post command functions for CTCLProcessor. - this is used in nscldaq to implement the CDAQTCLProcessor. - - Need to implement CTCLProcssor::Bind to bind itself and the adaptor. -March 20, 2006 - - Added a bit more error checking/reporting to spectrum creation gui. -March 22, 2006 - - Fixed an error in 1-d spectrum creation.. syntax -March 30, 2006 - - Credit D. Bazin with concept of treeparameter in treeparam C++ sources. -April 17, 2006 - - Fix some 64 bit uncleanliness in Xamine so SpecTcl/Xamine can run - reliably on 64bit systems in 64bit mode. -April 18, 2006 - - Old method of long titles did not work very well as it made - old .win files worthless. -April 20, 2006 - - Fix error in sourcing file from GUI.. file should execute at global level. -April 21, 2006 - - Add buffersize selector to event source dialogs. -April 23, 2006 - - Fix typos in event source dialogs buffersize stuff. - - Add many credits. -April 26, 2006 - - Added screen dump based printing for the A1900 group and the - KSU folks who want a wysiwyg printing mechanism. -May 23, 2006 - - Fix defect 195,196: gri was emitting epsf which caused multiple pages - to smoosh onto a single page, printer.cc: Print setup dialog had a - widget that duplicated the name of another widget causing it to operate - funny. -SpecTcl-3.1-001 - - Try to make the docbook builds more robust even in the presence of missing - or broken(?) docbook installs. - - configure for libgd. - -SpecTcl 3.2-pre1 starts. - June 20, 2006 defect 206: Check parameter validity in mask gates. - Catch exceptions while histogramming - Defect 197: Averaging reduction boxes too large by - 1 channel in x. - Defect 200: Gamma 1dL spectrum increments no 64 bit clean - Defect 209: Mor of the same as 200. - June 23, 2006 Defect 210: Problems with scaning ints -> longs. - June 28, 2006 Xamine has some 64 bit defects as well, these manifest - on longword 2d spectra - Gui has problems if the user makes e.g. a and a.b fix this. - Defect 211 - crash if making g1 spectrum with empty parameter - list - June 29, 2006 Improve performance of terminal parent creation in gui. - Fix defect in allocatro.c's alignment mask computation that - causes free list corruption on e.g. 64 bit systems. - July 5, 2006 Propagate fix for 64 bit problems with mask equal gates. - Work around issue with tclsh 8.4 early where - string is integer 0x80000000 (e.g.) returns false.. - makes creation of mask gates fail. - July 13, 2006 Forward propagate fix for defect 213 to this version. - Took the easy way out copying all of *.cc,*.h from Display - and ChanCommand.cpp from SpecTcl. - July 17, 2006 Fix bitmask gate inconsistency between mask size in command - and in the classes implemebnting the gates....do this - by loading the gate mask value into the base class. - July 19, 2006 Fix error in newGui.tcl. When used with scaler processing, - RunNumber could be >Unknown< when formatting the status - line. - July 28, 2006 Fix error in wysiwyg printing for zoomed displays. - July 31, 2006 Fix off by one error in scaling.cc - for small scale ranges, - and small channel values, the channel height was visibly - lower than the corresponding tick mark. - August 8, 2006 Enhancement 194 - increase precision in output of - integrations. - August 15,2006 Enhancement 205 - Limited the length of the attach spec on the - GUI status line to at most 50 chars with the middle ones - replaced by ... this prevents the window from becoming - >very large< for e.g. cluster file analysis. - August 16, 2006 Do performance tuning of browser.tcl for 64 bit system. - on those systems, treeview find is terribly slow. - August 29, 2006 Added setResult functions to CTCLInterpreter to factor - object based result setting into one spot. - September 7, 2006 Added support for super-events with - CAnalyzer::entityNotDone() function. - Sept 8, 2006b Related to the above, allow event processors to indicate that - 0 bytes of the event were processed if the event was not complete. - Sept 27,2006 Added code to support multiply incremented 2-d sum spectra. - Oct. 03, 2006 Gui: Add preferences control panel with ~/.SpecTclDefaults - save file. Use this to default the length of 2-d spectrum - axes. - Oct 03, 2006 Gui: Prevent status lines from expanding in height. - Oct 04, 2006 rwio package - added permissions letter to the cvs and - to the distro. - - Oct 05, 2006 Xamine- add support for entering fitlines. - Oct 09, 2006 GUI - Bugzilla 207 - Increase the sophistication used - by SpecTcl's gui to located spectcldaq. - Oct 10, 2006 - GUI - Bugzilla 208 - Enhancement request for File->Save... - to support a selective store. - - Filter processor Bugzilla 217 - Put a bit of code in the - filter event processor to attempt to determine if it has - been pointed at something that is not a filter file. - Seems to work for the cases I've tried, so it's - certainly better than it was before. - Oct 16, 2006 - Bugzilla 219 : Added code to TclGrammerApp.cpp to output - the VERSION file to tkcon. - - BZ 220 Allow user to disable prompt for - new gui. If NoPromptForNewGui is defined and true, - prompting will be disabled. - Oct 19, 2006 - BZ 224 - 2d long integrations were incorrect on 64 bit plats. - - BZ 226 - Added support for attach and eof callouts to - event processors. - - Documented new functions in the event processors. - Oct 20,2006 - BZ 87 Added basic fitting... still some kinks to work out - in the Xamine display but it does work...also need - to Xamine drive Gui to create the fit. - Oct 23, 2006 - Added documentation for the fit command and how to - extend the fitting subsystem. - Oct 24, 2006 - Fixed error in log display of fitlines (actually convert1d error). - Made fitlines solid lines not just dots. - Fixed defect introduced with fitlines - where 1-d objects - got deleted on updates. - Ensured that fitlines get sent in on sbind. - Added framework for user processing of Xamine buttons in - the Xamine custom button box. - Oct 25, 2006 - CXamineEvent::addButtonHandler needs to be public. - Expose ability to get the histogrammer etc. in SpecTcl.h - Expose fit id allocation in CfitCommand. - Added credits for gsl.{cpp,h} and permission grant to the - November 1, 2006 - Fix some issues for building from the distro rather than - from CVS. - distribution - Nov 2, 2006 - Get the calibrated parameter contrib install to stop polluting - $(prefix)/include with its headers. - - Fix wierd issues with make dist on ubuntu edgy edge... - was not putting config dir into the distro.======= - distribution - Nov 3, 2006 - Fix error introduced in scaler display by attempt to - format totals as %u when they are actually floating point - exactly to keep them from overflowing. - - Support a default buffersize preference. - Nov 8, 2006 - Add Xamine restart handler capability to Xamine interface. - Nov 9, 2006 - Install CHANGELOG - Nov 17, 2006 - Fix defect 228 - Xamine.Defaults can get printing defaults - all garbled causing printing to fail or crash Xamine - - Fix defect 299 - setup.tcl is obsolete now, don't distribute - in Skel dir. -December 1, 2006 - - Fix defect in edit2dmulti.tcl (pre-release). If selecting - a spectrum and an axis parameter is not a treeparameter, - use the source spectrum axis definitions to provide the - appropriate axis def for the new spectrum. -December 7, 2006 - - Fix 2 defects: - o Removing fits from xamine via SpecTcl failed due to - not allowing that 'gate type' to be recognized for - deletion. - o Deleting a spectrum should delete all fits that are - defined on that spectrum. -December 19, 2006 - - Fix defect per D. Caussyn FSU: CXdrInputStream.cpp was - doing delete m_pBuffer -> delete [] m_pBuffer. -Decmeber 21,2006 - - Ensure that the scriptable makefile also links in - the fits library. -Release Jan 15, 2007 - -Pre 2 starts. - -January 18, 2007 - Defect 288 : applygate.tcl did not handle case of - multiple target spectra correctly. -February 12, 2007 - Enh Request 232 : when treevariable -set is invoked, - fire the traces on that variable so that any GUI elements - bound to that treevariable are updated -February 13, 2007 - Defect/enh. 234 : When a configuration is restored, - and the config script has an error, keep on trying to - execute the script but report all the errors in a dialog... - at present, hopefully there are not very many errors as - the dialog is not a scrolling dialog. -February 15,2007 - Synch gpVersion with VERSION symbol in config.h -Week of Feb 22, 2007 - BZ enhancement request 291 Gamma 2d deluxe - spectrum. -Week of Feb 26, 2007 - BZ 292? Ensure that tk app name is unique - so multiple tkcons will open. - - Fix inadvertent leaving of Gamma 2d as Ulong_t not - UInt_t and same for gamma deluxe, for 3.1 , Gamma 2dL - was already correct. -Week of March 5 - Add Splash screen. - - Adjust chisquare calculation to be correct for CGaussianFit - (thanks to Dirk Weisshaar). -Week of March 12, 2007- - - Ensure that SpecTcl does not crash if VERSION not readable. - (BZ 294). -Week of March 19, 2007 - - Make CEvent::clear() O(1) time.bg -Week of April 2, 2007 - - Add disclaimer to filterread.htm about data beyond the last used - position in filter buffers as someone made an assumption that is not - true about it. - - Added whatsnew3.1.htm page linked to front page that allows - users to see what's new in SpecTcl 3.1 - -Pre-released April 26, 2007 - -Pre-3. - -Week of April 30, 2007 - - Added observer capability to all dictionaries types. This will - allow support of traces on e.g. spectrum dictionary. - - Added tests for dictionary observers and the observer manager - helper classes. - - Added capability to add/remove observers from the spectrum dictionary - to CHistogrammer. - - Added API entries to add/remove spectrum observers. - - Added spectrum -trace command. - - Added docs for the -trace command. - - Made Xamine's Xamine_DrawFittedString also attempt truncation - rather than just leaving a string blank if it does not fit. - e.g. a title that is: - "this is a very long string that does not fit" - could get rendered/displayed as: - "this is a very lo..." if that's all the room there is - - Port in the jumbo buffer decoder and put it in scriptable unpacker - too -Week of May 7, 2007 - - BZ 295 - add support for splitting/joining filter files. Note that - cat can join perfectly well, so this reduces to writing a program - filtsplit that can split. We'll choose to write: - filtspilt --size blocks_per_file --output stem_name input_file - blocks_per_file - number of input filter blocks per output file. - stem_name - Is the stem of the split output files which - will have names like stem_name_nnn.flt - input_file - Is the input file to split. - - Changed swrite format level to 3: Make NSCLAsciiFormatter able to read: - rev 2,1 and even 2 where summary spectra only have 1 coord. - - Fix some issues with Gamma Delux 2d spectrum classes that don't compile - on 4.x compilers - - get NSCLAsciiFormatter to properly read rev 2,3 and 'malformed rev2' - produced by the pre2 version of 3.2. - - Make the spectrum file read functions able to correctly report errors in - reads (e.g. not a spectrum file). -Week of May 14, 2007 - - BZ 297 - Make axis tick marks draw correctly if there's only one channel in - the spectrum (well really just don't draw tick marks at all. - - Add code to support gate observers.. for new displayer. - - Add -trace subcommand to gate. - - Fix error in TreeParameter/SpectrumGenerator.tcl -state normal not - -state enabled. - - Fix error in TreeParameter/SpectrumGenerator.tcl - Duplicate button - did not correctly decode parameters of spectrum being duplicated. - - Add docs for the gate -trace subcommand to the web docs. - - Fix CNSCLJumboBuffer::size32() member, was not correctly picking up - the buffer revision level. -Week of May 24, 2007 - - Only clear gates that are worth clearing. -Week of May 28,l 2007 - - Fix channel position to pixel position coversions which had - the width of a channel to be too large (too few channels in displayed - range. - - Do some jiggerypokery with 1-d gates to make them more consistent with - their integration: - o On acceptance the right point is adjusted to the right by a channel. - o Gate checking is now exclusive of the right point. - o On entering in the display the adjustment is un-done so that - Xamine will display correctly. - Week of June 4, 2007 - - Ensure that Xamine's SuperPrompt::SetList message boxes - from Xamine_error_msg() get displayed by making them - children of the prompter's parent rather than of the prompter - which, after all is hidden. - Week of June 11, 2007 - - Get nice support for ubuntu edgy eft. - Week of June 25, 2007 - - Begin adding the 'integrate' command. - Week of July 2, 2007 - - 2-d integrations in Xamine had displayed standard deviations not - fwhm's as advertised. - - Add docs for integrate command. -Week of July 9, 2007 - - Corrected CPacket.cpp for jumbos in scriptable. -Week of August 13, 2007 - - BZ 318 - Old GUI SpectrumGenerator.tcl was not listing applied - gates correctly when the filter mask was not * -Week of Sept 10,2007 - - BZ 318 revisited... need to use hash tables for the applied gates - rather than lists to be utterly reliable. - - Fix error in gamma 2d deluxe where if only one y parameter was specified - one of the constructors would segfault because it was mistakenly getting units - from y[1] not y[0]. - - Fix error in swrite NSCLAsciiSpectrumFormatter...get axis limits directly from the - spectrum description rather than dorking around to get them from - the converter. -Pre3 released - -October 11, 2007 Pre 4 (or possibly 3.2-001) opened. - -October 12, 2007 - Make multicolored monster understand Gamman deluxe spectra. -October 15, 2007 - Redid a bunch of stuff with the test data sources to - allow attach, re-attach , re-re attach etc. Don't think there - are any memory leaks. -October 23, 2007 - Add detach menu entry.. really stops processing and does an - attach -file /dev/null - - added version specific daq locations to search path for - spectcldaq (gui). - -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. -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. -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. - - 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. -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. - - 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. -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. -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. -January 25, 2008 - Debugged filter support API - - Fixed error in gate flattener handling that was preventing - gate from being properly applied. -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. -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. -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. - -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. - -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. -April 22, 2008 - Fix slight errors in binning in SpecTcl.. correctly - compute the bin width for the integeristas. - Per Thomas Baumann. -May 7, 2008 - Fix defect in Xamine gate acceptor on m2 spectra. - Needed to select appropriately between adding the gate - and modifying the existing gate, rather than unconditionally - adding the gate.. which can throw an uncaught exception. - Thanks to Kevin Carnes KSU for stepping into this defect - and alerting me to it. - - Added Kevin Carnes and Dirk Weisshaar to the acknowledgements. -June 5, 2008 - Fix typeo in BufferAnalysis.h - -July 11, 2008 - Gui/slice.tcl - re-init the browser on accepting a gate (reinit member) - that restores the parameters used to the list. - - Expose the treeview interface to clients of - Gui/browser.tcl -August 18, 2008 - Update to tkcon V2.4 -September 17, 2008 - - Fixed error in RunState handling.. Set it to - "Inactive" on event source EOF. This is needed to - support batchmode processing of e.g. filter files. - -Start on 3.3 -September 17, 2008 - - Added extensible factory template class directory - factories. This can be used both by new factories - and to refactor the code provided by existing factories. - - Use extensible factory to generate the buffer decoder - selected by the attach -format switch so that buffer decoders - are extensible. -September 18, 2008 - - Registered default decoders with DataSourcePackage -September 22, 2008 - - Added CRingBufferDecoder support so that ring buffer - data can be decoded. -September 26, 2008 - - Provided mechanisms for buffer decoders to specify they - operate either on fixed sized blocks of data or on streams. - This is needed to ensure SpecTcl's input stage does not - get permanently blocked when data taking pauses or - a run ends on a stream oriented pipe data source. - - Indicated that the CRingBufferDecoder is a stream decoder. - - Documented SpecTcl::addBufferDecoder. - - Documented new behavior of the -format switch on the - attach command. - - Xamine - integrate superimposed spectra as well - as base spectra. -October 2, 2008 - Add ungate context menu option to new GUI. - - Don't write applications if the gate is -Ungated- - (spectrum was ungated). - - Correct the count of buffers analyzed to account for the - fact that the first buffer is sequence 0 so we need - the first buffer to increment our buffers analyzed -> 0. - -January 5, 2009 - Added gamma summary spectrum. -January 15, 2009 - - Fix Xamine compilation errors with -pedantic. - Need to use reinterpret_cast to cast XtPointer -> - function pointers. - - Document gamma summary spectra in the on-board html. - - Document GUI gamma summary spectrum creator. - - Added API docs for gamma deluxe and gamma summary spectra -February 18, 2008 - - Made the background of the button box a clear indicator of whether - or not SpecTcl is in a test system. -pre2: - March 6, 2009 - Make the rEvent array hold doubles not floats. - March 18, 2009 - Fix tkcon.tcl so it does not implement a clear command - that interferes with the SpecTcl clear command. - March 24, 2009 - Make the delgrob dialog a multiselect. - May 1, 2009 - CSpectrum2Dm.{h,cpp} Ensure these spectra get put in the - don't need a parameter list rather than some need a parameter list - which causes them to be grossly underincremented. -pre3: - May 2009 - Port to debian lenny with minimized compiler warnings. - May 20,2009 - In source files add back the newline after each lineof - a multiline command to prevent syntax errors on e.g. - pseudo defs. - May 27, 2009 - Fix error switch/case for handling gate point scaling. - gamma gates resulted in no points being accepted. - August 13, 2009 - Fix error in Strip chart spectrum was not requiring - that target parameter was defined. - - Fix error in strip chart shift. If shift is larger than spectrum - channel count would segfault. - Sep 4, 2009 - Fix BZ 378 - Segfaults can happen when cutting down the - Y parameters of a g2d spectrum to generate the title. - -pre4: - October 11, 2009 - BZ 379 when SpecTcl started using double for parameters - in an event, filters broke. The fix allows both filters - from older and current versions of SpecTcl to be read. - October 14, 2009 - Strip chart spectrum was miscalculateing m_nOffset on - shifts to the left leaving gaps in the spectra for - continuously varying parameters. - December 4, 2009 - Fix error in XMWarningDialog::Create .. was referencing - button objects prior to ensuring they were created. - December 4, 2009 - BZ384 - Provide some fallback fonts in case the adobe-courier - family is not present. - BZ384 - Provide a const char* exception handler in main() - when caught displays a modal warning box with the - exception displayed and when dismissed exits Xamine. - - Throw an appropriate const char* exception when - no suitable fonts can be found in text.cc:LoadFonts - -February 2, 2010 - Export CRingBufferDecoder.h to the world rather than - hiding it in noinst_HEADERS. -Feburary 11, 2010 - Modify data source GUI elements to include a data - format selector that includes support for ring so people - can attach to ring buffers or event files from the ring - buffer system. - -pre6: -May 6, 2010 - Fold in KSU fix for tkcon problems on ubuntu 10.?? -May 6, 2010 - Update to gri-2.12.20 -May 14, 2010- Remove memswap usage in CIntegrateCommand.cpp. - - Remove all -lpub's from Makefile.am and includes. - - Fix buffer overflow (BZ 404) in griprint.c -pre7: -May 18, 2010 - Fix error in GUI spectrum usage calculation. Was under - calcluating summary spectrum usage. -June 2, 2010 - - Fix treegui problems: - * Gate dependencies not calculated right if only one gate. - * mclistbox now clean for tcl 8.5 -June 3, 2010 - - WO 2529-005-CP-005 - Add an extra layer of indirection - (parameter scoreboarding) to improve the performance - of histogramming when spectra and parameters are sparse. - -June 13, 2011 - Fix some memory double deallocations found by Coupland. - -3.3-002 - - Fixes pointed out by cppcheck static analyzer. - - Misc. warning removals. - - Use mkstemp rather than tmpnam in wsyswig printing. -3.3-003 -June 30, 2011 - - Fix error in CRingBufferDecoder - premature free of glued buffer -3.3-004 -November 14, 2011 - - Increase the capacity of the integration widget in Xamine to - 50,000 chars (Carpino request). - -3.3-005 -December 5, 2011 - - TR 6912 - undo changes in dfltmgr.cc suggested by cppcheck specifically: - - assignment operator of win_*d infinitely recurses - - use memcpy instead which causes ccpcheck to complain about memcpy-ing objects - circumventing assignment. Must still see why the recursion occurs. - - The earlier assignment was ill motivated and did not actually change the caller's - win_xd for Xamine_CreatexdDefault.... functions as it just did pointer assignment - rather than actually transferring the attributes to the caller. This resulted in - unconditionally using a scatter plot rendition rather than the more usual color. - - -3.3-006 -November 30-?? 2011 - - Added flag to guistate.tcl so that new/treegui can ask it to - save without spectrum -delete and thus support the 'cumulate' - (sic) checkbutton. - - Fix errors in Stripchart spectrum shifting and channel caculation. - - Fix case in spectrum definition where we might ask Tcl to delete - storage we never allocated. - - Remove use of TkTable which disappears eventually in Tcl. -3.3-007 -?? - Ensure this all works on ring buffers. - -3.3-008 - - issue 107 Fix SpecTcl-2d integration command (gives wrong answers) - - issue 108 Support Xamine builds if OpenMotif is the motif version installed. - - issue 105 In folder gui make spectrum save a 2-step wizard so that it fits - on small screens better. - - issue 973 Do a smart search for the ring buffer clients in data source tcl. - - issue 866 Protect GUIs (folder standalone and tree) from multiple startups. - -3.3-009 - - May 4, 2012 - Added cusbSpecTcl to the build. - - June 6, 2012 - Added vmusbSpecTcl to the build. - - June 6, 2012 Tell user about missing parameters array elements. - - June 6, 2012 VMUSBSpecTcl - process madc -resolution config option. -3.3-010 - - June 8, 2012 Branched the development repository and upped the - configure.ac version to 3.3-010 - - June 11, 2012 Issue #1089 fix order of gui startup with respect - to config file processing. - - June 11, 2012 Issue #1087 correct handling when saving gates for - gates that have spaces in their name. - - June 14, 2012 Issue #1008 Provide error information and exit if SpecTclRC.tcl - or SpecTclInit.tcl failed. - - June 14, 2012 Issue #1070 Provide error information for failing Pseudo params. - - June 15, 2012 Issue #1046: - * Default to ring format if online. - * Allow user to specify ring name. - - - June 15, 2012 Issue #1063 Improve new gui startup time. -3.3-011 - July 2, 2012 Issue # 1191 Save spectrum channel type (byte word longword e.g.) - when doing a save of failsafe write. - - July 9, 2012 Issue #1152, Issue #1150, Issue #1151, Issue #1153 - Get clean builds - on Ubuntu Precise Pangolin.. - - July 24, 2012 - Use 64bit clean DataFormat.h (time_t -> uint32_t). -3.3-012 - - Issue #1322 - Add product name to VERSION file e.g. SpecTcl- -3.3-013 - - Issue #1451 - Re cast the Xamine shared memory region in terms of - the types in stdint.h - this due to observation that 64bit - shared memory requirements were significantly larger than - 32 bit systems due to the use of architecture specific types. - - Issue #1328 - Remove SpecTcl's local instance of gri and require gri - be installed on systems using SpecTcl. Note that lack of gri will - result in warning at configuration/install time. - - Issue #1111 Add -rpaths in the case of links to shared libraries - that are may not be in the normal places (e.g. provided by --with - flags at build time). - - Issue #1142 - Remove all dependencies on BLT as this package will - likely become unavailable with Tcl 8.6 - which is now out of beta - test. - - Fixed various compile warnings in anticipation of compiler versions - that will treat these as errors (finally solved the callbacks - as data in Xt casting problem). -3.3-015 - * Fix error in griprint.cc - buffer overflow for printing spectra with - numbers above 99. Thanks to Dave Caussyn at FSU for finding this one. - * Fix redef errors in NSCLAsciiFormatter.. - -3.4 - * Provide support code for NSCLDAQ-11/10 ring item decoding. - * Issue # 1713, Issue# 1712 Support ringformat specification in - all data source dialogs. In addtion add the format selection - to the bottom of data source prompters that did not originally - have them. - * Issue #1659 Provide mechanisms for ring buffer analyzers - to fish data out of the event body header if it exists. - * Issue #1658 Add ability for CRingBufferDecoder to autoselect - the format helper if a ring format item is seen in the input data. - * Issue #1633 Provide event processors with a post SpecTclRC.tcl - initialization hook. - * Much more documentation on how to build event processors etc. - * Extract the tcl++ and exception libs so they can be centrally - maintained. -3.4-001 - * Update AC_INIT to provide version number. - * Add some tests to m4 and use them there instead of in - configure.ac - * Set up to use Jenkins CI server. - * Only let the cppunit tests that don't need a display survive. - * Properly integrate the V1729 FADC in VMUSB's spectclSetup.tcl - file. - * Fix error in vmusb spectclSetup.tcl typo on V1x90 configuration -3.4-002 - * Bug #2100 - gates on m2 spectra incorrectly convert their points. - * Issue #2101 - Axis definitions for m2 and gd spectra are not clear. - * Feature #2102 Want to display gates on m2 spectra. -3.4-003 - * Feature #2103 - Allow users to hide the gates on displayed spectra - Spectra->Hide Gates and then refresh the menu is a toggle button. - * Feature #1484 - Make work with Tcl 8.6. - * Fix error in 11 ring format helper - was not getting the runnumber properly. - * Remove clear command from new Tkcon so it does not interfere with - SpecTcl's. -3.4-004 - * Factor in the daqroot preference in finding ringselector. - * Figure out if ringselector supports --non-blocking and - if so turn it on. - * Make strip chart spectra able to do 64 bit shifts. - * Fix error in displaying gates on 2dsum spectra: was the case that all but - gates on the first two parameters were displayed flipped. - * Fix error in compound get visual editor - was calling a deprecated browser - method. -3.4-005 - * Feature #3531 - add version command. - * Feature #3532 - add scontents command. - * Feature #3538 - add compress package with deflate/inflate commands. - Copied: branches/3.5dev/CHANGELOG (from rev 2337, trunk/main/CHANGELOG) =================================================================== --- branches/3.5dev/CHANGELOG (rev 0) +++ branches/3.5dev/CHANGELOG 2015-11-11 10:41:08 UTC (rev 2342) @@ -0,0 +1,1074 @@ +] +2.1-006 - Incorporate fix 113 - low level cutoffs lead to corrupted + 1-d displays. + - Have build procedures clean any pre-built Gri prior to + tarring up the distribution. +2.1-007 - Incorporate fix 120 - memory leak on spectrum -delete -all + - Date/time/version stamp installation. +2.1-008 + - Incorporate fix for issue 95: parameter -list -byid fails to parse + the output list for sorting. + - Incorporate fix for issue 105: sbind usage level help refers to + itself as the bind command not sbind. + - Incorporate fix for issue 111: swrite creates a file even if + no valid spectra are included on the command line. +2.1-009 + - Incorporate printing fixes for last channel of 1-d. + - Incorporate printinf fix ensure that 2-d spectrum channels display + all non zeroes even if they are below the threshold for the lowest + color range. + - Place upper limits on 1-d graphical entries at the top of the + channel rather than at the bottom. This more realistically + describes what's going on + - Fix issue 118 Superpositions in window files are by id not name. + - Fix issue 122 Speclist with a single spectrum gives blank output. + - Fix issue 123 Print with superpositions crashes gri (gives it a + bad command file). + - Fix issue 124 FWHM not transformed to mapped coordinates. +2.1-010 - Fix Display/Makefile issues with lingering bison/flex output + Add missing return value in ValidValue::operator=. +2.1-011 - Fix issue 135 swrite -format ascii does not retain the axis + mapping information correctly. + - Fallout from issue 133; fixed a defect in Display/axes.cc where + computation of mapped channel tick mark intervals could cause + DIV0 crashes in Xamine w... [truncated message content] |
From: <ro...@us...> - 2015-11-10 19:40:51
|
Revision: 2341 http://sourceforge.net/p/nsclspectcl/code/2341 Author: ron-fox Date: 2015-11-10 19:40:49 +0000 (Tue, 10 Nov 2015) Log Message: ----------- Save partial work on Feature #4855 - next bits of work are going to have to be on improving spectrum -list command perfomance. Modified Paths: -------------- trunk/main/Gui/folderGui.tcl trunk/main/Gui/newGui.tcl trunk/main/Gui/ttkbrowser.tcl trunk/main/TreeParam/SpecTclGui.tcl trunk/main/treegui/treeGui.tcl Modified: trunk/main/Gui/folderGui.tcl =================================================================== --- trunk/main/Gui/folderGui.tcl 2015-11-09 17:48:53 UTC (rev 2340) +++ trunk/main/Gui/folderGui.tcl 2015-11-10 19:40:49 UTC (rev 2341) @@ -1034,6 +1034,7 @@ # proc ::FolderGui::startFolderGui {{top {}} {parent {}}} { + set time [time { if {$top eq ""} { if {[winfo exists .gui]} { return; # Don't start twice. @@ -1120,7 +1121,8 @@ .topmenu add cascade -label {Gate} -menu .topmenu.gate - + }] + puts "Preliminaries: $time" set timing [time { browser $parent.b -spectrumfoldercommand spectrumFolderContextMenu \ -parameterfoldercommand parameterFolderContextMenu \ @@ -1134,7 +1136,7 @@ -parameterrightclick parameterContextMenu \ -gaterightclick gateContextMenu } 1] - + puts "Browser creation $timing" pack $parent.b -fill both -expand 1 @@ -1146,9 +1148,15 @@ pack $::FolderGui::folderGuiStatusFrame.statusline1 -fill x -expand 0 -anchor w pack $::FolderGui::folderGuiStatusFrame.statusline2 -fill x -expand 0 -anchor w - + + set timing [time { updateStatus 1000 + }] + puts "Status update $timing" set ::SpecTclIODwellMax 100 - + + set timing [time { preferences::readPrefs + }] + puts "Read prefs $timing" } Modified: trunk/main/Gui/newGui.tcl =================================================================== --- trunk/main/Gui/newGui.tcl 2015-11-09 17:48:53 UTC (rev 2340) +++ trunk/main/Gui/newGui.tcl 2015-11-10 19:40:49 UTC (rev 2341) @@ -21,5 +21,6 @@ lappend auto_path [file dirname [info script]] package require SpecTclGui +puts "Starting folder GUI" +puts [time {::FolderGui::startFolderGui}] -::FolderGui::startFolderGui Modified: trunk/main/Gui/ttkbrowser.tcl =================================================================== --- trunk/main/Gui/ttkbrowser.tcl 2015-11-09 17:48:53 UTC (rev 2340) +++ trunk/main/Gui/ttkbrowser.tcl 2015-11-10 19:40:49 UTC (rev 2341) @@ -137,6 +137,9 @@ delegate option * to tree delegate method * to tree + + variable parameterTerminals -array [list] + variable spectrumTerminals -array [list] #--- @@ -162,7 +165,7 @@ $tree column $colname -stretch 1 -anchor w -width 100 } $tree heading #0 -text "Tree" - + bind $tree <<TreeviewOpen>> [mymethod _openFolder] # Force default configuration @@ -174,9 +177,11 @@ # Populate the tree: - $self fillAllFolders + #set timing [time { + #$self fillAllFolders + #}] + - } #---------------------------------------------------------------------------------- # configuration management: @@ -221,31 +226,56 @@ # Destructively restock all folders; # method fillAllFolders {} { - + + # Unset the terminal look up tables for the unpopulated parts of the + # tree. + + array unset parameterTerminals * + array unset spectrumTerminals * + + # Kill off the top level folders: + set timing [time { foreach id $topLevelIds { $tree delete $id } + }] + set topLevelIds [list] # Stock only those in the -restrict list: if {[lsearch -exact $options(-restrict) spectra] != -1} { + set timing [time { $self fillSpectrumFolder + }] + puts "Fill Spectrum folder: $timing" + } if {[lsearch -exact $options(-restrict) parameters] != -1} { + set timing [time { $self fillParameterFolder + }] + puts "Fill parameter folder $timing" } if {[lsearch -exact $options(-restrict) variables] != -1} { + set timing [time { $self fillVariableFolder + }] + } if {[lsearch -exact $options(-restrict) gates] != -1} { + set timing [time { $self fillGateFolder + }] + } # Bindings for folders: + + set timing [time { $tree tag bind spectrumFolder <Button-3> \ [mymethod FolderContextDispatch -spectrumfoldercommand %X %Y] $tree tag bind parameterFolder <Button-3> \ @@ -283,6 +313,8 @@ $tree tag bind variable <Double-1> [mymethod onElementDoubleClick -variablescript %x %y] $tree tag bind variable <Button-3> [mymethod onElementContext -variablerightclick %x %y %X %Y] + }] + } @@ -306,6 +338,7 @@ # NOTE: All spectra have a gate applied to them even if it's a -TRUE- gate. # this is how SpecTcl works. # + set timing [time { foreach application [apply -list] { set name [lindex $application 0] set gate [lindex [lindex $application 1] 0] @@ -314,12 +347,15 @@ } set applications($name) $gate } + }] + puts "Getting gate applications $timing" # Now we're ready to populate the subtree: # Step 2: Create a list of spectra filtered by any -filterspectra script each element # itself a list containing: # name, type, gate, "" "" "" "" "" definition. - # + # + set timing [time { set spectrumList [list] foreach definition [spectrum -list] { if {$options(-filterspectra) ne ""} { @@ -335,13 +371,16 @@ "" "" "" "" "" \ $definition] } + }] + puts "Getting cooked spectrum defs $timing" # Fill in the spectrum tree: + set timing [time { $self fillSpectrumSubtree $spectrumFolder $spectrumList + }] + puts "Populating tree: $timing" - - } # fillParameterFolder # Fills the parameter folder with the set of parameters that are now defined. @@ -361,6 +400,7 @@ # This is a 2 element list of parameter name, parameter definition: # + set timing [time { set parameterList [list] foreach parameter [parameter -list] { if {$options(-filterparameters) != ""} { @@ -370,14 +410,17 @@ } lappend parameterList [list [lindex $parameter 0] $parameter] } +}] + puts "Preparing parameter list $timing" - # Recursively stock the parameter tree algorithm is pretty much the same as # for fillSpectrumSubtree + set timing [time { $self fillParameterSubtree $paramFolder $parameterList +}] + puts "Filling parameter tree : $timing" - } # fillVariableFolder @@ -479,13 +522,11 @@ set folderId [$tree insert $id end -text $folderName -image ::browser::foldericon] $self fillSpectrumSubtree $folderId $folders($folderName) } - # Finally add in the terminal nodes: + # remember the terminal nodes for this folder so that we can + # populate them on a folder open: - foreach spectrum [lsort [array names terminals]] { - $self addSpectrum $id $terminals($spectrum) - } - - + set spectrumTerminals($id) [array get terminals] + return } ## @@ -1021,12 +1062,13 @@ set folderId [$tree insert $id end -text $folder -image ::browser::foldericon] $self fillParameterSubtree $folderId $folders($folder) } + ## + # Maintain the terminals information: + # + set parameterTerminals($id) [array get terminal]; # Terminals for id. + return - # Create the parameter definitionsL - foreach param [lsort [array names terminal]] { - $self addParameter $id $param $terminal($param) - } } ## # addParameter id name definition @@ -1483,7 +1525,37 @@ uplevel #0 $script $name $X $Y } } - - + ## + # _openFolder + # Open a folder. + # - Figure out the id of the folder being opened. + # - If there are terminal nodes associated with the folder add them + # and delete them. + # + method _openFolder {} { + set id [$tree focus] + + # If a parameter, add parameter terminals: + + if {[array names parameterTerminals $id] ne ""} { + # Create the parameter definitionsL + array set terminal $parameterTerminals($id) + foreach param [lsort [array names terminal]] { + $self addParameter $id $param $terminal($param) + } + array unset parameterTerminals $id + return + } + if {[array names spectrumTerminals $id] ne ""} { + array set terminals $spectrumTerminals($id) + foreach spectrum [lsort [array names terminals]] { + $self addSpectrum $id $terminals($spectrum) + } + array unset spectrumTerminals $id + return + } + + + } } Modified: trunk/main/TreeParam/SpecTclGui.tcl =================================================================== --- trunk/main/TreeParam/SpecTclGui.tcl 2015-11-09 17:48:53 UTC (rev 2340) +++ trunk/main/TreeParam/SpecTclGui.tcl 2015-11-10 19:40:49 UTC (rev 2341) @@ -53,7 +53,9 @@ } set answer 0; # In case we never prompt. -source $SpecTclHome/Script/treeGui.tcl +puts " Sourcing treeGui: " +puts [time {source $SpecTclHome/Script/treeGui.tcl}] + if {0} { if {![info exists NoPromptForNewGui] || (!$NoPromptForNewGui)} { Modified: trunk/main/treegui/treeGui.tcl =================================================================== --- trunk/main/treegui/treeGui.tcl 2015-11-09 17:48:53 UTC (rev 2340) +++ trunk/main/treegui/treeGui.tcl 2015-11-10 19:40:49 UTC (rev 2341) @@ -50,19 +50,16 @@ set time [time { parametersTabActions parameters -widget $treenotebook.parameters} 1 ] - $treenotebook add $treenotebook.parameters -text Parameters -sticky nsew set time [time { variableTabActions variables -widget $treenotebook.variables} 1 ] - $treenotebook add $treenotebook.variables -text Variables -sticky nsew set time [time { gateTabActions gates -widget $treenotebook.gates} 1 ] - $treenotebook add $treenotebook.gates -text Gates -sticky nsew # Now the folder gui as a new tab: @@ -70,7 +67,7 @@ set time [time { ::FolderGui::startFolderGui .treegui $treenotebook} 1 ] - + puts "Time to load folder gui: $time" $treenotebook add $::FolderGui::folderGuiBrowser -text Folders -sticky nsew grid $treenotebook -sticky nsew This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 17:48:55
|
Revision: 2340 http://sourceforge.net/p/nsclspectcl/code/2340 Author: ron-fox Date: 2015-11-09 17:48:53 +0000 (Mon, 09 Nov 2015) Log Message: ----------- Docs for VMUSBSpecTcl fixed Bug #3811 Modified Paths: -------------- branches/4.0-dev/vmusb/vmusb.xml Modified: branches/4.0-dev/vmusb/vmusb.xml =================================================================== --- branches/4.0-dev/vmusb/vmusb.xml 2015-11-09 17:48:20 UTC (rev 2339) +++ branches/4.0-dev/vmusb/vmusb.xml 2015-11-09 17:48:53 UTC (rev 2340) @@ -87,7 +87,7 @@ </para> <para> The primary bit of metadata required by VMUSBSpecTcl is Tcl array - named <varname>adcParameters</varname>. This array is indexed by + named <varname>adcChannels</varname>. This array is indexed by module name and each element contains a list of the parameter names to be associated with the input channels of the digitizer. If a channel is unused, use an empty string (<literal>""</literal>). @@ -111,7 +111,7 @@ <title>Using a loop to create parameters</title> <programlisting> for {set i 0} {$i < 32} {incr i} { - lappend adcParameters(adc) [format adc.%02d $i] + lappend adcChannels(adc) [format adc.%02d $i] } </programlisting> </example> @@ -120,12 +120,12 @@ work to write. Something like this may be needed, however if your parameter names don't occur in sets with some regular pattern (remember that you could have several for or foreach loops all - lappending to the same <varname>adcParameters</varname> element). + lappending to the same <varname>adcChannels</varname> element). </para> <example> <title>Creating parameter names the long way</title> <programlisting> -set adcParameters(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ +set adcChannels(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ adc.05 adc.06 adc.07 adc.08 adc.09 \ adc.10 adc.11 adc.12 adc.13 adc.14 \ adc.15 adc.16 adc.17 adc.18 adc.19 \ @@ -142,7 +142,7 @@ <example> <title>Unused parameters in the middle</title> <programlisting> -set adcParameters(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ +set adcChannels(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ "" "" "" "" "" \ adc.10 adc.11 adc.12 adc.13 adc.14 \ adc.15 adc.16 adc.17 adc.18 adc.19 \ @@ -160,7 +160,7 @@ <title>Onl using the first few channels</title> <programlisting> for {set i 0} {$i < 8} {incr i} { - lappend adcParameters(adc) [format adc.%02d $i] + lappend adcChannels(adc) [format adc.%02d $i] } </programlisting> </example> @@ -593,7 +593,7 @@ </title> <para> Some modules do not fit the model described above in - DESCRIPTION. For these modules, the <varname>adcParameters</varname> + DESCRIPTION. For these modules, the <varname>adcChannels</varname> array element is still used, however it may be interpreted differently or even coupled with additional metadata. </para> @@ -721,9 +721,9 @@ of the form: <replaceable>base-name</replaceable>.abct.<replaceable>chip-address</replaceable>.<replaceable>nn</replaceable> Where; <replaceable>base-name</replaceable> is the - value in <varname>adcParameters</varname> for the module, + value in <varname>adcChannels</varname> for the module, <literal>abct</literal> is one of a,b,c,t where - a,b,c represent an integrationintervale and t the time + a,b,c represent an integrationinterval and t the time parameter. <replaceable>chip-address</replaceable> is the address of the chip and <replaceable>nn</replaceable> the two digit channel number within the chip from This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 17:48:22
|
Revision: 2339 http://sourceforge.net/p/nsclspectcl/code/2339 Author: ron-fox Date: 2015-11-09 17:48:20 +0000 (Mon, 09 Nov 2015) Log Message: ----------- Bug #3811 -fix documentation for VMUSBSpecTcl - adcChannels not adcParameters array. Modified Paths: -------------- trunk/main/vmusb/vmusb.xml Modified: trunk/main/vmusb/vmusb.xml =================================================================== --- trunk/main/vmusb/vmusb.xml 2015-11-09 15:42:23 UTC (rev 2338) +++ trunk/main/vmusb/vmusb.xml 2015-11-09 17:48:20 UTC (rev 2339) @@ -87,7 +87,7 @@ </para> <para> The primary bit of metadata required by VMUSBSpecTcl is Tcl array - named <varname>adcParameters</varname>. This array is indexed by + named <varname>adcChannels</varname>. This array is indexed by module name and each element contains a list of the parameter names to be associated with the input channels of the digitizer. If a channel is unused, use an empty string (<literal>""</literal>). @@ -111,7 +111,7 @@ <title>Using a loop to create parameters</title> <programlisting> for {set i 0} {$i < 32} {incr i} { - lappend adcParameters(adc) [format adc.%02d $i] + lappend adcChannels(adc) [format adc.%02d $i] } </programlisting> </example> @@ -120,12 +120,12 @@ work to write. Something like this may be needed, however if your parameter names don't occur in sets with some regular pattern (remember that you could have several for or foreach loops all - lappending to the same <varname>adcParameters</varname> element). + lappending to the same <varname>adcChannels</varname> element). </para> <example> <title>Creating parameter names the long way</title> <programlisting> -set adcParameters(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ +set adcChannels(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ adc.05 adc.06 adc.07 adc.08 adc.09 \ adc.10 adc.11 adc.12 adc.13 adc.14 \ adc.15 adc.16 adc.17 adc.18 adc.19 \ @@ -142,7 +142,7 @@ <example> <title>Unused parameters in the middle</title> <programlisting> -set adcParameters(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ +set adcChannels(adc) [list adc.00 adc.01 adc.02 adc.03 adc.04 \ "" "" "" "" "" \ adc.10 adc.11 adc.12 adc.13 adc.14 \ adc.15 adc.16 adc.17 adc.18 adc.19 \ @@ -160,7 +160,7 @@ <title>Onl using the first few channels</title> <programlisting> for {set i 0} {$i < 8} {incr i} { - lappend adcParameters(adc) [format adc.%02d $i] + lappend adcChannels(adc) [format adc.%02d $i] } </programlisting> </example> @@ -593,7 +593,7 @@ </title> <para> Some modules do not fit the model described above in - DESCRIPTION. For these modules, the <varname>adcParameters</varname> + DESCRIPTION. For these modules, the <varname>adcChannels</varname> array element is still used, however it may be interpreted differently or even coupled with additional metadata. </para> @@ -721,9 +721,9 @@ of the form: <replaceable>base-name</replaceable>.abct.<replaceable>chip-address</replaceable>.<replaceable>nn</replaceable> Where; <replaceable>base-name</replaceable> is the - value in <varname>adcParameters</varname> for the module, + value in <varname>adcChannels</varname> for the module, <literal>abct</literal> is one of a,b,c,t where - a,b,c represent an integrationintervale and t the time + a,b,c represent an integrationinterval and t the time parameter. <replaceable>chip-address</replaceable> is the address of the chip and <replaceable>nn</replaceable> the two digit channel number within the chip from This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 15:42:26
|
Revision: 2338 http://sourceforge.net/p/nsclspectcl/code/2338 Author: ron-fox Date: 2015-11-09 15:42:23 +0000 (Mon, 09 Nov 2015) Log Message: ----------- Propagate fix for bug #4861 to 4.0 Modified Paths: -------------- branches/4.0-dev/treegui/spectrumTabActions.tcl Modified: branches/4.0-dev/treegui/spectrumTabActions.tcl =================================================================== --- branches/4.0-dev/treegui/spectrumTabActions.tcl 2015-11-09 15:38:12 UTC (rev 2337) +++ branches/4.0-dev/treegui/spectrumTabActions.tcl 2015-11-09 15:42:23 UTC (rev 2338) @@ -876,7 +876,7 @@ # @param wid - spectrumAxis widget that changed. # @param name - New value of the parameter. # - private method SetParameterInfo {wid name} { + private method SetParameterInfo {wid {name ""}} { set info [treeparameter -list $name] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 15:38:15
|
Revision: 2337 http://sourceforge.net/p/nsclspectcl/code/2337 Author: ron-fox Date: 2015-11-09 15:38:12 +0000 (Mon, 09 Nov 2015) Log Message: ----------- Bug #4861 - Fix error that is thrown when an existing parameter field is blanked out Modified Paths: -------------- trunk/main/CHANGELOG trunk/main/treegui/spectrumAxis.tcl trunk/main/treegui/spectrumTabActions.tcl trunk/main/treegui/treeUtilities.tcl Modified: trunk/main/CHANGELOG =================================================================== --- trunk/main/CHANGELOG 2015-11-09 15:19:21 UTC (rev 2336) +++ trunk/main/CHANGELOG 2015-11-09 15:38:12 UTC (rev 2337) @@ -1070,4 +1070,5 @@ * If there are previously defined spectra with the same name, re-create them. * Bug #4858 - Indicate width of channel in tree gui. - + * Bug #4861 - Fix error that happens when one blansk out the parameter + field. \ No newline at end of file Modified: trunk/main/treegui/spectrumAxis.tcl =================================================================== --- trunk/main/treegui/spectrumAxis.tcl 2015-11-09 15:19:21 UTC (rev 2336) +++ trunk/main/treegui/spectrumAxis.tcl 2015-11-09 15:38:12 UTC (rev 2337) @@ -148,7 +148,7 @@ # Called in response to a keystroke in the parameter name entry widget: # method Keystroke {} { - ::treeutility::dispatch $options(-changed) [list %W %T] [list $self [$win.parameter get]] + ::treeutility::dispatch $options(-changed) [list %W %T] [list $self [$win.parameter get]] } ## Modified: trunk/main/treegui/spectrumTabActions.tcl =================================================================== --- trunk/main/treegui/spectrumTabActions.tcl 2015-11-09 15:19:21 UTC (rev 2336) +++ trunk/main/treegui/spectrumTabActions.tcl 2015-11-09 15:38:12 UTC (rev 2337) @@ -876,7 +876,7 @@ # @param wid - spectrumAxis widget that changed. # @param name - New value of the parameter. # - private method SetParameterInfo {wid name} { + private method SetParameterInfo {wid {name ""}} { set info [treeparameter -list $name] Modified: trunk/main/treegui/treeUtilities.tcl =================================================================== --- trunk/main/treegui/treeUtilities.tcl 2015-11-09 15:19:21 UTC (rev 2336) +++ trunk/main/treegui/treeUtilities.tcl 2015-11-09 15:38:12 UTC (rev 2337) @@ -64,14 +64,17 @@ proc ::treeutility::dispatch {script substs values} { if {$script ne ""} { - # Do the substitutions: - + # Do the substitutions -- build the map: + + set map [list] foreach pattern $substs value $values { - regsub -all -- $pattern $script $value script + lappend map $pattern $value } + set finalscript [string map $map $script] + # Run the resulting script script: - uplevel #0 $script + uplevel #0 $finalscript } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 15:19:23
|
Revision: 2336 http://sourceforge.net/p/nsclspectcl/code/2336 Author: ron-fox Date: 2015-11-09 15:19:21 +0000 (Mon, 09 Nov 2015) Log Message: ----------- Propagate 3.4 changes forward to 4.0 Modified Paths: -------------- branches/4.0-dev/SpecTcl/TclGrammerApp.cpp branches/4.0-dev/SpecTcl/TclGrammerApp.h Modified: branches/4.0-dev/SpecTcl/TclGrammerApp.cpp =================================================================== --- branches/4.0-dev/SpecTcl/TclGrammerApp.cpp 2015-11-09 15:07:13 UTC (rev 2335) +++ branches/4.0-dev/SpecTcl/TclGrammerApp.cpp 2015-11-09 15:19:21 UTC (rev 2336) @@ -119,8 +119,101 @@ static const char* kpAppInitFile = "/SpecTclInit.tcl"; static const char* kpUserInitFile = "/SpecTclRC.tcl"; + +static const char* ProtectedVariables[] = { + "DisplayMegabytes", + "ParameterCount", + "EventListSize", + "ParameterOverwriteAction", + "SpectrumOverwriteAction", + "TKConsoleHistory", + "TKConsoleBufferSize", + "NoPromptForNewGui", + "splashImage", + 0 +}; + // Static attribute storage and initialization for CTclGrammerApp +// Local classes: + +/** + * @class CSpecTclInitVar + * Class that handles traces for variables that are set in SpecTclInit.tcl + * - On construction snapshot the variable value. + * - If write trace fires and the value is different - restore the value + * and return an error. + * - If an unset trace fires, return an error. + */ +class CSpecTclInitVar : public CTCLVariable +{ + std::string m_originalValue; + std::string m_errorMessage; +public: + CSpecTclInitVar(CTCLInterpreter* pInterp, const char* pVarName); +private: + ~CSpecTclInitVar() {} // Not allowed to destroy. +public: + virtual char* operator()(char* pName, char* pSubscript, int flags); + +}; + +/** + * CSpecTclInitVar constructor + * - Construct with tracing off. + * - Get the current value if defined. + * - turn on write and unset tracing (control over tracing flags is why we + * don't construct with tracing enabled). + */ +CSpecTclInitVar::CSpecTclInitVar(CTCLInterpreter* pInterp, const char* pName) : + CTCLVariable(pInterp, pName, false) +{ + const char* pCurrentValue = Get(); + if (pCurrentValue) m_originalValue = pCurrentValue; + + Trace(TCL_TRACE_WRITES | TCL_TRACE_UNSETS); +} +/** + * operator() + * Called when the trace fires. + * See class docs for action. + * + * @param pName - name of the variable. + * @param pSubscript - subscript of the variable. + * @param flags - Reason the trace fired. + * @return char* - Pointer to error message or NULL if set is allowed. + */ +char* +CSpecTclInitVar::operator()(char* pName, char* pSubscript, int flags) +{ + char msg[1000]; + + // All unsets are illegal: + + if (flags & TCL_TRACE_UNSETS) { + + sprintf( + msg, "%s can only be unset in SpecTclInit.tcl", getVariableName().c_str() + ); + m_errorMessage = msg; + Set(m_originalValue.c_str()); + return const_cast<char*>(m_errorMessage.c_str()); + } else if (flags & TCL_TRACE_WRITES) { + + // Writes that change the value are illegal. + + const char* pNewValue = Get(); + if (m_originalValue != std::string(pNewValue)) { + Set(m_originalValue.c_str()); + sprintf( + msg, "%s can only be set in SpecTclInit.tcl", getVariableName().c_str() + ); + m_errorMessage = msg; + return const_cast<char*>(m_errorMessage.c_str()); + } + } +} + // Constructors, destructors and other replacements for compiler cannonicals: /*! Constructing a CTclGrammerApp is what glues the library called SpecTcl @@ -300,8 +393,26 @@ std::cerr << result << std::endl; exit(-1); } - + /** + Now that the limit files are source we're going to noisily prevent + the user from modifying the following variables: + - DisplayMegabytes - Xamine shared memory data size. + - ParameterCount - Initial # of parameters in an event. + - EventListSize - Number of events batched before a histogram pass. + - ParameterOverwriteAtion - obsolete - determines action on read of + SpecTcl parameters using an old read in file. + - TkConsoleHistory - Number of lines in TkCon history + - TkConsoleBufferSize - Number of bytes in the TkCon scrollback. + - NoPromptForNewGui - False if prompt for new/old gui. + - splashImage - File containg the Tk Splash image displayed during + SpecTclRC.tcl execution. Must be a supported + Tk image/photo type. + */ + for (const char** pVarName = ProtectedVariables; *pVarName != 0; pVarName++) { + protectVariable(getInterpreter(), *pVarName); + } } + // Function: // void SetLimits() @@ -833,4 +944,22 @@ pHistogrammer->updateStatistics(); Tcl_CreateTimerHandler(pObject->m_nUpdateRate, CTclGrammerApp::TimedUpdates, d); +} + +/** + * protectVariable + * Called to protect a global variable. + * since this is an application class, the code below only _looks_ like it + * leaks memory. What the new's below do is ensure that the + * variable remains in scope the lifetime of the application. + * This is used to write protect variables that are defined by the SpecTclInit.tcl + * file from later, misleading, modification. + * + * @param pInterp - pointer to the interpreter the variable lives in. + * @param pVarName - pointer to the variable name. + */ +void +CTclGrammerApp::protectVariable(CTCLInterpreter* pInterp, const char* pVarName) +{ + new CSpecTclInitVar(pInterp, pVarName); } \ No newline at end of file Modified: branches/4.0-dev/SpecTcl/TclGrammerApp.h =================================================================== --- branches/4.0-dev/SpecTcl/TclGrammerApp.h 2015-11-09 15:07:13 UTC (rev 2335) +++ branches/4.0-dev/SpecTcl/TclGrammerApp.h 2015-11-09 15:19:21 UTC (rev 2336) @@ -285,7 +285,8 @@ static void UpdateUInt(CTCLVariable& rVar, UInt_t& rValue); static std::string SourceOptionalFile(CTCLInterpreter& rInterp, std::string filename); private: - static void TimedUpdates(ClientData d); + static void TimedUpdates(ClientData d); + void protectVariable(CTCLInterpreter* pInterp, const char* pVarName); }; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 15:07:16
|
Revision: 2335 http://sourceforge.net/p/nsclspectcl/code/2335 Author: ron-fox Date: 2015-11-09 15:07:13 +0000 (Mon, 09 Nov 2015) Log Message: ----------- propagate treegui fixes to 4.0 Modified Paths: -------------- branches/4.0-dev/treegui/spectrumTabActions.tcl Modified: branches/4.0-dev/treegui/spectrumTabActions.tcl =================================================================== --- branches/4.0-dev/treegui/spectrumTabActions.tcl 2015-11-09 15:03:16 UTC (rev 2334) +++ branches/4.0-dev/treegui/spectrumTabActions.tcl 2015-11-09 15:07:13 UTC (rev 2335) @@ -322,8 +322,11 @@ set type [lindex $spectrum 2] set parameters [lindex $spectrum 3] set axes [lindex $spectrum 4] + set dtype [string range [lindex $spectrum 5] 0 0] set gate [lindex $spectrum 6] + append type " $dtype" + # Ungated true gate -> "" if {$gate eq "-TRUE-" || $gate eq "-Ungated-"} { set gate "" @@ -649,6 +652,7 @@ } } } + ## Invoked to create a spectrum. # private method CreateSpectrum {} { @@ -734,16 +738,22 @@ spectrum $spectrum $type $parameter \ [list [list $xlow $xhi $xbins]] $datatype ApplyGate $spectrum $gateName - sbind $spectrum + if {[catch {sbind $spectrum}]} { + bindFailed $spectrumList $existingSpectra $gateName + break; # Rollback or kill all. + } } } } else { if {[okToReplaceSpectrum $name]} { set gateName [AppliedGate $name] + set prior [spectrum -list $name]; # For rollback. catch {spectrum -delete $name}; # get rid of any prior spectrum. spectrum $name $type $xname [list [list $xlow $xhi $xbins]] $datatype ApplyGate $name $gateName - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gateName + } } } } @@ -753,11 +763,14 @@ set yname [$widget cget -yparameter] if {($yname ne "") && [okToReplaceSpectrum $name]} { + set priorSpectra [spectrum -list $name] set gateName [AppliedGate $name] catch {spectrum -delete $name} spectrum $name $type [list $xname $yname] [list [list $xlow $xhi $xbins]] $datatype ApplyGate $name $gateName - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $priorSpectrum $gateName + } } } 2 { @@ -785,11 +798,14 @@ } set gate [AppliedGate $name] + set prior [spectrum -list $name] catch {spectrum -delete $name} spectrum $name $type [list $xname $yname] \ [list [list $xlow $xhi $xbins] [list $ylow $yhi $ybins]] $datatype ApplyGate $name $gate - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gate + } } } s - g1 { @@ -798,10 +814,13 @@ if {[okToReplaceSpectrum $name]} { set parameterList [::treeutility::listArrayElements $xname ::treeutility::parameterList] set gate [AppliedGate $name] + set prior [spectrum -list $name] catch {spectrum -delete $name} spectrum $name $type $parameterList [list [list $xlow $xhi $xbins]] ApplyGate $name $gate - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gate + } } } g2 { @@ -811,11 +830,14 @@ set parameterList [::treeutility::listArrayElements $xname ::treeutility::parameterList] set gate [AppliedGate $name] + set prior [spectrum -list $name] catch {spectrum -delete $name} spectrum $name $type $parameterList \ [list [list $xlow $xhi $xbins] [list $xlow $xhi $xbins]] ApplyGate $name $gate - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gate + } } } @@ -823,7 +845,6 @@ tk_messageBox -type ok -icon error -title {Can't make this spectrum} \ -parent $widget \ -message "The tree gui does not know how to create spectra of type: $type" - sbind $name } } @@ -870,7 +891,39 @@ -units [lindex $info 5] } } - + ## + # bindFailed + # Called when the bind of a single spectrum failed. + # - Notify the user of the problem. + # - Delete the spectra created so far. + # - Restore any spectra deleted prior to this. + # + # @param - names - names of spectra that need deleting. + # @param - prior - Prior spectrum definitions that need creating. + # @param - gate - Gate applied to spectrum. + private method bindFailed {names prior gate} { + tk_messageBox \ + -icon error -title "Bind Failed" -type ok \ + -message "Unable to bind a spectrum to shared memory - deleting the created spectra and restoring any deleted definitions" + + # delete the spectra- note not all names might have been created yet: + + foreach name $names { + catch {spectrum -delete $name} + } + # Restore any prior definitions. + + foreach spectrum $prior { + set name [lindex $spectrum 1] + set type [lindex $spectrum 2] + set params [lindex $spectrum 3] + set axes [lindex $spectrum 4] + set dtype [lindex $spectrum 5] + + spectrum $name $type $params $axes $dtype + ApplyGate $name $gate + } + } #--------------------------------------------------------------------------- # True public interface. There are other public methods but they # require that exposure to be used as callbacks. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 15:03:18
|
Revision: 2334 http://sourceforge.net/p/nsclspectcl/code/2334 Author: ron-fox Date: 2015-11-09 15:03:16 +0000 (Mon, 09 Nov 2015) Log Message: ----------- log updates. Modified Paths: -------------- trunk/main/CHANGELOG Modified: trunk/main/CHANGELOG =================================================================== --- trunk/main/CHANGELOG 2015-11-09 15:03:03 UTC (rev 2333) +++ trunk/main/CHANGELOG 2015-11-09 15:03:16 UTC (rev 2334) @@ -1068,4 +1068,6 @@ * Give meaningful message to the user. * Delete any spectra the operation may have created * If there are previously defined spectra with the same name, - re-create them. \ No newline at end of file + re-create them. + * Bug #4858 - Indicate width of channel in tree gui. + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 15:03:05
|
Revision: 2333 http://sourceforge.net/p/nsclspectcl/code/2333 Author: ron-fox Date: 2015-11-09 15:03:03 +0000 (Mon, 09 Nov 2015) Log Message: ----------- Featrure #4858 - Add type of channel to the old tree gui. Modified Paths: -------------- trunk/main/treegui/spectrumTabActions.tcl Modified: trunk/main/treegui/spectrumTabActions.tcl =================================================================== --- trunk/main/treegui/spectrumTabActions.tcl 2015-11-09 14:46:49 UTC (rev 2332) +++ trunk/main/treegui/spectrumTabActions.tcl 2015-11-09 15:03:03 UTC (rev 2333) @@ -322,8 +322,11 @@ set type [lindex $spectrum 2] set parameters [lindex $spectrum 3] set axes [lindex $spectrum 4] + set dtype [string range [lindex $spectrum 5] 0 0] set gate [lindex $spectrum 6] + append type " $dtype" + # Ungated true gate -> "" if {$gate eq "-TRUE-" || $gate eq "-Ungated-"} { set gate "" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 14:46:51
|
Revision: 2332 http://sourceforge.net/p/nsclspectcl/code/2332 Author: ron-fox Date: 2015-11-09 14:46:49 +0000 (Mon, 09 Nov 2015) Log Message: ----------- * Bug #4900 - Handle failed sbind commands after spectrum creation in a more graceful manner. Modified Paths: -------------- trunk/main/CHANGELOG trunk/main/Gui/folderGui.tcl trunk/main/treegui/spectrumTabActions.tcl Modified: trunk/main/CHANGELOG =================================================================== --- trunk/main/CHANGELOG 2015-11-09 13:07:55 UTC (rev 2331) +++ trunk/main/CHANGELOG 2015-11-09 14:46:49 UTC (rev 2332) @@ -1064,3 +1064,8 @@ SpecTclInit.tcl now have traces established on them that make it a Tcl script error to modify them after SpecTclInit.tcl has been run. + * Bug #4900 - if bind fails in spectrum creation: + * Give meaningful message to the user. + * Delete any spectra the operation may have created + * If there are previously defined spectra with the same name, + re-create them. \ No newline at end of file Modified: trunk/main/Gui/folderGui.tcl =================================================================== --- trunk/main/Gui/folderGui.tcl 2015-11-09 13:07:55 UTC (rev 2331) +++ trunk/main/Gui/folderGui.tcl 2015-11-09 14:46:49 UTC (rev 2332) @@ -891,13 +891,24 @@ set multiplier(word) 2 set multiplier(byte) 1 - if {[catch {::spectrum -list} spectra]} { - set spectra [list] + # Since we're talking about display memory, this should only reflect + # spectra in the sbind list: + + if {[catch {sbind -list}]} { + set boundSpectra [list] + } else { + set boundSpectra [sbind -list] + } + set spectrumNames [list] + foreach spectrum $boundSpectra { + lappend spectrumNames [lindex $spectrum 1] + } set usage 0 - foreach spectrum $spectra { + foreach name $spectrumNames { + set spectrum [lindex [spectrum -list $name] 0] # Figure out the channel count for the spectrum: Modified: trunk/main/treegui/spectrumTabActions.tcl =================================================================== --- trunk/main/treegui/spectrumTabActions.tcl 2015-11-09 13:07:55 UTC (rev 2331) +++ trunk/main/treegui/spectrumTabActions.tcl 2015-11-09 14:46:49 UTC (rev 2332) @@ -649,6 +649,7 @@ } } } + ## Invoked to create a spectrum. # private method CreateSpectrum {} { @@ -734,16 +735,22 @@ spectrum $spectrum $type $parameter \ [list [list $xlow $xhi $xbins]] $datatype ApplyGate $spectrum $gateName - sbind $spectrum + if {[catch {sbind $spectrum}]} { + bindFailed $spectrumList $existingSpectra $gateName + break; # Rollback or kill all. + } } } } else { if {[okToReplaceSpectrum $name]} { set gateName [AppliedGate $name] + set prior [spectrum -list $name]; # For rollback. catch {spectrum -delete $name}; # get rid of any prior spectrum. spectrum $name $type $xname [list [list $xlow $xhi $xbins]] $datatype ApplyGate $name $gateName - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gateName + } } } } @@ -753,11 +760,14 @@ set yname [$widget cget -yparameter] if {($yname ne "") && [okToReplaceSpectrum $name]} { + set priorSpectra [spectrum -list $name] set gateName [AppliedGate $name] catch {spectrum -delete $name} spectrum $name $type [list $xname $yname] [list [list $xlow $xhi $xbins]] $datatype ApplyGate $name $gateName - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $priorSpectrum $gateName + } } } 2 { @@ -785,11 +795,14 @@ } set gate [AppliedGate $name] + set prior [spectrum -list $name] catch {spectrum -delete $name} spectrum $name $type [list $xname $yname] \ [list [list $xlow $xhi $xbins] [list $ylow $yhi $ybins]] $datatype ApplyGate $name $gate - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gate + } } } s - g1 { @@ -798,10 +811,13 @@ if {[okToReplaceSpectrum $name]} { set parameterList [::treeutility::listArrayElements $xname ::treeutility::parameterList] set gate [AppliedGate $name] + set prior [spectrum -list $name] catch {spectrum -delete $name} spectrum $name $type $parameterList [list [list $xlow $xhi $xbins]] ApplyGate $name $gate - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gate + } } } g2 { @@ -811,11 +827,14 @@ set parameterList [::treeutility::listArrayElements $xname ::treeutility::parameterList] set gate [AppliedGate $name] + set prior [spectrum -list $name] catch {spectrum -delete $name} spectrum $name $type $parameterList \ [list [list $xlow $xhi $xbins] [list $xlow $xhi $xbins]] ApplyGate $name $gate - sbind $name + if {[catch {sbind $name}]} { + bindFailed $name $prior $gate + } } } @@ -823,7 +842,6 @@ tk_messageBox -type ok -icon error -title {Can't make this spectrum} \ -parent $widget \ -message "The tree gui does not know how to create spectra of type: $type" - sbind $name } } @@ -870,7 +888,39 @@ -units [lindex $info 5] } } - + ## + # bindFailed + # Called when the bind of a single spectrum failed. + # - Notify the user of the problem. + # - Delete the spectra created so far. + # - Restore any spectra deleted prior to this. + # + # @param - names - names of spectra that need deleting. + # @param - prior - Prior spectrum definitions that need creating. + # @param - gate - Gate applied to spectrum. + private method bindFailed {names prior gate} { + tk_messageBox \ + -icon error -title "Bind Failed" -type ok \ + -message "Unable to bind a spectrum to shared memory - deleting the created spectra and restoring any deleted definitions" + + # delete the spectra- note not all names might have been created yet: + + foreach name $names { + catch {spectrum -delete $name} + } + # Restore any prior definitions. + + foreach spectrum $prior { + set name [lindex $spectrum 1] + set type [lindex $spectrum 2] + set params [lindex $spectrum 3] + set axes [lindex $spectrum 4] + set dtype [lindex $spectrum 5] + + spectrum $name $type $params $axes $dtype + ApplyGate $name $gate + } + } #--------------------------------------------------------------------------- # True public interface. There are other public methods but they # require that exposure to be used as callbacks. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-11-09 13:07:57
|
Revision: 2331 http://sourceforge.net/p/nsclspectcl/code/2331 Author: ron-fox Date: 2015-11-09 13:07:55 +0000 (Mon, 09 Nov 2015) Log Message: ----------- * Feature #4912 - catch and turn into errors modifications of any variable that can be set in SpecTclInit.tcl * Bug #4897 - Fixed via implementation of Feature #4912 Modified Paths: -------------- trunk/main/CHANGELOG trunk/main/SpecTcl/TclGrammerApp.cpp trunk/main/SpecTcl/TclGrammerApp.h Modified: trunk/main/CHANGELOG =================================================================== --- trunk/main/CHANGELOG 2015-11-04 18:56:08 UTC (rev 2330) +++ trunk/main/CHANGELOG 2015-11-09 13:07:55 UTC (rev 2331) @@ -1059,3 +1059,8 @@ * Feature #3532 - add scontents command. * Feature #3538 - add compress package with deflate/inflate commands. +3.4-006 + * Feature #4192, Bug #4897 - All variables that can be set in + SpecTclInit.tcl now have traces established on them that make it a + Tcl script error to modify them after SpecTclInit.tcl has been + run. Modified: trunk/main/SpecTcl/TclGrammerApp.cpp =================================================================== --- trunk/main/SpecTcl/TclGrammerApp.cpp 2015-11-04 18:56:08 UTC (rev 2330) +++ trunk/main/SpecTcl/TclGrammerApp.cpp 2015-11-09 13:07:55 UTC (rev 2331) @@ -79,6 +79,7 @@ #include <unistd.h> #include <string.h> #include <errno.h> +#include <tcl.h> #if defined(Darwin) #include <sys/syslimits.h> @@ -115,8 +116,100 @@ static const char* kpAppInitFile = "/SpecTclInit.tcl"; static const char* kpUserInitFile = "/SpecTclRC.tcl"; +static const char* ProtectedVariables[] = { + "DisplayMegabytes", + "ParameterCount", + "EventListSize", + "ParameterOverwriteAction", + "SpectrumOverwriteAction", + "TKConsoleHistory", + "TKConsoleBufferSize", + "NoPromptForNewGui", + "splashImage", + 0 +}; + // Static attribute storage and initialization for CTclGrammerApp + +// Local classes: + +/** + * @class CSpecTclInitVar + * Class that handles traces for variables that are set in SpecTclInit.tcl + * - On construction snapshot the variable value. + * - If write trace fires and the value is different - restore the value + * and return an error. + * - If an unset trace fires, return an error. + */ +class CSpecTclInitVar : public CTCLVariable +{ + std::string m_originalValue; + std::string m_errorMessage; +public: + CSpecTclInitVar(CTCLInterpreter* pInterp, const char* pVarName); +private: + ~CSpecTclInitVar() {} // Not allowed to destroy. +public: + virtual char* operator()(char* pName, char* pSubscript, int flags); + +}; + +/** + * CSpecTclInitVar constructor + * - Construct with tracing off. + * - Get the current value if defined. + * - turn on write and unset tracing (control over tracing flags is why we + * don't construct with tracing enabled). + */ +CSpecTclInitVar::CSpecTclInitVar(CTCLInterpreter* pInterp, const char* pName) : + CTCLVariable(pInterp, pName, false) +{ + const char* pCurrentValue = Get(); + if (pCurrentValue) m_originalValue = pCurrentValue; + + Trace(TCL_TRACE_WRITES | TCL_TRACE_UNSETS); +} +/** + * operator() + * Called when the trace fires. + * See class docs for action. + * + * @param pName - name of the variable. + * @param pSubscript - subscript of the variable. + * @param flags - Reason the trace fired. + * @return char* - Pointer to error message or NULL if set is allowed. + */ +char* +CSpecTclInitVar::operator()(char* pName, char* pSubscript, int flags) +{ + char msg[1000]; + + // All unsets are illegal: + + if (flags & TCL_TRACE_UNSETS) { + + sprintf( + msg, "%s can only be unset in SpecTclInit.tcl", getVariableName().c_str() + ); + m_errorMessage = msg; + Set(m_originalValue.c_str()); + return const_cast<char*>(m_errorMessage.c_str()); + } else if (flags & TCL_TRACE_WRITES) { + + // Writes that change the value are illegal. + + const char* pNewValue = Get(); + if (m_originalValue != std::string(pNewValue)) { + Set(m_originalValue.c_str()); + sprintf( + msg, "%s can only be set in SpecTclInit.tcl", getVariableName().c_str() + ); + m_errorMessage = msg; + return const_cast<char*>(m_errorMessage.c_str()); + } + } +} // Constructors, destructors and other replacements for compiler cannonicals: /*! Constructing a CTclGrammerApp is what glues the library called SpecTcl @@ -291,7 +384,24 @@ std::cerr << result << std::endl; exit(-1); } - + /** + Now that the limit files are source we're going to noisily prevent + the user from modifying the following variables: + - DisplayMegabytes - Xamine shared memory data size. + - ParameterCount - Initial # of parameters in an event. + - EventListSize - Number of events batched before a histogram pass. + - ParameterOverwriteAtion - obsolete - determines action on read of + SpecTcl parameters using an old read in file. + - TkConsoleHistory - Number of lines in TkCon history + - TkConsoleBufferSize - Number of bytes in the TkCon scrollback. + - NoPromptForNewGui - False if prompt for new/old gui. + - splashImage - File containg the Tk Splash image displayed during + SpecTclRC.tcl execution. Must be a supported + Tk image/photo type. + */ + for (const char** pVarName = ProtectedVariables; *pVarName != 0; pVarName++) { + protectVariable(getInterpreter(), *pVarName); + } } // Function: @@ -798,3 +908,20 @@ } } +/** + * protectVariable + * Called to protect a global variable. + * since this is an application class, the code below only _looks_ like it + * leaks memory. What the new's below do is ensure that the + * variable remains in scope the lifetime of the application. + * This is used to write protect variables that are defined by the SpecTclInit.tcl + * file from later, misleading, modification. + * + * @param pInterp - pointer to the interpreter the variable lives in. + * @param pVarName - pointer to the variable name. + */ +void +CTclGrammerApp::protectVariable(CTCLInterpreter* pInterp, const char* pVarName) +{ + new CSpecTclInitVar(pInterp, pVarName); +} \ No newline at end of file Modified: trunk/main/SpecTcl/TclGrammerApp.h =================================================================== --- trunk/main/SpecTcl/TclGrammerApp.h 2015-11-04 18:56:08 UTC (rev 2330) +++ trunk/main/SpecTcl/TclGrammerApp.h 2015-11-09 13:07:55 UTC (rev 2331) @@ -279,6 +279,9 @@ protected: static void UpdateUInt(CTCLVariable& rVar, UInt_t& rValue); static std::string SourceOptionalFile(CTCLInterpreter& rInterp, std::string filename); + +private: + void protectVariable(CTCLInterpreter* pInterp, const char* pVarName); }; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jr...@us...> - 2015-11-04 18:56:11
|
Revision: 2330 http://sourceforge.net/p/nsclspectcl/code/2330 Author: jrtomps Date: 2015-11-04 18:56:08 +0000 (Wed, 04 Nov 2015) Log Message: ----------- Bug #4894 Xamine_Allocate2d allocates long as 32-bit Modified Paths: -------------- trunk/main/Display/client.c Modified: trunk/main/Display/client.c =================================================================== --- trunk/main/Display/client.c 2015-06-14 15:29:34 UTC (rev 2329) +++ trunk/main/Display/client.c 2015-11-04 18:56:08 UTC (rev 2330) @@ -1063,7 +1063,7 @@ /* Allocate the spectrum storage: */ if(type==0) s_amount = s_amount * sizeof(short); /* Number of bytes of storage. */ - if(type==2) s_amount = s_amount * sizeof(long); + if(type==2) s_amount = s_amount * sizeof(int); storage = Xamine_AllocMemory(s_amount); if(storage == NULL) return NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-06-14 15:29:36
|
Revision: 2329 http://sourceforge.net/p/nsclspectcl/code/2329 Author: ron-fox Date: 2015-06-14 15:29:34 +0000 (Sun, 14 Jun 2015) Log Message: ----------- Fix error in run state transition commands...not sure why this works ..must be some other Begin, End commands. Modified Paths: -------------- branches/LLNLMadcChainSpecTcl-mtdcdev/CScalerProcessor.cpp Modified: branches/LLNLMadcChainSpecTcl-mtdcdev/CScalerProcessor.cpp =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/CScalerProcessor.cpp 2015-06-09 21:46:39 UTC (rev 2328) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/CScalerProcessor.cpp 2015-06-14 15:29:34 UTC (rev 2329) @@ -72,19 +72,19 @@ switch (type) { case CAnalysisBase::Begin: state = "Active"; - procName = "Begin"; + procName = "BeginRun"; m_totals.clear(); break; case CAnalysisBase::End: - procName = "End"; + procName = "EndRun"; state = "Halted"; break; case CAnalysisBase::Pause: - procName = "Pause"; + procName = "PauseRun"; state = "Paused"; break; case CAnalysisBase::Resume: - procName = "Resume"; + procName = "ResumeRun"; state = "Active"; break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-06-09 21:46:42
|
Revision: 2328 http://sourceforge.net/p/nsclspectcl/code/2328 Author: ron-fox Date: 2015-06-09 21:46:39 +0000 (Tue, 09 Jun 2015) Log Message: ----------- * Add $here to auto_path * Include widgets directory for tablelist etc. Modified Paths: -------------- branches/LLNLMadcChainSpecTcl-mtdcdev/SpecTclRC.tcl Added Paths: ----------- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/ReDistribNotes branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/mwutil.tcl branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/notebook.tcl branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/pkgIndex.tcl branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelist.tcl branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistSortByColumn.tcl branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistWidget.tcl branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tabnbook.tcl Modified: branches/LLNLMadcChainSpecTcl-mtdcdev/SpecTclRC.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/SpecTclRC.tcl 2015-06-09 11:12:56 UTC (rev 2327) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/SpecTclRC.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -70,6 +70,8 @@ splash::progress $splash {Loading VMUSB Configuration file...} set here [file dirname [info script]] +lappend auto_path $here + source [file join $here constants.tcl] source [file join $here configFile.tcl] source [file join $here spectclSetup.tcl] Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/ReDistribNotes =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/ReDistribNotes (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/ReDistribNotes 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,63 @@ +The software in this directory originated from +outside the NSCL. This file describes the license +status of the files from this directory as it is known +as of 4/23/2008. + +The files +notebook.tcl and tabnbook.tcl + +Come from the source code for the book Effective +Tcl. This source code is available for download +from http://www.sourceforge.net/projects/efftcl +with project admins that match the names of the +authors but SF.net gives no license. + +Author contacted (Harrison): + +Ron Fox wrote: +> I've got a package that makes use of the software above. +> As you are one of the holder of the copyright on the +> software, and no redistribution terms and conditions +> are described, and the sf.net page for efftcl lists no +> license, I was wondering if there are specific redistribution +> terms and conditions that I must adhere to. +> +> Thanks, + +Hi Ron, + +Sorry this wasn't clear... at the time we were working on this there +wasn't much awareness of licensing issues, etc. + +You can use the MIT license, which pretty much gives you permission +to redistribute freely without conditions. + +http://en.wikipedia.org/wiki/MIT_License + +Remember us if this makes you rich and famous! + +Cheers, +Mark + +-------------------------------------------------------------------------- + +The files: +mwutil.tcl, tablelistSortByColumn.tcl tablelist.tcl and tablelistWidget.tcl + +Support table like widgets. They were written by Csaba Nemethi +and can be redistributed as long as the internal copy right notice +is retained and the following text is part of the re-distrbibution: + + +Multi-column listbox package Tablelist, version 4.8 +Copyright (c) 2000-2007 Csaba Nemethi (E-mail: csa...@t-...) + +This library is free software; you can use, modify, and redistribute it +for any purpose, provided that existing copyright notices are retained +in all copies and that this notice is included verbatim in any +distributions. + +This software is distributed WITHOUT ANY WARRANTY; without even the +implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + Property changes on: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/ReDistribNotes ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/mwutil.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/mwutil.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/mwutil.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,382 @@ +#============================================================================== +# Contains utility procedures for mega-widgets. +# +# Structure of the module: +# - Namespace initialization +# - Public utility procedures +# - Private procedures used in bindings +# +# Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csa...@t-...) +#============================================================================== + +package require Tcl 8 +package require Tk 8 +package provide mwutil 1.0 + +# +# Namespace initialization +# ======================== +# + +namespace eval mwutil { + # + # Public variables: + # + variable version 1.3 + variable library [file dirname [info script]] + + # + # Public procedures: + # + namespace export wrongNumArgs configure fullConfigOpt fullOpt enumOpts \ + attribSubCmd configSubCmd + + # + # Define the binding tag allModif to be a duplicate of all (having the + # same events and scripts), but replace the script corresponding to the + # events <Shift-Key-Tab> and <<PrevWindow>> with a new one which skips + # the widget's parent when searching for the previous window in "focus + # order" (<Shift-Key-Tab> was replaced with <<PrevWindow>> in Tk 8.3.0) + # + proc defineAllModif {} { + foreach event [bind all] { + if {[string compare $event <Shift-Key-Tab>] == 0 || + [string compare $event <<PrevWindow>>] == 0} { + bind allModif $event [list mwutil::skipParent %W $event] + } else { + bind allModif $event [bind all $event] + } + } + } + defineAllModif +} + +# +# Public utility procedures +# ========================= +# + +#------------------------------------------------------------------------------ +# mwutil::wrongNumArgs +# +# Generates a "wrong # args" error message. +#------------------------------------------------------------------------------ +proc mwutil::wrongNumArgs msg { + return -code error "wrong # args: should be \"$msg\"" +} + +#------------------------------------------------------------------------------ +# mwutil::configure +# +# Configures the widget win by processing the command-line arguments specified +# in optValPairs and, if the value of initialize is true, also those database +# options that don't match any command-line arguments. +#------------------------------------------------------------------------------ +proc mwutil::configure {win configSpecsName configValsName \ + configCmd optValPairs initialize} { + upvar $configSpecsName configSpecs + upvar $configValsName configVals + + # + # Process the command-line arguments + # + set cmdLineOpts {} + set savedVals {} + set failed no + set count [llength $optValPairs] + foreach {opt val} $optValPairs { + if {[catch {fullConfigOpt $opt configSpecs} result] != 0} { + set failed yes + break + } + if {$count == 1} { + set result "value for \"$opt\" missing" + set failed yes + break + } + set opt $result + lappend cmdLineOpts $opt + lappend savedVals $configVals($opt) + if {[catch {eval $configCmd [list $win $opt $val]} result] != 0} { + set failed yes + break + } + incr count -2 + } + + if {$failed} { + # + # Restore the saved values + # + foreach opt $cmdLineOpts val $savedVals { + eval $configCmd [list $win $opt $val] + } + + return -code error $result + } + + if {$initialize} { + # + # Process those configuration options that were not + # given as command-line arguments; use the corresponding + # values from the option database if available + # + foreach opt [lsort [array names configSpecs]] { + if {[llength $configSpecs($opt)] == 1 || + [lsearch -exact $cmdLineOpts $opt] >= 0} { + continue + } + set dbName [lindex $configSpecs($opt) 0] + set dbClass [lindex $configSpecs($opt) 1] + set dbValue [option get $win $dbName $dbClass] + if {[string compare $dbValue ""] != 0} { + eval $configCmd [list $win $opt $dbValue] + } else { + set default [lindex $configSpecs($opt) 3] + eval $configCmd [list $win $opt $default] + } + } + } + + return "" +} + +#------------------------------------------------------------------------------ +# mwutil::fullConfigOpt +# +# Returns the full configuration option corresponding to the possibly +# abbreviated option opt. +#------------------------------------------------------------------------------ +proc mwutil::fullConfigOpt {opt configSpecsName} { + upvar $configSpecsName configSpecs + + if {[info exists configSpecs($opt)]} { + if {[llength $configSpecs($opt)] == 1} { + return $configSpecs($opt) + } else { + return $opt + } + } + + set optList [lsort [array names configSpecs]] + set count 0 + foreach elem $optList { + if {[string first $opt $elem] == 0} { + incr count + if {$count == 1} { + set option $elem + } else { + break + } + } + } + + switch $count { + 0 { + ### return -code error "unknown option \"$opt\"" + return -code error \ + "bad option \"$opt\": must be [enumOpts $optList]" + } + + 1 { + if {[llength $configSpecs($option)] == 1} { + return $configSpecs($option) + } else { + return $option + } + } + + default { + ### return -code error "unknown option \"$opt\"" + return -code error \ + "ambiguous option \"$opt\": must be [enumOpts $optList]" + } + } +} + +#------------------------------------------------------------------------------ +# mwutil::fullOpt +# +# Returns the full option corresponding to the possibly abbreviated option opt. +#------------------------------------------------------------------------------ +proc mwutil::fullOpt {kind opt optList} { + if {[lsearch -exact $optList $opt] >= 0} { + return $opt + } + + set count 0 + foreach elem $optList { + if {[string first $opt $elem] == 0} { + incr count + if {$count == 1} { + set option $elem + } else { + break + } + } + } + + switch $count { + 0 { + return -code error \ + "bad $kind \"$opt\": must be [enumOpts $optList]" + } + + 1 { + return $option + } + + default { + return -code error \ + "ambiguous $kind \"$opt\": must be [enumOpts $optList]" + } + } +} + +#------------------------------------------------------------------------------ +# mwutil::enumOpts +# +# Returns a string consisting of the elements of the given list, separated by +# commas and spaces. +#------------------------------------------------------------------------------ +proc mwutil::enumOpts optList { + set optCount [llength $optList] + set n 1 + foreach opt $optList { + if {$n == 1} { + set str $opt + } elseif {$n < $optCount} { + append str ", $opt" + } else { + if {$optCount > 2} { + append str "," + } + append str " or $opt" + } + + incr n + } + + return $str +} + +#------------------------------------------------------------------------------ +# mwutil::attribSubCmd +# +# This procedure is invoked to process the attrib subcommand. +#------------------------------------------------------------------------------ +proc mwutil::attribSubCmd {win argList} { + set classNs [string tolower [winfo class $win]] + upvar ::${classNs}::ns${win}::attribVals attribVals + + set argCount [llength $argList] + switch $argCount { + 0 { + # + # Return the current list of attribute names and values + # + set result {} + foreach attr [lsort [array names attribVals]] { + lappend result [list $attr $attribVals($attr)] + } + return $result + } + + 1 { + # + # Return the value of the specified attribute + # + set attr [lindex $argList 0] + if {[info exists attribVals($attr)]} { + return $attribVals($attr) + } else { + return "" + } + } + + default { + # + # Set the specified attributes to the given values + # + if {$argCount % 2 != 0} { + return -code error "value for \"[lindex $argList end]\" missing" + } + array set attribVals $argList + return "" + } + } +} + +#------------------------------------------------------------------------------ +# mwutil::configSubCmd +# +# This procedure is invoked to process configuration subcommands. +#------------------------------------------------------------------------------ +proc mwutil::configSubCmd {win configSpecsName configValsName + configCmd argList} { + upvar $configSpecsName configSpecs + upvar $configValsName configVals + + switch [llength $argList] { + 0 { + # + # Return a list describing all available configuration options + # + foreach opt [lsort [array names configSpecs]] { + if {[llength $configSpecs($opt)] == 1} { + set alias $configSpecs($opt) + if {$::tk_version < 8.1} { + set dbName [lindex $configSpecs($alias) 0] + lappend result [list $opt $dbName] + } else { + lappend result [list $opt $alias] + } + } else { + set dbName [lindex $configSpecs($opt) 0] + set dbClass [lindex $configSpecs($opt) 1] + set default [lindex $configSpecs($opt) 3] + lappend result [list $opt $dbName $dbClass $default \ + $configVals($opt)] + } + } + return $result + } + + 1 { + # + # Return the description of the specified configuration option + # + set opt [fullConfigOpt [lindex $argList 0] configSpecs] + set dbName [lindex $configSpecs($opt) 0] + set dbClass [lindex $configSpecs($opt) 1] + set default [lindex $configSpecs($opt) 3] + return [list $opt $dbName $dbClass $default $configVals($opt)] + } + + default { + # + # Set the specified configuration options to the given values + # + return [configure $win configSpecs configVals $configCmd \ + $argList no] + } + } +} + +# +# Private procedures used in bindings +# =================================== +# + +#------------------------------------------------------------------------------ +# mwutil::skipParent +# +# This procedure handles <Shift-Key-Tab> and <<PrevWindow>> events in the child +# w of a mega-widget. It generates the given event for the parent of the +# widget. +#------------------------------------------------------------------------------ +proc mwutil::skipParent {w event} { + set parent [winfo parent $w] + focus $parent ;# necessary on Windows + event generate $parent $event +} Property changes on: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/mwutil.tcl ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/notebook.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/notebook.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/notebook.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,87 @@ +# ---------------------------------------------------------------------- +# EXAMPLE: simple notebook that can dial up pages +# ---------------------------------------------------------------------- +# Effective Tcl/Tk Programming +# Mark Harrison, DSC Communications Corp. +# Michael McLennan, Bell Labs Innovations for Lucent Technologies +# Addison-Wesley Professional Computing Series +# ====================================================================== +# Copyright (c) 1996-1997 Lucent Technologies Inc. and Mark Harrison +# ====================================================================== + +package provide notebook 1.0 + +option add *Notebook.borderWidth 2 widgetDefault +option add *Notebook.relief sunken widgetDefault + +proc notebook_create {win} { + global nbInfo + + frame $win -class Notebook + pack propagate $win 0 + + set nbInfo($win-count) 0 + set nbInfo($win-pages) "" + set nbInfo($win-current) "" + return $win +} + +proc notebook_page {win name} { + global nbInfo + + set page "$win.page[incr nbInfo($win-count)]" + lappend nbInfo($win-pages) $page + set nbInfo($win-page-$name) $page + + frame $page + + if {$nbInfo($win-count) == 1} { + after idle [list notebook_display $win $name] + } + return $page +} + +proc notebook_display {win name} { + global nbInfo + + set page "" + if {[info exists nbInfo($win-page-$name)]} { + set page $nbInfo($win-page-$name) + } elseif {[winfo exists $win.page$name]} { + set page $win.page$name + } + if {$page == ""} { + error "bad notebook page \"$name\"" + } + + notebook_fix_size $win + + if {$nbInfo($win-current) != ""} { + pack forget $nbInfo($win-current) + } + pack $page -expand yes -fill both + set nbInfo($win-current) $page +} + +proc notebook_fix_size {win} { + global nbInfo + + update idletasks + + set maxw 0 + set maxh 0 + foreach page $nbInfo($win-pages) { + set w [winfo reqwidth $page] + if {$w > $maxw} { + set maxw $w + } + set h [winfo reqheight $page] + if {$h > $maxh} { + set maxh $h + } + } + set bd [$win cget -borderwidth] + set maxw [expr $maxw+2*$bd] + set maxh [expr $maxh+2*$bd] + $win configure -width $maxw -height $maxh +} Property changes on: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/notebook.tcl ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/pkgIndex.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/pkgIndex.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/pkgIndex.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,15 @@ +# Tcl package index file, version 1.1 +# This file is generated by the "pkg_mkIndex" command +# and sourced either when an application starts up or +# by a "package unknown" script. It invokes the +# "package ifneeded" command to set up package-related +# information so that packages will be loaded automatically +# in response to "package require" commands. When this +# script is sourced, the variable $dir must contain the +# full path name of this file's directory. + +package ifneeded Tablelist 2.6 [list source [file join $dir tablelist.tcl]] +package ifneeded mwutil 1.0 [list source [file join $dir mwutil.tcl]] +package ifneeded notebook 1.0 [list source [file join $dir notebook.tcl]] +package ifneeded tablelistWidget 1.0 [list source [file join $dir tablelistWidget.tcl]] +package ifneeded tablelistsort 1.0 [list source [file join $dir tablelistSortByColumn.tcl]] Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelist.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelist.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelist.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,33 @@ +#============================================================================== +# Main Tablelist package module. +# +# Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csa...@t-...) +#============================================================================== + +package require Tcl 8 +package require Tk 8 + + +namespace eval tablelist { + # + # Public variables: + # + variable version 2.6 + variable library [file dirname [info script]] + + # + # Creates a new tablelist widget: + # + namespace export tablelist + + # + # Sorts the items of a tablelist widget based on one of its columns: + # + namespace export sortByColumn +} +package require tablelistsort +package require mwutil +package require tablelistWidget +package provide Tablelist $tablelist::version + + Property changes on: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelist.tcl ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistSortByColumn.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistSortByColumn.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistSortByColumn.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,50 @@ +#============================================================================== +# Contains the implementation of the tablelist::sortByColumn command. +# +# Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csa...@t-...) +#============================================================================== +package provide tablelistsort 1.0 +namespace eval tablelist {} +#------------------------------------------------------------------------------ +# tablelist::sortByColumn +# +# Sorts the contents of the tablelist widget win by its col'th column. Returns +# the sorting order (increasing or decreasing). +#------------------------------------------------------------------------------ +proc tablelist::sortByColumn {win col} { + # + # Check the arguments + # + if {![winfo exists $win]} { + return -code error "bad window path name \"$win\"" + } + if {[string compare [winfo class $win] Tablelist] != 0} { + return -code error "window \"$win\" is not a tablelist widget" + } + if {[catch {::$win columnindex $col} result] != 0} { + return -code error $result + } + if {$result < 0 || $result >= [::$win columncount]} { + return -code error "column index \"$col\" out of range" + } + + # + # Determine the sorting order + # + set col $result + if {$col == [::$win sortcolumn] && + [string compare [::$win sortorder] increasing] == 0} { + set sortOrder decreasing + } else { + set sortOrder increasing + } + + # + # Sort the widget's contents based on the given column + # + if {[catch {::$win sortbycolumn $col -$sortOrder} result] == 0} { + return $sortOrder + } else { + return -code error $result + } +} Property changes on: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistSortByColumn.tcl ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistWidget.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistWidget.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/widgets/tablelistWidget.tcl 2015-06-09 21:46:39 UTC (rev 2328) @@ -0,0 +1,6463 @@ +#============================================================================== +# Contains the implementation of the tablelist widget. +# +# Structure of the module: +# - Namespace initialization +# - Public procedure +# - Private configuration procedures +# - Private procedures implementing the tablelist widget command +# - Private callback procedures +# - Private procedures used in bindings +# - Private helper procedures +# +# Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csa...@t-...) +#============================================================================== + +# +# Namespace initialization +# ======================== +# +package provide tablelistWidget 1.0 +if {[info var tk_version] == ""} { + return; # pkg_mkIndex runing us. +} + +namespace eval tablelist { + # + # The array configSpecs is used to handle configuration options. The + # names of its elements are the configuration options for the Tablelist + # class. The value of an array element is either an alias name or a list + # containing the database name and class as well as an indicator specifying + # the widget(s) to which the option applies: c stands for all children + # (text widgets and labels), b for the body text widget, h for the header + # text widget, l for the labels, f for the frame, and w for the widget + # itself. + # + # Command-Line Name {Database Name Database Class W} + # ------------------------------------------------------------------------ + # + variable configSpecs + array set configSpecs { + -activestyle {activeStyle ActiveStyle w} + -arrowcolor {arrowColor ArrowColor w} + -arrowdisabledcolor {arrowDisabledColor ArrowDisabledColor w} + -background {background Background b} + -bg -background + -borderwidth {borderWidth BorderWidth f} + -bd -borderwidth + -columns {columns Columns w} + -cursor {cursor Cursor c} + -disabledforeground {disabledForeground DisabledForeground w} + -exportselection {exportSelection ExportSelection w} + -font {font Font b} + -foreground {foreground Foreground b} + -fg -foreground + -height {height Height w} + -highlightbackground {highlightBackground HighlightBackground f} + -highlightcolor {highlightColor HighlightColor f} + -highlightthickness {highlightThickness HighlightThickness f} + -incrarrowtype {incrArrowType IncrArrowType w} + -labelbackground {labelBackground Background l} + -labelbg -labelbackground + -labelborderwidth {labelBorderWidth BorderWidth l} + -labelbd -labelborderwidth + -labelcommand {labelCommand LabelCommand w} + -labeldisabledforeground {labelDisabledForeground DisabledForeground l} + -labelfont {labelFont Font l} + -labelforeground {labelForeground Foreground l} + -labelfg -labelforeground + -labelheight {labelHeight Height l} + -labelpady {labelPadY Pad l} + -labelrelief {labelRelief Relief l} + -listvariable {listVariable Variable w} + -relief {relief Relief f} + -resizablecolumns {resizableColumns ResizableColumns w} + -resizecursor {resizeCursor ResizeCursor w} + -selectbackground {selectBackground Foreground w} + -selectborderwidth {selectBorderWidth BorderWidth w} + -selectforeground {selectForeground Background w} + -selectmode {selectMode SelectMode w} + -setgrid {setGrid SetGrid w} + -showarrow {showArrow ShowArrow w} + -showlabels {showLabels ShowLabels w} + -showseparators {showSeparators ShowSeparators w} + -sortcommand {sortCommand SortCommand w} + -state {state State w} + -stretch {stretch Stretch w} + -stripebackground {stripeBackground Background w} + -stripebg -stripebackground + -stripeforeground {stripeForeground Foreground w} + -stripefg -stripeforeground + -stripeheight {stripeHeight StripeHeight w} + -takefocus {takeFocus TakeFocus f} + -width {width Width w} + -xscrollcommand {xScrollCommand ScrollCommand h} + -yscrollcommand {yScrollCommand ScrollCommand b} + } + + proc extendConfigSpecs {} { + variable helpLabel + variable configSpecs + + # Kludges for 8.5: + + # + # Append the default values of the configuration options + # of a temporary, invisible listbox widget to the values + # of the corresponding elements of the array configSpecs + # + + set helpListbox .__helpListbox + for {set n 0} {[winfo exists $helpListbox]} {incr n} { + set helpListbox .__helpListbox$n + } + listbox $helpListbox + foreach configSet [$helpListbox config] { + if {[llength $configSet] != 2} { + set opt [lindex $configSet 0] + if {[info exists configSpecs($opt)]} { + lappend configSpecs($opt) [lindex $configSet 3] + } + } + } + destroy $helpListbox + + # + # Append the default values of some configuration options + # of an invisible label widget to the values of the + # corresponding -label* elements of the array configSpecs + # + set helpLabel .__helpLabel + for {set n 0} {[winfo exists $helpLabel]} {incr n} { + set helpLabel .__helpLabel$n + } + label $helpLabel + foreach optTail {font height} { + set configSet [$helpLabel config -$optTail] + lappend configSpecs(-label$optTail) [lindex $configSet 3] + } + if {[catch {$helpLabel config -state disabled}] == 0 && + [catch {$helpLabel config -state normal}] == 0 && + [catch {$helpLabel config -disabledforeground} configSet] == 0} { + lappend configSpecs(-labeldisabledforeground) [lindex $configSet 3] + } else { + unset configSpecs(-labeldisabledforeground) + } + if {[string compare $::tcl_platform(platform) windows] == 0} { + lappend configSpecs(-labelpady) 0 + } else { + set configSet [$helpLabel config -pady] + lappend configSpecs(-labelpady) [lindex $configSet 3] + } + + # + # Steal the default values of some configuration + # options from a temporary, invisible button widget + # + set helpButton .__helpButton + for {set n 0} {[winfo exists $helpButton]} {incr n} { + set helpButton .__helpButton$n + } + button $helpButton + foreach opt {-disabledforeground -state} { + set configSet [$helpButton config $opt] + lappend configSpecs($opt) [lindex $configSet 3] + } + foreach optTail {background foreground} { + set configSet [$helpButton config -$optTail] + lappend configSpecs(-label$optTail) [lindex $configSet 3] + } + if {[string compare $::tcl_platform(platform) macintosh] == 0} { + lappend configSpecs(-labelborderwidth) 1 + } else { + set configSet [$helpButton config -borderwidth] + lappend configSpecs(-labelborderwidth) [lindex $configSet 3] + } + destroy $helpButton + + # + # Extend the remaining elements of the array configSpecs + # + lappend configSpecs(-activestyle) underline + lappend configSpecs(-arrowcolor) {} + lappend configSpecs(-arrowdisabledcolor) {} + lappend configSpecs(-columns) {0 {} left} + lappend configSpecs(-incrarrowtype) up + lappend configSpecs(-labelcommand) {} + lappend configSpecs(-labelrelief) raised + lappend configSpecs(-listvariable) {} + lappend configSpecs(-resizablecolumns) 1 + lappend configSpecs(-resizecursor) sb_h_double_arrow + lappend configSpecs(-showarrow) 1 + lappend configSpecs(-showlabels) 1 + lappend configSpecs(-showseparators) 0 + lappend configSpecs(-sortcommand) {} + lappend configSpecs(-stretch) {} + lappend configSpecs(-stripebackground) {} + lappend configSpecs(-stripeforeground) {} + lappend configSpecs(-stripeheight) 1 + } + extendConfigSpecs + + variable configOpts [lsort [array names configSpecs]] + + # + # The array colConfigSpecs is used to handle column configuration options. + # The names of its elements are the column configuration options for the + # Tablelist widget class. The value of an array element is either an alias + # name or a list containing the database name and class. + # + # Command-Line Name {Database Name Database Class } + # ----------------------------------------------------------------- + # + variable colConfigSpecs + array set colConfigSpecs { + -align {align Align } + -background {background Background } + -bg -background + -font {font Font } + -foreground {foreground Foreground } + -fg -foreground + -formatcommand {formatCommand FormatCommand } + -hide {hide Hide } + -labelalign {labelAlign Align } + -labelbackground {labelBackground Background } + -labelbg -labelbackground + -labelborderwidth {labelBorderWidth BorderWidth } + -labelbd -labelborderwidth + -labelcommand {labelCommand LabelCommand } + -labelfont {labelFont Font } + -labelforeground {labelForeground Foreground } + -labelfg -labelforeground + -labelheight {labelHeight Height } + -labelimage {labelImage Image } + -labelpady {labelPadY Pad } + -labelrelief {labelRelief Relief } + -resizable {resizable Resizable } + -selectbackground {selectBackground Foreground } + -selectforeground {selectForeground Background } + -showarrow {showArrow ShowArrow } + -sortcommand {sortCommand SortCommand } + -sortmode {sortMode SortMode } + -title {title Title } + -width {width Width } + } + + # + # Extend some elements of the array colConfigSpecs + # + lappend colConfigSpecs(-align) - left + lappend colConfigSpecs(-hide) - 0 + lappend colConfigSpecs(-resizable) - 1 + lappend colConfigSpecs(-showarrow) - 1 + lappend colConfigSpecs(-sortmode) - ascii + lappend colConfigSpecs(-width) - 0 + + # + # The array rowConfigSpecs is used to handle row configuration options. + # The names of its elements are the row configuration options for the + # Tablelist widget class. The value of an array element is either an alias + # name or a list containing the database name and class. + # + # Command-Line Name {Database Name Database Class } + # ----------------------------------------------------------------- + # + variable rowConfigSpecs + array set rowConfigSpecs { + -background {background Background } + -bg -background + -font {font Font } + -foreground {foreground Foreground } + -fg -foreground + -selectable {selectable Selectable } + -selectbackground {selectBackground Foreground } + -selectforeground {selectForeground Background } + -text {text Text } + } + + # + # Extend some elements of the array rowConfigSpecs + # + lappend rowConfigSpecs(-selectable) - 1 + + # + # The array cellConfigSpecs is used to handle cell configuration options. + # The names of its elements are the cell configuration options for the + # Tablelist widget class. The value of an array element is either an alias + # name or a list containing the database name and class. + # + # Command-Line Name {Database Name Database Class } + # ----------------------------------------------------------------- + # + variable cellConfigSpecs + array set cellConfigSpecs { + -background {background Background } + -bg -background + -font {font Font } + -foreground {foreground Foreground } + -fg -foreground + -image {image Image } + -selectbackground {selectBackground Foreground } + -selectforeground {selectForeground Background } + -text {text Text } + } + + # + # Use a list to facilitate the handling of the command options + # + variable cmdOpts [list \ + activate attrib bbox bodypath cellcget cellconfigure cellindex \ + cget columncget columnconfigure columncount columnindex configure \ + curselection delete get index insert insertlist labelpath labels \ + nearest nearestcell nearestcolumn resetsortinfo rowcget rowconfigure \ + scan see selection separatorpath separators size sort sortbycolumn \ + sortcolumn sortorder xview yview] + + # + # Use lists to facilitate the handling of miscellaneous options + # + variable activeStyles [list underline frame dotbox] + variable alignments [list left right center] + variable arrowTypes [list up down] + variable states [list disabled normal] + variable sortModes [list ascii command dictionary integer real] + variable sortOrders [list -increasing -decreasing] + variable scanCmdOpts [list mark dragto] + variable selCmdOpts [list anchor clear includes set] + + # + # Define some Tablelist class bindings + # + bind Tablelist <FocusIn> { + tablelist::addActiveTag %W + + if {[string compare [focus -lastfor %W] %W] == 0} { + focus [%W bodypath] + } + } + bind Tablelist <FocusOut> { + tablelist::removeActiveTag %W + } + bind Tablelist <Destroy> { + tablelist::cleanup %W + } + + # + # Define the binding tag TablelistBody to have the same events as Listbox + # and the binding scripts obtained from those of Listbox by replacing the + # widget %W with [winfo parent %W] as well as the %x and %y fields with + # [expr {%x + [winfo x %W]}] and [expr {%y + [winfo y %W]}], respectively + # + proc defineTablelistBody {} { + foreach event [bind Listbox] { + set script [bind Listbox $event] + regsub -all %W $script {$tablelist::win} script + regsub -all %x $script {$tablelist::x} script + regsub -all %y $script {$tablelist::y} script + regsub -all {tk(::)?ListboxAutoScan} $script \ + tablelist::tablelistAutoScan script + + bind TablelistBody $event [format { + set tablelist::win [winfo parent %%W] + set tablelist::x [expr {%%x + [winfo x %%W]}] + set tablelist::y [expr {%%y + [winfo y %%W]}] + %s + } $script] + } + } + defineTablelistBody + + # + # Define the virtual event <<Button3>> + # + switch $::tcl_platform(platform) { + unix - + windows { + event add <<Button3>> <Button-3> + } + macintosh { + event add <<Button3>> <Control-Button-1> + } + } +} + +# +# Public procedure +# ================ +# + +#------------------------------------------------------------------------------ +# tablelist::tablelist +# +# Creates a new tablelist widget whose name is specified as the first command- +# line argument, and configures it according to the options and their values +# given on the command line. Returns the name of the newly created widget. +#------------------------------------------------------------------------------ +proc tablelist::tablelist args { + variable configSpecs + variable configOpts + + + + if {[llength $args] == 0} { + mwutil::wrongNumArgs "tablelist pathName ?options?" + } + + # + # Create a frame of the class Tablelist + # + set win [lindex $args 0] + if {[catch { + frame $win -class Tablelist -colormap . -container 0 \ + -height 0 -width 0 + } result] != 0} { + return -code error $result + } + + # + # Create a namespace within the current one to hold the data of the widget + # + namespace eval ns$win { + # + # The folowing array holds various data for this widget + # + variable data + array set data { + charWidth 1 + hasListVar 0 + isDisabled 0 + hdrPixels 0 + activeIdx 0 + anchorIdx 0 + seqNum -1 + itemList {} + itemCount 0 + lastRow -1 + colList {0 left} + colCount 1 + lastCol 0 + clickedLblCol -1 + arrowCol -1 + sortCol -1 + sortOrder {} + forceAdjust 0 + 0-delta 0 + 0-hide 0 + } + + # + # The following array is used to hold arbitrary + # attributes and their values for this widget + # + variable attribVals + } + # + # Initialize some further components of data + # + upvar ::tablelist::ns${win}::data data + foreach opt $configOpts { + set data($opt) [lindex $configSpecs($opt) 3] + } + set data(colFontList) [list $data(-font)] + set data(body) $win.body + set data(hdr) $win.hdr + set data(hdrTxt) $data(hdr).t + set data(hdrTxtFr) $data(hdrTxt).f + set data(hdrTxtFrCanv) $data(hdrTxtFr).c + set data(hdrTxtFrLbl) $data(hdrTxtFr).l + set data(hdrLbl) $data(hdr).l + set data(lb) $win.lb + set data(sep) $win.sep + + # + # Create a child hierarchy used to hold the column labels. The + # labels will be created as children of the frame data(hdrTxtFr), + # which is embedded into the text widget data(hdrTxt) (in order + # to make it scrollable), which in turn fills the frame data(hdr) + # (whose width and height can be set arbitrarily in pixels). + # + set w $data(hdr) ;# header frame + frame $w -borderwidth 0 -colormap . -container 0 -height 0 \ + -highlightthickness 0 -relief flat -takefocus 0 -width 0 + bind $w <Configure> [list tablelist::stretchColumnsWhenIdle $win] + pack $w -fill x + set w $data(hdrTxt) ;# text widget within the header frame + text $w -borderwidth 0 -highlightthickness 0 -insertwidth 0 \ + -padx 0 -pady 0 -state normal -takefocus 0 -wrap none + place $w -relheight 1.0 -relwidth 1.0 + frame $data(hdrTxtFr) -borderwidth 0 -colormap . -container 0 -height 0 \ + -highlightthickness 0 -relief flat -takefocus 0 \ + -width 0 + $w window create 1.0 -window $data(hdrTxtFr) + label $data(hdrTxtFrLbl)0 + set w $data(hdrLbl) ;# filler label within the header frame + label $w -bitmap "" -highlightthickness 0 -image "" -takefocus 0 \ + -text "" -textvariable "" -underline -1 -wraplength 0 + place $w -relheight 1.0 -relwidth 1.0 + + # + # Create a canvas as a child of the frame data(hdrTxtFr), + # needed for displaying an up- or down-arrow when + # sorting the items by a column. Set its width and + # height to temporary values and create two 3-D arrows + # + set w $data(hdrTxtFrCanv) + set size 9 + canvas $w -borderwidth 0 -height $size -highlightthickness 0 \ + -relief flat -takefocus 0 -width $size + create3DArrows $w + + # + # Remove the binding tag Text from the list + # of binding tags of the header text widget + # + set w $data(hdrTxt) + bindtags $w [list $w [winfo toplevel $w] all] + + # + # Create the body text widget within the main frame + # + set w $data(body) + text $w -borderwidth 0 -exportselection no -highlightthickness 0 \ + -insertwidth 0 -padx 0 -pady 0 -state normal \ + -takefocus tablelist::focusCtrl -wrap none + bind $w <Configure> [list tablelist::adjustSepsWhenIdle $win] + pack $w -expand yes -fill both + + # + # Replace the binding tags Text and all with TablelistBody and allModif, + # respectively, in the list of binding tags of the body text widget + # (see mwutil.tcl for the definition of the bindings for the tag allModif) + # + bindtags $w [list $w TablelistBody [winfo toplevel $w] allModif] + + # + # Create the "active", "stripe", "select", and "disabled" tags + # in the body text widget. Don't use the built-in "sel" tag + # because on Windows the selection in a text widget only + # becomes visible when the window gets the input focus. + # + $w tag configure stripe -background "" -foreground "" + $w tag configure active -borderwidth 1 -underline yes + $w tag configure select -relief raised + $w tag configure disabled -underline no + + # + # Create an unmanaged listbox child, used to handle the -setgrid option + # + listbox $data(lb) + + # + # Configure the widget according to the command-line + # arguments and to the available database options + # + if {[catch { + mwutil::configure $win configSpecs data tablelist::doConfig \ + [lrange $args 1 end] 1 + } result] != 0} { + destroy $win + return -code error $result + } + + + # + # Move the original widget command into the current namespace + # and build a new widget procedure in the global one + # + rename ::$win $win + proc ::$win args [format { + if {[catch {tablelist::tablelistWidgetCmd %s $args} result] == 0} { + return $result + } else { + return -code error $result + } + } [list $win]] + + # + # Register a callback to be invoked whenever the PRIMARY selection is + # owned by the window win and someone attempts to retrieve it as a STRING + # + selection handle $win [list ::tablelist::fetchSelection $win] + + return $win +} + +# +# Private configuration procedures +# ================================ +# + +#------------------------------------------------------------------------------ +# tablelist::doConfig +# +# Applies the value val of the configuration option opt to the tablelist widget +# win. +#------------------------------------------------------------------------------ +proc tablelist::doConfig {win opt val} { + variable helpLabel + variable configSpecs + upvar ::tablelist::ns${win}::data data + + # + # Apply the value to the widget(s) corresponding to the given option + # + switch [lindex $configSpecs($opt) 2] { + c { + # + # Apply the value to all children and save the + # properly formatted value of val in data($opt) + # + foreach w [winfo children $win] { + if {[regexp {^(body|hdr|sep[0-9]+)$} [winfo name $w]]} { + $w configure $opt $val + } + } + $data(hdrTxt) configure $opt $val + $data(hdrLbl) configure $opt $val + foreach w [winfo children $data(hdrTxtFr)] { + $w configure $opt $val + foreach c [winfo children $w] { + $c configure $opt $val + } + } + $helpLabel configure $opt $val + set data($opt) [$helpLabel cget $opt] + } + + b { + # + # Apply the value to the body text widget and save + # the properly formatted value of val in data($opt) + # + set w $data(body) + $w configure $opt $val + set data($opt) [$w cget $opt] + + switch -- $opt { + -background { + # + # Apply the value to the frame (because of the shadow + # colors of its 3-D border), to the header frame (this will + # make it fully invisible if the labels are not being + # shown), to the separators, and to the "disabled" tag + # + $win configure $opt $val + foreach c [winfo children $win] { + if {[regexp {^(hdr|sep[0-9]+)$} [winfo name $c]]} { + $c configure $opt $val + } + } + $w tag configure disabled $opt $val + } + -font { + # + # Apply the value to the listbox child, adjust the columns, + # rebuild the lists of the column fonts and tag names, + # and make sure the items will be redisplayed at idle time + # + $data(lb) configure $opt $val + set data(charWidth) [font measure $val -displayof $win 0] + makeColFontAndTagLists $win + adjustColumns $win all 1 + redisplayWhenIdle $win + } + -foreground { + # + # Apply the value to the "disabled" tag if needed + # + if {[string compare $data(-disabledforeground) ""] == 0} { + $w tag configure disabled $opt $val + } + } + } + } + + h { + # + # Apply the value to the header text widget and save + # the properly formatted value of val in data($opt) + # + set w $data(hdrTxt) + $w configure $opt $val + set data($opt) [$w cget $opt] + } + + l { + # + # Apply the value to all not individually configured labels + # and save the properly formatted value of val in data($opt) + # + set optTail [string range $opt 6 end] ;# remove the -label + for {set col 0} {$col < $data(colCount)} {incr col} { + set w $data(hdrTxtFrLbl)$col + if {![info exists data($col$opt)]} { + configLabel $w -$optTail $val + } + } + $helpLabel configure -$optTail $val + set data($opt) [$helpLabel cget -$optTail] + + switch -- $opt { + -labelbackground { + # + # Apply the value to the label child of the header frame + # and conditionally both to the children of the labels (if + # any) and to the canvas displaying an up- or down-arrow + # + $data(hdrLbl) configure -$optTail $val + for {set col 0} {$col < $data(colCount)} {incr col} { + set w $data(hdrTxtFrLbl)$col + if {![info exists data($col$opt)]} { + foreach c [winfo children $w] { + $c configure -$optTail $val + } + } + } + if {$data(arrowCol) >= 0 && + ![info exists data($data(arrowCol)$opt)]} { + configCanvas $win + } + } + -labelborderwidth { + # + # Apply the value to the label child of the + # header frame and adjust the columns + # (including the height of the header frame) + # + $data(hdrLbl) configure -$optTail $val + adjustColumns $win all 1 + } + -labeldisabledforeground { + # + # Apply the value to the children of the labels (if any) + # + foreach w [winfo children $data(hdrTxtFr)] { + foreach c [winfo children $w] { + $c configure $opt $val + } + } + } + -labelfont { + # + # Conditionally apply the value to the children of + # the labels (if any), conditionally resize the canvas + # displaying an up- or down-arrow, and adjust the + # columns (including the height of the header frame) + # + for {set col 0} {$col < $data(colCount)} {incr col} { + set w $data(hdrTxtFrLbl)$col + if {![info exists data($col$opt)]} { + foreach c [winfo children $w] { + $c configure -$optTail $val + } + } + } + if {$data(arrowCol) >= 0 && + ![info exists data($data(arrowCol)$opt)]} { + configCanvas $win + drawArrows $win + } + adjustColumns $win all 1 + } + -labelforeground { + # + # Conditionally apply the value to + # the children of the labels (if any) + # + for {set col 0} {$col < $data(colCount)} {incr col} { + set w $data(hdrTxtFrLbl)$col + if {![info exists data($col$opt)]} { + foreach c [winfo children $w] { + $c configure -$optTail $val + } + } + } + } + -labelheight - + -labelpady { + # + # Adjust the height of the header frame + # + adjustHeaderHeight $win + } + -labelrelief { + # + # Apply the value to the label child of the header frame + # + $data(hdrLbl) configure -$optTail $val + } + } + } + + f { + # + # Apply the value to the frame and save the + # properly formatted value of val in data($opt) + # + $win configure $opt $val + set data($opt) [$win cget $opt] + } + + w { + switch -- $opt { + -activestyle { + # + # Configure the "active" tag and save the + # properly formatted value of val in data($opt) + # + + variable activeStyles + set val [mwutil::fullOpt "active style" $val $activeStyles] + set w $data(body) + switch $val { + underline { + $w tag configure active -relief flat -underline 1 + } + frame { + $w tag configure active -relief solid -underline 0 + } + + } + set data($opt) $val + } + -arrowcolor { + # + # Set the color of the normal arrow and save the + # properly formatted value of val in data($opt) + # + set data($opt) [fillArrow $data(hdrTxtFrCanv) normal $val] + } + -arrowdisabledcolor { + # + # Set the color of the disabled arrow and save the + # properly formatted value of val in data($opt) + # + set data($opt) [fillArrow $data(hdrTxtFrCanv) disabled $val] + } + -columns { + # + # Set up and adjust the columns, rebuild + # the lists of the column fonts and tag + # names, and redisplay the items + # + setupColumns $win $val 1 + adjustColumns $win all 1 + makeColFontAndTagLists $win + redisplay $win 0 end + } + -disabledforeground { + # + # Configure the "disabled" tag in the body text widget and + # save the properly formatted value of val in data($opt) + # + set w $data(body) + if {[string compare $val ""] == 0} { + $w tag configure disabled -fgstipple gray50 \ + -foreground $data(-foreground) + set data($opt) "" + } else { + $w tag configure disabled -fgstipple "" \ + -foreground $val + set data($opt) [$w tag cget disabled -foreground] + } + } + -exportselection { + # + # Save the boolean value specified by val in + # data($opt). In addition, if the selection is + # exported and there are any selected rows in the + # widget then make win the new owner of the PRIMARY + # selection and register a callback to be invoked + # when it loses ownership of the PRIMARY selection + # + set data($opt) [expr {$val ? 1 : 0}] + if {$val && + [llength [$data(body) tag nextrange select 1.0]] != 0} { + selection own -command \ + [list ::tablelist::lostSelection $win] $win + } + } + -height { + # + # Adjust the height of the body text widget and save + # the properly formatted value of val in data($opt) + # + set val [format %d $val] ;# integer check with error msg + if {$val <= 0} { + $data(body) configure $opt $data(itemCount) + } else { + $data(body) configure $opt $val + } + set data($opt) $val + } + -incrarrowtype { + # + # Save the properly formatted value of val + # in data($opt) and draw the arrows if + # the canvas widget is presently mapped + # + variable arrowTypes + set data($opt) \ + [mwutil::fullOpt "arrow type" $val $arrowTypes] + if {$data(arrowCol) >= 0} { + drawArrows $win + } + } + -labelcommand - + -selectmode - + -sortcommand { + # + # Save val in data($opt) + # + set data($opt) $val + } + -listvariable { + # + # Associate val as list variable with the + # given widget and save it in data($opt) + # + makeListVar $win $val + set data($opt) $val + if {[string compare $val ""] == 0} { + set data(hasListVar) 0 + } else { + set data(hasListVar) 1 + } + } + -resizablecolumns { + # + # Save the boolean value specified by val in data($opt) + # + set data($opt) [expr {$val ? 1 : 0}] + } + -resizecursor { + # + # Save the properly formatted value of val in data($opt) + # + $helpLabel configure -cursor $val + set data($opt) [$helpLabel cget -cursor] + } + -selectbackground - + -selectforeground { + # + # Configure the "select" tag in the body text widget + # and save the properly formatted value of val in + # data($opt). Don't use the built-in "sel" tag + # because on Windows the selection in a text widget only + # becomes visible when the window gets the input focus. + # + set w $data(body) + set optTail [string range $opt 7 end] ;# remove the -select + $w tag configure select -$optTail $val + set data($opt) [$w tag cget select -$optTail] + } + -selectborderwidth { + # + # Configure the "select" tag in the body text widget + # and save the properly formatted value of val in + # data($opt). Don't use the built-in "sel" tag + # because on Windows the selection in a text widget only + # becomes visible when the window gets the input focus. + # In addition, adjust the line spacing accordingly and + # apply the value to the listbox child, too. + # + set w $data(body) + set optTail [string range $opt 7 end] ;# remove the -select + $w tag configure select -$optTail $val + set data($opt) [$w tag cget select -$optTail] + if {$val < 0} { + set val 0 + } + $w configure -spacing1 $val -spacing3 [expr {$val + 1}] + $data(lb) configure $opt $val + } + -setgrid { + # + # Apply the value to the listbox child and save + # the properly formatted value of val in data($opt) + # + $data(lb) configure $opt $val + set data($opt) [$data(lb) cget $opt] + } + -showarrow { + # + # Save the boolean value specified by val in + # data($opt) and conditionally unmanage the + # canvas displaying an up- or down-arrow + # + set data($opt) [expr {$val ? 1 : 0}] + if {!$data($opt)} { + place forget $data(hdrTxtFrCanv) + set colOfUnknownWidth $data(arrowCol) + set data(arrowCol) -1 + adjustColumns $win $colOfUnknownWidth 1 + } + } + -showlabels { + # + # Save the boolean value specified by val in data($opt) + # and adjust the height of the header frame + # + set data($opt) [expr {$val ? 1 : 0}] + adjustHeaderHeight $win + } + -showseparators { + # + # Save the boolean value specified by val in data($opt), + # and create or destroy the separators if needed + # + set oldVal $data($opt) + set data($opt) [expr {$val ? 1 : 0}] + if {!$oldVal && $data($opt)} { + createSeps $win + } elseif {$oldVal && !$data($opt)} { + foreach w [winfo children $win] { + if {[regexp {^sep[0-9]+$} [winfo name $w]]} { + destroy $w + } + } + } + } + -state { + # + # Apply the value to all labels and their children (if + # any), raise the corresponding arrow in the canvas, + # add/remove the "disabled" tag to/from the contents + # of the body text widget, configure the borderwidth + # of the "active" and "select" tags, and save the + # properly formatted value of val in data($opt) + # + variable states + set val [mwutil::fullOpt "state" $val $states] + catch { + foreach w [winfo children $data(hdrTxtFr)] { + $w configure $opt $val + foreach c [winfo children $w] { + $c configure $opt $val + } + } + } + raiseArrow $data(hdrTxtFrCanv) $val + set w $data(body) + switch $val { + disabled { + $w tag add disabled 1.0 end + $w tag configure active -borderwidth 0 + $w tag configure select -borderwidth 0 + set data(isDisabled) 1 + } + normal { + $w tag remove disabled 1.0 end + $w tag configure active -borderwidth 1 + $w tag configure select -borderwidth \ + $data(-selectborderwidth) + set data(isDisabled) 0 + } + } + set data($opt) $val + } + -stretch { + # + # Save val in data($opt) and + # stretch the stretchable columns + # + if {[string first $val all] == 0} { + set data($opt) all + } else { + foreach col $val { + colIndex $win $col 0 ;# index check with error msg + } + set data($opt) $val + } + set data(forceAdjust) 1 + stretchColumnsWhenIdle $win + } + -stripebackground - + -stripeforeground { + # + # Configure the "stripe" tag in the body text + # widget, save the properly formatted value of val + # in data($opt), and draw the stripes if necessary + # + set w $data(body) + set optTail [string range $opt 7 end] ;# remove the -stripe + $w tag configure stripe -$optTail $val + set data($opt) [$w tag cget stripe -$optTail] + makeStripesWhenIdle $win + } + -stripeheight { + # + # Save the properly formatted value of val val + # data($opt) and draw the stripes if necessary + # + set val [format %d $val] ;# integer check with error msg + set data($opt) $val + makeStripesWhenIdle $win + } + -width { + # + # Adjust the widths of the body text widget + # and of the header frame, and save the + # properly formatted value of val in data($opt) + # + set val [format %d $val] ;# integer check with error msg + $data(body) configure $opt $val + if {$val <= 0} { + $data(hdr) configure $opt $data(hdrPixels) + } else { + $data(hdr) configure $opt 0 + } + set data($opt) $val + } + } + } + } +} + +#------------------------------------------------------------------------------ +# tablelist::doColConfig +# +# Applies the value val of the column configuration option opt to the col'th +# column of the tablelist widget win. +#------------------------------------------------------------------------------ +proc tablelist::doColConfig {col win opt val} { + upvar ::tablelist::ns${win}::data data + + switch -- $opt { + -align { + # + # Set up and adjust the columns, and make sure the + # given column will be redisplayed at idle time + # + set idx [expr {3*$col + 2}] + setupColumns $win [lreplace $data(-columns) $idx $idx $val] 0 + adjustColumns $win -1 1 + redisplayColWhenIdle $win $col + } + + -background - + -foreground { + set w $data(body) + set tag $col$opt + if {[string compare $val ""] == 0} { + if {[info exists data($tag)]} { + $w tag delete $tag + unset data($tag) + } + } else { + # + # Configure the tag $tag in the body text widget + # + $w tag configure $tag $opt $val + $w tag raise $tag stripe + + if {!$data($col-hide)} { + # + # Apply the tag to the elements of the given column + # + for {set idx 0; set line 1} {$idx < $data(itemCount)} \ + {incr idx; incr line} { + if {[lsearch -exact [$w tag names $line.0] select] + < 0} { + ... [truncated message content] |
From: <ro...@us...> - 2015-06-09 11:12:58
|
Revision: 2327 http://sourceforge.net/p/nsclspectcl/code/2327 Author: ron-fox Date: 2015-06-09 11:12:56 +0000 (Tue, 09 Jun 2015) Log Message: ----------- Remove default parameter for munitemplate constructor impl. Only allowed in def. Modified Paths: -------------- branches/4.0-dev/SpectrumIO/nscldata.cpp Modified: branches/4.0-dev/SpectrumIO/nscldata.cpp =================================================================== --- branches/4.0-dev/SpectrumIO/nscldata.cpp 2015-06-09 10:39:07 UTC (rev 2326) +++ branches/4.0-dev/SpectrumIO/nscldata.cpp 2015-06-09 11:12:56 UTC (rev 2327) @@ -49,7 +49,7 @@ } template <class T> -muintemplate<T>::muintemplate(int x, int y = 1): xlength(x), ylength(y) { +muintemplate<T>::muintemplate(int x, int y): xlength(x), ylength(y) { if (ylength == 0) ylength = 1; if ((xlength>0) && (ylength >0)) { data = new T[xlength * ylength]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-06-09 10:39:09
|
Revision: 2326 http://sourceforge.net/p/nsclspectcl/code/2326 Author: ron-fox Date: 2015-06-09 10:39:07 +0000 (Tue, 09 Jun 2015) Log Message: ----------- Remove big copyright notice. Modified Paths: -------------- trunk/main/Display/dispwind.h trunk/main/Display/select2.h Modified: trunk/main/Display/dispwind.h =================================================================== --- trunk/main/Display/dispwind.h 2015-06-08 20:57:11 UTC (rev 2325) +++ trunk/main/Display/dispwind.h 2015-06-09 10:39:07 UTC (rev 2326) @@ -348,7 +348,6 @@ SuperpositionList additional_spectra; public: // Constructors - win_1d() { set_defaults(); } win_1d(int spnum): win_attributed(spnum) { set_defaults(); } win_1d(win_attributed &generics) { Modified: trunk/main/Display/select2.h =================================================================== --- trunk/main/Display/select2.h 2015-06-08 20:57:11 UTC (rev 2325) +++ trunk/main/Display/select2.h 2015-06-09 10:39:07 UTC (rev 2326) @@ -1,280 +1,21 @@ /* - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2014. - 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. + Authors: + Ron Fox + Jeromy Tompkins + 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 ' -*/ /* ** Facility: ** Xamine -- NSCL display program. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-06-08 20:57:13
|
Revision: 2325 http://sourceforge.net/p/nsclspectcl/code/2325 Author: ron-fox Date: 2015-06-08 20:57:11 +0000 (Mon, 08 Jun 2015) Log Message: ----------- Remove invalid default parameter from method implementation signature. Modified Paths: -------------- trunk/main/SpectrumIO/nscldata.cpp Modified: trunk/main/SpectrumIO/nscldata.cpp =================================================================== --- trunk/main/SpectrumIO/nscldata.cpp 2015-06-08 20:16:52 UTC (rev 2324) +++ trunk/main/SpectrumIO/nscldata.cpp 2015-06-08 20:57:11 UTC (rev 2325) @@ -48,7 +48,7 @@ } template <class T> -muintemplate<T>::muintemplate(int x, int y = 1): xlength(x), ylength(y) { +muintemplate<T>::muintemplate(int x, int y): xlength(x), ylength(y) { if (ylength == 0) ylength = 1; if ((xlength>0) && (ylength >0)) { data = new T[xlength * ylength]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-06-08 20:16:56
|
Revision: 2324 http://sourceforge.net/p/nsclspectcl/code/2324 Author: ron-fox Date: 2015-06-08 20:16:52 +0000 (Mon, 08 Jun 2015) Log Message: ----------- Remove disallowed default parameter to mutemplate. Problem discovered compiling for Debian jesse. Modified Paths: -------------- branches/SpecTcl-3.3-maintenance/SpectrumIO/nscldata.cpp Modified: branches/SpecTcl-3.3-maintenance/SpectrumIO/nscldata.cpp =================================================================== --- branches/SpecTcl-3.3-maintenance/SpectrumIO/nscldata.cpp 2015-05-23 15:32:26 UTC (rev 2323) +++ branches/SpecTcl-3.3-maintenance/SpectrumIO/nscldata.cpp 2015-06-08 20:16:52 UTC (rev 2324) @@ -48,7 +48,7 @@ } template <class T> -muintemplate<T>::muintemplate(int x, int y = 1): xlength(x), ylength(y) { +muintemplate<T>::muintemplate(int x, int y): xlength(x), ylength(y) { if (ylength == 0) ylength = 1; if ((xlength>0) && (ylength >0)) { data = new T[xlength * ylength]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2015-05-23 15:32:27
|
Revision: 2323 http://sourceforge.net/p/nsclspectcl/code/2323 Author: ron-fox Date: 2015-05-23 15:32:26 +0000 (Sat, 23 May 2015) Log Message: ----------- Add sample scaler file for SpecTcl scaler display integration. Added Paths: ----------- branches/LLNLMadcChainSpecTcl-mtdcdev/scalerdisplay.tcl Added: branches/LLNLMadcChainSpecTcl-mtdcdev/scalerdisplay.tcl =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/scalerdisplay.tcl (rev 0) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/scalerdisplay.tcl 2015-05-23 15:32:26 UTC (rev 2323) @@ -0,0 +1,61 @@ +namespace eval scaler { + +page scalers {Scaler Rates} + +# Scaler channels 1-8 uninhibited, 9-16 inhibited +# for dets 1-8 + +set det 1 +for {set i 0} {$i < 8} {incr i} { + set den [format det-%02d $det] + set num [expr $i + 8] + set numlabel [format det-%02d.live $det] + + channel $den $i + channel $numlabel $num + + incr det + + +} +# channels 17-32 unused +# Channels 33 - 40 - uninhibited +# Channels 41 - 48 - inhibited. +# for dets 8-16 + +set channel 32 +set det 9 +for {set i 0} {$i < 8} {incr i} { + set numchan [expr $channel + 8] + + set num [format det-%02d.live $det] + set den [format det-%02d $det] + channel $num $numchan + channel $den $channel + + incr channel + incr det +} +# +# Finally the third scaler has detectors 17-24. + +set channel 64 +set det 17 +for {set i 0} {$i < 8} {incr i} { + set numchan [expr $channel + 8] + + set num [format det-%02d.live $det] + set den [format det-%02d $det] + channel $num $numchan + channel $den $channel + + incr channel + incr det +} + +for {set i 1} {$i <= 24} {incr i} { + set num [format det-%02d.live $i] + set den [format det-%02d $i] + display_ratio scalers $num $den +} +} \ No newline at end of file Property changes on: branches/LLNLMadcChainSpecTcl-mtdcdev/scalerdisplay.tcl ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |