18#ifndef __vtkMRMLNodeFactory_h
19#define __vtkMRMLNodeFactory_h
25#include <vtkCommand.h>
49 void PrintSelf(ostream& os, vtkIndent indent)
override;
void CopyRegisteredNodeClasses(vtkMRMLNodeFactory *sourceFactory)
void RegisterNodeClass(vtkMRMLNode *node)
Register a node class with the node's GetNodeTagName() as tag.
void RegisterAbstractNodeClass(const std::string &className, const std::string &typeDisplayName)
Register type display name of an abstract node class (e.g., "Volume"), for node selectors.
std::string GetNthRegisteredAbstractNodeTypeDisplayName(int n)
Get the type display name of the nth registered abstract node class.
int GetNumberOfRegisteredAbstractNodeClasses()
Get the number of registered abstract node classes.
std::map< std::string, std::string > RegisteredAbstractNodeClassTypeDisplayNames
void RegisterCoreNodeClasses()
Register the built-in node classes of the MRML core library.
void PrintSelf(ostream &os, vtkIndent indent) override
vtkMRMLNode * GetNthRegisteredNodeClass(int n)
Get the prototype of the nth registered node class. Returns nullptr if n is out of range.
std::vector< std::string > RegisteredNodeTags
~vtkMRMLNodeFactory() override
std::vector< vtkMRMLNode * > RegisteredNodeClasses
vtkMRMLNodeFactory(const vtkMRMLNodeFactory &)=delete
std::string GetNthRegisteredAbstractNodeClassName(int n)
Get the class name of the nth registered abstract node class.
int GetNumberOfRegisteredNodeClasses()
Get the number of registered node classes.
bool IsNodeClassRegistered(const std::string &className)
Return true if className is a registered node class.
static vtkMRMLNodeFactory * New()
@ NodeClassRegisteredEvent
Invoked when a node class or an abstract node class is registered.
const char * GetClassNameByTag(const char *tagName)
std::string GetTypeDisplayNameByClassName(const std::string &className)
Get the type name shown in the GUI. Returns empty string if the class is not registered.
const char * GetTagByClassName(const char *className)
void operator=(const vtkMRMLNodeFactory &)=delete
void RegisterNodeClass(vtkMRMLNode *node, const char *tagName)
vtkMRMLNode * CreateNodeByClass(const char *className)
Abstract Superclass for all specific types of MRML nodes.