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 <QDialog> 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<mitk::FileReaderSelector::Item> 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<mitk::FileReaderSelector::Item>::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<QmitkFileReaderWriterOptionsWidget*>(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<QmitkFileReaderWriterOptionsWidget*>(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<QmitkFileReaderWriterOptionsWidget *>(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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>QmitkFileReaderOptionsDialog</class> + <widget class="QDialog" name="QmitkFileReaderOptionsDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>272</width> + <height>186</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + <property name="sizeGripEnabled"> + <bool>false</bool> + </property> + <property name="modal"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="sizeConstraint"> + <enum>QLayout::SetFixedSize</enum> + </property> + <item> + <widget class="QLabel" name="m_ReaderLabel"> + <property name="text"> + <string>Choose file reader</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="m_ReaderComboBox"/> + </item> + <item> + <widget class="QLabel" name="m_FilePathLabel"> + <property name="text"> + <string/> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="m_OptionsBox"> + <property name="title"> + <string>Options</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QStackedWidget" name="m_StackedOptionsWidget"/> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QCheckBox" name="m_ReuseOptionsCheckBox"> + <property name="text"> + <string>Apply to the next files with same type</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>QmitkFileReaderOptionsDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>254</x> + <y>179</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>QmitkFileReaderOptionsDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>265</x> + <y>179</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>