22#ifndef __vtkMRMLSequenceBrowserNode_h
23#define __vtkMRMLSequenceBrowserNode_h
25#include "vtkSlicerSequencesModuleMRMLExport.h"
45 void PrintSelf(ostream& os, vtkIndent indent)
override;
50 ProxyNodeModifiedEvent = 21001,
51 IndexDisplayFormatModifiedEvent
61 NumberOfRecordingSamplingModes
67 IndexDisplayAsIndex = 0,
69 NumberOfIndexDisplayModes
79 void WriteXML(ostream& of,
int indent)
override;
123 vtkGetMacro(PlaybackActive,
bool);
124 vtkSetMacro(PlaybackActive,
bool);
125 vtkBooleanMacro(PlaybackActive,
bool);
128 vtkGetMacro(PlaybackRateFps,
double);
129 vtkSetMacro(PlaybackRateFps,
double);
132 vtkGetMacro(PlaybackItemSkippingEnabled,
bool);
133 vtkSetMacro(PlaybackItemSkippingEnabled,
bool);
134 vtkBooleanMacro(PlaybackItemSkippingEnabled,
bool);
137 vtkGetMacro(PlaybackLooped,
bool);
138 vtkSetMacro(PlaybackLooped,
bool);
139 vtkBooleanMacro(PlaybackLooped,
bool);
142 vtkGetMacro(SelectedItemNumber,
int);
143 vtkSetMacro(SelectedItemNumber,
int);
146 vtkGetMacro(RecordingActive,
bool);
148 vtkBooleanMacro(RecordingActive,
bool);
151 vtkGetMacro(RecordMasterOnly,
bool);
152 vtkSetMacro(RecordMasterOnly,
bool);
153 vtkBooleanMacro(RecordMasterOnly,
bool);
156 vtkSetMacro(RecordingSamplingMode,
int);
159 vtkGetMacro(RecordingSamplingMode,
int);
167 vtkSetMacro(IndexDisplayMode,
int);
170 vtkGetMacro(IndexDisplayMode,
int);
176 vtkGetMacro(IndexDisplayFormat, std::string);
203 static bool warningLogged =
false;
206 vtkWarningMacro(
"vtkMRMLSequenceBrowserNode::GetVirtualOutputDataNode is deprecated, use vtkMRMLSequenceBrowserNode::GetProxyNode method instead");
207 warningLogged =
true;
209 return this->GetProxyNode(sequenceNode);
215 static bool warningLogged =
false;
218 vtkWarningMacro(
"vtkMRMLSequenceBrowserNode::SetOverwriteTargetNodeName is deprecated,"
219 <<
" use vtkMRMLSequenceBrowserNode::SetOverwriteProxyName method instead");
220 warningLogged =
true;
222 this->SetOverwriteProxyName(
nullptr, overwrite);
228 static bool warningLogged =
false;
231 vtkWarningMacro(
"vtkMRMLSequenceBrowserNode::SetDeepCopyVirtualNodes is deprecated, use vtkMRMLSequenceBrowserNode::SetSaveChanges method instead");
232 warningLogged =
true;
234 this->SetSaveChanges(
nullptr, !deepcopy);
247 static bool warningLogged =
false;
250 vtkWarningMacro(
"vtkMRMLSequenceBrowserNode::GetAllVirtualOutputDataNodes is deprecated,"
251 <<
" use vtkMRMLSequenceBrowserNode::GetAllProxyNodes method instead");
252 warningLogged =
true;
254 this->GetAllProxyNodes(nodes);
303 const std::string& requestedFormat,
const std::string& typeString);
326 bool PlaybackActive{
false};
327 double PlaybackRateFps{10.0};
328 bool PlaybackItemSkippingEnabled{
true};
329 bool PlaybackLooped{
true};
330 int SelectedItemNumber{-1};
332 bool RecordingActive{
false};
335 bool RecordMasterOnly{
false};
345 int LastPostfixIndex{0};
348 struct SynchronizationProperties;
349 std::map< std::string, SynchronizationProperties* > SynchronizationPropertiesMap;
350 SynchronizationProperties* GetSynchronizationPropertiesForSequence(
vtkMRMLSequenceNode* sequenceNode);
351 SynchronizationProperties* GetSynchronizationPropertiesForPostfix(
const std::string& rolePostfix);
Class to hold information about a node reference.
Abstract Superclass for all specific types of MRML nodes.
void ReadXMLAttributes(const char **atts) override
Set node attributes from name/value pairs.
void GetSynchronizedSequenceNodes(std::vector< vtkMRMLSequenceNode * > &synchronizedDataNodes, bool includeMasterNode=false)
Returns all synchronized sequence nodes (does not include the master sequence node)
void RemoveAllSequenceNodes()
Remove all sequence nodes (including the master sequence node)
virtual std::string GetIndexDisplayModeAsString()
std::string AddSynchronizedSequenceNodeID(const char *synchronizedSequenceNodeId)
Adds a node for synchronized browsing. Returns the new proxy node postfix.
void SetRecordingActive(bool recording)
bool GetOverwriteProxyName(vtkMRMLSequenceNode *sequenceNode)
Overwrite proxy node name with name automatically generated from sequence base name and current item ...
void GetAllProxyNodes(std::vector< vtkMRMLNode * > &nodes)
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
void OnNodeReferenceRemoved(vtkMRMLNodeReference *nodeReference) override
Called whenever a node reference is removed.
const char * GetNodeTagName() override
Get unique node XML tag name (like Volume, Model)
std::string AddSynchronizedSequenceNode(vtkMRMLSequenceNode *synchronizedSequenceNode)
Adds a node for synchronized browsing. Returns the new proxy node postfix.
double RecordingTimeOffsetSec
vtkMRMLSequenceBrowserNode(const vtkMRMLSequenceBrowserNode &)
void PrintSelf(ostream &os, vtkIndent indent) override
void Copy(vtkMRMLNode *node) override
Copy the node's attributes to this object.
vtkMRMLNode * CreateNodeInstance() override
Create instance of a GAD node.
std::string GetSynchronizationPostfixFromSequenceID(const char *sequenceNodeID)
std::vector< std::string > SynchronizationPostfixes
void SetRecording(vtkMRMLSequenceNode *sequenceNode, bool recording)
Set the synchronization properties for the given sequence/proxy tuple.
void SetDeepCopyVirtualNodes(bool deepcopy)
Deprecated method!
void SetIndexDisplayModeFromString(const char *indexDisplayModeString)
bool IsSynchronizedSequenceNode(const char *sequenceNodeId, bool includeMasterNode=false)
Deprecated. Use IsSynchronizedSequenceNodeID instead.
void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData) override
Process MRML node events for recording of the proxy nodes.
void GetAllVirtualOutputDataNodes(vtkCollection *nodes)
Deprecated method!
int SelectLastItem()
Selects last sequence item for display, returns current selected item number.
virtual std::string GetRecordingSamplingModeAsString()
void GetSynchronizedSequenceNodes(vtkCollection *synchronizedDataNodes, bool includeMasterNode=false)
void OnNodeReferenceAdded(vtkMRMLNodeReference *nodeReference) override
Called whenever a new node reference is added.
void RemoveAllProxyNodes()
std::string IndexDisplayFormat
void SetOverwriteProxyName(vtkMRMLSequenceNode *sequenceNode, bool overwrite)
double LastSaveProxyNodesStateTimeSec
static std::string GetRecordingSamplingModeAsString(int recordingSamplingMode)
Helper functions for converting between string and code representation of recording sampling modes.
vtkMRMLNode * GetVirtualOutputDataNode(vtkMRMLSequenceNode *sequenceNode)
Deprecated method!
std::string GetFormattedIndexValue(int index)
int SelectNextItem(int selectionIncrement=1)
Selects the next sequence item for display, returns current selected item number.
bool GetSaveChanges(vtkMRMLSequenceNode *sequenceNode)
int GetNumberOfItems()
Returns number of items in the sequence (number of data nodes in master sequence node)
void FixSequenceNodeReferenceRoleName()
bool GetRecording(vtkMRMLSequenceNode *sequenceNode)
Get the synchronization properties for the given sequence/proxy tuple.
bool IsProxyNodeID(const char *nodeId)
Returns true if the nodeId belongs to a proxy node managed by this browser node.
vtkMRMLNode * GetProxyNode(vtkMRMLSequenceNode *sequenceNode)
Get proxy corresponding to a sequence node.
vtkMRMLSequenceBrowserNode()
bool IsProxyNode(const char *nodeId)
Deprecated. Use IsProxyNodeID instead.
void SetPlayback(vtkMRMLSequenceNode *sequenceNode, bool playback)
void operator=(const vtkMRMLSequenceBrowserNode &)
vtkMRMLSequenceNode * GetSequenceNode(vtkMRMLNode *proxyNode)
Get sequence node corresponding to a proxy node.
std::string AddSynchronizedSequenceNode(const char *synchronizedSequenceNodeId)
Deprecated. Use AddSynchronizedSequenceNodeID instead.
bool IsAnySequenceNodeRecording()
Returns true if any of the sequence node is allowed to record.
void SetSaveChanges(vtkMRMLSequenceNode *sequenceNode, bool save)
bool GetPlayback(vtkMRMLSequenceNode *sequenceNode)
int GetNumberOfSynchronizedSequenceNodes(bool includeMasterNode=false)
Returns number of synchronized sequence nodes.
void GetAllProxyNodes(vtkCollection *nodes)
void RemoveSynchronizedSequenceNode(const char *nodeId)
Removes a node from synchronized browsing.
static vtkMRMLSequenceBrowserNode * New()
static int GetRecordingSamplingModeFromString(const std::string &recordingSamplingModeString)
bool IsSynchronizedSequenceNodeID(const char *sequenceNodeId, bool includeMasterNode=false)
Returns true if the node is selected for synchronized browsing.
std::string GetSynchronizationPostfixFromSequence(vtkMRMLSequenceNode *sequenceNode)
void SetIndexDisplayFormat(std::string displayFormat)
Set format of index value display (used if index type is numeric)
IndexDisplayModeType
Modes displaying index for the user.
@ IndexDisplayAsIndexValue
void RemoveProxyNode(const std::string &postfix)
static int GetIndexDisplayModeFromString(const std::string &indexDisplayModeString)
~vtkMRMLSequenceBrowserNode() override
void SetRecordingSamplingModeFromString(const char *recordingSamplingModeString)
static std::string GetIndexDisplayModeAsString(int indexDisplayMode)
Helper functions for converting between string and code representation of index display modes.
bool IsSynchronizedSequenceNode(vtkMRMLSequenceNode *sequenceNode, bool includeMasterNode=false)
void SetOverwriteTargetNodeName(bool overwrite)
Deprecated method!
vtkMRMLSequenceNode * GetMasterSequenceNode()
Get the sequence data node.
std::string SetAndObserveMasterSequenceNodeID(const char *sequenceNodeID)
virtual void SaveProxyNodesState()
Save state of all proxy nodes that recording is enabled for.
std::string GenerateSynchronizationPostfix()
vtkMRMLNode * AddProxyNode(vtkMRMLNode *sourceProxyNode, vtkMRMLSequenceNode *sequenceNode, bool copy=true)
Adds proxy nodes from another scene (typically from the main scene). The data node is optionally copi...
int SelectFirstItem()
Selects first sequence item for display, returns current selected item number.
RecordingSamplingModeType
Modes for determining recording frame rate.
@ SamplingLimitedToPlaybackFrameRate
static bool ValidateFormatString(std::string &validatedFormat, std::string &prefix, std::string &suffix, const std::string &requestedFormat, const std::string &typeString)
MRML node for representing a sequence of MRML nodes.