21 #include <QMessageBox> 26 m_PendingSliceChangedEvent(false),
27 m_internalUpdateFlag(false)
73 QMessageBox::information(
nullptr,
"Error",
"Unable to set up the event observers. The " \
74 "plot will not be triggered on changing the crosshair, " \
75 "position or time step.");
90 typedef QHash<QString, QmitkRenderWindow*> WindowMapType;
93 auto i = windowMap.begin();
95 while (i != windowMap.end())
98 i.value()->GetSliceNavigationController();
100 if (sliceNavController)
102 itk::ReceptorMemberCommand<QmitkSliceNavigationListener>::Pointer cmdSliceEvent =
103 itk::ReceptorMemberCommand<QmitkSliceNavigationListener>::New();
105 int tag = sliceNavController->AddObserver(
112 itk::ReceptorMemberCommand<QmitkSliceNavigationListener>::Pointer cmdTimeEvent =
113 itk::ReceptorMemberCommand<QmitkSliceNavigationListener>::New();
115 tag = sliceNavController->AddObserver(
122 itk::MemberCommand<QmitkSliceNavigationListener>::Pointer cmdDelEvent =
123 itk::MemberCommand<QmitkSliceNavigationListener>::New();
124 cmdDelEvent->SetCallbackFunction(
this,
126 tag = sliceNavController->AddObserver(
127 itk::DeleteEvent(), cmdDelEvent);
135 result = result && sliceNavController;
143 std::pair < ObserverMapType::const_iterator, ObserverMapType::const_iterator> obsRange =
146 for (ObserverMapType::const_iterator pos = obsRange.first; pos != obsRange.second; ++pos)
148 pos->second.controller->RemoveObserver(pos->second.observerTag);
158 ObserverMapType::const_iterator delPos = pos++;
160 if (deletedPart ==
nullptr || deletedPart == delPos->second.renderWindowPart)
162 delPos->second.controller->RemoveObserver(delPos->second.observerTag);
169 const std::string& renderWindowName,
mitk::IRenderWindowPart* part) : controller(controller), observerTag(observerTag),
170 renderWindowName(renderWindowName), renderWindowPart(part)
void RemoveAllObservers(mitk::IRenderWindowPart *deletedPart=nullptr)
void OnSliceChangedInternal(const itk::EventObject &e)
Calls OnSliceChangedDelayed so the event isn't triggered multiple times.
QmitkSliceNavigationListener()
Interface for a MITK Workbench Part providing a render window.
ObserverInfo(mitk::SliceNavigationController *controller, int observerTag, const std::string &renderWindowName, mitk::IRenderWindowPart *part)
virtual QHash< QString, QmitkRenderWindow * > GetQmitkRenderWindows() const =0
void OnSliceChangedDelayed()
Controls the selection of the slice the associated BaseRenderer will display.
mitk::IRenderWindowPart * m_renderWindowPart
void RenderWindowPartActivated(mitk::IRenderWindowPart *renderWindowPart)
bool m_PendingSliceChangedEvent
~QmitkSliceNavigationListener() override
void RenderWindowPartDeactivated(mitk::IRenderWindowPart *renderWindowPart)
void RemoveObservers(const mitk::SliceNavigationController *deletedSlicer)
ObserverMapType m_ObserverMap
void OnSliceNavigationControllerDeleted(const itk::Object *sender, const itk::EventObject &)