Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYParoiWidget.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 <qfiledialog.h>
27 // Added by qt3to4:
28 #include <QGridLayout>
29 #include <QLabel>
30 #include <QtWidgets>
31 
32 #include "TYParoiWidget.h"
33 #include "TYElementWidget.h"
34 
35 #define TR(id) OLocalizator::getString("TYParoiWidget", (id))
36 
37 TYParoiWidget::TYParoiWidget(TYParoi* pElement, QWidget* _pParent /*=NULL*/) : TYWidget(pElement, _pParent)
38 {
39  QString num;
40 
41  _elmW = new TYElementWidget(pElement, this);
42  resize(300, 350);
43  setWindowTitle(TR("id_caption"));
44  _paroiLayout = new QGridLayout();
45  setLayout(_paroiLayout);
46 
47  _paroiLayout->addWidget(_elmW, 0, 0);
48 
49  _groupBox4 = new QGroupBox(this);
50  _groupBox4->setTitle(TR(""));
51  _groupBox4Layout = new QGridLayout();
52  _groupBox4->setLayout(_groupBox4Layout);
53 
54  _labelEpaisseur = new QLabel(_groupBox4);
55  _labelEpaisseur->setText(TR("id_epaisseur_label"));
56  _groupBox4Layout->addWidget(_labelEpaisseur, 0, 0);
57 
58  _lineEditEpaisseur = new QLineEdit(_groupBox4);
59  _lineEditEpaisseur->setText(num.setNum(getElement()->getEpaisseur(), 'f', 2));
60  _groupBox4Layout->addWidget(_lineEditEpaisseur, 0, 1);
61  QLabel* pUnitEpaisseur = new QLabel(_groupBox4);
62  pUnitEpaisseur->setText(TR("id_unite_epaisseur"));
63  _groupBox4Layout->addWidget(pUnitEpaisseur, 0, 2);
64 
65  _paroiLayout->addWidget(_groupBox4, 1, 0);
66 
67  _groupBoxMatStruct = new QGroupBox(this);
68  _groupBoxMatStruct->setTitle(TR("id_matstruct"));
69  _groupBoxMatStructLayout = new QGridLayout();
71 
72  _pushButtonMatStruct = new QPushButton(_groupBoxMatStruct);
73  _pushButtonMatStruct->setText(TR("id_proprietes_button"));
75 
77  _lineEditNomMatstruct->setEnabled(false);
78  _lineEditNomMatstruct->setText(getElement()->getMatStruct()->getName());
80 
81  _paroiLayout->addWidget(_groupBoxMatStruct, 2, 0);
82 
83  _groupBoxMatFace1 = new QGroupBox(this);
84  _groupBoxMatFace1->setTitle(TR("id_matface1"));
85  _groupBoxMatFace1Layout = new QGridLayout();
87 
88  _pushButtonMatFace1 = new QPushButton(_groupBoxMatFace1);
89  _pushButtonMatFace1->setText(TR("id_proprietes_button"));
91 
92  _lineEditNomMatFace1 = new QLineEdit(_groupBoxMatFace1);
93  _lineEditNomMatFace1->setEnabled(false);
94  _lineEditNomMatFace1->setText(getElement()->getMatFace1()->getName());
96 
97  _paroiLayout->addWidget(_groupBoxMatFace1, 3, 0);
98 
99  _groupBoxMatFace2 = new QGroupBox(this);
100  _groupBoxMatFace2->setTitle(TR("id_matface2"));
101  _groupBoxMatFace2Layout = new QGridLayout();
103 
104  _lineEditNomMatFace2 = new QLineEdit(_groupBoxMatFace2);
105  _lineEditNomMatFace2->setEnabled(false);
106  _lineEditNomMatFace2->setText(getElement()->getMatFace2()->getName());
108 
109  _pushButtonMatFace2 = new QPushButton(_groupBoxMatFace2);
110  _pushButtonMatFace2->setText(TR("id_proprietes_button"));
112 
113  _paroiLayout->addWidget(_groupBoxMatFace2, 4, 0);
114 
115  QGroupBox* buttonGroupBox = new QGroupBox(this);
116  buttonGroupBox->setTitle(TR(""));
117  QGridLayout* buttonGroupBoxLayout = new QGridLayout();
118  buttonGroupBox->setLayout(buttonGroupBoxLayout);
119 
120  _pushButtonGetFromXML = new QPushButton(buttonGroupBox);
121  _pushButtonGetFromXML->setText(TR("id_get_from_xml"));
122  buttonGroupBoxLayout->addWidget(_pushButtonGetFromXML, 0, 1);
123 
124  _paroiLayout->addWidget(buttonGroupBox, 6, 0);
125 
126  connect(_pushButtonGetFromXML, &QPushButton::clicked, this, &TYParoiWidget::getFromXML);
127  connect(_pushButtonMatStruct, &QPushButton::clicked, this, &TYParoiWidget::editMatStruct);
128  connect(_pushButtonMatFace1, &QPushButton::clicked, this, &TYParoiWidget::editMatFace1);
129  connect(_pushButtonMatFace2, &QPushButton::clicked, this, &TYParoiWidget::editMatFace2);
130 
131  updateContent();
132 }
133 
135 
137 {
138  QString num;
139 
140  _elmW->updateContent();
141 
142  _lineEditNomMatFace2->setText(getElement()->getMatFace2()->getName());
143  _lineEditNomMatFace1->setText(getElement()->getMatFace1()->getName());
144  _lineEditNomMatstruct->setText(getElement()->getMatStruct()->getName());
145  _lineEditEpaisseur->setText(num.setNum(getElement()->getEpaisseur(), 'f', 2));
146 }
147 
149 {
150  _elmW->apply();
151 
152  getElement()->setEpaisseur(_lineEditEpaisseur->text().toDouble());
153 
154  emit modified();
155 }
156 
158 {
159  int ret = getElement()->getMatStruct()->getSpectreTransm().edit(this);
160 
161  if (ret == QDialog::Accepted)
162  {
163  _lineEditNomMatstruct->setText(getElement()->getMatStruct()->getName());
164  }
165 }
166 
168 {
169  // On augmente la precision d'affichage car les valeurs sont faibles
170  int oldPrecision = TYSpectre::getXMLPrecision();
172 
173  int ret = getElement()->getMatFace1()->getSpectreAbso().edit(this);
174 
175  if (ret == QDialog::Accepted)
176  {
177  _lineEditNomMatFace1->setText(getElement()->getMatFace1()->getName());
178  }
179 
180  // Le spectre est borne entre 0.001 et 200 pour eviter les plantage
181  TYSpectre spectre = getElement()->getMatFace1()->getSpectreAbso().seuillage(0.001);
182  getElement()->getMatFace1()->setSpectreAbso(spectre);
183 
184  // On remet la precision d'affichage a la valeur anterieure
185  TYSpectre::setXMLPrecision(oldPrecision);
186 }
187 
189 {
190  // On augmente la precision d'affichage car les valeurs sont faibles
191  int oldPrecision = TYSpectre::getXMLPrecision();
193 
194  int ret = getElement()->getMatFace2()->getSpectreAbso().edit(this);
195 
196  if (ret == QDialog::Accepted)
197  {
198  _lineEditNomMatFace2->setText(getElement()->getMatFace2()->getName());
199  }
200 
201  // Le spectre est borne entre 0.001 et 0.999 pour eviter les plantage (10*log10(1-alpha))...
202  TYSpectre spectre = getElement()->getMatFace2()->getSpectreAbso().seuillage(0.001, 0.999);
203  getElement()->getMatFace2()->setSpectreAbso(spectre);
204 
205  // On remet la precision d'affichage a la valeur anterieure
206  TYSpectre::setXMLPrecision(oldPrecision);
207 }
208 
210 {
211  QString fileName = QFileDialog::getOpenFileName(this, "", "", "XML (*.xml)");
212 
213  if (!fileName.isEmpty())
214  {
215  TYXMLManager xmlManager;
216  TYElement* pElt = NULL;
217  LPTYElementArray eltList;
218 
219  LPTYParoi pParoi = NULL;
220 
221  xmlManager.load(fileName, eltList);
222 
223  size_t count = eltList.size();
224  for (size_t i = 0; i < count; i++)
225  {
226  pElt = eltList.at(i);
227 
228  if ((pElt != NULL) && (pElt->isA("TYParoi")))
229  {
230  pParoi = (TYParoi*)pElt;
231 
232  if (pParoi != NULL)
233  {
234  (*getElement()) = (*pParoi);
235  updateContent();
236  }
237  }
238  }
239 
240  pElt = NULL;
241  }
242 }
outil IHM pour un element (fichier header)
std::vector< LPTYElement > LPTYElementArray
Definition: TYElement.h:344
#define TR(id)
outil IHM pour une paroi (fichier header)
bool isA(const char *className) const
Definition: TYElement.cpp:65
OSpectreAbstract & seuillage(const double &min=-200.0, const double max=200.0)
Limit the spectrum values (min and max)
Definition: spectre.cpp:537
classe de l'objet IHM pour un element
virtual void apply()
virtual void updateContent()
virtual ~TYParoiWidget()
QGroupBox * _groupBoxMatStruct
Definition: TYParoiWidget.h:93
QPushButton * _pushButtonMatStruct
Definition: TYParoiWidget.h:94
QGridLayout * _groupBoxMatStructLayout
QGroupBox * _groupBox4
Definition: TYParoiWidget.h:90
QGroupBox * _groupBoxMatFace1
Definition: TYParoiWidget.h:96
QGridLayout * _paroiLayout
QLineEdit * _lineEditEpaisseur
Definition: TYParoiWidget.h:92
QLineEdit * _lineEditNomMatstruct
Definition: TYParoiWidget.h:95
QPushButton * _pushButtonMatFace2
virtual void apply()
QGridLayout * _groupBoxMatFace2Layout
QLineEdit * _lineEditNomMatFace2
QLabel * _labelEpaisseur
Definition: TYParoiWidget.h:91
QGridLayout * _groupBoxMatFace1Layout
QPushButton * _pushButtonGetFromXML
QGroupBox * _groupBoxMatFace2
Definition: TYParoiWidget.h:99
QGridLayout * _groupBox4Layout
TYParoiWidget(TYParoi *pElement, QWidget *_pParent=NULL)
QPushButton * _pushButtonMatFace1
Definition: TYParoiWidget.h:97
QLineEdit * _lineEditNomMatFace1
Definition: TYParoiWidget.h:98
TYElementWidget * _elmW
virtual void updateContent()
static int getXMLPrecision()
Get/Set de la precision de stockage des resultats (XML)
Definition: TYSpectre.h:180
static void setXMLPrecision(const int precision=2)
Get/Set de la precision de stockage des resultats (XML)
Definition: TYSpectre.h:174
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
void modified()
int load(const QString &fileName, LPTYElementArray &eltCollection)