35 #include <QVBoxLayout> 36 #include <QHBoxLayout> 55 mConfigFilesComboBox(new QComboBox()),
56 mConfigFileLineEdit(new QLineEdit()),
57 mReferenceComboBox(new QComboBox()),
59 mTrackingService(trackingService),
60 mStateService(stateService)
64 mConfigFilesComboBox->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Expanding);
70 this->createTrackingSystemSelector();
78 QGridLayout* layout =
new QGridLayout(
this);
80 layout->addWidget(
new QLabel(
"Configuration: "), row, 0, 1, 1);
81 layout->addWidget(mConfigFilesComboBox, row, 1, 1, 1);
83 layout->addWidget(
new QLabel(
"File name: "), row, 0, 1, 1);
84 layout->addWidget(mConfigFileLineEdit, row, 1, 1, 1);
88 layout->addWidget(mToolListWidget, row, 0, 1, 2);
89 layout->setRowStretch(row, 1);
94 QHBoxLayout* refLayout =
new QHBoxLayout;
95 refLayout->addWidget(
new QLabel(
"Reference: "));
96 refLayout->addWidget(mReferenceComboBox);
97 refLayout->setMargin(0);
98 layout->addLayout(refLayout, row, 0, 1, 2);
101 connect(mConfigFilesComboBox, SIGNAL(currentIndexChanged(
int)),
this, SLOT(configChangedSlot()));
102 connect(mToolListWidget, SIGNAL(listSizeChanged()),
this, SLOT(toolsChangedSlot()));
106 connect(mConfigFileLineEdit, SIGNAL(textEdited(
const QString&)),
this, SLOT(configEditedSlot()));
107 connect(mToolListWidget, SIGNAL(userChangedList()),
this, SLOT(configEditedSlot()));
108 connect(mReferenceComboBox, SIGNAL(activated(
int)),
this, SLOT(configEditedSlot()));
110 this->onApplicationStateChanged();
118 QString cleanPath = QDir(configAbsoluteFilePath).absolutePath();
119 int currentIndex = mConfigFilesComboBox->findData(cleanPath, Qt::ToolTipRole);
123 if (!configAbsoluteFilePath.isEmpty())
124 reportWarning(
"Tool configuration doesn't exist: " + cleanPath);
126 mConfigFilesComboBox->setCurrentIndex(currentIndex);
134 retval = mConfigFilesComboBox->itemData(mConfigFilesComboBox->currentIndex(), Qt::ToolTipRole).
toString();
138 void ToolConfigureGroupBox::createTrackingSystemSelector()
140 QString defaultValue =
"";
143 "Select tracking system to use",
145 config->getSupportedTrackingSystems(),
147 connect(mTrackingSystemSelector.get(), SIGNAL(changed()),
this, SLOT(filterToolsSlot()));
152 return mTrackingSystemSelector;
167 config->saveConfiguration(current);
170 this->populateConfigurations();
175 void ToolConfigureGroupBox::onApplicationStateChanged()
177 QString application = mStateService->getApplicationStateName();
178 this->setTitle(
"Tool configurations for "+ application);
179 this->populateConfigurations();
182 void ToolConfigureGroupBox::configChangedSlot()
184 QString uid = mConfigFilesComboBox->itemData(mConfigFilesComboBox->currentIndex(),
189 bool isNewConfig = mConfigFilesComboBox->currentText().contains(
"<new config>");
194 data.
mName =
"MyConfig";
197 mConfigFileLineEdit->setText(data.
mName);
198 mConfigFileLineEdit->setEnabled(isNewConfig);
199 mConfigFileLineEdit->setToolTip(data.
mUid);
205 void ToolConfigureGroupBox::configEditedSlot()
210 void ToolConfigureGroupBox::toolsChangedSlot()
212 this->populateReference();
213 this->filterToolsSlot();
216 void ToolConfigureGroupBox::filterToolsSlot()
218 QString ts = mTrackingSystemSelector->getValue();
219 mToolListWidget->
filterSlot(QStringList() << ts);
223 void ToolConfigureGroupBox::populateConfigurations()
225 mConfigFilesComboBox->clear();
228 QStringList configurations = config->getConfigurationsGivenApplication();
230 foreach(QString filename, configurations)
233 this->addConfigurationToComboBox(configuration.
mName, configuration.
mUid);
235 QString newConfig =
"<new config>";
236 this->addConfigurationToComboBox(newConfig, newConfig);
238 int currentIndex = mConfigFilesComboBox->findText(newConfig);
239 mConfigFilesComboBox->setCurrentIndex(currentIndex);
242 int ToolConfigureGroupBox::addConfigurationToComboBox(QString displayName, QString absoluteFilePath)
244 mConfigFilesComboBox->addItem(displayName);
245 int index = mConfigFilesComboBox->findText(displayName);
246 mConfigFilesComboBox->setItemData(index, absoluteFilePath, Qt::ToolTipRole);
255 QString application = mStateService->getApplicationStateName();
257 QString filename = mConfigFileLineEdit->text();
258 QString filepath = config->getConfigurationApplicationsPath();
260 retval.
mUid = QString(
"%1/%2.xml").arg(filepath).arg(filename);
264 retval.
mReferenceTool = mReferenceComboBox->itemData(mReferenceComboBox->currentIndex(), Qt::ToolTipRole).
toString();
269 void ToolConfigureGroupBox::populateReference()
271 mReferenceComboBox->clear();
273 int currentIndex = -1;
278 QStringList selectedTools = mToolListWidget->
getTools();
279 foreach(QString
string, selectedTools)
281 if (config->getTool(
string).mIsReference)
282 currentIndex = this->addRefrenceToComboBox(
string);
286 QString configAbsoluteFilePath = mConfigFilesComboBox->itemData(mConfigFilesComboBox->currentIndex(), Qt::ToolTipRole).
toString();
287 QString reference = config->getConfiguration(configAbsoluteFilePath).mReferenceTool;
288 currentIndex = this->addRefrenceToComboBox(reference);
294 mReferenceComboBox->setCurrentIndex(currentIndex);
297 int ToolConfigureGroupBox::addRefrenceToComboBox(QString absoluteRefereneFilePath)
301 QFile file(absoluteRefereneFilePath);
302 QFileInfo info(file);
303 QString refUid = info.dir().dirName();
305 QStringList selectedTools = mToolListWidget->
getTools();
306 if (!selectedTools.count(absoluteRefereneFilePath))
309 if (refUid.isEmpty())
312 if (mReferenceComboBox->findText(refUid) < 0)
313 mReferenceComboBox->addItem(refUid);
314 index = mReferenceComboBox->findText(refUid);
315 mReferenceComboBox->setItemData(index, info.absoluteFilePath(), Qt::ToolTipRole);
tsPOLARIS
NDIs Polaris tracker.
void applicationStateChanged()
boost::shared_ptr< class StateService > StateServicePtr
std::string toString(T const &value)
converts any type to a string
boost::shared_ptr< class TrackingService > TrackingServicePtr
boost::shared_ptr< class TrackerConfiguration > TrackerConfigurationPtr
boost::shared_ptr< class StringPropertyBase > StringPropertyBasePtr
void reportWarning(QString msg)
QString mUid
absolute path and filename for the new config file
static StringPropertyPtr initialize(const QString &uid, QString name, QString help, QString value, QStringList range, QDomNode root=QDomNode())
QString mClinicalApplication
QString enum2string(const ENUM &val)
Namespace for all CustusX production code.