.. _program_listing_file_MRML_vtkMRMLLayerDMObjectEventObserver.h: Program Listing for File vtkMRMLLayerDMObjectEventObserver.h ============================================================ |exhale_lsh| :ref:`Return to documentation for file ` (``MRML/vtkMRMLLayerDMObjectEventObserver.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once // LayerDM includes #include "vtkSlicerLayerDMModuleMRMLExport.h" // VTK includes #include #include #include #include // STL includes #include #include #include #include #include class vtkCallbackCommand; class VTK_SLICER_LAYERDM_MODULE_MRML_EXPORT vtkMRMLLayerDMObjectEventObserver : public vtkObject { public: struct UpdateGuard; static vtkMRMLLayerDMObjectEventObserver* New(); vtkTypeMacro(vtkMRMLLayerDMObjectEventObserver, vtkObject); bool UpdateObserver(vtkObject* prevObj, vtkObject* obj, unsigned long event = vtkCommand::ModifiedEvent); bool UpdateObserver(vtkObject* prevObj, vtkObject* obj, const std::vector& events); void RemoveObserver(vtkObject* obj); void SetUpdateCallback(const std::function& callback); void SetUpdateCallback(const std::function& callback); void SetUpdateCallback(const std::function& callback); bool SetBlocked(bool isBlocked); struct UpdateGuard { UpdateGuard(vtkMRMLLayerDMObjectEventObserver* obs); ~UpdateGuard(); private: vtkMRMLLayerDMObjectEventObserver* m_obs; bool m_wasBlocked{}; }; protected: vtkMRMLLayerDMObjectEventObserver(); ~vtkMRMLLayerDMObjectEventObserver() override; private: void AddObserver(vtkObject* obj, unsigned long event); vtkSmartPointer m_updateCommand{}; std::map, std::set> m_obsMap{}; std::variant, std::function, std::function> m_callback; bool m_isBlocked; };