Commit 0d53df17 authored by hrchilds's avatar hrchilds

Update from June 27, 2005

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@489 18c085ea-50e0-402c-830e-de6fd14e8384
parent 62219df0
......@@ -256,6 +256,8 @@ def MovieClassSaveWindow():
# Programmer: Brad Whitlock
# Date: Tue Aug 3 16:11:01 PST 2004
#
# Modifications:
#
###############################################################################
class EngineAttributesParser(XMLParser):
......@@ -336,6 +338,83 @@ class EngineAttributesParser(XMLParser):
return
self.engineProperties[name] = value
###############################################################################
# Class: WindowSizeParser
#
# Purpose: This class parses session files for the windowSize field in
# the ViewerWindow and builds a list of [width,height] values.
#
# Programmer: Brad Whitlock
# Date: Fri Jun 24 10:03:23 PDT 2005
#
# Modifications:
#
###############################################################################
class WindowSizeParser(XMLParser):
def __init__(self):
XMLParser.__init__(self)
self.elements = {"Object" : ("<Object>", "</Object>"), "Field" : ("<Field>", "</Field>")}
self.attributes = {"name" : "", "type" : None, "length" : 0}
self.readAtts = 0
self.readingField = 0
self.windowSizes = []
self.activeWindow = 0
self.objectNames = []
self.dataAtts = None
def handle_starttag(self, tag, method, attributes):
if tag == "Object":
if "name" in attributes.keys():
name = attributes["name"]
self.objectNames = self.objectNames + [name]
if name == "ViewerWindowManager":
self.readAtts = 1
else:
self.readingField = 1
self.dataAtts = attributes
def handle_endtag(self, tag, method):
if tag == "Object":
name = self.objectNames[-1]
if name == "ViewerWindowManager":
self.readAtts = 0
self.objectNames = self.objectNames[:-1]
elif tag == "Field":
self.readingField = 0
def handle_data(self, data):
def not_all_spaces(s):
space = ""
for i in range(len(s)):
space = space + " "
return s != space
if self.readAtts and self.readingField and len(data) > 0:
name = self.dataAtts["name"]
type = self.dataAtts["type"]
value = []
if name == "activeWindow" and type == "int":
try:
self.activeWindow = int(data)
if self.activeWindow < 0:
self.activeWindow = 0
except ValueError:
return
elif name == "windowSize" and type == "intArray":
length = self.dataAtts["length"]
if length == "2":
fragments = string.split(data, " ")
value = []
for s in fragments:
if len(s) > 0:
if not_all_spaces(s):
try:
val = int(s)
value = value + [val]
except ValueError:
continue
self.windowSizes = self.windowSizes + [value[:2]]
###############################################################################
# Class: MakeMovie
......@@ -501,10 +580,13 @@ class MakeMovie:
# Brad Whitlock, Wed Jun 1 10:13:56 PDT 2005
# Added -stereo and support for multiple formats and geometries.
#
# Brad Whitlock, Fri Jun 24 10:25:36 PDT 2005
# Added a note about omitting the -geometry flag.
#
###########################################################################
def PrintUsage(self):
print "Usage: visit -movie [-format fmt] [-geometry size] -sessionfile name"
print "Usage: visit -movie [-format fmt] [-geometry size]"
print " -sessionfile name | -scriptfile name "
print " [-output moviename] [-framestep step]"
print " [PARALLEL OPTIONS]"
......@@ -553,6 +635,11 @@ class MakeMovie:
print " more than one WxH using commas. Example:"
print " -geometry 320x320,1024x768."
print ""
print " If you omit the -geometry argument then the"
print " window sizes stored in your session file will be"
print " used. If you are not using a session file then"
print " the default size will be 512x512."
print ""
print " -sessionfile name The sessionfile option lets you pick the name"
print " of the VisIt session to use as input for your"
print " movie. The VisIt session is a file that describes"
......@@ -757,6 +844,9 @@ class MakeMovie:
# Brad Whitlock, Wed Jun 1 13:51:27 PST 2005
# Added support for multiple formats and geometries and for stereo.
#
# Brad Whitlock, Fri Jun 24 10:11:31 PDT 2005
# Added support for reading the window sizes out of the session file.
#
###########################################################################
def ProcessArguments(self):
......@@ -1016,7 +1106,21 @@ class MakeMovie:
if len(formatList) == 0:
formatList = ["mpeg"]
if len(sizeList) == 0:
sizeList = [(512, 512)]
if self.stateFile != "":
# No -geometry flag was specified but we're using a session file
# so let's parse the sizes out of the session file.
windowInfo = self.ReadWindowSizes(self.stateFile)
activeWindow = windowInfo[0]
windowSizes = windowInfo[1]
if len(windowSizes) > 0:
if activeWindow >= len(windowSizes):
activeWindow = 0
sizeList = [tuple(windowSizes[activeWindow])]
else:
sizeList = [(512, 512)]
else:
sizeList = [(512, 512)]
# If the formatList and sizeList are not the same size, make them
# be the same size by repeating the last value in the shorter of the
# lists until the lists are the same length.
......@@ -1318,6 +1422,36 @@ class MakeMovie:
except:
return {}
###########################################################################
# Method: ReadWindowSizes
#
# Purpose: This method reads the ViewerWindow sizes out of a session
# file and returns the list of sizes.
#
# Programmer: Brad Whitlock
# Date: Fri Jun 24 10:06:24 PDT 2005
#
###########################################################################
def ReadWindowSizes(self, sessionFile):
try:
# Read the file.
f = open(sessionFile, "r")
lines = f.readlines()
f.close()
# Parse the file
p = WindowSizeParser()
for line in lines:
p.feed(line)
p.close()
return (p.activeWindow, p.windowSizes)
except VisItInterrupt:
raise
except:
return (0, [])
###########################################################################
# Method: CreateEngineArguments
#
......
......@@ -203,6 +203,9 @@
# Brad Whitlock, Thu May 12 11:30:24 PDT 2005
# Added code to copy MacOS X address computation script and address file.
#
# Brad Whitlock, Thu Jun 23 17:11:21 PST 2005
# Made it copy makemoviemain.py
#
#------------------------------------------------------------------------------
set DataFiles = "TRUE"
......@@ -649,6 +652,7 @@ endif
# Copy the MPEG encoder and the makemovie script.
cp $VisItDir/exe/mpeg_encode $bindir
cp $VisItDir/bin/makemovie.py $bindir
cp $VisItDir/bin/makemoviemain.py $bindir
# copy surfcomp
cp $VisItDir/exe/surfcomp $bindir
# Copy MacOS X address computation script and address file.
......
......@@ -42,6 +42,9 @@
# Brad Whitlock, Thu Aug 12 12:26:57 PDT 2004
# I added support for the MSVC7.Net compiler suite.
#
# Brad Whitlock, Thu Jun 23 17:12:02 PST 2005
# I made it copy makemoviemain.py
#
#------------------------------------------------------------------------------
if(`pwd` != "/data_vobs/VisIt") then
......@@ -178,8 +181,9 @@ cd $VisItDev
echo "Creating bin directory..."
cp -R $TOPDIR/windowsbuild/bin .
foreach configdir (Debug Release MSVC7.Net/Debug MSVC7.Net/Release)
# Copy the makemovie script to the right bin dir.
# Copy the makemovie scripts to the right bin dir.
cp $VISITSRC/bin/makemovie.py bin/$configdir
cp $VISITSRC/bin/makemoviemain.py bin/$configdir
# Copy the host config files to the right bin dir.
$SCRIPTDIR/converttextfile $SCRIPTDIR/visit-config-open.ini bin/$configdir/visit-config-open.ini
$SCRIPTDIR/converttextfile $SCRIPTDIR/visit-config-closed.ini bin/$configdir/visit-config-closed.ini
......
......@@ -1179,3 +1179,56 @@ GetVisItInstallationDirectory(const char *version)
return installDir;
#endif
}
// ****************************************************************************
// Method: GetVisItArchitectureDirectory
//
// Purpose:
// Gets the name of the directory where VisIt's current binary is installed.
// This directory typically contains the bin, lib, plugin, etc directories
// on UNIX installations.
//
// Arguments:
// version : The version number for which we want the archtecture dir.
//
// Returns: The architecture dir.
//
// Note: On Windows, this function returns the same as
// GetVisItInstallationDirectory.
//
// Programmer: Brad Whitlock
// Creation: Fri Jun 24 11:33:07 PDT 2005
//
// Modifications:
//
// ****************************************************************************
std::string
GetVisItArchitectureDirectory()
{
return GetVisItArchitectureDirectory(VERSION);
}
std::string
GetVisItArchitectureDirectory(const char *version)
{
#if defined(_WIN32)
// Get the installation dir for the specified from the registry.
char *visitHome = 0;
std::string archDir("C:\\");
if(ReadKey(version, "VISITHOME", &visitHome) == 1)
{
archDir = visitHome;
delete [] visitHome;
}
return archDir;
#else
// Get the installation dir for the version that's running. They all use
// the same "visit" script so it's okay to do this.
std::string archDir(std::string("/usr/local/visit/") + std::string(VERSION));
const char *adir = getenv("VISITARCHHOME");
if(adir != 0)
archDir = adir;
return archDir;
#endif
}
......@@ -39,6 +39,8 @@ std::vector<std::string> UTILITY_API SplitValues(const std::string &buff,
std::string UTILITY_API GetVisItInstallationDirectory();
std::string UTILITY_API GetVisItInstallationDirectory(const char *version);
std::string UTILITY_API GetVisItArchitectureDirectory();
std::string UTILITY_API GetVisItArchitectureDirectory(const char *version);
std::string UTILITY_API GetUserVisItDirectory();
UTILITY_API char * GetDefaultConfigFile(const char *filename = 0, const char *home = 0);
......
......@@ -72,6 +72,10 @@ QvisExportDBWindow::~QvisExportDBWindow()
// Programmer: Hank Childs
// Creation: May 25, 2005
//
// Modifications:
// Brad Whitlock, Mon Jun 27 13:52:24 PST 2005
// I added a directory selection button.
//
// ****************************************************************************
void
......@@ -93,11 +97,24 @@ QvisExportDBWindow::CreateWindowContents()
infoLayout->addWidget(filenameLabel, 1, 0);
infoLayout->addWidget(filenameLineEdit, 1, 1);
directoryNameLineEdit = new QLineEdit(infoBox, "directoryNameLineEdit");
connect(directoryNameLineEdit, SIGNAL(returnPressed()), this, SLOT(processDirectoryNameText()));
QLabel *directoryNameLabel = new QLabel(directoryNameLineEdit, "Directory name", infoBox, "directoryNameLabel");
QHBox *directoryParent = new QHBox(infoBox, "directoryParent");
directoryNameLineEdit = new QLineEdit(directoryParent, "directoryNameLineEdit");
connect(directoryNameLineEdit, SIGNAL(returnPressed()),
this, SLOT(processDirectoryNameText()));
QLabel *directoryNameLabel = new QLabel(directoryNameLineEdit,
"Directory name", infoBox, "directoryNameLabel");
QPushButton *directorySelectButton = new QPushButton("...",
directoryParent, "directorySelectButton");
directorySelectButton->setMaximumWidth(
fontMetrics().boundingRect("...").width() + 6);
directorySelectButton->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,
QSizePolicy::Minimum));
connect(directorySelectButton, SIGNAL(clicked()),
this, SLOT(selectOutputDirectory()));
directoryParent->setSpacing(0);
directoryParent->setStretchFactor(directoryNameLineEdit, 100);
infoLayout->addWidget(directoryNameLabel, 2, 0);
infoLayout->addWidget(directoryNameLineEdit, 2, 1);
infoLayout->addWidget(directoryParent, 2, 1);
fileFormatComboBox = new QComboBox(false, infoBox, "fileFormatComboBox");
......@@ -509,3 +526,37 @@ QvisExportDBWindow::variableProcessText()
Apply();
}
// ****************************************************************************
// Method: QvisExportDBWindow::selectOutputDirectory
//
// Purpose:
// This is a Qt slot function that is called when we want to interactively
// select a new output directory.
//
// Programmer: Brad Whitlock
// Creation: Mon Jun 27 13:52:55 PST 2005
//
// Modifications:
//
// ****************************************************************************
void
QvisExportDBWindow::selectOutputDirectory()
{
//
// Try and get a directory using a file dialog.
//
QString initialDir(exportDBAtts->GetDirname().c_str());
QString dirName = QFileDialog::getExistingDirectory(initialDir, this,
"getDirectoryDialog", "Select output directory");
//
// If a directory was chosen, use it as the output directory.
//
if(!dirName.isEmpty())
{
directoryNameLineEdit->setText(dirName);
GetCurrentValues(1);
Apply();
}
}
......@@ -26,6 +26,10 @@ class ExportDBAttributes;
// Programmer: Hank Childs
// Creation: May 25, 2005
//
// Modifications:
// Brad Whitlock, Mon Jun 27 13:51:01 PST 2005
// Added a directory selection button.
//
// ****************************************************************************
class GUI_API QvisExportDBWindow : public QvisPostableWindowObserver
......@@ -51,6 +55,7 @@ protected slots:
void exportDB();
void exportButtonClicked();
void addVariable(const QString &);
void selectOutputDirectory();
private:
QLineEdit *filenameLineEdit;
QLineEdit *directoryNameLineEdit;
......
......@@ -2433,6 +2433,32 @@ QvisFilePanel::GetAllowFileSelectionChange() const
return allowFileSelectionChange;
}
// ****************************************************************************
// Method: QvisFilePanel::UpdateOpenButtonState
//
// Purpose:
// Updates the text and enabled state of the Open button based on what
// file is currently selected in the list view.
//
// Programmer: Brad Whitlock
// Creation: Mon Jun 27 14:53:26 PST 2005
//
// Modifications:
//
// ****************************************************************************
void
QvisFilePanel::UpdateOpenButtonState()
{
QListViewItem *item = fileListView->selectedItem();
if(item != 0)
{
// Cast to a derived type.
QvisListViewFileItem *fileItem = (QvisListViewFileItem *)item;
UpdateOpenButtonState(fileItem);
}
}
//
// Qt slot functions.
//
......@@ -2733,6 +2759,10 @@ QvisFilePanel::fileExpanded(QListViewItem *item)
// I moved the code to update the enabled state of the replace button into
// its own method.
//
// Brad Whitlock, Mon Jun 27 14:49:43 PST 2005
// I moved the code that updates the text and enabled state for the Open
// button into its own method.
//
// ****************************************************************************
void
......@@ -2743,7 +2773,35 @@ QvisFilePanel::highlightFile(QListViewItem *item)
// Cast to a derived type.
QvisListViewFileItem *fileItem = (QvisListViewFileItem *)item;
UpdateOpenButtonState(fileItem);
//
// If the highlighted file is not the active file, then
// enable the open, replace, overlay buttons.
//
bool enable = UpdateReplaceButtonEnabledState();
overlayButton->setEnabled(enable);
}
// ****************************************************************************
// Method: QvisFilePanel::UpdateOpenButtonState
//
// Purpose:
// Updates the state of the Open button based on what item is highlighted.
//
// Arguments:
// fileItem : The highlighted item in the list view.
//
// Programmer: Brad Whitlock
// Creation: Mon Jun 27 14:57:22 PST 2005
//
// Modifications:
//
// ****************************************************************************
void
QvisFilePanel::UpdateOpenButtonState(QvisListViewFileItem *fileItem)
{
// If the filename is not a file. Disable the open files button.
if(!fileItem->isFile())
{
......@@ -2763,13 +2821,6 @@ QvisFilePanel::highlightFile(QListViewItem *item)
else
openButton->setText("Open");
openButton->setEnabled(true);
//
// If the highlighted file is not the active file, then
// enable the open, replace, overlay buttons.
//
bool enable = UpdateReplaceButtonEnabledState();
overlayButton->setEnabled(enable);
}
// ****************************************************************************
......
......@@ -102,6 +102,8 @@ class ViewerProxy;
// Brad Whitlock, Mon Dec 20 12:18:36 PDT 2004
// I added UpdateReplaceButtonEnabledState
//
// Brad Whitlock, Mon Jun 27 14:54:27 PST 2005
// Added updateOpenButtonState and
// ****************************************************************************
class GUI_API QvisFilePanel : public QWidget, public SimpleObserver, public GUIBase
......@@ -150,6 +152,8 @@ public:
void SetShowSelectedFiles(bool);
bool GetAllowFileSelectionChange() const;
void SetAllowFileSelectionChange(bool);
void UpdateOpenButtonState();
signals:
void reopenOnNextFrame();
private:
......@@ -160,6 +164,7 @@ private:
void UpdateTimeFieldText(int timeState);
void UpdateAnimationControlsEnabledState();
bool UpdateReplaceButtonEnabledState();
void UpdateOpenButtonState(QvisListViewFileItem *fileItem);
bool OpenFile(const QualifiedFilename &filename, int timeState,
bool reOpen);
......
......@@ -5794,9 +5794,9 @@ QvisGUIApplication::SaveMovie()
{
// Determine the location of the makemovie script.
#if defined(_WIN32)
std::string makemovie(GetVisItInstallationDirectory() + "\\makemovie.py");
std::string makemovie(GetVisItArchitectureDirectory() + "\\makemovie.py");
#else
std::string makemovie(GetVisItInstallationDirectory() + "/bin/makemovie.py");
std::string makemovie(GetVisItArchitectureDirectory() + "/bin/makemovie.py");
#endif
// Assemble a string of code to execute.
......
......@@ -1538,7 +1538,9 @@ QvisMainWindow::reopenFile(int fileIndex)
// Creation: Fri Feb 27 11:51:59 PDT 2004
//
// Modifications:
//
// Brad Whitlock, Mon Jun 27 14:53:14 PST 2005
// Added a little code to update the file panel.
//
// ****************************************************************************
void
......@@ -1559,6 +1561,9 @@ QvisMainWindow::closeFile(int fileIndex)
// the viewer will issue a warning message.
//
viewer->CloseDatabase(sources[fileIndex]);
// Update the file panel based on what's selected.
filePanel->UpdateOpenButtonState();
}
}
......
......@@ -1056,7 +1056,7 @@ QvisSaveMovieWizard::UpdatePage()
outDir += SLASH_STRING;
movieAtts->SetOutputDirectory(outDir);
}
qDebug("Update the filename, output dir page.");
//qDebug("Update the filename, output dir page.");
page11_outputDirectoryLineEdit->blockSignals(true);
page11_outputDirectoryLineEdit->setText(movieAtts->
GetOutputDirectory().c_str());
......
This diff is collapsed.
......@@ -89,6 +89,8 @@ substantially reduce its memory footprint.</li>
<li>The <i>OpenComputeEngine</i> function in Visit's CLI does not issue a warning if it does nothing because a compute engine is already running.</li>
<li>VisIt still provides a host profile for <i>edgewater</i> even though that machine no longer exists.</li>
</ul>
<p>Click the following link to view the release notes for the next version
of VisIt: <a href="relnotes1.4.4.html">VisIt 1.4.4 Release Notes</a>.</p>
<p>Click the following link to view the release notes for the previous version
of VisIt: <a href="relnotes1.4.2.html">VisIt 1.4.2 Release Notes</a>.</p>
</body>
......
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="en-us">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>VisIt 1.4.4 Release Notes</title>
</head>
<body>
<center><b><font size="6">VisIt 1.4.4 Release Notes</font></b></center>
<p>Welcome to VisIt's release notes page. This page describes the important
enhancements and bug-fixes that were added to this release.</p>
<p><b><font size="4">Features added in version 1.4.4</font></b></p>
<ul>
<li>Saving movies of the plots in your active visualization window is now possible within VisIt's GUI using the <b>Save movie</b> wizard. The <b>Save movie</b> wizard, located in the <b>Main</b> window's <b>File</b> menu, leads you through a set of screens that allow you to pick the resolutions and formats, output location, and generation method for your movie. Once you have completed the wizard's screens, VisIt starts making your movie. VisIt can use your current VisIt session to make your movie so you can use any processors that you have already allocated, or VisIt can start a new VisIt session, or tell you the command to use to generate your movie. If you choose to use your current VisIt session to make your movie, you will be able to watch your movie play through on screen. The movie's progress is also displayed in a <b>Movie progress</b> dialog so you can track VisIt's progress in generating your movie. The <b>Movie progress</b> dialog also provides a Cancel button if you decide to cancel your movie so you can resume working in your VisIt session.</li>
<li>VisIt has been enhanced so that multiple user interfaces can be used to drive the viewer. This makes it possible to use both the GUI and the CLI on the same visualizations. It is even possible to use multiple GUI's - even custom GUI's that you have written yourself in C++ or Java. The CLI, which is itself a type of VisIt user interface, provides functions <i>(OpenClient, OpenGUI)</i> that can be used to connect other VisIt clients to the viewer.</li>
<li>VisIt's GUI now provides a <b>Command</b> window that allows you to edit up to 8 Python scripts and execute them in VisIt's CLI at the click of a button. The <b>Command</b> window is available in the <b>Controls</b> menu. Saving your settings will cause the <b>Command</b> window's scripts to be saved so they are accessible in future VisIt sessions. Note that when VisIt executes scripts in this manner, the actual script execution is still performed by VisIt's CLI, which will display any script output in a seperate CLI window since the GUI and CLI are separate programs with little awareness of one another.</li>
<li>It is now possible to export variables, materials, and meshes from your active database to a file using the new <b>Export database</b> window. The <b>Export database</b> window is available in the <b>File</b> menu. The new window allows you to pick the output name, directory, format, of the exported database as wells as the list of variables, meshes, or materials that will be exported. The list of available formats for exporting databases is determined by those database reader plugins that can write out data in their native file format.</li>
<li>VisIt now provides an option to read all cycles and times from collections of single time-step databases <i>(like Silo)</i>. This option allows VisIt to display the cycles and times in the selected files list in the <b>Main</b> window and it also allows VisIt to create meaningful cycle or time-based database correlations for these types of databases. Database correlations are used to relate multiple time-varying databases on a common time scale, with a common time slider. Since VisIt can now create accurate cycle and time database correlations for collections of single time-step databases, it is now possible to more easily compare two or more simulations using a common time scale. Since it can be expensive to read in the extra time metadata for some types of files, this option is not enabled by default but VisIt will ask if you want to read in the extra data when it needs it. You can make VisIt always read in cycles and times by choosing <b>Try harder to get accurate cycles/times</b> in the <b>Preferences</b> window. If you want this option to take effect by default, be sure to save your settings after changing the setting in the <b>Preferences</b> window.</li>
<li>VisIt's CLI now has embedded documentation for most of its functions, making it easy to see the argument list and usage information for each function.</li>
<li>VisIt's Image database reader plugin has been improved in a number of ways. For example, only processor 0 will read the image header now. Caching has been re-enabled and the reader can now generate ghost data.</li>
<li>VisIt now supports multimeshes, multivars, multimaterials, and multispecies where some domains have no data. This means that in the multi-object definition, which usually points to the name of another file's variable for a particular domain, you can now provide "EMPTY" to indicate that the domain has no data.</li>
<li>VisIt now has <i>Moment of Inertia</i> and <i>Centroid</i> queries.</li>
<li>VisIt can now read in a set of image slices as a 3D volume. Simply create a file ending in ".imgvol" that contains the names of the image files that make up the 3D volume and VisIt will use the images to construct a 3D volume. This feature is useful for viewing CT data, which is often stored as a set of 2D images.</li>
<li>Expressions stored in a Silo file in the <i>meshtv_defvars</i> variable do not show up if their names contain slashes.</li>
<li>VisIt can now make movies using the window size stored in a session file if you omit the <i>-geometry</i> argument to the <i>visit -movie</i> script. There is also a new <i>Make movie</i> option that does this when you right-click on a session file on the Windows platform.</li>
<li>The Verdict <i>volume</i> expression should be tuned for rectilinear meshes.</li>
<li>The Transform operator now changes the axis labels when switching from Cartesian coordinates to cylindrical or spherical coordinates.</li>
<li>The KullLite database reader plugin can now adaptively switch its axis labels from X-Y to R-Z.</li>
<li>VisIt's metadata server no longer automatically consolidates virtual databases of Flash files into larger virtual databases since that behavior caused problems for some users. If you want to make VisIt do this again, set the <i>VISIT_CONSOLIDATE_VIRTUAL_DATABASES</i> environment variable to <i>on</i>.</li>
</ul>
<p><b><font size="4">Bugs fixed in version 1.4.4</font></b></p>
<ul>
<li>VisIt's viewer can crash when picking on a vector field created using an expression.</li>
<li>Expressions are being recalculated each time the user picks on a surface.</li>
<li>It is not possible to select a high cell seed number for an OnionPeel operator that has been applied to a FilledBoundary plot.</li>
<li>VisIt's Silo database reader plugin does not correctly recognize blocks/groups from Hydra.</li>
<li>Creating an elevated Surface of a 2D dataset using the Elevate operator makes VisIt lose the ability to control lighting on that surface.</li>
<li>The <i>divergence</i> expression does not work on 2D vectors.</li>
<li>Unhiding a Mesh plot when VisIt is in scalable-rendering mode forces the Mesh plot to be opaque.</li>
<li>VisIt's image reader has several problems that result in incorrect colors being used as well as general inefficiency.</li>
<li>Node picking on sliced FilledBoundary plots can return the wrong information because VisIt is not using the right coordinates to extract the data.</li>
<li>Curves generated by Lineout operations look like their X coordinates are reversed.</li>
<li>FilledBoundary plots of points can cause VisIt's point glypher to become confused if there are extra points in the dataset that do not belong to any cell.</li>
<li>Pick is not displaying global zone or node ids when they have been requested.</li>
<li>VisIt refuses to plot a FilledBoundary plot to which the Displace operator has been applied.</li>
<li>Some VisIt filters do not make use of spatial and data extents when they should due to a coding issue a filter that is a facade for other filters.</li>
<li>VisIt's <i>visitconvert</i> program issues a lot of warnings when converting image files to another format.</li>
<li>Recentering a color image from zonal to nodal causes the Truecolor plot to display nothing.</li>
</ul>
<p>Click the following link to view the release notes for the previous version
of VisIt: <a href="relnotes1.4.3.html">VisIt 1.4.3 Release Notes</a>.</p>
</body>
</html>
\ No newline at end of file
......@@ -1632,6 +1632,13 @@ MDServerConnection::SetFileGroupingOptions(const std::string &filter,
// Brad Whitlock, Tue Apr 26 13:58:11 PST 2005
// Added code to group "abort" files into their related database.
//
// Brad Whitlock, Mon Jun 27 14:22:59 PST 2005
// I made the code to consolidate virtual databases be off unless the
// VISIT_CONSOLIDATE_VIRTUAL_DATABASES environment variable is set to "on".
// This prevents users from always running into it where it might cause
// problems for a small subset of users. Those who want the feature can
// set the environment variable.
//
// ****************************************************************************
void
......@@ -1808,7 +1815,12 @@ MDServerConnection::GetFilteredFileList(GetFileListRPC::FileList &files)
// larger virtual database if the names look like what we'd get
// with Flash files.
if(extraSmartFileGrouping)
ConsolidateVirtualDatabases(newVirtualFiles, files);
{
const char *cvdbs = getenv("VISIT_CONSOLIDATE_VIRTUAL_DATABASES");
bool allowConsolidate = (cvdbs != 0 && strcmp(cvdbs,"on") == 0);
if(allowConsolidate)
ConsolidateVirtualDatabases(newVirtualFiles, files);
}
//
// Create virtual databases using the information stored in the
......
......@@ -1554,6 +1554,10 @@ ViewerPlotList::DeleteTimeSlider(const std::string &ts, bool update)
// Added text to the message to indicate correlation type and warn
// about the operation potentially taking a long time.
//
// Brad Whitlock, Mon Jun 27 15:08:24 PST 2005
// Reformatted the text and put it at the end of the prompt instead of
// in the middle.
//
// ****************************************************************************
bool
......@@ -1579,35 +1583,31 @@ ViewerPlotList::AskForCorrelationPermission(const stringVector &dbs) const
int defMethod = cL->GetDefaultCorrelationMethod();
static char prompt[512];
if (defMethod == DatabaseCorrelation::TimeCorrelation)
{
SNPRINTF(prompt, sizeof(prompt),
"Would you like to create a \"Time\" correlation for\n"
"the following databases?\n"
"PLEASE BE AWARE THAT \"Time\" CORRELATIONS REQUIRE OPENING\n"
"AND READING TIME INFORMATION FROM ALL FILES IN THE DATABASE.\n"
"DEPENDING ON THE DATABASE PLUGIN TYPE AND FILESYSTEM, THIS\n"
"OPERATION COULD TAKE AS MUCH AS A FEW MINUTES.\n");
}
else
{
SNPRINTF(prompt, sizeof(prompt), "Would you like to create a \"%s\" "
"correlation for the following databases?\n",
SNPRINTF(prompt, sizeof(prompt), "Would you like to create a \"%s\" "
"database correlation for the following databases?\n",
DatabaseCorrelation::GetMethodNameFromMethod(
cL->GetDefaultCorrelationMethod()));
}
// Pop up a Qt dialog to ask the user whether or not to correlate
// the specified databases.
QString text(prompt);
QString fileStr;
for(int i = 0; i < dbs.size(); ++i)
fileStr += (QString(dbs[i].c_str()) + QString("\n"));
text += fileStr;
// Add a disclaimer in the event of a "Time" correlation.
if (defMethod == DatabaseCorrelation::TimeCorrelation)
{
text += "\n"
"Please be aware that \"Time\" database correlations may require\n"
"opening and reading time information from all files in the database.\n"
"Depending on the database plugin type and the file system, this\n"
"operation could take as much as a few minutes.";
}
debug3 << "Asking for permission to create correlation. Prompt="
<< text.latin1() << endl;
// Pop up a Qt dialog to ask the user whether or not to correlate
// the specified databases.
viewerSubject->BlockSocketSignals(true);
permission = (QMessageBox::information(0, "Correlate databases?",
text, QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton) ==
......
This diff is collapsed.
......@@ -27,15 +27,19 @@
# Brad Whitlock, Tue May 10 14:13:33 PST 2005
# Updated for 1.4.3.
#
# Brad Whitlock, Mon Jun 6 17:01:48 PST 2005
# Added support for setting VisIt's install location as a Java preference
# using our VIkit plugin.
# Brad Whitlock, Mon Jun 6 17:01:48 PST 2005
# Added support for setting VisIt's install location as a Java preference