Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkAbstractMultiWidgetEditor.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 // mitk qt widgets module
18 
19 // mitk gui qt common plugin
21 
22 // berry
24 
25 const QString QmitkAbstractMultiWidgetEditor::EDITOR_ID = "org.mitk.editors.abstractmultiwidget";
26 
27 struct QmitkAbstractMultiWidgetEditor::Impl final
28 {
29  Impl();
30  ~Impl() = default;
31 
32  QmitkAbstractMultiWidget* m_MultiWidget;
33 
34  std::unique_ptr<QmitkMultiWidgetDecorationManager> m_MultiWidgetDecorationManager;
35 };
36 
37 QmitkAbstractMultiWidgetEditor::Impl::Impl()
38  : m_MultiWidget(nullptr)
39 {
40  // nothing here
41 }
42 
44  : m_Impl(std::make_unique<Impl>())
45 {
46  // nothing here
47 }
48 
50 
52 {
53  const auto& multiWidget = GetMultiWidget();
54  if (nullptr != multiWidget)
55  {
56  auto activeRenderWindowWidget = multiWidget->GetActiveRenderWindowWidget();
57  if (nullptr != activeRenderWindowWidget)
58  {
59  return activeRenderWindowWidget->GetRenderWindow();
60  }
61  }
62 
63  return nullptr;
64 }
65 
66 QHash<QString, QmitkRenderWindow*> QmitkAbstractMultiWidgetEditor::GetQmitkRenderWindows() const
67 {
68  QHash<QString, QmitkRenderWindow*> result;
69  const auto& multiWidget = GetMultiWidget();
70  if (nullptr == multiWidget)
71  {
72  return result;
73  }
74 
75  result = multiWidget->GetRenderWindows();
76  return result;
77 }
78 
80 {
81  const auto& multiWidget = GetMultiWidget();
82  if (nullptr == multiWidget)
83  {
84  return nullptr;
85  }
86 
87  return multiWidget->GetRenderWindow(id);
88 }
89 
91 {
92  const auto& multiWidget = GetMultiWidget();
93  if (nullptr == multiWidget)
94  {
95  return nullptr;
96  }
97 
98  return multiWidget->GetRenderWindow(viewDirection);
99 }
100 
102 {
103  const auto& multiWidget = GetMultiWidget();
104  if (nullptr == multiWidget)
105  {
106  return mitk::Point3D();
107  }
108 
109  return multiWidget->GetSelectedPosition(id);
110 }
111 
112 void QmitkAbstractMultiWidgetEditor::SetSelectedPosition(const mitk::Point3D& pos, const QString& id/* = QString()*/)
113 {
114  const auto& multiWidget = GetMultiWidget();
115  if (nullptr != multiWidget)
116  {
117  return multiWidget->SetSelectedPosition(pos, id);
118  }
119 }
120 
121 void QmitkAbstractMultiWidgetEditor::EnableDecorations(bool enable, const QStringList& decorations)
122 {
123  m_Impl->m_MultiWidgetDecorationManager->ShowDecorations(enable, decorations);
124 }
125 
126 bool QmitkAbstractMultiWidgetEditor::IsDecorationEnabled(const QString& decoration) const
127 {
128  return m_Impl->m_MultiWidgetDecorationManager->IsDecorationVisible(decoration);
129 }
130 
132 {
133  return m_Impl->m_MultiWidgetDecorationManager->GetDecorations();
134 }
135 
136 berry::IPartListener::Events::Types QmitkAbstractMultiWidgetEditor::GetPartEventTypes() const
137 {
139 }
140 
142 {
143  if (partRef->GetId() == QmitkAbstractMultiWidgetEditor::EDITOR_ID)
144  {
145  const auto& multiWidget = GetMultiWidget();
146  if (nullptr != multiWidget)
147  {
148  multiWidget->MultiWidgetOpened();
149  }
150  }
151 }
152 
154 {
155  if (partRef->GetId() == QmitkAbstractMultiWidgetEditor::EDITOR_ID)
156  {
157  const auto& multiWidget = GetMultiWidget();
158  if (nullptr != multiWidget)
159  {
160  multiWidget->MultiWidgetClosed();
161  }
162  }
163 }
164 
166 {
167  const auto& multiWidget = GetMultiWidget();
168  if (nullptr == multiWidget)
169  {
170  return nullptr;
171  }
172 
173  QString renderWindowName = multiWidget->GetNameFromIndex(index);
174  return multiWidget->GetRenderWindow(renderWindowName);
175 }
176 
178 {
179  const auto& multiWidget = GetMultiWidget();
180  if (nullptr == multiWidget)
181  {
182  return nullptr;
183  }
184 
185  QString renderWindowName = multiWidget->GetNameFromIndex(row, column);
186  return multiWidget->GetRenderWindow(renderWindowName);
187 }
188 
190 {
191  m_Impl->m_MultiWidget = multiWidget;
192  m_Impl->m_MultiWidgetDecorationManager.reset(new QmitkMultiWidgetDecorationManager(multiWidget));
193 }
194 
196 {
197  return m_Impl->m_MultiWidget;
198 }
199 
201 {
202  const auto& multiWidget = GetMultiWidget();
203  if (nullptr == multiWidget)
204  {
205  return 0;
206  }
207 
208  return multiWidget->GetRowCount();
209 }
210 
212 {
213  const auto& multiWidget = GetMultiWidget();
214  if (nullptr == multiWidget)
215  {
216  return 0;
217  }
218 
219  return multiWidget->GetColumnCount();
220 }
221 
223 {
224  const auto& multiWidget = GetMultiWidget();
225  if (nullptr != multiWidget)
226  {
227  multiWidget->SetLayout(row, column);
229  }
230 }
231 
233  {
234  const auto& multiWidget = GetMultiWidget();
235  if (nullptr != multiWidget)
236  {
237  multiWidget->Synchronize(synchronized);
238  }
239  }
240 
242  {
243  const auto& multiWidget = GetMultiWidget();
244  if (nullptr != multiWidget)
245  {
246  multiWidget->SetInteractionScheme(scheme);
247  }
248  }
virtual int GetColumnCount() const
Return the number of columns of the underlying multi widget.
virtual QmitkRenderWindow * GetQmitkRenderWindowByIndex(int index) const
Retrieve a QmitkRenderWindow by its index.
virtual QmitkAbstractMultiWidget * GetMultiWidget() const
Return the current multi widget of this editor.
virtual void SetSelectedPosition(const mitk::Point3D &pos, const QString &id=QString()) override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
STL namespace.
virtual QStringList GetDecorations() const override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
virtual void SetMultiWidget(QmitkAbstractMultiWidget *multiWidget)
Set the current multi widget of this editor.
virtual int GetRowCount() const
Return the number of rows of the underlying multi widget.
virtual berry::IPartListener::Events::Types GetPartEventTypes() const override
Overridden from berry::IPartListener.
virtual QmitkRenderWindow * GetQmitkRenderWindow(const QString &id) const override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
virtual bool IsDecorationEnabled(const QString &decoration) const override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
virtual void OnSynchronize(bool synchronized)
virtual void PartOpened(const berry::IWorkbenchPartReference::Pointer &partRef) override
Overridden from berry::IPartListener.
virtual void OnLayoutSet(int row, int column)
A slot that can be called if the layout has been changed. This function will call the function &#39;SetLa...
MITK implementation of the QVTKWidget.
virtual void EnableDecorations(bool enable, const QStringList &decorations=QStringList()) override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
virtual mitk::Point3D GetSelectedPosition(const QString &id=QString()) const override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
Point< ScalarType, 3 > Point3D
Definition: mitkPoint.h:95
virtual void OnInteractionSchemeChanged(mitk::InteractionSchemeSwitcher::InteractionScheme scheme)
void FirePropertyChange(int propertyId)
ViewDirection
Possible view directions for render windows.
virtual QmitkRenderWindow * GetActiveQmitkRenderWindow() const override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
virtual QHash< QString, QmitkRenderWindow * > GetQmitkRenderWindows() const override
Overridden from QmitkAbstractRenderEditor : IRenderWindowPart.
The &#39;QmitkAbstractMultiWidget&#39; is a &#39;QWidget&#39; that can be subclassed to display multiple render windo...
virtual void PartClosed(const berry::IWorkbenchPartReference::Pointer &partRef) override
Overridden from berry::IPartListener.