Commit 0a6d6864 authored by hrchilds's avatar hrchilds

Update from April 19, 2004

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@225 18c085ea-50e0-402c-830e-de6fd14e8384
parent 4d3e3d6b
......@@ -456,9 +456,9 @@ env command for configure.
#
# Build and install it in the visit directory.
#
gunzip visit040308.tar.gz
tar xf visit040308.tar
cd visit040308/config-site
gunzip visit040419.tar.gz
tar xf visit040419.tar
cd visit040419/config-site
echo VISITHOME=`cat ../../visitpath` > `hostname`.conf
cat Template.conf >> `hostname`.conf
cd ..
......@@ -467,11 +467,11 @@ make
clearcase_bin/visit-bin-dist
# Use the appropriate install command based on the operating system on
# which you built VisIt.
clearcase_bin/visit-install 1.2.8 aix `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 irix6 `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 linux `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 osf1 `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 sunos5 `cat ../visitpath`
clearcase_bin/visit-install 1.3 aix `cat ../visitpath`
clearcase_bin/visit-install 1.3 irix6 `cat ../visitpath`
clearcase_bin/visit-install 1.3 linux `cat ../visitpath`
clearcase_bin/visit-install 1.3 osf1 `cat ../visitpath`
clearcase_bin/visit-install 1.3 sunos5 `cat ../visitpath`
When running the configure script you can enable or disable certain dependent
packages. All the configure options are listed at the beginning of the
......
......@@ -17,7 +17,7 @@ Unix and Mac OS X:
where
"version" will be 1.2.8 for the current distribution.
"version" will be 1.3 for the current distribution.
"platform" will be one of the following: aix, darwin, irix6, linux,
osf1, or sunos5 depending on the machine. The one you use should
......@@ -28,17 +28,17 @@ Unix and Mac OS X:
For example
visit-install 1.2.8 irix6 /usr/local/visit
visit-install 1.3 irix6 /usr/local/visit
will install the irix6, 1.2.8 version of visit in the directory
will install the irix6, 1.3 version of visit in the directory
"/usr/local/visit". Note that you will need to have the file
"visit1_2_8.irix6.tar.gz" present in the current directory for this
"visit1_3.irix6.tar.gz" present in the current directory for this
to function properly. You can install multiple binaries into the
same directory. For example, you could then execute
visit-install -a 1.2.8 linux /usr/local/visit
visit-install -a 1.3 linux /usr/local/visit
to add a linux, 1.2.8 version of visit to the same directory.
to add a linux, 1.3 version of visit to the same directory.
2. Add the bin directory below the installation directory
(/usr/local/visit/bin in our example) to each user's search path.
......@@ -76,8 +76,8 @@ Unix and Mac OS X:
Windows:
1. Copy the file visit1.2.8.exe to your desktop.
1. Copy the file visit1.3.exe to your desktop.
2. Double click on the visit1.2.8.exe icon to run the installer.
2. Double click on the visit1.3.exe icon to run the installer.
3. Follow the directions provided by the installer.
......@@ -204,6 +204,9 @@ typedef struct
// Kathleen Bonnell, Tue Jan 13 08:48:14 PST 2004
// Added BadNodeException.
//
// Mark C. Miller, Mon Apr 19 11:41:07 PDT 2004
// Added PlotterException base class for plotter exceptions
//
static const exception_info exception_tree[] =
{
......@@ -236,7 +239,7 @@ static const exception_info exception_tree[] =
{"IntervalTreeNotCalculatedException", "PipelineException"},
{"InvalidCategoryException", "PipelineException"},
{"InvalidCellTypeException", "PipelineException"},
{"InvalidColortableException", "VisItException"},
{"InvalidColortableException", "PlotterException"},
{"InvalidDBTypeException", "DatabaseException"},
{"InvalidDimensionsException", "PipelineException"},
{"InvalidDirectoryException", "VisItException"},
......
......@@ -86,6 +86,9 @@
# Kathleen Bonnell, Tue Jan 13 08:48:14 PST 2004
# Added BadNodeException.
#
# Mark C. Miller, Mon Apr 19 12:00:52 PDT 2004
# Added PlotterException base class
#
##############################################################################
@SET_MAKE@
......
......@@ -10,10 +10,15 @@
// Programmer: Brad Whitlock
// Creation: Fri Apr 25 10:24:10 PDT 2003
//
// Modifications:
//
// Mark C. Miller, Mon Apr 19 12:00:52 PDT 2004
// Made it inheret from new base class for PlotterException
//
// ****************************************************************************
InvalidColortableException::InvalidColortableException(const std::string &ct) :
VisItException()
PlotterException()
{
msg = std::string("There is no color table named \"") + ct +
std::string("\". You need to specify the name of a valid color table.");
......
......@@ -6,8 +6,7 @@
#define INVALID_COLORTABLE_EXCEPTION_H
#include <avtexception_exports.h>
#include <VisItException.h>
#include <PlotterException.h>
// ****************************************************************************
// Class: InvalidColortableException
......@@ -19,9 +18,13 @@
// Programmer: Brad Whitlock
// Creation: Fri Apr 25 10:22:30 PDT 2003
//
// Modifications:
// Mark C. Miller, Wed Apr 14 18:18:30 PDT 2004
// Modified to inherent from new PlotterException base class
//
// ****************************************************************************
class AVTEXCEPTION_API InvalidColortableException : public VisItException
class AVTEXCEPTION_API InvalidColortableException : public PlotterException
{
public:
InvalidColortableException(const std::string &ct);
......
// ************************************************************************* //
// PlotterException.h //
// ************************************************************************* //
#ifndef PLOTTER_EXCEPTION_H
#define PLOTTER_EXCEPTION_H
#include <avtexception_exports.h>
#include <VisItException.h>
// ****************************************************************************
// Class: PlotterException
//
// Purpose:
// A base class for all plotter exceptions. Meant to make logic easier
// on catches.
//
// Programmer: Mark C. Miller
// Creation: April 14, 2004
//
// ****************************************************************************
class AVTEXCEPTION_API PlotterException : public VisItException
{
public:
~PlotterException() VISIT_THROW_NOTHING {;};
};
#endif
......@@ -2456,6 +2456,9 @@ ViewerPlot::GetReader() const
// Eric Brugger, Tue Mar 30 15:26:33 PST 2004
// Added code to set the plot data extents if maintain data limits is set.
//
// Mark C. Miller, Mon Apr 19 12:00:52 PDT 2004
// Added code to issue a warning message if actor has no data
//
// ****************************************************************************
// only place in ViewerPlot where ViewerWindowManager is needed
......@@ -2629,6 +2632,20 @@ ViewerPlot::CreateActor(bool createNew, bool turningOffScalableRendering)
TRY
{
avtActor_p actor = plotList[cacheIndex]->Execute(reader);
//
// Issue a warning if this actor has no data
//
bool polysOnly = false;
if (actor->GetDataObject()->GetNumberOfCells(polysOnly) == 0)
{
char message[128];
SNPRINTF(message, sizeof(message),
"The %s plot of \"%s\" yielded no data",
GetPlotName(), GetVariableName().c_str());
Warning(message);
}
this->SetActor(actor);
// Indicate that this plot has no error.
......
......@@ -337,7 +337,8 @@ ViewerPlotList::HasActiveTimeSlider() const
//
// Modifications:
// Brad Whitlock, Fri Apr 2 14:43:29 PST 2004
// I added keyframing support.
// I added keyframing support and added conditionally compiled debugging
// statements.
//
// ****************************************************************************
......@@ -370,7 +371,13 @@ ViewerPlotList::GetTimeSliderInformation(int &activeTS,
StringIntMap::const_iterator pos =
timeSliders.find(plots[index].plot->GetSource());
if(pos != timeSliders.end())
{
#ifdef debug_GetTimeSliderInformation
debug3 << "Adding plot " << index << "'s source:"
<< pos->first.c_str() << endl;
#endif
uniqueTSNames[pos->first] = pos->second;
}
}
//
......@@ -402,7 +409,12 @@ ViewerPlotList::GetTimeSliderInformation(int &activeTS,
// sliders so we can add it.
StringIntMap::const_iterator ts = timeSliders.find(c.GetName());
if(ts != timeSliders.end())
{
#ifdef debug_GetTimeSliderInformation
debug3 << "Added correlation " << ts->first << endl;
#endif
uniqueTSNames[ts->first] = ts->second;
}
}
}
}
......@@ -415,7 +427,12 @@ ViewerPlotList::GetTimeSliderInformation(int &activeTS,
StringIntMap::const_iterator pos = uniqueTSNames.find(activeTimeSlider);
StringIntMap::const_iterator pos2 = timeSliders.find(activeTimeSlider);
if(pos == uniqueTSNames.end() && pos2 != timeSliders.end())
{
#ifdef debug_GetTimeSliderInformation
debug3 << "Added active time slider: " << pos2->first << endl;
#endif
uniqueTSNames[pos2->first] = pos2->second;
}
}
//
......@@ -429,7 +446,12 @@ ViewerPlotList::GetTimeSliderInformation(int &activeTS,
{
StringIntMap::const_iterator pos = timeSliders.find(hostDatabaseName);
if(pos != timeSliders.end())
uniqueTSNames[pos->first] = pos->second;
{
#ifdef debug_GetTimeSliderInformation
debug3 << "Added active source: " << pos->first << endl;
#endif
uniqueTSNames[pos->first] = pos->second;
}
}
//
......@@ -453,7 +475,8 @@ ViewerPlotList::GetTimeSliderInformation(int &activeTS,
}
// Print out the time slider list.
#if 0
#ifdef debug_GetTimeSliderInformation
debug3 << "*******\nActive time slider index: " << activeTS << endl;
for(index = 0; index < tsNames.size(); ++index)
{
debug3 << " " << tsNames[index]
......@@ -529,6 +552,104 @@ ViewerPlotList::CreateTimeSlider(const std::string &newTimeSlider, int state)
timeSliders[newTimeSlider] = state;
}
// ****************************************************************************
// Method: ViewerPlotList::ValidateTimeSlider
//
// Purpose:
// Makes sure that we don't have a time slider if it is not appropriate to
// have one.
//
// Arguments:
//
// Returns:
//
// Note:
//
// Programmer: Brad Whitlock
// Creation: Mon Apr 19 08:59:42 PDT 2004
//
// Modifications:
//
// ****************************************************************************
void
ViewerPlotList::ValidateTimeSlider()
{
ViewerFileServer *fs = ViewerFileServer::Instance();
DatabaseCorrelationList *cL = fs->GetDatabaseCorrelationList();
if(HasActiveTimeSlider())
{
// There is an active time slider.
// If the active source is an MT database and it is not used in the
// active time slider's correlation, change the active time slider
// so we use the active source.
DatabaseCorrelation *tsCorrelation = cL->
FindCorrelation(activeTimeSlider);
if(tsCorrelation != 0)
{
//
// Get a list of the MT sources between the plot list and the
// active source.
//
int MTcount = 0;
bool hostDBIsMT = false;
if(cL->FindCorrelation(hostDatabaseName) != 0)
{
++MTcount;
hostDBIsMT = true;
}
for(int i = 0; i < nPlots; ++i)
{
if(cL->FindCorrelation(plots[i].plot->GetSource()) != 0)
++MTcount;
}
if(MTcount == 0)
{
debug1 << "There were no MT databases so there can't be "
"an active time slider." << endl;
activeTimeSlider = "";
}
else
{
// The active source is MT
if(hostDBIsMT)
{
if(!tsCorrelation->UsesDatabase(hostDatabaseName))
{
debug1 << "The plot list was using a time slider "
"that was not compatible with the active "
"source: "
<< hostDatabaseName.c_str()
<< " so use the active source for the new "
"time slider." << endl;
activeTimeSlider = hostDatabaseName;
}
}
// else do nothing because even though the hostDB is ST
// there are other plots that are MT so don't change the
// time slider.
}
}
}
else
{
// If there is no time slider but our active source is MT then
// set the time slider to be the active source.
DatabaseCorrelation *srcCorrelation = cL->
FindCorrelation(hostDatabaseName);
if(srcCorrelation != 0)
{
if(TimeSliderExists(hostDatabaseName))
activeTimeSlider = hostDatabaseName;
else
CreateTimeSlider(hostDatabaseName, 0);
}
}
}
// ****************************************************************************
// Method: ViewerPlotList::GetTimeSliderStates
//
......@@ -602,17 +723,15 @@ ViewerPlotList::GetTimeSliderStates(const std::string &ts, int &state,
// Creation: April 16, 2004
//
// Modifications:
// Brad Whitlock, Mon Apr 19 08:27:20 PDT 2004
// Removed unnecessary coding.
//
// ****************************************************************************
bool
ViewerPlotList::TimeSliderExists(const std::string &ts) const
{
ViewerFileServer *fs = ViewerFileServer::Instance();
DatabaseCorrelationList *cL = fs->GetDatabaseCorrelationList();
StringIntMap::const_iterator pos = timeSliders.find(ts);
return pos != timeSliders.end();
return timeSliders.find(ts) != timeSliders.end();
}
// ****************************************************************************
......@@ -3072,6 +3191,10 @@ ViewerPlotList::DeletePlot(ViewerPlot *whichOne, bool doUpdate)
// call to set the opaque flag for mesh plots since it is now done when
// plots are added to the window.
//
// Brad Whitlock, Mon Apr 19 08:30:55 PDT 2004
// I added code to make sure that we don't set the time slider to the
// active source unless the active source is an MT database.
//
// ****************************************************************************
void
......@@ -3129,7 +3252,8 @@ ViewerPlotList::DeleteActivePlots()
DatabaseCorrelation *tsCorrelation = cL->FindCorrelation(
activeTimeSlider);
if(tsCorrelation != 0 &&
!tsCorrelation->UsesDatabase(hostDatabaseName))
!tsCorrelation->UsesDatabase(hostDatabaseName) &&
cL->FindCorrelation(hostDatabaseName) != 0)
{
SetActiveTimeSlider(hostDatabaseName);
......
......@@ -190,6 +190,9 @@ typedef std::map<std::string, int> StringIntMap;
// Eric Brugger, Fri Apr 16 18:32:47 PDT 2004
// I added TimeSliderExists.
//
// Brad Whitlock, Mon Apr 19 09:04:41 PDT 2004
// I added ValidateTimeSlider.
//
// ****************************************************************************
......@@ -225,6 +228,7 @@ public:
bool DeleteTimeSlider(const std::string &ts, bool update = true);
void GetTimeSliderStates(const std::string &ts, int &state, int &nStates) const;
bool TimeSliderExists(const std::string &ts) const;
void ValidateTimeSlider();
void ForwardStep();
void BackwardStep();
void SetTimeSliderState(int state);
......
......@@ -3138,11 +3138,18 @@ ViewerSubject::CreateAttributesDataNode(const avtDefaultPlotMetaData *dp) const
// Made it re-use command line arguments if we had some, as long as
// we were in nowin mode.
//
// Brad Whitlock, Mon Apr 19 10:04:47 PDT 2004
// I added the updateWindowInfo argument so we don't always have to update
// the window information since that can cause extra updates in the gui.
// I also added code to make the plot list check its active source vs the
// active time slider so it can reset the active time slider if it no
// longer makes sense to have one.
//
// ****************************************************************************
void
ViewerSubject::OpenDatabaseHelper(const std::string &entireDBName,
int timeState, bool addDefaultPlots)
int timeState, bool addDefaultPlots, bool updateWindowInfo)
{
int i;
......@@ -3198,6 +3205,13 @@ ViewerSubject::OpenDatabaseHelper(const std::string &entireDBName,
timeSliderState, md->GetNumStates());
}
//
// Make sure that it is appropriate to have the time slider that
// is currently used in the plot list.
//
if(!wM->GetActiveWindow()->GetTimeLock())
plotList->ValidateTimeSlider();
//
// Update the global atts since that has the list of sources.
//
......@@ -3208,8 +3222,11 @@ ViewerSubject::OpenDatabaseHelper(const std::string &entireDBName,
// slider and time slider states when the new database was opened, send
// back the source, time sliders, and animation information.
//
wM->UpdateWindowInformation(WINDOWINFO_SOURCE | WINDOWINFO_TIMESLIDERS |
WINDOWINFO_ANIMATION);
if(updateWindowInfo)
{
wM->UpdateWindowInformation(WINDOWINFO_SOURCE |
WINDOWINFO_TIMESLIDERS | WINDOWINFO_ANIMATION);
}
//
// Update the expression list.
......@@ -3346,13 +3363,16 @@ ViewerSubject::OpenDatabaseHelper(const std::string &entireDBName,
// Brad Whitlock, Wed Oct 22 12:28:57 PDT 2003
// I made it possible for default plots to not be added.
//
// Brad Whitlock, Mon Apr 19 10:00:13 PDT 2004
// I added another argument to OpenDatabaseHelper.
//
// ****************************************************************************
void
ViewerSubject::OpenDatabase()
{
OpenDatabaseHelper(viewerRPC.GetDatabase(), viewerRPC.GetIntArg1(),
viewerRPC.GetBoolFlag());
viewerRPC.GetBoolFlag(), true);
}
// ****************************************************************************
......@@ -3367,6 +3387,8 @@ ViewerSubject::OpenDatabase()
// Creation: Thu Jan 29 23:46:49 PST 2004
//
// Modifications:
// Brad Whitlock, Mon Apr 19 10:00:13 PDT 2004
// I added another argument to OpenDatabaseHelper.
//
// ****************************************************************************
......@@ -3403,7 +3425,7 @@ ViewerSubject::ActivateDatabase()
else
{
// We have not seen the database before so open it.
OpenDatabaseHelper(database, 0, true);
OpenDatabaseHelper(database, 0, true, true);
}
}
......@@ -3480,6 +3502,9 @@ ViewerSubject::CheckForNewStates()
// Added the reOpenState to the ReplaceDatabase call so that the right
// MD/SIL would get used in all circumstances.
//
// Brad Whitlock, Mon Apr 19 10:00:13 PDT 2004
// I added another argument to OpenDatabaseHelper.
//
// ****************************************************************************
void
......@@ -3584,7 +3609,7 @@ ViewerSubject::ReOpenDatabase()
//
// Open the database.
//
OpenDatabaseHelper(hostDatabase, reOpenState, false);
OpenDatabaseHelper(hostDatabase, reOpenState, false, true);
//
// Now perform the database replacement in all windows that use the
......@@ -3638,6 +3663,11 @@ ViewerSubject::ReOpenDatabase()
// Brad Whitlock, Tue Jan 27 16:52:40 PST 2004
// Changed for multiple time sliders.
//
// Brad Whitlock, Mon Apr 19 10:00:13 PDT 2004
// I added another argument to OpenDatabaseHelper so it won't update the
// window information since we're already doing that here. I also added
// a call to validate the plot lists's time slider.
//
// ****************************************************************************
void
......@@ -3662,7 +3692,7 @@ ViewerSubject::ReplaceDatabase()
// First open the database.
//
OpenDatabaseHelper(viewerRPC.GetDatabase(), viewerRPC.GetIntArg1(),
false);
false, false);
//
// Now perform the database replacement.
......@@ -3674,6 +3704,11 @@ ViewerSubject::ReplaceDatabase()
true,
false);
//
// Make sure the time slider is set to something appropriate.
//
plotList->ValidateTimeSlider();
//
// We have to send back the source and the time sliders since we
// could have replaced at a later time state.
......@@ -3709,6 +3744,9 @@ ViewerSubject::ReplaceDatabase()
// Jeremy Meredith, Tue Mar 30 10:52:06 PST 2004
// Added an engine key used to index (and restart) engines.
//
// Brad Whitlock, Mon Apr 19 10:00:13 PDT 2004
// I added another argument to OpenDatabaseHelper.
//
// ****************************************************************************
void
......@@ -3717,7 +3755,7 @@ ViewerSubject::OverlayDatabase()
//
// First open the database.
//
OpenDatabaseHelper(viewerRPC.GetDatabase(), 0, false);
OpenDatabaseHelper(viewerRPC.GetDatabase(), 0, false, true);
//
// Now perform the database replacement.
......@@ -3763,7 +3801,11 @@ ViewerSubject::CloseDatabase()
// Creation: Fri Jan 30 23:52:00 PST 2004
//
// Modifications:
//
// Brad Whitlock, Mon Apr 19 08:44:46 PDT 2004
// I moved the code to update the window information from
// ViewerWindowManager::CreateDatabaseCorrelation to here so things in the
// gui don't update as frequently when opening a database.
//
// ****************************************************************************
void
......@@ -3789,6 +3831,8 @@ ViewerSubject::CreateDatabaseCorrelation()
ViewerWindowManager::Instance()->CreateDatabaseCorrelation(
name, viewerRPC.GetProgramOptions(),
viewerRPC.GetIntArg1(), 0, viewerRPC.GetIntArg2());
ViewerWindowManager::Instance()->UpdateWindowInformation(
WINDOWINFO_TIMESLIDERS | WINDOWINFO_ANIMATION);
}
}
......
......@@ -374,7 +374,7 @@ private:
void InitializeWorkArea();
void ProcessSpecialOpcodes(int opcode);
void OpenDatabaseHelper(const std::string &db, int timeState,
bool loadDefaultPlots);
bool loadDefaultPlots, bool udpateWindowInfo);
DataNode *CreateAttributesDataNode(const avtDefaultPlotMetaData *) const;
......
......@@ -5126,7 +5126,12 @@ ViewerWindowManager::SetActiveTimeSlider(const std::string &ts, int windowIndex)
// Modifications:
// Eric Brugger, Fri Apr 16 18:43:42 PDT 2004
// I modified the logic concerning the creation of a new time slider.
//
//
// Brad Whitlock, Mon Apr 19 08:46:00 PDT 2004