Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkFileReaderOptionsDialog.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 #include "ui_QmitkFileReaderOptionsDialog.h"
15 
17 #include "mitkIFileReader.h"
18 
20  : QDialog(parent, Qt::WindowStaysOnTopHint), ui(new Ui::QmitkFileReaderOptionsDialog), m_LoadInfo(loadInfo)
21 
22 {
23  ui->setupUi(this);
24 
25  m_ReaderItems = loadInfo.m_ReaderSelector.Get();
26 
27  bool hasOptions = false;
28  int selectedIndex = 0;
29  long selectedReaderId = loadInfo.m_ReaderSelector.GetSelectedId();
30  int i = 0;
31  for (std::vector<mitk::FileReaderSelector::Item>::const_reverse_iterator iter = m_ReaderItems.rbegin(),
32  iterEnd = m_ReaderItems.rend();
33  iter != iterEnd;
34  ++iter)
35  {
36  ui->m_ReaderComboBox->addItem(QString::fromStdString(iter->GetDescription()));
37  mitk::IFileReader::Options options = iter->GetReader()->GetOptions();
38  if (!options.empty())
39  {
40  hasOptions = true;
41  }
42  ui->m_StackedOptionsWidget->addWidget(new QmitkFileReaderWriterOptionsWidget(options));
43  if (iter->GetServiceId() == selectedReaderId)
44  {
45  selectedIndex = i;
46  }
47  }
48  ui->m_ReaderComboBox->setCurrentIndex(selectedIndex);
49 
50  if (!hasOptions)
51  {
52  ui->m_OptionsBox->setVisible(false);
53  }
54 
55  if (m_ReaderItems.size() < 2)
56  {
57  ui->m_ReaderLabel->setVisible(false);
58  ui->m_ReaderComboBox->setVisible(false);
59  ui->m_FilePathLabel->setText(QString("File: %1").arg(QString::fromStdString(loadInfo.m_Path)));
60  }
61  else
62  {
63  ui->m_FilePathLabel->setText(QString("for %1").arg(QString::fromStdString(loadInfo.m_Path)));
64  }
65 
66  this->setWindowTitle("File reading options");
67 }
68 
70 {
71  delete ui;
72 }
73 
75 {
76  return ui->m_ReuseOptionsCheckBox->isChecked();
77 }
78 
80 {
81  const int index = m_ReaderItems.size() - ui->m_ReaderComboBox->currentIndex() - 1;
82  m_ReaderItems[index].GetReader()->SetOptions(
83  qobject_cast<QmitkFileReaderWriterOptionsWidget *>(ui->m_StackedOptionsWidget->currentWidget())->GetOptions());
84  m_LoadInfo.m_ReaderSelector.Select(m_ReaderItems[index]);
85  QDialog::accept();
86 }
std::map< std::string, us::Any > Options
Options for reading or writing data.
Definition: mitkIFileIO.h:69
std::vector< Item > Get() const
Get a sorted list of file reader items.
QmitkFileReaderOptionsDialog(mitk::IOUtil::LoadInfo &loadInfo, QWidget *parent=nullptr)
std::string m_Path
Definition: mitkIOUtil.h:54
FileReaderSelector m_ReaderSelector
Definition: mitkIOUtil.h:57