OGS
CondFromRasterDialog Class Reference

Detailed Description

A dialog window for creating DIRECT boundary conditions from raster files.

Definition at line 18 of file CondFromRasterDialog.h.

#include <CondFromRasterDialog.h>

Inheritance diagram for CondFromRasterDialog:
[legend]
Collaboration diagram for CondFromRasterDialog:
[legend]

Signals

void directNodesWritten (std::string)
void transmitDisValues (std::vector< std::pair< std::size_t, double > >)

Public Member Functions

 CondFromRasterDialog (std::vector< MeshLib::Mesh * > msh_vec, QDialog *parent=nullptr)
 ~CondFromRasterDialog () override

Private Slots

void on_integrateButton_toggled (bool isSelected)
void on_selectButton_pressed ()
void accept () override
 Instructions if the OK-Button has been pressed.
void reject () override
 Instructions if the Cancel-Button has been pressed.

Private Attributes

const std::vector< MeshLib::Mesh * > _msh_vec
StrictDoubleValidator_scale_validator

Constructor & Destructor Documentation

◆ CondFromRasterDialog()

CondFromRasterDialog::CondFromRasterDialog ( std::vector< MeshLib::Mesh * > msh_vec,
QDialog * parent = nullptr )
explicit

Definition at line 15 of file CondFromRasterDialog.cpp.

17 : QDialog(parent), _msh_vec(std::move(msh_vec))
18{
19 setupUi(this);
20
21 this->scalingEdit->setEnabled(false);
22 _scale_validator = new StrictDoubleValidator(-1e+10, 1e+20, 5);
23 this->scalingEdit->setText("1.0");
24 this->scalingEdit->setValidator(_scale_validator);
25
26 for (auto mesh : _msh_vec)
27 {
28 this->meshBox->addItem(QString::fromStdString(mesh->getName()));
29 }
30
31 this->directButton->setChecked(true);
32}
StrictDoubleValidator * _scale_validator
const std::vector< MeshLib::Mesh * > _msh_vec

References _msh_vec, and _scale_validator.

◆ ~CondFromRasterDialog()

CondFromRasterDialog::~CondFromRasterDialog ( )
override

Definition at line 34 of file CondFromRasterDialog.cpp.

35{
36 delete _scale_validator;
37}

References _scale_validator.

Member Function Documentation

◆ accept

void CondFromRasterDialog::accept ( )
overrideprivateslot

Instructions if the OK-Button has been pressed.

Definition at line 61 of file CondFromRasterDialog.cpp.

62{
63 std::string mesh_name(this->meshBox->currentText().toStdString());
64 std::string raster_name(this->rasterEdit->text().toStdString());
65 double scaling_factor = this->scalingEdit->text().toDouble();
66 std::vector<std::pair<std::size_t, double>> direct_values;
67
68 if (mesh_name.empty())
69 {
70 OGSError::box("No mesh selected.");
71 return;
72 }
73 if (raster_name.empty())
74 {
75 OGSError::box("No raster selected.");
76 return;
77 }
78
79 MeshLib::Mesh* mesh(nullptr);
80 for (auto mesh_ : _msh_vec)
81 {
82 if (mesh_->getName() == mesh_name)
83 {
84 mesh = mesh_;
85 break;
86 }
87 }
88
89 if (this->directButton->isChecked())
90 {
91 DirectConditionGenerator dcg;
92 direct_values = dcg.directToSurfaceNodes(*mesh, raster_name);
93 // dcg.writeToFile(direct_node_name);
94 }
95 else
96 {
97 if (scaling_factor <= 0)
98 {
99 OGSError::box("No valid scaling factor given.");
100 return;
101 }
102 auto* new_mesh = const_cast<MeshLib::Mesh*>(mesh);
103 DirectConditionGenerator dcg;
104 direct_values = dcg.directWithSurfaceIntegration(*new_mesh, raster_name,
105 scaling_factor);
106
107 // dcg.writeToFile(direct_node_name);
108 }
109 // emit directNodesWritten(direct_node_name);
110 emit transmitDisValues(direct_values);
111 this->done(QDialog::Accepted);
112}
void transmitDisValues(std::vector< std::pair< std::size_t, double > >)
const std::vector< std::pair< std::size_t, double > > & directToSurfaceNodes(const MeshLib::Mesh &mesh, const std::string &filename)
const std::vector< std::pair< std::size_t, double > > & directWithSurfaceIntegration(MeshLib::Mesh &mesh, const std::string &filename, double scaling)
static void box(const QString &e)
Definition OGSError.cpp:13

References _msh_vec, OGSError::box(), DirectConditionGenerator::directToSurfaceNodes(), DirectConditionGenerator::directWithSurfaceIntegration(), and transmitDisValues().

◆ directNodesWritten

void CondFromRasterDialog::directNodesWritten ( std::string )
signal

◆ on_integrateButton_toggled

void CondFromRasterDialog::on_integrateButton_toggled ( bool isSelected)
privateslot

Definition at line 119 of file CondFromRasterDialog.cpp.

120{
121 this->scalingEdit->setEnabled(isSelected);
122}

◆ on_selectButton_pressed

void CondFromRasterDialog::on_selectButton_pressed ( )
privateslot

Definition at line 39 of file CondFromRasterDialog.cpp.

40{
41 QSettings settings;
42#ifdef GEOTIFF_FOUND
43 QString geotiffExtension(" *.tif");
44#else
45 QString geotiffExtension("");
46#endif
47 QString fileName = QFileDialog::getOpenFileName(
48 this, "Select raster file",
49 settings.value("lastOpenedRasterFileDirectory").toString(),
50 QString("Raster files (*.asc *.grd);;").arg(geotiffExtension));
51
52 if (!fileName.isEmpty())
53 {
54 this->rasterEdit->setText(fileName);
55
56 QFileInfo fi(fileName);
57 settings.setValue("lastOpenedRasterFileDirectory", fi.absolutePath());
58 }
59}

◆ reject

void CondFromRasterDialog::reject ( )
overrideprivateslot

Instructions if the Cancel-Button has been pressed.

Definition at line 114 of file CondFromRasterDialog.cpp.

115{
116 this->done(QDialog::Rejected);
117}

◆ transmitDisValues

void CondFromRasterDialog::transmitDisValues ( std::vector< std::pair< std::size_t, double > > )
signal

Referenced by accept().

Member Data Documentation

◆ _msh_vec

const std::vector<MeshLib::Mesh*> CondFromRasterDialog::_msh_vec
private

Definition at line 28 of file CondFromRasterDialog.h.

Referenced by CondFromRasterDialog(), and accept().

◆ _scale_validator

StrictDoubleValidator* CondFromRasterDialog::_scale_validator
private

Definition at line 29 of file CondFromRasterDialog.h.

Referenced by CondFromRasterDialog(), and ~CondFromRasterDialog().


The documentation for this class was generated from the following files: