mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
204 lines
7.7 KiB
C++
204 lines
7.7 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: $RCSfile$
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkSMProxyDefinitionManager
|
|
// .SECTION Description
|
|
// vtkSMProxyDefinitionManager is a remote-object that represents the
|
|
// vtkSIProxyDefinitionManager instance on all the processes. ParaView clients
|
|
// should use API on this class to add/update xml definitions to ensure that
|
|
// the xmls are processed/updated correctly on all the processes.
|
|
|
|
#ifndef vtkSMProxyDefinitionManager_h
|
|
#define vtkSMProxyDefinitionManager_h
|
|
|
|
#include "vtkPVServerManagerCoreModule.h" //needed for exports
|
|
#include "vtkSMRemoteObject.h"
|
|
#include "vtkSIProxyDefinitionManager.h" // needed for enums
|
|
#include "vtkWeakPointer.h" // needed for weak pointer.
|
|
#include "vtkSMMessageMinimal.h" // needed
|
|
|
|
class vtkSMProxyLocator;
|
|
class vtkEventForwarderCommand;
|
|
|
|
class VTKPVSERVERMANAGERCORE_EXPORT vtkSMProxyDefinitionManager : public vtkSMRemoteObject
|
|
{
|
|
public:
|
|
static vtkSMProxyDefinitionManager* New();
|
|
vtkTypeMacro(vtkSMProxyDefinitionManager, vtkSMRemoteObject);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Synchronizes the client-side definitions using the server-side definitions,
|
|
// if applicable. Call this method after any code that could result in
|
|
// changing of the XML definitions on the server e.g. loading of plugins.
|
|
void SynchronizeDefinitions();
|
|
|
|
// Description:
|
|
// Overridden call SynchronizeDefinitions() when the session changes. Also
|
|
// ensures that the internal references to vtkSIProxyDefinitionManager are
|
|
// updated correctly.
|
|
virtual void SetSession(vtkSMSession*);
|
|
|
|
//***************************************************************************
|
|
// enums re-defined from vtkSIProxyDefinitionManager for convenience.
|
|
enum Events
|
|
{
|
|
ProxyDefinitionsUpdated =
|
|
vtkSIProxyDefinitionManager::ProxyDefinitionsUpdated,
|
|
CompoundProxyDefinitionsUpdated =
|
|
vtkSIProxyDefinitionManager::CompoundProxyDefinitionsUpdated
|
|
};
|
|
|
|
enum
|
|
{
|
|
ALL_DEFINITIONS = vtkSIProxyDefinitionManager::ALL_DEFINITIONS,
|
|
CORE_DEFINITIONS = vtkSIProxyDefinitionManager::CORE_DEFINITIONS,
|
|
CUSTOM_DEFINITIONS = vtkSIProxyDefinitionManager::CUSTOM_DEFINITIONS
|
|
};
|
|
|
|
//***************************************************************************
|
|
// Methods simply forwarded to the client-side vtkSIProxyDefinitionManager
|
|
// instance.
|
|
|
|
// Description:
|
|
// Returns a registered proxy definition or return a NULL otherwise.
|
|
// Moreover, error can be throw if the definition was not found if the
|
|
// flag throwError is true.
|
|
vtkPVXMLElement* GetProxyDefinition(
|
|
const char* group, const char* name, bool throwError)
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->GetProxyDefinition(
|
|
group, name, throwError) : NULL;
|
|
}
|
|
vtkPVXMLElement* GetProxyDefinition(const char* group, const char* name)
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->GetProxyDefinition(group, name) : NULL;
|
|
}
|
|
|
|
// Description:
|
|
// Returns the same thing as GetProxyDefinition in a flatten manner.
|
|
// By flatten, we mean that the class hierarchy has been walked and merged
|
|
// into a single vtkPVXMLElement definition.
|
|
vtkPVXMLElement* GetCollapsedProxyDefinition(const char* group,
|
|
const char* name,
|
|
const char* subProxyName,
|
|
bool throwError)
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->GetCollapsedProxyDefinition(
|
|
group, name, subProxyName, throwError) : NULL;
|
|
}
|
|
|
|
// Description:
|
|
// Return true if the XML Definition was found
|
|
bool HasDefinition( const char* groupName, const char* proxyName )
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->HasDefinition(groupName, proxyName): false;
|
|
}
|
|
|
|
// Description:
|
|
// Save registered custom proxy definitions. The caller must release the
|
|
// reference to the returned vtkPVXMLElement.
|
|
void SaveCustomProxyDefinitions(vtkPVXMLElement* root)
|
|
{
|
|
if (this->ProxyDefinitionManager)
|
|
{
|
|
this->ProxyDefinitionManager->SaveCustomProxyDefinitions(root);
|
|
}
|
|
}
|
|
|
|
// Description:
|
|
// Return a NEW instance of vtkPVProxyDefinitionIterator configured to
|
|
// get through all the definition available for the requested scope.
|
|
// Possible scope defined as enum inside vtkSIProxyDefinitionManager:
|
|
// ALL_DEFINITIONS=0 / CORE_DEFINITIONS=1 / CUSTOM_DEFINITIONS=2
|
|
// Some extra restriction can be set directly on the iterator itself
|
|
// by setting a set of GroupName...
|
|
vtkPVProxyDefinitionIterator* NewIterator()
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->NewIterator() : NULL;
|
|
}
|
|
vtkPVProxyDefinitionIterator* NewIterator(int scope)
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->NewIterator(scope) : NULL;
|
|
}
|
|
|
|
// Description
|
|
// Return a new configured iterator for traversing a set of proxy definition
|
|
// for only one GroupName.
|
|
// Possible scope defined as enum inside vtkSIProxyDefinitionManager:
|
|
// ALL_DEFINITIONS=0 / CORE_DEFINITIONS=1 / CUSTOM_DEFINITIONS=2
|
|
vtkPVProxyDefinitionIterator* NewSingleGroupIterator(const char* groupName)
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->NewSingleGroupIterator(groupName): NULL;
|
|
}
|
|
vtkPVProxyDefinitionIterator* NewSingleGroupIterator(
|
|
const char* groupName, int scope)
|
|
{
|
|
return this->ProxyDefinitionManager?
|
|
this->ProxyDefinitionManager->NewSingleGroupIterator(groupName, scope) : NULL;
|
|
}
|
|
|
|
//***************************************************************************
|
|
// Methods that ensure that the command takes effect on all instances of
|
|
// vtkSIProxyDefinitionManager across all processes.
|
|
|
|
// Description:
|
|
// Add/Remove/Clear custom proxy definitions.
|
|
void AddCustomProxyDefinition(
|
|
const char* group, const char* name, vtkPVXMLElement* top);
|
|
void RemoveCustomProxyDefinition(const char* group, const char* name);
|
|
void ClearCustomProxyDefinitions();
|
|
|
|
// Description:
|
|
// Load custom proxy definitions and register them.
|
|
void LoadCustomProxyDefinitions(vtkPVXMLElement* root);
|
|
void LoadCustomProxyDefinitionsFromString(const char* xmlContent);
|
|
|
|
// Description:
|
|
// Loads server-manager configuration xml.
|
|
bool LoadConfigurationXML(vtkPVXMLElement* root);
|
|
bool LoadConfigurationXMLFromString(const char* xmlContent);
|
|
|
|
//BTX
|
|
|
|
// Description:
|
|
// This method is used to initialise the object to the given state
|
|
// If the definitionOnly Flag is set to True the proxy won't load the
|
|
// properties values and just setup the new proxy hierarchy with all subproxy
|
|
// globalID set. This allow to split the load process in 2 step to prevent
|
|
// invalid state when property refere to a sub-proxy that does not exist yet.
|
|
virtual void LoadState( const vtkSMMessage* msg, vtkSMProxyLocator* locator);
|
|
|
|
protected:
|
|
vtkSMProxyDefinitionManager();
|
|
~vtkSMProxyDefinitionManager();
|
|
|
|
vtkEventForwarderCommand* Forwarder;
|
|
vtkWeakPointer<vtkSIProxyDefinitionManager> ProxyDefinitionManager;
|
|
|
|
private:
|
|
vtkSMProxyDefinitionManager(const vtkSMProxyDefinitionManager&); // Not implemented
|
|
void operator=(const vtkSMProxyDefinitionManager&); // Not implemented
|
|
//ETX
|
|
};
|
|
|
|
#endif
|