Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYCourbeNiveauWidget.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012-2024> <EDF-DTG> <FRANCE>
3  * This file is part of Code_TYMPAN (R).
4  * Code_TYMPAN (R) is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * Code_TYMPAN (R) is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with Code_TYMPAN (R). If not, see <https://www.gnu.org/licenses/>.
14  */
15 
23 #include <qradiobutton.h>
24 #include <QGridLayout>
25 #include <QLabel>
26 #include <QTreeWidget>
27 #include <QTreeWidgetItem>
28 #include <QCheckBox>
29 #include <QtWidgets>
30 
35 #include "TabPointsWidget.h"
36 #include "TYCourbeNiveauWidget.h"
37 #include "TYElementWidget.h"
38 
39 #define TR(id) OLocalizator::getString("TYCourbeNiveauWidget", (id))
40 
41 TYCourbeNiveauWidget::TYCourbeNiveauWidget(TYCourbeNiveau* pElement, QWidget* _pParent /*=NULL*/)
42  : TYWidget(pElement, _pParent)
43 {
44  _statusDMax = false;
45 
46  _elmW = new TYElementWidget(pElement, this);
47  _colorW = new TYColorInterfaceWidget(pElement, this);
48 
49  resize(300, 260);
50  setWindowTitle(TR("id_caption"));
51  _courbeNiveauLayout = new QGridLayout();
52  setLayout(_courbeNiveauLayout);
53 
54  _courbeNiveauLayout->addWidget(_elmW, 0, 0);
55  _courbeNiveauLayout->addWidget(_colorW, 1, 0);
56 
57  // Tableau des points de la courbe de niveau
58  _groupBox = new QGroupBox(this);
59  _groupBox->setTitle(TR("id_pts"));
60  _groupBoxLayout = new QGridLayout();
61  _groupBox->setLayout(_groupBoxLayout);
62 
64  _tabPoints->setEnabled(true);
65 
66  _groupBoxLayout->addWidget(_tabPoints, 0, 0);
67 
68  // Gestion de la cloture de la courbe de niveau
69  _pClosedCheckBox = new QCheckBox();
70  _groupBoxLayout->addWidget(new QLabel(TR("id_closed_label")), 1, 0);
71  _groupBoxLayout->addWidget(_pClosedCheckBox, 1, 1);
72 
73  _courbeNiveauLayout->addWidget(_groupBox, 2, 0);
74 
75  // Choix de l'altitude de la courbe de niveau
76  _groupBoxAlt = new QGroupBox(this);
77  _groupBoxAlt->setTitle(TR(""));
78  _groupBoxAltLayout = new QGridLayout();
79  _groupBoxAlt->setLayout(_groupBoxAltLayout);
80 
81  _labelAltitude = new QLabel(_groupBoxAlt);
82  _labelAltitude->setText(TR("id_altitude_label"));
83  _groupBoxAltLayout->addWidget(_labelAltitude, 0, 0);
84 
86  _groupBoxAltLayout->addWidget(_lineEditAltitude, 0, 1);
87  QLabel* pUnitAlt = new QLabel(_groupBoxAlt);
88  pUnitAlt->setText(TR("id_unite_altitude"));
89  _groupBoxAltLayout->addWidget(pUnitAlt, 0, 2);
90 
91  _courbeNiveauLayout->addWidget(_groupBoxAlt, 3, 0);
92 
93  // Gestion de la distance max entre deux points de la courbe de niveau
94  _groupBoxDistMax = new QGroupBox(this);
95  _groupBoxDistMax->setTitle(TR(""));
96  _groupBoxDistLayout = new QGridLayout();
98 
99  _labelDistMax = new QLabel(_groupBoxDistMax);
100  _labelDistMax->setText(TR("id_distmax_label"));
101  _groupBoxDistLayout->addWidget(_labelDistMax, 0, 0);
102 
104  _groupBoxDistLayout->addWidget(_lineEditDistMax, 0, 1);
105  QLabel* pUnitDist = new QLabel(_groupBoxDistMax);
106  pUnitDist->setText(TR("id_unite_altitude"));
107  _groupBoxDistLayout->addWidget(pUnitDist, 0, 2);
108 
109  _labelUseDefault = new QLabel(_groupBoxDistMax);
110  _labelUseDefault->setText(TR("id_use_default_label"));
111  QPushButton* _pushButtonUseDefault = new QPushButton(_groupBoxDistMax);
112  _pushButtonUseDefault->setText(TR("id_default_button"));
113 
114  _groupBoxDistLayout->addWidget(_labelUseDefault, 1, 0);
115  _groupBoxDistLayout->addWidget(_pushButtonUseDefault, 1, 1);
116 
117  _courbeNiveauLayout->addWidget(_groupBoxDistMax, 4, 0);
118 
119  connect(_pushButtonUseDefault, &QPushButton::clicked, this, &TYCourbeNiveauWidget::setDefaultValue);
120  connect(_lineEditDistMax, &QLineEdit::textChanged, this, &TYCourbeNiveauWidget::updateUseDefault);
121 
122  updateContent();
123 }
124 
126 
128 {
129  _elmW->updateContent();
131 
132  _statusDMax = getElement()->getIsDMaxDefault();
133 
134  _lineEditAltitude->setText(QString().setNum(getElement()->getAltitude()));
135 
136  // On deconnecte la detection de modification du texte
137  disconnect(_lineEditDistMax, &QLineEdit::textChanged, this, &TYCourbeNiveauWidget::updateUseDefault);
138 
139  _lineEditDistMax->setText(QString().setNum(getElement()->getDistMax()));
140 
141  // On reconnecte apres modification
142  connect(_lineEditDistMax, &QLineEdit::textChanged, this, &TYCourbeNiveauWidget::updateUseDefault);
143 
144  bool closed = dynamic_cast<TYCourbeNiveau*>(_pElement)->isClosed();
145  // If closed, remove the last point (== 1st point)
146  cleanTabPoints(dynamic_cast<TYCourbeNiveau*>(_pElement)->getListPoints(), closed);
147  _pClosedCheckBox->setChecked(closed);
148  _tabPoints->update();
149 }
150 
152 {
153  _elmW->apply();
154  _colorW->apply();
155  _tabPoints->apply();
156 
157  getElement()->setAltitude(_lineEditAltitude->text().toDouble());
158 
159  double valeur = _lineEditDistMax->text().toDouble();
160 
161  if (valeur > 0) // Pas de valeur negative ou nulle
162  {
163  getElement()->setDistMax(valeur);
164  getElement()->setIsDMaxDefault(_statusDMax);
165  }
166 
167  getElement()->setIsGeometryModified(true);
168 
169  if (_pClosedCheckBox->isChecked())
170  {
171  dynamic_cast<TYCourbeNiveau*>(_pElement)->close(true);
172  }
173  else
174  {
175  dynamic_cast<TYCourbeNiveau*>(_pElement)->close(false);
176  }
177 
178  emit modified();
179 }
180 
182 {
183  TYCourbeNiveau* pCourbe = dynamic_cast<TYCourbeNiveau*>(_pElement);
184  if ((pCourbe != nullptr) && (pCourbe->isClosed()))
185  {
186  pCourbe->close(true);
187  }
188 }
189 
191 {
192  // On deconnecte la detection de modification du texte
193  disconnect(_lineEditDistMax, &QLineEdit::textChanged, this, &TYCourbeNiveauWidget::updateUseDefault);
194 
195  // Recuperation de la valeur par defaut
196  _lineEditDistMax->setText(
197  QString().setNum(TYCourbeNiveau::getDefaultDistMax())); // getElement()->getDistMax()) );
198  _statusDMax = false;
199 
201 
202  // On reconnecte apres modification
203  connect(_lineEditDistMax, &QLineEdit::textChanged, this, &TYCourbeNiveauWidget::updateUseDefault);
204 }
205 
207 {
208  // Recuperation de la valeur par defaut
209  _statusDMax = true;
210 }
211 
213 {
214  if (closed)
215  {
216  tabPts.pop_back();
217  }
218 }
outil IHM pour l'objet ColorInterface (fichier header)
#define TR(id)
Outil IHM pour une courbe de niveau (fichier header)
std::vector< TYPoint > TYTabPoint
Collection de TYPoint.
Definition: TYDefines.h:340
outil IHM pour un element (fichier header)
outil IHM pour une entrée utilisateur (fichier header)
classe de l'objet IHM pour l'objet ColorInterface
TYColorInterfaceWidget * _colorW
QGridLayout * _courbeNiveauLayout
void cleanTabPoints(TYTabPoint &tabPts, bool closed)
TYCourbeNiveauWidget(TYCourbeNiveau *pElement, QWidget *_pParent=NULL)
TabPointsWidget * _tabPoints
QPushButton * _pushButtonUseDefault
QGridLayout * _groupBoxDistLayout
QGridLayout * _groupBoxAltLayout
bool isClosed() const
static double getDefaultDistMax()
void close(bool closed)
TYTabPoint & getListPoints()
classe de l'objet IHM pour un element
virtual void apply()
virtual void updateContent()
virtual void setIsGeometryModified(bool isModified)
Definition: TYElement.cpp:253
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
TYElement * _pElement
Definition: TYWidget.h:114
void modified()
virtual void apply()
virtual void update()