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,148 @@
|
||||
/*=========================================================================
|
||||
|
||||
Program: ParaView
|
||||
Module: vtkSIArraySelectionProperty.cxx
|
||||
|
||||
Copyright (c) Kitware, Inc.
|
||||
All rights reserved.
|
||||
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. See the above copyright notice for more information.
|
||||
|
||||
=========================================================================*/
|
||||
#include "vtkSIArraySelectionProperty.h"
|
||||
|
||||
#include "vtkArrayIterator.h"
|
||||
#include "vtkDataArray.h"
|
||||
#include "vtkDoubleArray.h"
|
||||
#include "vtkFloatArray.h"
|
||||
#include "vtkIdTypeArray.h"
|
||||
#include "vtkIntArray.h"
|
||||
#include "vtkObjectFactory.h"
|
||||
#include "vtkSIProperty.h"
|
||||
#include "vtkSMMessage.h"
|
||||
#include "vtkStringArray.h"
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
vtkStandardNewMacro(vtkSIArraySelectionProperty);
|
||||
//----------------------------------------------------------------------------
|
||||
vtkSIArraySelectionProperty::vtkSIArraySelectionProperty()
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
vtkSIArraySelectionProperty::~vtkSIArraySelectionProperty()
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void vtkSIArraySelectionProperty::PrintSelf(ostream& os, vtkIndent indent)
|
||||
{
|
||||
this->Superclass::PrintSelf(os, indent);
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
bool vtkSIArraySelectionProperty::Pull(vtkSMMessage* msgToFill)
|
||||
{
|
||||
if (!this->InformationOnly)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!this->GetCommand()) // Hold the arraName
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Create property and add it to the message
|
||||
ProxyState_Property *prop = msgToFill->AddExtension(ProxyState::property);
|
||||
prop->set_name(this->GetXMLName());
|
||||
Variant *result = prop->mutable_value();
|
||||
result->set_type(Variant::STRING);
|
||||
|
||||
// Get the ID for the reader.
|
||||
vtkObjectBase *reader = this->GetVTKObject();
|
||||
if (reader != NULL)
|
||||
{
|
||||
std::ostringstream aname;
|
||||
aname << "GetNumberOf" << this->Command << "Arrays" << ends;
|
||||
|
||||
// Get the number of arrays.
|
||||
vtkClientServerStream stream;
|
||||
stream << vtkClientServerStream::Invoke
|
||||
<< reader
|
||||
<< aname.str().c_str()
|
||||
<< vtkClientServerStream::End;
|
||||
|
||||
this->ProcessMessage(stream);
|
||||
stream.Reset();
|
||||
int numArrays = 0;
|
||||
if(!this->GetLastResult().GetArgument(0, 0, &numArrays))
|
||||
{
|
||||
vtkErrorMacro("Error getting number of arrays from reader.");
|
||||
}
|
||||
|
||||
// For each array, get its name and status.
|
||||
for(int i=0; i < numArrays; ++i)
|
||||
{
|
||||
std::ostringstream naname;
|
||||
naname << "Get" << this->Command << "ArrayName" << ends;
|
||||
|
||||
// Get the array name.
|
||||
stream << vtkClientServerStream::Invoke
|
||||
<< reader
|
||||
<< naname.str().c_str()
|
||||
<< i
|
||||
<< vtkClientServerStream::End;
|
||||
if(!this->ProcessMessage(stream))
|
||||
{
|
||||
break;
|
||||
}
|
||||
stream.Reset();
|
||||
const char* pname;
|
||||
if(!this->GetLastResult().GetArgument(0, 0, &pname))
|
||||
{
|
||||
vtkErrorMacro("Error getting array name from reader.");
|
||||
break;
|
||||
}
|
||||
if (!pname)
|
||||
{
|
||||
// Initializing a std::string to NULL does not have a defined
|
||||
// behavior.
|
||||
break;
|
||||
}
|
||||
std::string name = pname;
|
||||
|
||||
std::ostringstream saname;
|
||||
saname << "Get" << this->Command << "ArrayStatus" << ends;
|
||||
// Get the array status.
|
||||
stream << vtkClientServerStream::Invoke
|
||||
<< reader
|
||||
<< saname.str().c_str()
|
||||
<< name.c_str()
|
||||
<< vtkClientServerStream::End;
|
||||
if(!this->ProcessMessage(stream))
|
||||
{
|
||||
break;
|
||||
}
|
||||
stream.Reset();
|
||||
int status = 0;
|
||||
if(!this->GetLastResult().GetArgument(0, 0, &status))
|
||||
{
|
||||
vtkErrorMacro("Error getting array status from reader.");
|
||||
break;
|
||||
}
|
||||
|
||||
// Store the name/status pair in the result message.
|
||||
result->add_txt(name.c_str());
|
||||
result->add_txt( (status == 0) ? "0" : "1" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
vtkErrorMacro("GetArraySettings called on NULL vtkObject");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user