Program Listing for File vtkMRMLLayerDMSelectionObserver.h

Return to documentation for file (MRML/vtkMRMLLayerDMSelectionObserver.h)

#pragma once

// LayerDM includes
#include "vtkSlicerLayerDMModuleMRMLExport.h"

// VTK includes
#include <vtkObject.h>
#include <vtkSmartPointer.h>
#include <vtkWeakPointer.h>

class vtkMRMLInteractionNode;
class vtkMRMLNode;
class vtkMRMLScene;
class vtkMRMLSelectionNode;
class vtkMRMLLayerDMObjectEventObserver;
class vtkMRMLApplicationLogic;

class VTK_SLICER_LAYERDM_MODULE_MRML_EXPORT vtkMRMLLayerDMSelectionObserver : public vtkObject
{
public:
  static vtkMRMLLayerDMSelectionObserver* New();
  vtkTypeMacro(vtkMRMLLayerDMSelectionObserver, vtkObject);

  void SetScene(vtkMRMLScene* scene);
  void UpdateNodesFromScene(vtkMRMLScene* scene);

  void UpdateNodesFromApplicationLogic(vtkMRMLApplicationLogic* logic);

  bool SetInteractionNode(vtkMRMLInteractionNode* interactionNode);
  vtkMRMLInteractionNode* GetInteractionNode() const;

  bool SetSelectionNode(vtkMRMLSelectionNode* selectionNode);
  vtkMRMLSelectionNode* GetSelectionNode() const;

  bool IsPlacing(vtkMRMLNode* node) const;

  bool IsPlacing() const;

  void StartPlace(vtkMRMLNode* node, bool isPersistent);

  void StopPlace() const;

  std::string GetActivePlaceNodeID() const;
  void SetInteractionMode(int interactionMode) const;
  int GetCurrentInteractionMode() const;

  bool GetPlaceModePersistence() const;

protected:
  vtkMRMLLayerDMSelectionObserver();
  ~vtkMRMLLayerDMSelectionObserver() override;
  vtkMRMLLayerDMSelectionObserver(const vtkMRMLLayerDMSelectionObserver&) = delete;
  void operator=(const vtkMRMLLayerDMSelectionObserver&) = delete;

private:
  vtkSmartPointer<vtkMRMLLayerDMObjectEventObserver> m_obs;
  vtkWeakPointer<vtkMRMLScene> m_scene;
  vtkWeakPointer<vtkMRMLInteractionNode> m_interactionNode;
  vtkWeakPointer<vtkMRMLSelectionNode> m_selectionNode;
};