mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
118 lines
3.8 KiB
C++
118 lines
3.8 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkSMSelectionLink.h
|
|
|
|
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 vtkSMSelectionLink -
|
|
// .SECTION Description
|
|
// Creates a link between two properties. Can create M->N links.
|
|
// At the time when the link is created every output Selection is synchronized
|
|
// with the first input Selection.
|
|
|
|
#ifndef vtkSMSelectionLink_h
|
|
#define vtkSMSelectionLink_h
|
|
|
|
#include "vtkPVServerManagerCoreModule.h" //needed for exports
|
|
#include "vtkSMLink.h"
|
|
|
|
//BTX
|
|
class vtkSMSourceProxy;
|
|
class vtkSMSelectionLinkInternals;
|
|
class vtkSMSelectionLinkObserver;
|
|
//ETX
|
|
|
|
class VTKPVSERVERMANAGERCORE_EXPORT vtkSMSelectionLink : public vtkSMLink
|
|
{
|
|
public:
|
|
static vtkSMSelectionLink* New();
|
|
vtkTypeMacro(vtkSMSelectionLink, vtkSMLink);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Add a selection to the link. updateDir determines whether
|
|
// the proxy used is an input or an output. When a selection of an input proxy
|
|
// changes, it's selection is set to all other output proxies in the link.
|
|
// A selection can be set to be both input and output by adding 2 links, one
|
|
// to INPUT and the other to OUTPUT
|
|
// When a link is added, all output Selection values are
|
|
// synchronized with that of the input.
|
|
void AddLinkedSelection(vtkSMProxy* proxy,
|
|
int updateDir);
|
|
void RemoveLinkedSelection(vtkSMProxy* proxy);
|
|
|
|
// Description:
|
|
// Get the number of properties that are involved in this link.
|
|
unsigned int GetNumberOfLinkedObjects();
|
|
|
|
// Description:
|
|
// Get a proxy involved in this link.
|
|
vtkSMProxy* GetLinkedProxy(int index);
|
|
|
|
// Description:
|
|
// Get the direction of a Selection involved in this link
|
|
// (see vtkSMLink::UpdateDirections)
|
|
int GetLinkedObjectDirection(int index);
|
|
|
|
// Description:
|
|
// Remove all links.
|
|
virtual void RemoveAllLinks();
|
|
|
|
// Description:
|
|
// This method is used to initialize the object to the given protobuf state
|
|
virtual void LoadState(const vtkSMMessage* msg, vtkSMProxyLocator* locator);
|
|
|
|
protected:
|
|
vtkSMSelectionLink();
|
|
~vtkSMSelectionLink();
|
|
|
|
friend class vtkSMSelectionLinkInternals;
|
|
friend class vtkSMSelectionLinkObserver;
|
|
|
|
// Description:
|
|
// Load the link state.
|
|
virtual int LoadXMLState(vtkPVXMLElement* linkElement, vtkSMProxyLocator* locator);
|
|
|
|
// Description:
|
|
// Save the state of the link.
|
|
virtual void SaveXMLState(const char* linkname, vtkPVXMLElement* parent);
|
|
|
|
// Description:
|
|
// Not implemented
|
|
virtual void UpdateVTKObjects(vtkSMProxy* vtkNotUsed(caller)){};
|
|
|
|
// Description:
|
|
// Not implemented
|
|
virtual void PropertyModified(vtkSMProxy* vtkNotUsed(caller), const char* vtkNotUsed(pname)){};
|
|
|
|
// Description:
|
|
// Not implemented
|
|
virtual void UpdateProperty(vtkSMProxy* vtkNotUsed(caller), const char* vtkNotUsed(pname)){};
|
|
|
|
// Description:
|
|
// This method find the caller in the link and update selection output accordingly
|
|
virtual void SelectionModified(vtkSMSourceProxy* caller, unsigned int portIndex);
|
|
|
|
// Description:
|
|
// Update the internal protobuf state
|
|
virtual void UpdateState();
|
|
|
|
private:
|
|
vtkSMSelectionLinkInternals* Internals;
|
|
|
|
// lock flag to prevent multiple selection modification at the same time
|
|
bool ModifyingSelection;
|
|
|
|
vtkSMSelectionLink(const vtkSMSelectionLink&); // Not implemented.
|
|
void operator=(const vtkSMSelectionLink&); // Not implemented.
|
|
};
|
|
#endif
|