OGS
FileListDialog.cpp
Go to the documentation of this file.
1 
15 #include "FileListDialog.h"
16 
17 #include <QFileInfo>
18 #include <QFont>
19 #include <QLineEdit>
20 #include <QSettings>
21 
23 #include "BaseLib/StringTools.h"
24 
25 FileListDialog::FileListDialog(FileType input, FileType output, QWidget* parent)
26  : QDialog(parent),
27  _output_dir(""),
28  _input_file_type(input),
29  _output_file_type(output)
30 {
31  setupUi(this);
32 
34  {
36  }
37 
38  this->listView->setModel(&_allFiles);
39 }
40 
42 
44 {
45  QSettings settings("UFZ", "OpenGeoSys-5");
46  QFileDialog dlg(this);
47  dlg.setDirectory(settings.value("lastOpenedOgsFileDirectory").toString());
48  dlg.setFileMode(QFileDialog::ExistingFiles);
49  dlg.setNameFilter(this->getFileTypeString(_input_file_type));
50 
51  if (dlg.exec())
52  {
53  QStringList const file_names = dlg.selectedFiles();
54 
55  if (file_names.empty())
56  {
57  return;
58  }
59 
60  QStringList list = _allFiles.stringList();
61  list.append(file_names);
62  _allFiles.setStringList(list);
63  QDir const dir = QDir(file_names[0]);
64  settings.setValue("lastOpenedOgsFileDirectory", dir.absolutePath());
65  }
66 }
67 
69 {
70  QModelIndexList selected =
71  this->listView->selectionModel()->selectedIndexes();
72  for (auto& item : selected)
73  {
74  this->_allFiles.removeRow(item.row());
75  }
76 }
77 
79 {
80  QSettings const settings("UFZ", "OpenGeoSys-5");
81  QFileInfo const fi(settings.value("lastOpenedOgsFileDirectory").toString());
82  QString const dirName = QFileDialog::getExistingDirectory(
83  this, "Save to", fi.absolutePath().append("/"));
84  this->outputDirEdit->setText(dirName);
85 }
86 
88 {
89  if (_allFiles.stringList().empty())
90  {
91  OGSError::box("No files selected.");
92  return;
93  }
94 
95  _output_dir = this->outputDirEdit->text();
96  if (!this->outputDirEdit->text().isEmpty() && QDir(_output_dir).exists())
97  {
98  this->done(QDialog::Accepted);
99  }
100  else
101  {
102  OGSError::box("Output directory not found.");
103  }
104 }
105 
107 {
108  this->done(QDialog::Rejected);
109 }
110 
112 {
113  if (file_type == FileType::GML)
114  {
115  return "OpenGeoSys geometry files (*.gml)";
116  }
117  if (file_type == FileType::VTU)
118  {
119  return "OpenGeoSys mesh files (*.vtu)";
120  }
121  if (file_type == FileType::GLI)
122  {
123  return "GeoSys geometry files (*.gli)";
124  }
125  if (file_type == FileType::MSH)
126  {
127  return "GeoSys mesh files (*.msh)";
128  }
129  return "All files (*.*)";
130 }
131 
133 {
134  this->warningLabel->setFixedWidth(300);
135  this->warningLabel->setFixedHeight(40);
136  QFont font = this->warningLabel->font();
137  font.setPointSize(9);
138  font.setBold(true);
139  warningLabel->setFont(font);
140  this->warningLabel->setStyleSheet("QLabel { color : red; }");
141  this->warningLabel->setText(
142  "Warning: all scalar information except<br />MaterialIDs will be "
143  "lost!");
144 }
Definition of FileListDialog class.
FileType
Definition of the OGSError class.
Definition of string helper functions.
void on_addButton_pressed()
~FileListDialog() override
Destructor.
void on_browseButton_pressed()
QStringListModel _allFiles
void accept() override
Instructions if the OK-Button has been pressed.
QString getFileTypeString(FileType file_type) const
Returns a string for the given file type enum.
const FileType _input_file_type
void displayWarningLabel() const
Display a warning for vtu- to msh-conversion.
FileListDialog(FileType input, FileType output, QWidget *parent=nullptr)
Constructor.
void reject() override
Instructions if the Cancel-Button has been pressed.
const FileType _output_file_type
void on_removeButton_pressed()
QString _output_dir
static void box(const QString &e)
Definition: OGSError.cpp:23