MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
QmitkUSCombinedModalityEditWidget.cpp
Go to the documentation of this file.
1/*============================================================================
2
3The Medical Imaging Interaction Toolkit (MITK)
4
5Copyright (c) German Cancer Research Center (DKFZ)
6All rights reserved.
7
8Use of this source code is governed by a 3-clause BSD license that can be
9found in the LICENSE file.
10
11============================================================================*/
13#include "ui_QmitkUSCombinedModalityEditWidget.h"
14
17
21
22#include <QFileDialog>
23#include <QFile>
24#include <QTextStream>
25
27 QWidget(parent),
28 m_CalibrationsDataModel(new QmitkUSNavigationCalibrationsDataModel(this)),
29 m_CalibrationUpdateDepthDelegate(new QmitkUSNavigationCalibrationUpdateDepthDelegate(this)),
31{
32 ui->setupUi(this);
33 ui->calibrationsTable->setModel(m_CalibrationsDataModel);
34 ui->calibrationsTable->setItemDelegateForColumn(2, new QmitkUSNavigationCalibrationRemoveDelegate(this));
35 ui->calibrationsTable->setItemDelegateForColumn(0, m_CalibrationUpdateDepthDelegate);
36}
37
42
43void QmitkUSCombinedModalityEditWidget::SetCombinedModality(mitk::AbstractUltrasoundTrackerDevice::Pointer combinedModality)
44{
45 m_CalibrationsDataModel->SetCombinedModality(combinedModality);
46
47 m_CombinedModality = combinedModality;
48 if ( combinedModality.IsNull() ) { return; }
49
50 m_LastCalibrations = m_CombinedModality->SerializeCalibration();
51
52 ui->vendorLineEdit->setText(QString::fromStdString(combinedModality->GetUltrasoundDevice()->GetManufacturer()));
53 ui->nameLineEdit->setText(QString::fromStdString(combinedModality->GetUltrasoundDevice()->GetName()));
54
55 ui->ultrasoundDeviceLabel->setText(QString::fromStdString(combinedModality->GetUltrasoundDevice()->GetManufacturer() + " " +
56 combinedModality->GetUltrasoundDevice()->GetName()));
57 ui->trackingDeviceLabel->setText(QString::fromStdString(combinedModality->GetNavigationDataSource()->GetName()));
58
59 mitk::USDevice::Pointer usDevice = combinedModality->GetUltrasoundDevice();
60 if ( usDevice.IsNull() ) { return; }
61
62 mitk::USControlInterfaceBMode::Pointer controlInterfaceBMode = usDevice->GetControlInterfaceBMode();
63 if ( controlInterfaceBMode.IsNull() ) { return; }
64 m_CalibrationUpdateDepthDelegate->SetControlInterfaceBMode(controlInterfaceBMode);
65}
66
68{
69 if ( m_CombinedModality.IsNotNull() )
70 {
71 m_CombinedModality->GetUltrasoundDevice()->SetManufacturer(ui->vendorLineEdit->text().toStdString());
72 m_CombinedModality->GetUltrasoundDevice()->SetName(ui->nameLineEdit->text().toStdString());
73
74 m_LastCalibrations = m_CombinedModality->SerializeCalibration();
75 }
76
77 emit SignalSaved();
78}
79
81{
82 if ( m_CombinedModality.IsNotNull() && ! m_LastCalibrations.empty() )
83 {
84 // restore previous calibrations if cancel button was clicked
85 m_CombinedModality->DeserializeCalibration(m_LastCalibrations);
86 }
87
88 emit SignalAborted();
89}
90
92{
93 if ( m_CombinedModality.IsNull() )
94 {
95 MITK_WARN << "Cannot save calibrations as no combined modality is available.";
96 return;
97 }
98
99 QString filename = QFileDialog::getSaveFileName( QApplication::activeWindow(),
100 "Save Calibrations", "", "Calibration files *.cal" );
101
102 QFile file(filename);
103 if ( ! file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate) )
104 {
105 MITK_WARN << "Cannot open file '" << filename.toStdString() << "' for writing.";
106 return;
107 }
108
109 std::string calibrationSerialization = m_CombinedModality->SerializeCalibration();
110
111 QTextStream outStream(&file);
112 outStream << QString::fromStdString(calibrationSerialization);
113}
114
116{
117 if ( m_CombinedModality.IsNull() )
118 {
119 MITK_WARN << "Cannot load calibrations as no combined modality is available.";
120 return;
121 }
122
123 QString filename = QFileDialog::getOpenFileName( QApplication::activeWindow(),
124 "Load Calibration", "", "Calibration files *.cal" );
125
126 if ( filename.isNull() ) { return; }
127
128 QFile file(filename);
129 if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
130 {
131 MITK_WARN << "Cannot open file '" << filename.toStdString() << "' for reading.";
132 return;
133 }
134
135 QTextStream inStream(&file);
136 std::string calibration = inStream.readAll().toStdString();
137 if ( calibration.empty() )
138 {
139 MITK_WARN << "Failed to load file. Unsupported format?";
140 return;
141 }
142
143 try
144 {
145 m_CombinedModality->DeserializeCalibration(calibration, false);
146 }
147 catch ( const mitk::Exception& /*exception*/ )
148 {
149 MITK_WARN << "Failed to deserialize calibration. Unsuppoerted format?";
150 return;
151 }
152
153 // make sure that the table model is up to date
154 m_CalibrationsDataModel->SetCombinedModality(m_CombinedModality);
155}
void SetCombinedModality(mitk::AbstractUltrasoundTrackerDevice::Pointer combinedModality)
QStyledItemDelegate that provides a QColorDialog as editor.
QStyledItemDelegate that changes the current depth of the ultasound image on double click.
void SetControlInterfaceBMode(mitk::USControlInterfaceBMode::Pointer controlInterfaceBMode)
void SetCombinedModality(itk::SmartPointer< mitk::AbstractUltrasoundTrackerDevice > combinedModality)