Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYParoiWidget.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012> <EDF-R&D> <FRANCE>
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation; either version 2 of the License, or
6  * (at your option) any later version.
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10  * See the GNU General Public License for more details.
11  * You should have received a copy of the GNU General Public License along
12  * with this program; if not, write to the Free Software Foundation, Inc.,
13  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
14  */
15 
23 #include <qfiledialog.h>
27 // Added by qt3to4:
28 #include <QGridLayout>
29 #include <QLabel>
30 
31 #include "TYParoiWidget.h"
32 
33 #define TR(id) OLocalizator::getString("TYParoiWidget", (id))
34 
35 TYParoiWidget::TYParoiWidget(TYParoi* pElement, QWidget* _pParent /*=NULL*/) : TYWidget(pElement, _pParent)
36 {
37  QString num;
38 
39  _elmW = new TYElementWidget(pElement, this);
40  resize(300, 350);
41  setWindowTitle(TR("id_caption"));
42  _paroiLayout = new QGridLayout();
43  setLayout(_paroiLayout);
44 
45  _paroiLayout->addWidget(_elmW, 0, 0);
46 
47  _groupBox4 = new QGroupBox(this);
48  _groupBox4->setTitle(TR(""));
49  _groupBox4Layout = new QGridLayout();
50  _groupBox4->setLayout(_groupBox4Layout);
51 
52  _labelEpaisseur = new QLabel(_groupBox4);
53  _labelEpaisseur->setText(TR("id_epaisseur_label"));
54  _groupBox4Layout->addWidget(_labelEpaisseur, 0, 0);
55 
56  _lineEditEpaisseur = new QLineEdit(_groupBox4);
57  _lineEditEpaisseur->setText(num.setNum(getElement()->getEpaisseur(), 'f', 2));
58  _groupBox4Layout->addWidget(_lineEditEpaisseur, 0, 1);
59  QLabel* pUnitEpaisseur = new QLabel(_groupBox4);
60  pUnitEpaisseur->setText(TR("id_unite_epaisseur"));
61  _groupBox4Layout->addWidget(pUnitEpaisseur, 0, 2);
62 
63  _paroiLayout->addWidget(_groupBox4, 1, 0);
64 
65  _groupBoxMatStruct = new QGroupBox(this);
66  _groupBoxMatStruct->setTitle(TR("id_matstruct"));
67  _groupBoxMatStructLayout = new QGridLayout();
69 
70  _pushButtonMatStruct = new QPushButton(_groupBoxMatStruct);
71  _pushButtonMatStruct->setText(TR("id_proprietes_button"));
73 
75  _lineEditNomMatstruct->setEnabled(false);
76  _lineEditNomMatstruct->setText(getElement()->getMatStruct()->getName());
78 
79  _paroiLayout->addWidget(_groupBoxMatStruct, 2, 0);
80 
81  _groupBoxMatFace1 = new QGroupBox(this);
82  _groupBoxMatFace1->setTitle(TR("id_matface1"));
83  _groupBoxMatFace1Layout = new QGridLayout();
85 
86  _pushButtonMatFace1 = new QPushButton(_groupBoxMatFace1);
87  _pushButtonMatFace1->setText(TR("id_proprietes_button"));
89 
90  _lineEditNomMatFace1 = new QLineEdit(_groupBoxMatFace1);
91  _lineEditNomMatFace1->setEnabled(false);
92  _lineEditNomMatFace1->setText(getElement()->getMatFace1()->getName());
94 
95  _paroiLayout->addWidget(_groupBoxMatFace1, 3, 0);
96 
97  _groupBoxMatFace2 = new QGroupBox(this);
98  _groupBoxMatFace2->setTitle(TR("id_matface2"));
99  _groupBoxMatFace2Layout = new QGridLayout();
101 
102  _lineEditNomMatFace2 = new QLineEdit(_groupBoxMatFace2);
103  _lineEditNomMatFace2->setEnabled(false);
104  _lineEditNomMatFace2->setText(getElement()->getMatFace2()->getName());
106 
107  _pushButtonMatFace2 = new QPushButton(_groupBoxMatFace2);
108  _pushButtonMatFace2->setText(TR("id_proprietes_button"));
110 
111  _paroiLayout->addWidget(_groupBoxMatFace2, 4, 0);
112 
113  QGroupBox* buttonGroupBox = new QGroupBox(this);
114  buttonGroupBox->setTitle(TR(""));
115  QGridLayout* buttonGroupBoxLayout = new QGridLayout();
116  buttonGroupBox->setLayout(buttonGroupBoxLayout);
117 
118  _pushButtonGetFromXML = new QPushButton(buttonGroupBox);
119  _pushButtonGetFromXML->setText(TR("id_get_from_xml"));
120  buttonGroupBoxLayout->addWidget(_pushButtonGetFromXML, 0, 1);
121 
122  _paroiLayout->addWidget(buttonGroupBox, 6, 0);
123 
124  connect(_pushButtonGetFromXML, &QPushButton::clicked, this, &TYParoiWidget::getFromXML);
125  connect(_pushButtonMatStruct, &QPushButton::clicked, this, &TYParoiWidget::editMatStruct);
126  connect(_pushButtonMatFace1, &QPushButton::clicked, this, &TYParoiWidget::editMatFace1);
127  connect(_pushButtonMatFace2, &QPushButton::clicked, this, &TYParoiWidget::editMatFace2);
128 
129  updateContent();
130 }
131 
133 
135 {
136  QString num;
137 
138  _elmW->updateContent();
139 
140  _lineEditNomMatFace2->setText(getElement()->getMatFace2()->getName());
141  _lineEditNomMatFace1->setText(getElement()->getMatFace1()->getName());
142  _lineEditNomMatstruct->setText(getElement()->getMatStruct()->getName());
143  _lineEditEpaisseur->setText(num.setNum(getElement()->getEpaisseur(), 'f', 2));
144 }
145 
147 {
148  _elmW->apply();
149 
150  getElement()->setEpaisseur(_lineEditEpaisseur->text().toDouble());
151 
152  emit modified();
153 }
154 
156 {
157  int ret = getElement()->getMatStruct()->getSpectreTransm().edit(this);
158 
159  if (ret == QDialog::Accepted)
160  {
161  _lineEditNomMatstruct->setText(getElement()->getMatStruct()->getName());
162  }
163 }
164 
166 {
167  // On augmente la precision d'affichage car les valeurs sont faibles
168  int oldPrecision = TYSpectre::getXMLPrecision();
170 
171  int ret = getElement()->getMatFace1()->getSpectreAbso().edit(this);
172 
173  if (ret == QDialog::Accepted)
174  {
175  _lineEditNomMatFace1->setText(getElement()->getMatFace1()->getName());
176  }
177 
178  // Le spectre est borne entre 0.001 et 200 pour eviter les plantage
179  TYSpectre spectre = getElement()->getMatFace1()->getSpectreAbso().seuillage(0.001);
180  getElement()->getMatFace1()->setSpectreAbso(spectre);
181 
182  // On remet la precision d'affichage a la valeur anterieure
183  TYSpectre::setXMLPrecision(oldPrecision);
184 }
185 
187 {
188  // On augmente la precision d'affichage car les valeurs sont faibles
189  int oldPrecision = TYSpectre::getXMLPrecision();
191 
192  int ret = getElement()->getMatFace2()->getSpectreAbso().edit(this);
193 
194  if (ret == QDialog::Accepted)
195  {
196  _lineEditNomMatFace2->setText(getElement()->getMatFace2()->getName());
197  }
198 
199  // Le spectre est borne entre 0.001 et 0.999 pour eviter les plantage (10*log10(1-alpha))...
200  TYSpectre spectre = getElement()->getMatFace2()->getSpectreAbso().seuillage(0.001, 0.999);
201  getElement()->getMatFace2()->setSpectreAbso(spectre);
202 
203  // On remet la precision d'affichage a la valeur anterieure
204  TYSpectre::setXMLPrecision(oldPrecision);
205 }
206 
208 {
209  QString fileName = QFileDialog::getOpenFileName(this, "", "", "XML (*.xml)");
210 
211  if (!fileName.isEmpty())
212  {
213  TYXMLManager xmlManager;
214  TYElement* pElt = NULL;
215  LPTYElementArray eltList;
216 
217  LPTYParoi pParoi = NULL;
218 
219  xmlManager.load(fileName, eltList);
220 
221  size_t count = eltList.size();
222  for (size_t i = 0; i < count; i++)
223  {
224  pElt = eltList.at(i);
225 
226  if ((pElt != NULL) && (pElt->isA("TYParoi")))
227  {
228  pParoi = (TYParoi*)pElt;
229 
230  if (pParoi != NULL)
231  {
232  (*getElement()) = (*pParoi);
233  updateContent();
234  }
235  }
236  }
237 
238  pElt = NULL;
239  }
240 }
std::vector< LPTYElement > LPTYElementArray
Definition: TYElement.h:345
#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:532
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)