MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
QmitkUSNavigationCombinedSettingsWidget.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_QmitkUSNavigationCombinedSettingsWidget.h"
14
15#include "mitkCommon.h"
16#include "mitkDataNode.h"
17
18#include <ctkDirectoryButton.h>
19
20#include <QSettings>
21
25{
26 ui->setupUi(this);
27 ui->experimentResultsPathButton->setOptions(ctkDirectoryButton::ShowDirsOnly);
28
29 connect( ui->applicationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnApplicationChanged(int)) );
30}
31
36
38{
39 if ( overwriteValues )
40 {
41 settingsNode->SetStringProperty("settings.application", ui->applicationComboBox->currentText().toStdString().c_str());
42 settingsNode->SetStringProperty("settings.interaction-concept", this->InteractionNameToFile(ui->interactionConceptComboBox->currentText()).toStdString().c_str());
43 settingsNode->SetBoolProperty("settings.experiment-mode", ui->experimentModeCheckBox->isChecked());
44 settingsNode->SetStringProperty("settings.experiment-results-directory", ui->experimentResultsPathButton->directory().toStdString().c_str());
45
46 settingsNode->SetFloatProperty("settings.security-distance", ui->securityDistanceSpinBox->value());
47 settingsNode->SetIntProperty("settings.number-of-targets", ui->numberOfTargetsSpinBox->value());
48 settingsNode->SetBoolProperty("settings.use-planning-step", ui->planningStepUsageCheckBox->isChecked());
49
50 settingsNode->SetStringProperty("settings.needle-name-selected", ui->needleNameComboBox->currentText().toStdString().c_str());
51 settingsNode->SetStringProperty("settings.reference-name-selected", ui->referenceNameComboBox->currentText().toStdString().c_str());
52 }
53 else
54 {
55 std::string stringProperty;
56 float floatProperty;
57 bool boolProperty;
58
59 // load state of application setting combo box
60 if ( ! settingsNode->GetStringProperty("settings.application", stringProperty) ) { stringProperty = ""; }
61 int lastIndex = ui->applicationComboBox->findText(QString::fromStdString(stringProperty));
62 if (lastIndex == -1) { lastIndex = 0; }
63 ui->applicationComboBox->setCurrentIndex(lastIndex);
64 this->OnApplicationChanged(lastIndex);
65
66 // load state of interaction concept setting combo box
67 if ( ! settingsNode->GetStringProperty("settings.interaction-concept", stringProperty) ) { stringProperty = ""; }
68 lastIndex = ui->interactionConceptComboBox->findText(QString::fromStdString(stringProperty));
69 if (lastIndex == -1) { lastIndex = 0; }
70 ui->interactionConceptComboBox->setCurrentIndex(lastIndex);
71
72 if ( ! settingsNode->GetBoolProperty("settings.experiment-mode", boolProperty) ) { boolProperty = false; }
73 ui->experimentModeCheckBox->setChecked(boolProperty);
74
75 if ( ! settingsNode->GetStringProperty("settings.experiment-results-directory", stringProperty) ) { stringProperty = ""; }
76 ui->experimentResultsPathButton->setDirectory(QString::fromStdString(stringProperty));
77
78 if ( ! settingsNode->GetFloatProperty("settings.security-distance", floatProperty) ) { floatProperty = 2.0; }
79 ui->securityDistanceSpinBox->setValue(floatProperty);
80
81 if ( ! settingsNode->GetFloatProperty("settings.number-of-targets", floatProperty) ) { floatProperty = 3; }
82 ui->numberOfTargetsSpinBox->setValue(static_cast<int>(floatProperty));
83
84 if ( ! settingsNode->GetBoolProperty("settings.use-planning-step", boolProperty) ) { boolProperty = true; }
85 ui->planningStepUsageCheckBox->setChecked(boolProperty);
86
87 if ( ! settingsNode->GetStringProperty("settings.needle-names", stringProperty) ) { stringProperty = ""; }
88 QString needleNames = QString::fromStdString(stringProperty);
89
90 ui->needleNameComboBox->clear();
91 ui->needleNameComboBox->addItems(needleNames.split(";", Qt::SkipEmptyParts));
92
93 if ( ! settingsNode->GetStringProperty("settings.needle-name-selected", stringProperty) ) { stringProperty = ""; }
94 int index = ui->needleNameComboBox->findText(QString::fromStdString(stringProperty));
95 if (index == -1)
96 {
97 ui->needleNameComboBox->addItem(QString::fromStdString(stringProperty));
98 ui->needleNameComboBox->setCurrentIndex(ui->needleNameComboBox->count()-1);
99 }
100 else
101 {
102 ui->needleNameComboBox->setCurrentIndex(index);
103 }
104
105 if ( ! settingsNode->GetStringProperty("settings.reference-names", stringProperty) ) { stringProperty = ""; }
106 QString referenceNames = QString::fromStdString(stringProperty);
107
108 ui->referenceNameComboBox->clear();
109 ui->referenceNameComboBox->addItems(referenceNames.split(";", Qt::SkipEmptyParts));
110
111 if ( ! settingsNode->GetStringProperty("settings.reference-name-selected", stringProperty) ) { stringProperty = ""; }
112 index = ui->referenceNameComboBox->findText(QString::fromStdString(stringProperty));
113 if (index == -1)
114 {
115 ui->referenceNameComboBox->addItem(QString::fromStdString(stringProperty));
116 ui->referenceNameComboBox->setCurrentIndex(ui->referenceNameComboBox->count()-1);
117 }
118 else
119 {
120 ui->referenceNameComboBox->setCurrentIndex(index);
121 }
122 }
123}
124
126{
127 mitk::DataNode::Pointer settingsNode = this->GetSettingsNode();
128
129 QSettings settings;
130 settings.beginGroup("ultrasound-navigation");
131
132 settings.setValue("application", ui->applicationComboBox->currentText());
133 settingsNode->SetStringProperty("settings.application", ui->applicationComboBox->currentText().toStdString().c_str());
134
135 settings.setValue("interaction-concept", ui->interactionConceptComboBox->currentText());
136 settingsNode->SetStringProperty("settings.interaction-concept", this->InteractionNameToFile(ui->interactionConceptComboBox->currentText()).toStdString().c_str());
137
138 settings.setValue("experiment-mode", ui->experimentModeCheckBox->isChecked());
139 settingsNode->SetBoolProperty("settings.experiment-mode", ui->experimentModeCheckBox->isChecked());
140
141 settings.setValue("experiment-results-directory", ui->experimentResultsPathButton->directory());
142 settingsNode->SetStringProperty("settings.experiment-results-directory", ui->experimentResultsPathButton->directory().toStdString().c_str());
143
144 settings.setValue("security-distance", ui->securityDistanceSpinBox->value());
145 settingsNode->SetFloatProperty("settings.security-distance", ui->securityDistanceSpinBox->value());
146
147 settings.setValue("number-of-targets", ui->numberOfTargetsSpinBox->value());
148 settingsNode->SetIntProperty("settings.number-of-targets", ui->numberOfTargetsSpinBox->value());
149
150 settings.setValue("use-planning-step", ui->planningStepUsageCheckBox->isChecked());
151 settingsNode->SetBoolProperty("settings.use-planning-step", ui->planningStepUsageCheckBox->isChecked());
152
153 settings.setValue("needle-name-selected", ui->needleNameComboBox->currentText());
154 settingsNode->SetStringProperty("settings.needle-name-selected", ui->needleNameComboBox->currentText().toStdString().c_str());
155
156 settings.setValue("reference-name-selected", ui->referenceNameComboBox->currentText());
157 settingsNode->SetStringProperty("settings.reference-name-selected", ui->referenceNameComboBox->currentText().toStdString().c_str());
158
159 settings.endGroup();
160}
161
163{
164 QSettings settings;
165 settings.beginGroup("ultrasound-navigation");
166
167 // load state of application setting combo box
168 int lastIndex = ui->applicationComboBox->findText(settings.value("application").toString());
169 if (lastIndex == -1) { lastIndex = 0; }
170 ui->applicationComboBox->setCurrentIndex(lastIndex);
171 this->OnApplicationChanged(lastIndex);
172
173 // load state of interaction concept setting combo box
174 lastIndex = ui->interactionConceptComboBox->findText(settings.value("interaction-concept").toString());
175 if (lastIndex == -1) { lastIndex = 0; }
176 ui->interactionConceptComboBox->setCurrentIndex(lastIndex);
177
178 ui->experimentModeCheckBox->setChecked(settings.value("experiment-mode").toBool());
179 ui->experimentResultsPathButton->setDirectory(settings.value("experiment-results-directory").toString());
180
181 ui->securityDistanceSpinBox->setValue(settings.value("security-distance", 2.0).toDouble());
182 ui->numberOfTargetsSpinBox->setValue(settings.value("number-of-targets", 3).toInt());
183
184 ui->planningStepUsageCheckBox->setChecked(settings.value("use-planning-step", true).toBool());
185
186 ui->needleNameComboBox->clear();
187 ui->needleNameComboBox->addItems(settings.value("needle-names").toStringList());
188
189 QString selectedName = settings.value("needle-name-selected").toString();
190 int index = ui->needleNameComboBox->findText(selectedName);
191 if (index == -1)
192 {
193 ui->needleNameComboBox->addItem(selectedName);
194 ui->needleNameComboBox->setCurrentIndex(ui->needleNameComboBox->count()-1);
195 }
196 else
197 {
198 ui->needleNameComboBox->setCurrentIndex(index);
199 }
200
201 ui->referenceNameComboBox->clear();
202 ui->referenceNameComboBox->addItems(settings.value("reference-names").toStringList());
203
204 selectedName = settings.value("reference-name-selected").toString();
205 index = ui->referenceNameComboBox->findText(selectedName);
206 if (index == -1)
207 {
208 ui->referenceNameComboBox->addItem(selectedName);
209 ui->referenceNameComboBox->setCurrentIndex(ui->referenceNameComboBox->count()-1);
210 }
211 else
212 {
213 ui->referenceNameComboBox->setCurrentIndex(index);
214 }
215
216 settings.endGroup();
217}
218
220{
221 if (index == 0)
222 {
223 ui->punctuationGroupBox->show();
224 ui->markerPlacementGroupBox->hide();
225 }
226 else if (index == 1)
227 {
228 ui->punctuationGroupBox->hide();
229 ui->markerPlacementGroupBox->show();
230 }
231}
232
234{
235 if (name == tr("Click, Move and Click"))
236 {
237 return QString("USZoneInteractions.xml");
238 }
239 else if (name == tr("Hold, Move and Release"))
240 {
241 return QString("USZoneInteractionsHold.xml");
242 }
243 else
244 {
245 return QString();
246 }
247}
Abstract class of settings widgets used by the QmitkUSNavigationProcessWidget. This class handles the...
Settings widget for the USNavigationMarkerPlacement. This widgets allows for configuring the experime...
void OnLoadSettingsProcessing() override
Method for actually loading the settings. This method has to be implemented by a concrete subclass.
void OnSaveProcessing() override
Method for actually saving the settings. This method has to be implemented by a concrete subclass.
void OnSetSettingsNode(itk::SmartPointer< mitk::DataNode > settingsNode, bool overwriteValues) override
Method for handling the setting of a new settings node. This method has to be implemented by a concre...