.. _program_listing_file_MRMLDM_vtkMRMLLayerDMPipelineScriptedCreator.cxx: Program Listing for File vtkMRMLLayerDMPipelineScriptedCreator.cxx ================================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``MRMLDM/vtkMRMLLayerDMPipelineScriptedCreator.cxx``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "vtkMRMLLayerDMPipelineScriptedCreator.h" // Layer DM includes #include "vtkMRMLLayerDMPipelineI.h" #include "vtkMRMLLayerDMPythonUtil.h" // Slicer includes #include "vtkMRMLAbstractViewNode.h" #include "vtkMRMLNode.h" // VTK includes #include #include vtkStandardNewMacro(vtkMRMLLayerDMPipelineScriptedCreator); vtkMRMLLayerDMPipelineScriptedCreator::vtkMRMLLayerDMPipelineScriptedCreator() : m_object(nullptr) { this->SetCallback( [this](vtkMRMLAbstractViewNode* viewNode, vtkMRMLNode* node) -> vtkSmartPointer { if (!vtkMRMLLayerDMPythonUtil::IsValidPythonContext()) { return nullptr; } vtkPythonScopeGilEnsurer gilEnsurer; PyObject* result = vtkMRMLLayerDMPythonUtil::CallPythonObject( this->m_object, vtkMRMLLayerDMPythonUtil::ToPyArgs({ vtkMRMLLayerDMPythonUtil::ToPyObject(viewNode), vtkMRMLLayerDMPythonUtil::ToPyObject(node) })); if (!result) { auto errorMsg = std::string(__func__) + ": Failed to call : " + vtkMRMLLayerDMPythonUtil::GetObjectStr(this->m_object) + ":"; vtkMRMLLayerDMPythonUtil::PrintErrorTraceback(this, errorMsg); return nullptr; } return vtkMRMLLayerDMPipelineI::SafeDownCast(vtkPythonUtil::GetPointerFromObject(result, "vtkMRMLLayerDMPipelineI")); }); } vtkMRMLLayerDMPipelineScriptedCreator::~vtkMRMLLayerDMPipelineScriptedCreator() { vtkMRMLLayerDMPythonUtil::DeletePythonObject(&this->m_object); } void vtkMRMLLayerDMPipelineScriptedCreator::SetPythonCallback(PyObject* object) { vtkMRMLLayerDMPythonUtil::SetPythonObject(&this->m_object, object); }