diff --git a/Modules/QtWidgets/include/QmitkFileReaderOptionsDialog.h b/Modules/QtWidgets/include/QmitkFileReaderOptionsDialog.h index fda8fc7f47..189648e7c0 100644 --- a/Modules/QtWidgets/include/QmitkFileReaderOptionsDialog.h +++ b/Modules/QtWidgets/include/QmitkFileReaderOptionsDialog.h @@ -1,45 +1,48 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #ifndef QMITKFILEREADEROPTIONSDIALOG_H #define QMITKFILEREADEROPTIONSDIALOG_H #include "mitkIOUtil.h" #include namespace Ui { class QmitkFileReaderOptionsDialog; } class QmitkFileReaderWriterOptionsWidget; class QmitkFileReaderOptionsDialog : public QDialog { Q_OBJECT public: explicit QmitkFileReaderOptionsDialog(mitk::IOUtil::LoadInfo &loadInfo, QWidget *parent = nullptr); ~QmitkFileReaderOptionsDialog() override; bool ReuseOptions() const; void accept() override; +protected slots: + void SetCurrentReader(int index); + private: Ui::QmitkFileReaderOptionsDialog *ui; mitk::IOUtil::LoadInfo &m_LoadInfo; std::vector m_ReaderItems; }; #endif // QMITKFILEREADEROPTIONSDIALOG_H diff --git a/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.cpp b/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.cpp index 0f1760a299..a8ef227f47 100644 --- a/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.cpp +++ b/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.cpp @@ -1,86 +1,89 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #include "QmitkFileReaderOptionsDialog.h" #include "ui_QmitkFileReaderOptionsDialog.h" #include "QmitkFileReaderWriterOptionsWidget.h" #include "mitkIFileReader.h" QmitkFileReaderOptionsDialog::QmitkFileReaderOptionsDialog(mitk::IOUtil::LoadInfo &loadInfo, QWidget *parent) : QDialog(parent, Qt::WindowStaysOnTopHint), ui(new Ui::QmitkFileReaderOptionsDialog), m_LoadInfo(loadInfo) { ui->setupUi(this); m_ReaderItems = loadInfo.m_ReaderSelector.Get(); - bool hasOptions = false; int selectedIndex = 0; long selectedReaderId = loadInfo.m_ReaderSelector.GetSelectedId(); int i = 0; for (std::vector::const_reverse_iterator iter = m_ReaderItems.rbegin(), iterEnd = m_ReaderItems.rend(); iter != iterEnd; ++iter) { ui->m_ReaderComboBox->addItem(QString::fromStdString(iter->GetDescription())); mitk::IFileReader::Options options = iter->GetReader()->GetOptions(); if (!options.empty()) { - hasOptions = true; } ui->m_StackedOptionsWidget->addWidget(new QmitkFileReaderWriterOptionsWidget(options)); if (iter->GetServiceId() == selectedReaderId) { selectedIndex = i; } } - ui->m_ReaderComboBox->setCurrentIndex(selectedIndex); - if (!hasOptions) - { - ui->m_OptionsBox->setVisible(false); - } + connect(ui->m_ReaderComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(SetCurrentReader(int))); + ui->m_ReaderComboBox->setCurrentIndex(selectedIndex); if (m_ReaderItems.size() < 2) { ui->m_ReaderLabel->setVisible(false); ui->m_ReaderComboBox->setVisible(false); ui->m_FilePathLabel->setText(QString("File: %1").arg(QString::fromStdString(loadInfo.m_Path))); } else { ui->m_FilePathLabel->setText(QString("for %1").arg(QString::fromStdString(loadInfo.m_Path))); } + ui->m_OptionsBox->setVisible(!qobject_cast(ui->m_StackedOptionsWidget->currentWidget())->GetOptions().empty()); + this->setWindowTitle("File reading options"); } QmitkFileReaderOptionsDialog::~QmitkFileReaderOptionsDialog() { delete ui; } +void QmitkFileReaderOptionsDialog::SetCurrentReader(int index) +{ + ui->m_StackedOptionsWidget->setCurrentIndex(index); + ui->m_OptionsBox->setVisible(!qobject_cast(ui->m_StackedOptionsWidget->currentWidget())->GetOptions().empty()); +} + bool QmitkFileReaderOptionsDialog::ReuseOptions() const { return ui->m_ReuseOptionsCheckBox->isChecked(); } void QmitkFileReaderOptionsDialog::accept() { const int index = m_ReaderItems.size() - ui->m_ReaderComboBox->currentIndex() - 1; m_ReaderItems[index].GetReader()->SetOptions( qobject_cast(ui->m_StackedOptionsWidget->currentWidget())->GetOptions()); m_LoadInfo.m_ReaderSelector.Select(m_ReaderItems[index]); QDialog::accept(); } diff --git a/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.ui.autosave b/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.ui.autosave new file mode 100644 index 0000000000..ef10c99113 --- /dev/null +++ b/Modules/QtWidgets/src/QmitkFileReaderOptionsDialog.ui.autosave @@ -0,0 +1,115 @@ + + + QmitkFileReaderOptionsDialog + + + + 0 + 0 + 272 + 186 + + + + Dialog + + + false + + + true + + + + QLayout::SetFixedSize + + + + + Choose file reader + + + + + + + + + + + + + true + + + + + + + Options + + + false + + + + + + + + + + + + Apply to the next files with same type + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + QmitkFileReaderOptionsDialog + accept() + + + 254 + 179 + + + 157 + 274 + + + + + buttonBox + rejected() + QmitkFileReaderOptionsDialog + reject() + + + 265 + 179 + + + 286 + 274 + + + + +