19#include <itksys/SystemTools.hxx>
23#include <mitkBaseRenderer.h>
24#include <mitkCameraController.h>
25#include "vtkRenderer.h"
38 CreateQtPartControl(
this);
40 SetAdvancedSettingsEnabled(
false);
49void QmitkPolhemusTrackerWidget::CreateQtPartControl(QWidget *parent)
54 m_Controls =
new Ui::QmitkPolhemusTrackerWidget;
62 MITK_DEBUG<<
"Resetting Polhemus Tracking Device, because tool storage changed.";
65void QmitkPolhemusTrackerWidget::CreateConnections()
107 MITK_INFO <<
"Toggle Hemisphere for tool " <<
m_Controls->m_ToolSelection->currentText().toStdString();
112 mitk::Vector3D _hemisphere;
118 if (_hemisphere.GetNorm() != 0)
119 m_Controls->m_hemisphereTracking->setChecked(
false);
121 MITK_INFO <<
"Hemisphere set for tool " <<
m_Controls->m_ToolSelection->currentText().toStdString();
126 mitk::Vector3D _hemisphere =
m_TrackingDevice->GetHemisphere(GetSelectedToolIndex());
127 m_Controls->m_Hemisphere_X->setValue(_hemisphere[0]);
128 m_Controls->m_Hemisphere_Y->setValue(_hemisphere[1]);
129 m_Controls->m_Hemisphere_Z->setValue(_hemisphere[2]);
135 label =
"HemisphereTracking is ON for tool ";
136 label.append(
m_Controls->m_ToolSelection->currentText());
138 else if (GetSelectedToolIndex() == -1)
140 label =
"HemisphereTracking is OFF for at least one tool.";
144 label =
"HemisphereTracking is OFF for tool ";
145 label.append(
m_Controls->m_ToolSelection->currentText());
148 m_Controls->m_StatusLabelHemisphereTracking->setText(label);
150 MITK_INFO <<
"Updated SpinBox for Hemisphere of tool " <<
m_Controls->m_ToolSelection->currentText().toStdString();
155 int _tool = GetSelectedToolIndex();
160 _text.append(
"Adjusting hemisphere for all tools.");
161 msgBox.setText(_text);
163 _text = tr(
"Please make sure, that the entire tools (including tool tip AND sensor) are placed in the positive x hemisphere. Press 'Adjust hemisphere' if you are ready.");
164 msgBox.setInformativeText(_text);
168 _text.append(
"Adjusting hemisphere for tool '");
169 _text.append(
m_Controls->m_ToolSelection->currentText());
170 _text.append(tr(
"' at port %2.").arg(_tool));
171 msgBox.setText(_text);
173 _text = tr(
"Please make sure, that the entire tool (including tool tip AND sensor) is placed in the positive x hemisphere. Press 'Adjust hemisphere' if you are ready.");
174 msgBox.setInformativeText(_text);
177 QPushButton *adjustButton = msgBox.addButton(tr(
"Adjust hemisphere"), QMessageBox::ActionRole);
178 QPushButton *cancelButton = msgBox.addButton(QMessageBox::Cancel);
180 if (msgBox.clickedButton() == adjustButton) {
183 MITK_INFO <<
"Adjusting Hemisphere for tool " <<
m_Controls->m_ToolSelection->currentText().toStdString();
185 else if (msgBox.clickedButton() == cancelButton) {
187 MITK_INFO <<
"Cancel 'Adjust hemisphere'. No harm done...";
193 if (
m_Controls->m_ToolSelection->currentIndex() != 0)
197 auto tipPoint = mitk::Point3D(tip);
207 auto tipPoint = mitk::Point3D(tip);
222 SetAdvancedSettingsEnabled(
true);
228 m_Controls->m_ToolSelection->addItem(
"All Tools");
242 auto allRenderWindows = mitk::BaseRenderer::GetAll3DRenderWindows();
243 for (
auto mapit = allRenderWindows.begin(); mapit != allRenderWindows.end(); ++mapit)
246 mapit->second->GetCameraController()->SetViewToPosterior();
247 mapit->second->GetVtkRenderer()->GetActiveCamera()->SetViewUp(0, 0, -1);
255 SetAdvancedSettingsEnabled(
false);
258void QmitkPolhemusTrackerWidget::SetAdvancedSettingsEnabled(
bool _enable)
260 m_Controls->m_ToolSelection->setEnabled(_enable);
261 m_Controls->label_toolsToChange->setEnabled(_enable);
262 m_Controls->label_UpdateOnRequest->setEnabled(_enable);
263 m_Controls->m_GetHemisphere->setEnabled(_enable);
264 m_Controls->m_Hemisphere_X->setEnabled(_enable);
265 m_Controls->m_Hemisphere_Y->setEnabled(_enable);
266 m_Controls->m_Hemisphere_Z->setEnabled(_enable);
267 m_Controls->m_SetHemisphere->setEnabled(_enable);
268 m_Controls->m_ToggleHemisphere->setEnabled(_enable);
269 m_Controls->m_AdjustHemisphere->setEnabled(_enable);
270 m_Controls->m_ToggleToolTipCalibration->setEnabled(_enable);
275 bool _enable =
m_Controls->m_AdvancedSettings->isChecked();
276 m_Controls->m_ToolSelection->setVisible(_enable);
277 m_Controls->label_toolsToChange->setVisible(_enable);
278 m_Controls->label_UpdateOnRequest->setVisible(_enable);
279 m_Controls->m_GetHemisphere->setVisible(_enable);
280 m_Controls->m_Hemisphere_X->setVisible(_enable);
281 m_Controls->m_Hemisphere_Y->setVisible(_enable);
282 m_Controls->m_Hemisphere_Z->setVisible(_enable);
283 m_Controls->m_SetHemisphere->setVisible(_enable);
284 m_Controls->m_ToggleHemisphere->setVisible(_enable);
285 m_Controls->m_AdjustHemisphere->setVisible(_enable);
286 m_Controls->m_ToggleToolTipCalibration->setVisible(_enable);
287 m_Controls->m_StatusLabelHemisphereTracking->setVisible(_enable);
290int QmitkPolhemusTrackerWidget::GetSelectedToolIndex()
293 int _index =
m_Controls->m_ToolSelection->currentIndex() - 1;