Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkFileWriterOptionsDialog.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_QmitkFileWriterOptionsDialog.h"
15 
17 #include "mitkFileWriterSelector.h"
18 #include "mitkIFileWriter.h"
19 
21  : QDialog(parent), ui(new Ui::QmitkFileWriterOptionsDialog), m_SaveInfo(saveInfo)
22 {
23  ui->setupUi(this);
24 
25  m_WriterItems = saveInfo.m_WriterSelector.Get(saveInfo.m_MimeType.GetName());
26 
27  bool hasOptions = false;
28  int selectedIndex = 0;
29  long selectedWriterId = saveInfo.m_WriterSelector.GetSelectedId();
30  int i = 0;
31  // Fill the combo box such that at the first entry is the best matching writer
32  for (std::vector<mitk::FileWriterSelector::Item>::const_reverse_iterator iter = m_WriterItems.rbegin(),
33  iterEnd = m_WriterItems.rend();
34  iter != iterEnd;
35  ++iter, ++i)
36  {
37  ui->m_WriterComboBox->addItem(QString::fromStdString(iter->GetDescription()));
38  mitk::IFileWriter::Options options = iter->GetWriter()->GetOptions();
39  if (!options.empty())
40  {
41  hasOptions = true;
42  }
43  ui->m_StackedOptionsWidget->addWidget(new QmitkFileReaderWriterOptionsWidget(options));
44  if (iter->GetServiceId() == selectedWriterId)
45  {
46  selectedIndex = i;
47  }
48  }
49  ui->m_WriterComboBox->setCurrentIndex(selectedIndex);
50 
51  if (!hasOptions)
52  {
53  ui->m_OptionsBox->setVisible(false);
54  }
55 
56  if (m_WriterItems.size() < 2)
57  {
58  ui->m_WriterLabel->setVisible(false);
59  ui->m_WriterComboBox->setVisible(false);
60  ui->m_FilePathLabel->setText(QString("File: %1").arg(QString::fromStdString(saveInfo.m_Path)));
61  }
62  else
63  {
64  ui->m_FilePathLabel->setText(QString("for %1").arg(QString::fromStdString(saveInfo.m_Path)));
65  }
66 
67  this->setWindowTitle("File writing options");
68 }
69 
71 {
72  delete ui;
73 }
74 
76 {
77  return ui->m_ReuseOptionsCheckBox->isChecked();
78 }
79 
81 {
82  const int index = m_WriterItems.size() - ui->m_WriterComboBox->currentIndex() - 1;
83  m_WriterItems[index].GetWriter()->SetOptions(
84  qobject_cast<QmitkFileReaderWriterOptionsWidget *>(ui->m_StackedOptionsWidget->currentWidget())->GetOptions());
85  m_SaveInfo.m_WriterSelector.Select(m_WriterItems[index]);
86  QDialog::accept();
87 }
FileWriterSelector m_WriterSelector
Contains a set of IFileWriter objects.
Definition: mitkIOUtil.h:80
std::vector< Item > Get(const std::string &mimeType) const
Get a sorted list of file writer info objects.
bool Select(const std::string &mimeType)
std::map< std::string, us::Any > Options
Options for reading or writing data.
Definition: mitkIFileIO.h:69
std::string GetName() const
MimeType m_MimeType
The selected mime-type, used to restrict results from FileWriterSelector.
Definition: mitkIOUtil.h:82
std::string m_Path
The path to write the BaseData object to.
Definition: mitkIOUtil.h:84
QmitkFileWriterOptionsDialog(mitk::IOUtil::SaveInfo &saveInfo, QWidget *parent=nullptr)