35 #include <QPushButton>
59 RegistrationBaseWidget(services, parent,
"org_custusx_registration_method_commandline_elastix_widget",
"ElastiX Registration")
72 void ElastixWidget::createUI()
75 connect(mElastixManager.get(), SIGNAL(elastixChanged()),
this, SLOT(elastixChangedSlot()));
77 mRegisterButton =
new QPushButton(
"Register");
78 connect(mRegisterButton, SIGNAL(clicked()),
this, SLOT(registerSlot()));
80 QVBoxLayout* topLayout =
new QVBoxLayout(
this);
81 topLayout->setMargin(0);
83 mOptionsWidget = this->createOptionsWidget();
84 mOptionsWidget->setVisible(
settings()->value(
"registration/elastixShowDetails").toBool());
87 mTimedAlgorithmProgressBar->
attach(mElastixManager->getExecuter());
89 QGridLayout* entryLayout =
new QGridLayout;
90 entryLayout->setColumnStretch(1, 1);
97 new LabeledComboBoxWidget(
this, mElastixManager->getParameters()->getCurrentPreset(), entryLayout, 2);
99 QHBoxLayout* buttonsLayout =
new QHBoxLayout;
100 buttonsLayout->addWidget(mRegisterButton);
103 QIcon(
":/icons/open_icon_library/system-run-5.png"),
104 "Details",
"Show Elastix Settings Details",
105 SLOT(toggleDetailsSlot()),
108 topLayout->addLayout(entryLayout);
109 topLayout->addLayout(buttonsLayout);
110 topLayout->addWidget(mOptionsWidget, 1);
111 topLayout->addStretch();
112 topLayout->addWidget(mTimedAlgorithmProgressBar);
114 this->elastixChangedSlot();
117 void ElastixWidget::toggleDetailsSlot()
119 mOptionsWidget->setVisible(!mOptionsWidget->isVisible());
120 settings()->
setValue(
"registration/elastixShowDetails", mOptionsWidget->isVisible());
123 QWidget* ElastixWidget::createOptionsWidget()
125 QWidget* retval =
new QWidget(
this);
126 QGridLayout* layout =
new QGridLayout(retval);
127 layout->setMargin(0);
134 layout->addWidget(
new QLabel(
"Parameter File",
this), line, 0);
135 mParameterFileWidget0 =
new FileSelectWidget(
this);
136 connect(mParameterFileWidget0, SIGNAL(fileSelected(QString)),
this, SLOT(userParameterFileSelected(QString)));
137 layout->addWidget(mParameterFileWidget0, line, 1, 1, 2);
140 QWidget* executableWidget =
sscCreateDataWidget(
this, mElastixManager->getParameters()->getActiveExecutable());
141 layout->addWidget(executableWidget, line, 0, 1, 3);
144 QHBoxLayout* buttonsLayout =
new QHBoxLayout;
145 layout->addLayout(buttonsLayout, line, 0, 1, 3);
147 buttonsLayout->addWidget(
new CheckBoxWidget(
this, mElastixManager->getDisplayProcessMessages()));
148 buttonsLayout->addWidget(
new CheckBoxWidget(
this, mElastixManager->getDisableRendering()));
151 QIcon(
":/icons/preset_remove.png"),
152 "Delete the current preset",
"",
153 SLOT(deletePresetSlot()),
157 QIcon(
":/icons/preset_save.png"),
158 "Add the current setting as a preset",
"",
159 SLOT(savePresetSlot()),
164 mFilePreviewWidget =
new FilePreviewWidget(
this);
166 mFilePreviewWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
167 layout->addWidget(mFilePreviewWidget, line, 0, 1, 3);
177 void ElastixWidget::savePresetSlot()
181 QString newName = par->getPresetNameSuggesion();
184 QString text = QInputDialog::getText(
this,
"Save Preset",
185 "Custom Preset Name", QLineEdit::Normal,
187 if (!ok || text.isEmpty())
190 par->saveCurrentPreset(text);
193 void ElastixWidget::deletePresetSlot()
195 mElastixManager->getParameters()->removeCurrentPreset();
198 void ElastixWidget::userParameterFileSelected(QString filename)
200 mElastixManager->getParameters()->getActiveParameterFile0()->setValue(filename);
203 void ElastixWidget::recurseParameterFolders(QString root, QStringList* retval)
206 folder.setFilter(QDir::AllDirs|QDir::NoDotAndDotDot);
207 QFileInfoList info = folder.entryInfoList();
208 for (
int i=0; i<info.size(); ++i)
210 QString current = info[i].absoluteFilePath();
211 if (current.endsWith(
"/par"))
213 retval->append(current);
216 this->recurseParameterFolders(current, retval);
220 void ElastixWidget::elastixChangedSlot()
223 EmbeddedFilepath par0 = par->getActiveParameterFile0()->getEmbeddedPath();
224 QStringList folders = par0.getRootPaths();
225 QStringList parfolders;
226 for (
int i=0; i<folders.size(); ++i)
227 this->recurseParameterFolders(folders[i], &parfolders);
229 mParameterFileWidget0->
setPaths(parfolders);
230 QStringList nameFilters;
233 mParameterFileWidget0->
setFilename(par0.getAbsoluteFilepath());
239 void ElastixWidget::registerSlot()
241 mElastixManager->execute();
Show progress for a TimedBaseAlgorithm.
boost::shared_ptr< ElastixParameters > ElastixParametersPtr
void setValue(const QString &key, const QVariant &value)
Manager for interfacing to the ElastiX registration package.
Settings * settings()
Shortcut for accessing the settings instance.
void attach(TimedAlgorithmPtr algorithm)
PatientModelServicePtr patientModelService
RegistrationServicePtr registrationService