#include "input_geometry.hpp" QtInputGeometry::QtInputGeometry(Geometry* _geometry):QWidget(){ geometry=_geometry; main_layout=new QVBoxLayout; lX_label=new QLabel("Horizontal lenght of the domain (lX)"); nX_label=new QLabel("Number of horizontal steps (nX)"); nZ_label=new QLabel("Number of vertical steps (nZ)"); depth_label=new QLabel("Maximal height between hsoil and hbot (depth)"); lX_input=new QLineEdit(QString::number(geometry->lX)); nX_input=new QLineEdit(QString::number(geometry->nX)); nZ_input=new QLineEdit(QString::number(geometry->nZ_max)); depth_input=new QLineEdit(QString::number(geometry->depth)); //Labels lX_label->setTextFormat(Qt::RichText); nX_label->setTextFormat(Qt::RichText); nZ_label->setTextFormat(Qt::RichText); depth_label->setTextFormat(Qt::RichText); //Button refresh_button=new QPushButton("Refresh"); //Main layout int vspace=20; main_layout->addWidget(lX_label); main_layout->addWidget(lX_input); main_layout->addSpacing(vspace); main_layout->addWidget(nX_label); main_layout->addWidget(nX_input); main_layout->addSpacing(vspace); main_layout->addWidget(depth_label); main_layout->addWidget(depth_input); main_layout->addSpacing(vspace); main_layout->addWidget(nZ_label); main_layout->addWidget(nZ_input); main_layout->addSpacing(2*vspace); main_layout->addWidget(refresh_button); main_layout->addStretch(); setLayout(main_layout); //Validators positive_double_validator=new QDoubleValidator; positive_double_validator->setBottom(0); positive_int_validator=new QIntValidator; positive_int_validator->setBottom(1); lX_input->setValidator(positive_double_validator); nX_input->setValidator(positive_int_validator); depth_input->setValidator(positive_double_validator); nZ_input->setValidator(positive_int_validator); connect(refresh_button,&QPushButton::clicked,this,&QtInputGeometry::emitGeometryChanged); } QWidget* QtInputGeometry::validate(){ if(not lX_input->hasAcceptableInput()) return lX_input; if(not nX_input->hasAcceptableInput()) return nX_input; if(not depth_input->hasAcceptableInput()) return depth_input; if(not nZ_input->hasAcceptableInput()) return nZ_input; return nullptr; } void QtInputGeometry::save(fstream& file){ double d; size_t n; d=lX_input->text().toDouble(); file.write((char*)&d,sizeof(double)); n=nX_input->text().toULong(); file.write((char*)&n,sizeof(size_t)); d=depth_input->text().toDouble(); file.write((char*)&d,sizeof(double)); n=nZ_input->text().toULong(); file.write((char*)&n,sizeof(size_t)); } void QtInputGeometry::load(fstream& file){ double d; size_t n; file.read((char*)&d,sizeof(double)); lX_input->setText(QString::number(d)); file.read((char*)&n,sizeof(size_t)); nX_input->setText(QString::number(n)); file.read((char*)&d,sizeof(double)); depth_input->setText(QString::number(d)); file.read((char*)&n,sizeof(size_t)); nZ_input->setText(QString::number(n)); }