mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
ParaView-5.0.1: Added the source-tree to ThirdParty-dev and patched as described in the README file
Resolves bug-report http://bugs.openfoam.org/view.php?id=2098
This commit is contained in:
@ -0,0 +1,217 @@
|
||||
/*=========================================================================
|
||||
|
||||
Program: ParaView
|
||||
Module: pqCinemaTrack.cxx
|
||||
|
||||
Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
|
||||
All rights reserved.
|
||||
|
||||
ParaView is a free software; you can redistribute it and/or modify it
|
||||
under the terms of the ParaView license version 1.2.
|
||||
|
||||
See License_v1.2.txt for the full ParaView license.
|
||||
A copy of this license can be obtained by contacting
|
||||
Kitware Inc.
|
||||
28 Corporate Drive
|
||||
Clifton Park, NY 12065
|
||||
USA
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
========================================================================*/
|
||||
#include "pqCPExportStateWizard.h"
|
||||
|
||||
#include <vtkCamera.h>
|
||||
#include <vtkSMProxyManager.h>
|
||||
#include <vtkSMRenderViewProxy.h>
|
||||
#include <vtkSMSessionProxyManager.h>
|
||||
#include <vtkSMSourceProxy.h>
|
||||
#include <vtkSMViewProxy.h>
|
||||
#include <vtkPVXMLElement.h>
|
||||
|
||||
#include <pqApplicationCore.h>
|
||||
#include <pqCinemaTrack.h>
|
||||
#include <pqFileDialog.h>
|
||||
#include <pqImageOutputInfo.h>
|
||||
#include <pqPipelineSource.h>
|
||||
#include <pqPythonDialog.h>
|
||||
#include <pqPythonManager.h>
|
||||
#include <pqRenderView.h>
|
||||
#include <pqServerManagerModel.h>
|
||||
#include <pqView.h>
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
namespace
|
||||
{
|
||||
static const char* cp_python_export_code =
|
||||
"from paraview import cpexport\n"
|
||||
"cpexport.DumpCoProcessingScript(export_rendering=%1,\n"
|
||||
" simulation_input_map={%2},\n"
|
||||
" screenshot_info={%3},\n"
|
||||
" rescale_data_range=%4,\n"
|
||||
" enable_live_viz=%5,\n"
|
||||
" live_viz_frequency=%6,\n"
|
||||
" cinema_tracks={%7},\n"
|
||||
" filename='%8')\n";
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
pqCPExportStateWizard::pqCPExportStateWizard(
|
||||
QWidget *parentObject, Qt::WindowFlags parentFlags)
|
||||
: Superclass(parentObject, parentFlags)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
pqCPExportStateWizard::~pqCPExportStateWizard()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void pqCPExportStateWizard::customize()
|
||||
{
|
||||
this->Internals->timeCompartmentSize->hide();
|
||||
this->Internals->label_2->hide();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool pqCPExportStateWizard::getCommandString(QString& command)
|
||||
{
|
||||
QString export_rendering = this->Internals->outputRendering->isChecked() ?
|
||||
"True" : "False";
|
||||
QString rendering_info; // a map from the render view name to render output params
|
||||
if (this->Internals->outputRendering->isChecked() == 0 &&
|
||||
this->Internals->liveViz->isChecked() == 0)
|
||||
{
|
||||
// check to make sure that there is a writer hooked up since we aren't
|
||||
// exporting an image
|
||||
vtkSMSessionProxyManager* proxyManager =
|
||||
vtkSMProxyManager::GetProxyManager()->GetActiveSessionProxyManager();
|
||||
pqServerManagerModel* smModel =
|
||||
pqApplicationCore::instance()->getServerManagerModel();
|
||||
bool haveSomeWriters = false;
|
||||
QStringList filtersWithoutConsumers;
|
||||
for(unsigned int i=0;i<proxyManager->GetNumberOfProxies("sources");i++)
|
||||
{
|
||||
if(vtkSMSourceProxy* proxy = vtkSMSourceProxy::SafeDownCast(
|
||||
proxyManager->GetProxy("sources", proxyManager->GetProxyName("sources", i))))
|
||||
{
|
||||
vtkPVXMLElement* writerProxyHint = proxy->GetHints();
|
||||
if(writerProxyHint && writerProxyHint->FindNestedElementByName("WriterProxy"))
|
||||
{
|
||||
haveSomeWriters = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
pqPipelineSource* input = smModel->findItem<pqPipelineSource*>(proxy);
|
||||
if(input && input->getNumberOfConsumers() == 0)
|
||||
{
|
||||
filtersWithoutConsumers << proxyManager->GetProxyName("sources", i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!haveSomeWriters)
|
||||
{
|
||||
QMessageBox messageBox;
|
||||
QString message(tr("No output specified. Generated script should be modified to output information."));
|
||||
messageBox.setText(message);
|
||||
messageBox.exec();
|
||||
}
|
||||
else if(filtersWithoutConsumers.size() != 0)
|
||||
{
|
||||
QMessageBox messageBox;
|
||||
QString message(tr("The following filters have no consumers and will not be saved:\n"));
|
||||
for(QStringList::const_iterator iter=filtersWithoutConsumers.constBegin();
|
||||
iter!=filtersWithoutConsumers.constEnd();iter++)
|
||||
{
|
||||
message.append(" ");
|
||||
message.append(iter->toLocal8Bit().constData());
|
||||
message.append("\n");
|
||||
}
|
||||
messageBox.setText(message);
|
||||
messageBox.exec();
|
||||
}
|
||||
}
|
||||
else if(this->Internals->outputRendering->isChecked())
|
||||
{
|
||||
// Format as defined in cpstate.py
|
||||
QString format("'%1' : ['%2', %3, '%4', '%5', '%6', '%7', '%8']");
|
||||
rendering_info = this->Internals->wViewSelection->getSelectionAsPythonScript(format,
|
||||
this->Internals->chbComposite->isChecked());
|
||||
}
|
||||
|
||||
QString cinema_tracks;
|
||||
if(this->Internals->outputCinema->isChecked())
|
||||
{
|
||||
// Format as defined in pv_introspect.make_cinema_store.make_cinema_store (_userDefinedValues)
|
||||
QString format("'%1' : %2");
|
||||
cinema_tracks = this->Internals->wCinemaTrackSelection->getSelectionAsPythonScript(format);
|
||||
}
|
||||
|
||||
QString filters ="ParaView Python State Files (*.py);;All files (*)";
|
||||
|
||||
pqFileDialog file_dialog (NULL, this,
|
||||
tr("Save Server State:"), QString(), filters);
|
||||
file_dialog.setObjectName("ExportCoprocessingStateFileDialog");
|
||||
file_dialog.setFileMode(pqFileDialog::AnyFile);
|
||||
if (!file_dialog.exec())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QString filename = file_dialog.getSelectedFiles()[0];
|
||||
#ifdef _WIN32
|
||||
// Convert to forward slashes. The issue is that the path is interpreted as a
|
||||
// Python string when passed to the interpreter, so a path such as "C:\tests"
|
||||
// is read as "C:<TAB>ests" which isn't what we want. Since Windows is
|
||||
// flexible anyways, just use Unix separators.
|
||||
filename.replace('\\', '/');
|
||||
#endif
|
||||
|
||||
// the map from the simulation inputs in the paraview gui
|
||||
// to the adaptor's named inputs (usually 'input')
|
||||
QString sim_inputs_map;
|
||||
for (int cc=0; cc < this->Internals->nameWidget->rowCount(); cc++)
|
||||
{
|
||||
QTableWidgetItem* item0 = this->Internals->nameWidget->item(cc, 0);
|
||||
QTableWidgetItem* item1 = this->Internals->nameWidget->item(cc, 1);
|
||||
sim_inputs_map +=
|
||||
QString(" '%1' : '%2',").arg(item0->text()).arg(item1->text());
|
||||
}
|
||||
// remove last ","
|
||||
sim_inputs_map.chop(1);
|
||||
|
||||
QString rescale_data_range = (this->Internals->rescaleDataRange->isChecked() == true ?
|
||||
"True" : "False");
|
||||
|
||||
QString live_visualization = (this->Internals->liveViz->isChecked() == true ?
|
||||
"True" : "False");
|
||||
|
||||
command = cp_python_export_code;
|
||||
// may be set by the user in the future
|
||||
const int live_visualization_frequency = 1;
|
||||
command = command.arg(export_rendering)
|
||||
.arg(sim_inputs_map)
|
||||
.arg(rendering_info)
|
||||
.arg(rescale_data_range)
|
||||
.arg(live_visualization)
|
||||
.arg(live_visualization_frequency)
|
||||
.arg(cinema_tracks)
|
||||
.arg(filename);
|
||||
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user