24 #include <QMouseEvent> 29 struct QmitkAbstractMultiWidget::Impl final
32 const QString& multiWidgetName);
43 for (
const auto& renderWindowWidget : m_RenderWindowWidgets)
49 void InitializeDisplayActionEventHandling()
52 m_DisplayActionEventBroadcast->LoadStateMachine(
"DisplayInteraction.xml");
53 m_DisplayActionEventBroadcast->SetEventConfig(
"DisplayConfigPACS.xml");
58 QString m_MultiWidgetName;
63 int m_MultiWidgetRows;
64 int m_MultiWidgetColumns;
68 std::unique_ptr<mitk::DisplayActionEventHandler> m_DisplayActionEventHandler;
73 const QString& multiWidgetName)
75 , m_MultiWidgetName(multiWidgetName)
76 , m_MultiWidgetRows(0)
77 , m_MultiWidgetColumns(0)
78 , m_DisplayActionEventBroadcast(nullptr)
79 , m_DisplayActionEventHandler(nullptr)
82 InitializeDisplayActionEventHandling();
87 const QString& multiWidgetName)
89 , m_Impl(
std::make_unique<Impl>(this, multiWidgetName))
98 m_Impl->SetDataStorage(dataStorage);
103 return m_Impl->m_DataStorage;
108 return m_Impl->m_MultiWidgetRows;
113 return m_Impl->m_MultiWidgetColumns;
118 m_Impl->m_MultiWidgetRows = row;
119 m_Impl->m_MultiWidgetColumns = column;
129 interactionSchemeSwitcher->SetInteractionScheme(interactionEventHandler, scheme);
136 SetInteractionSchemeImpl();
141 return m_Impl->m_DisplayActionEventBroadcast.GetPointer();
146 m_Impl->m_DisplayActionEventHandler = std::move(displayActionEventHandler);
147 m_Impl->m_DisplayActionEventHandler->SetObservableBroadcast(m_Impl->m_DisplayActionEventBroadcast);
152 return m_Impl->m_DisplayActionEventHandler.get();
157 return m_Impl->m_RenderWindowWidgets;
165 for (
const auto& renderWindowWidget : renderWindowWidgets)
167 auto renderWindow = renderWindowWidget.second->GetRenderWindow();
170 renderWindowWidgets2D.insert(std::make_pair(renderWindowWidget.first, renderWindowWidget.second));
174 return renderWindowWidgets2D;
182 for (
const auto& renderWindowWidget : renderWindowWidgets)
184 auto renderWindow = renderWindowWidget.second->GetRenderWindow();
187 renderWindowWidgets3D.insert(std::make_pair(renderWindowWidget.first, renderWindowWidget.second));
191 return renderWindowWidgets3D;
201 RenderWindowWidgetMap::const_iterator it = m_Impl->m_RenderWindowWidgets.find(widgetName);
202 if (it != m_Impl->m_RenderWindowWidgets.end())
213 for (
const auto& renderWindowWidget : renderWindowWidgets)
215 if (renderWindowWidget.second->GetRenderWindow() == renderWindow)
217 return renderWindowWidget.second;
229 for (
const auto& renderWindowWidget : renderWindowWidgets)
231 result.insert(renderWindowWidget.first, renderWindowWidget.second->GetRenderWindow());
245 if (
nullptr != renderWindowWidget)
247 return renderWindowWidget->GetRenderWindow();
255 m_Impl->m_ActiveRenderWindowWidget = activeRenderWindowWidget;
261 return m_Impl->m_ActiveRenderWindowWidget;
266 if (!m_Impl->m_RenderWindowWidgets.empty())
268 return m_Impl->m_RenderWindowWidgets.begin()->second;
278 if (!m_Impl->m_RenderWindowWidgets.empty())
280 return m_Impl->m_RenderWindowWidgets.rbegin()->second;
290 if (0 <= row && m_Impl->m_MultiWidgetRows > row && 0 <= column && m_Impl->m_MultiWidgetColumns > column)
300 if (index <= m_Impl->m_RenderWindowWidgets.size())
302 return m_Impl->m_MultiWidgetName +
".widget" + QString::number(index);
310 return m_Impl->m_RenderWindowWidgets.size();
316 if (
nullptr != renderWindowWidget)
318 return renderWindowWidget->RequestUpdate();
324 for (
const auto& renderWindowWidget : m_Impl->m_RenderWindowWidgets)
326 renderWindowWidget.second->RequestUpdate();
333 if (
nullptr != renderWindowWidget)
335 renderWindowWidget->ForceImmediateUpdate();
341 for (
const auto& renderWindowWidget : m_Impl->m_RenderWindowWidgets)
343 renderWindowWidget.second->ForceImmediateUpdate();
349 for (
const auto& renderWindowWidget : m_Impl->m_RenderWindowWidgets)
351 auto renderWindow = renderWindowWidget.second->GetRenderWindow();
352 renderWindow->ActivateMenuWidget(state);
358 return m_Impl->m_ActiveRenderWindowWidget->GetRenderWindow()->GetActivateMenuWidgetFlag();
363 return m_Impl->m_LayoutManager;
368 m_Impl->m_RenderWindowWidgets.insert(std::make_pair(widgetName, renderWindowWidget));
374 if (iterator == m_Impl->m_RenderWindowWidgets.end())
381 disconnect(renderWindowWidgetToRemove.get(), 0, 0, 0);
384 m_Impl->m_RenderWindowWidgets.erase(iterator);
Data management class that handles 'was created by' relations.
static BaseRenderer * GetInstance(vtkRenderWindow *renWin)
This class simplifies the process of adding an itkEventObject-itkCommand pair as an observer of a Dis...
mitk::DataStorage::Pointer m_DataStorage
An object of this class represents an exception of MITK. Please don't instantiate exceptions manually...
MITK implementation of the QVTKWidget.