21#ifndef __vtkMRMLLayerDMNodeReferenceObserver_h
22#define __vtkMRMLLayerDMNodeReferenceObserver_h
25#include "vtkSlicerLayerDMModuleMRMLExport.h"
29#include <vtkSmartPointer.h>
30#include <vtkWeakPointer.h>
59 using RefT = std::tuple<vtkWeakPointer<vtkMRMLNode>, std::string>;
69 void PrintSelf(ostream& os, vtkIndent indent)
override;
104 void UpdateFromScene();
109 void RemoveOutdatedReferences(
vtkMRMLNode* fromNode);
112 static std::vector<RefT> GetNodeReferencesFromScene(
vtkMRMLNode* node);
117 vtkWeakPointer<vtkMRMLScene> Scene;
118 vtkSmartPointer<vtkMRMLLayerDMObjectEventObserver> Observer;
127 std::map<vtkSmartPointer<vtkMRMLNode>, std::vector<RefT>> NodeToReferences;
128 std::map<vtkSmartPointer<vtkMRMLNode>, std::vector<RefT>> NodeFromReferences;
131 std::set<vtkSmartPointer<vtkMRMLNode>> Nodes;
std::function< void(vtkMRMLNode *, vtkMRMLNode *, const std::string &, int eventType)> CallBackT
std::tuple< vtkWeakPointer< vtkMRMLNode >, std::string > RefT
void SetReferenceModifiedCallBack(const CallBackT &modifiedCallback)
int GetReferenceFromSize() const
vtkMRMLLayerDMNodeReferenceObserver()
~vtkMRMLLayerDMNodeReferenceObserver() override
void SetScene(vtkMRMLScene *scene)
Setting the MRML scene will trigger node added / removed callbacks if they are set.
std::vector< RefT > GetNodeFromReferences(vtkMRMLNode *node) const
void PrintSelf(ostream &os, vtkIndent indent) override
std::vector< RefT > GetNodeToReferences(vtkMRMLNode *node) const
int GetReferenceToSize() const
int GetNumberOfNodes() const
static vtkMRMLLayerDMNodeReferenceObserver * New()
VTK object observer with one callback endpoint when an event is triggered. Can observe multiple objec...
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.