Slicer 5.13
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkSlicerSequencesLogic.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Portions (c) Copyright Brigham and Women's Hospital (BWH) All Rights Reserved.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16==============================================================================*/
17
18// .NAME vtkSlicerSequencesLogic - slicer logic class for volumes manipulation
19// .SECTION Description
20// This class manages the logic associated with reading, saving,
21// and changing propertied of the volumes
22
23#ifndef __vtkSlicerSequencesLogic_h
24#define __vtkSlicerSequencesLogic_h
25
26// Slicer includes
28
29// MRML includes
30
31// STD includes
32#include <cstdlib>
33
34#include "vtkSlicerSequencesModuleLogicExport.h"
35
37class vtkMRMLNode;
40
41class VTK_SLICER_SEQUENCES_MODULE_LOGIC_EXPORT vtkSlicerSequencesLogic : public vtkSlicerModuleLogic
42{
43public:
46 void PrintSelf(ostream& os, vtkIndent indent) override;
47
54 vtkMRMLSequenceNode* AddSequence(const char* filename, vtkMRMLMessageCollection* userMessages = nullptr);
55
58
63
66
69 {
70 static bool warningLogged = false;
71 if (!warningLogged)
72 {
73 vtkWarningMacro("vtkSlicerSequenceBrowserLogic::UpdateVirtualOutputNodes is deprecated," << " use vtkSlicerSequenceBrowserLogic::UpdateProxyNodes method instead");
74 warningLogged = true;
75 }
76 this->UpdateProxyNodesFromSequences(browserNode);
77 }
78
84
85 void GetCompatibleNodesFromScene(vtkCollection* compatibleNodes, vtkMRMLSequenceNode* sequenceNode);
86
88
90 void GetBrowserNodesForSequenceNode(vtkMRMLSequenceNode* sequenceNode, vtkCollection* foundBrowserNodes);
91
96
98 void GetBrowserNodesForProxyNode(vtkMRMLNode* proxyNode, vtkCollection* foundBrowserNodes);
99
104
106 std::vector<vtkSmartPointer<vtkMRMLFileIOHandler>> CreateFileIOHandlers() override;
107
108protected:
111
112 void SetMRMLSceneInternal(vtkMRMLScene* newScene) override;
114 void RegisterNodes() override;
115 void UpdateFromMRMLScene() override;
116 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
118 void ProcessMRMLNodesEvents(vtkObject* caller, unsigned long event, void* callData) override;
119
121
122 // Time of the last update of each browser node (in universal time)
123 std::map<vtkMRMLSequenceBrowserNode*, double> LastSequenceBrowserUpdateTimeSec;
124
125private:
126 std::set<vtkMRMLSequenceBrowserNode*> UpdateProxyNodesFromSequencesInProgress;
127 std::set<vtkMRMLSequenceBrowserNode*> UpdateSequencesFromProxyNodesInProgress;
128
129 vtkSlicerSequencesLogic(const vtkSlicerSequencesLogic&); // Not implemented
130 void operator=(const vtkSlicerSequencesLogic&); // Not implemented
131};
132
133#endif
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.
MRML node for representing a sequence of MRML nodes.
void UpdateAllProxyNodes()
Refreshes the output of all the active browser nodes. Called regularly by a timer.
void RegisterNodes() override
Register MRML Node classes to Scene. Gets called automatically when the MRMLScene is attached to this...
void GetBrowserNodesForProxyNode(vtkMRMLNode *proxyNode, vtkCollection *foundBrowserNodes)
Get collection of browser nodes that use a specific proxy node.
void PrintSelf(ostream &os, vtkIndent indent) override
static bool IsNodeCompatibleForBrowsing(vtkMRMLSequenceNode *masterNode, vtkMRMLSequenceNode *testedNode)
void GetBrowserNodesForSequenceNode(vtkMRMLSequenceNode *sequenceNode, vtkCollection *foundBrowserNodes)
Get collection of browser nodes that use a specific sequence node.
void UpdateVirtualOutputNodes(vtkMRMLSequenceBrowserNode *browserNode)
Deprecated method!
std::map< vtkMRMLSequenceBrowserNode *, double > LastSequenceBrowserUpdateTimeSec
void UpdateProxyNodesFromSequences(vtkMRMLSequenceBrowserNode *browserNode, vtkMRMLSequenceNode *sequenceNode=nullptr)
vtkMRMLSequenceBrowserNode * GetFirstBrowserNodeForProxyNode(vtkMRMLNode *proxyNode)
void GetCompatibleNodesFromScene(vtkCollection *compatibleNodes, vtkMRMLSequenceNode *sequenceNode)
std::vector< vtkSmartPointer< vtkMRMLFileIOHandler > > CreateFileIOHandlers() override
Create file readers and writers of the module.
void SetMRMLSceneInternal(vtkMRMLScene *newScene) override
vtkMRMLSequenceBrowserNode * GetFirstBrowserNodeForSequenceNode(vtkMRMLSequenceNode *sequenceNode)
void UpdateFromMRMLScene() override
static vtkSlicerSequencesLogic * New()
void ProcessMRMLNodesEvents(vtkObject *caller, unsigned long event, void *callData) override
void UpdateSequencesFromProxyNodes(vtkMRMLSequenceBrowserNode *browserNode, vtkMRMLNode *proxyNode)
Updates the sequence from a changed proxy node (if saving of state changes is allowed)
~vtkSlicerSequencesLogic() override
void OnMRMLSceneNodeRemoved(vtkMRMLNode *node) override
vtkMRMLSequenceNode * AddSequence(const char *filename, vtkMRMLMessageCollection *userMessages=nullptr)
vtkMRMLSequenceNode * AddSynchronizedNode(vtkMRMLNode *sequenceNode, vtkMRMLNode *proxyNode, vtkMRMLNode *browserNode)
bool IsDataConnectorNode(vtkMRMLNode *)
void OnMRMLSceneNodeAdded(vtkMRMLNode *node) override