Program Listing for File vtkSlicerLayerDMLogic.cxx
↰ Return to documentation for file (Logic/vtkSlicerLayerDMLogic.cxx)
#include "vtkSlicerLayerDMLogic.h"
// LayerDM includes
#include <vtkSlicerLayerDMVersion.h>
// Slicer includes
#include <vtkMRMLLayerDMWidgetEventTranslationNode.h>
// VTK includes
#include <vtkObjectFactory.h>
vtkStandardNewMacro(vtkSlicerLayerDMLogic);
void vtkSlicerLayerDMLogic::RegisterNodes()
{
RegisterNodeIfNeeded<vtkMRMLLayerDMWidgetEventTranslationNode>(GetMRMLScene());
}
int vtkSlicerLayerDMLogic::GetVersionMajor()
{
return vtkSlicerLayerDM_VERSION_MAJOR;
}
int vtkSlicerLayerDMLogic::GetVersionMinor()
{
return vtkSlicerLayerDM_VERSION_MINOR;
}
int vtkSlicerLayerDMLogic::GetVersionPatch()
{
return vtkSlicerLayerDM_VERSION_PATCH;
}
std::string vtkSlicerLayerDMLogic::GetVersion()
{
return vtkSlicerLayerDM_VERSION;
}
void vtkSlicerLayerDMLogic::SetWidgetEventTranslationNode(vtkMRMLNode* node, vtkMRMLLayerDMWidgetEventTranslationNode* translationNode)
{
SetReferenceNode(node, translationNode, EventTranslationRole);
}
vtkMRMLLayerDMWidgetEventTranslationNode* vtkSlicerLayerDMLogic::GetWidgetEventTranslationNode(vtkMRMLNode* node)
{
return GetReferenceNode<vtkMRMLLayerDMWidgetEventTranslationNode>(node, EventTranslationRole);
}
vtkMRMLLayerDMWidgetEventTranslationNode* vtkSlicerLayerDMLogic::GetWidgetEventTranslationSingleton(vtkMRMLScene* scene, const std::string& singletonId)
{
if (!scene)
{
return {};
}
return vtkMRMLLayerDMWidgetEventTranslationNode::SafeDownCast(scene->GetNodeByID(singletonId));
}
vtkMRMLLayerDMWidgetEventTranslationNode* vtkSlicerLayerDMLogic::GetWidgetEventTranslationSingleton(
vtkMRMLScene* scene,
const std::string& singletonId,
const std::function<void(vtkMRMLLayerDMWidgetEventTranslationNode*)>& configureF)
{
auto node = GetWidgetEventTranslationSingleton(scene, singletonId);
if (!node)
{
node = CreateWidgetEventTranslationSingleton(scene, singletonId);
configureF(node);
}
return node;
}
vtkMRMLLayerDMWidgetEventTranslationNode* vtkSlicerLayerDMLogic::CreateWidgetEventTranslationSingleton(vtkMRMLScene* scene, const std::string& singletonId)
{
if (auto node = GetWidgetEventTranslationSingleton(scene, singletonId))
{
return node;
}
if (!scene)
{
return {};
}
vtkNew<vtkMRMLLayerDMWidgetEventTranslationNode> newNode;
newNode->SetSingletonTag(singletonId.c_str());
newNode->SetSaveWithScene(false);
return vtkMRMLLayerDMWidgetEventTranslationNode::SafeDownCast(scene->AddNode(newNode));
}
void vtkSlicerLayerDMLogic::CreateDefaultEventTranslation(vtkMRMLNode* node,
const std::string& singletonId,
const std::function<void(vtkMRMLLayerDMWidgetEventTranslationNode*)>& configureF)
{
if (GetWidgetEventTranslationNode(node))
{
return;
}
SetWidgetEventTranslationNode(node, GetWidgetEventTranslationSingleton(node ? node->GetScene() : nullptr, singletonId, configureF));
}
std::string vtkSlicerLayerDMLogic::GetEventTranslationRole()
{
return EventTranslationRole;
}
std::string vtkSlicerLayerDMLogic::GetDisplayRole()
{
return DisplayRole;
}