Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYRectangularMaillageWidget.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 
21 // Added by qt3to4:
22 #include <QGridLayout>
23 #include <QLabel>
24 
32 
33 #define TR(id) OLocalizator::getString("TYRectangularMaillageWidget", (id))
34 
36  QWidget* _pParent /*=NULL*/)
37  : TYWidget(pElement, _pParent)
38 {
39 
40  _maillageW = new TYMaillageWidget(pElement, this);
41 
42  resize(300, 200);
43  setWindowTitle(TR("id_caption"));
44  QGridLayout* pRectangularMaillageLayout = new QGridLayout();
45  setLayout(pRectangularMaillageLayout);
46 
47  pRectangularMaillageLayout->addWidget(_maillageW, 0, 0);
48 
49  QGroupBox* pGroupBox = new QGroupBox(this);
50  QGridLayout* pGroupBoxLayout = new QGridLayout();
51  pGroupBox->setLayout(pGroupBoxLayout);
52 
53  QLabel* pLabelDensiteX = new QLabel(TR("id_densite_x"), pGroupBox);
54  _lineEditDensiteX = new TYLineEdit(pGroupBox);
55  QObject::connect(_lineEditDensiteX, &QLineEdit::textChanged, this,
57  QLabel* pLabelDensiteUniteX = new QLabel(TR("id_densite_unit"), pGroupBox);
58  pGroupBoxLayout->addWidget(pLabelDensiteX, 0, 0);
59  pGroupBoxLayout->addWidget(_lineEditDensiteX, 0, 1);
60  pGroupBoxLayout->addWidget(pLabelDensiteUniteX, 0, 2);
61 
62  QLabel* pLabelDensiteY = new QLabel(TR("id_densite_y"), pGroupBox);
63  _lineEditDensiteY = new TYLineEdit(pGroupBox);
64  QObject::connect(_lineEditDensiteY, &QLineEdit::textChanged, this,
66  QLabel* pLabelDensiteUniteY = new QLabel(TR("id_densite_unit"), pGroupBox);
67  pGroupBoxLayout->addWidget(pLabelDensiteY, 1, 0);
68  pGroupBoxLayout->addWidget(_lineEditDensiteY, 1, 1);
69  pGroupBoxLayout->addWidget(pLabelDensiteUniteY, 1, 2);
70 
71  pRectangularMaillageLayout->addWidget(pGroupBox, 1, 0);
72 
73  QGroupBox* pGroupBoxRectangle = new QGroupBox(this);
74  pGroupBoxRectangle->setTitle(TR("id_rectangle"));
75  QGridLayout* pGroupBoxRectangleLayout = new QGridLayout();
76  pGroupBoxRectangle->setLayout(pGroupBoxRectangleLayout);
77 
78  _lineEditNomRectangle = new QLineEdit(pGroupBoxRectangle);
79  _lineEditNomRectangle->setEnabled(false);
80  pGroupBoxRectangleLayout->addWidget(_lineEditNomRectangle, 0, 0);
81 
82  QLabel* pSurfaceLabel = new QLabel(TR("id_surface"), pGroupBoxRectangle);
83  pGroupBoxRectangleLayout->addWidget(pSurfaceLabel, 0, 1);
84  _lineEditSurface = new TYLineEdit(pGroupBoxRectangle);
85  _lineEditSurface->setReadOnly(true);
86  pGroupBoxRectangleLayout->addWidget(_lineEditSurface, 0, 2);
87 
88  QPushButton* pPushButtonRectangle = new QPushButton(TR("id_proprietes_button"), pGroupBoxRectangle);
89  pGroupBoxRectangleLayout->addWidget(pPushButtonRectangle, 0, 3);
90 
91  pRectangularMaillageLayout->addWidget(pGroupBoxRectangle, 2, 0);
92 
93  updateContent();
94 
95  connect(pPushButtonRectangle, &QPushButton::clicked, this, &TYRectangularMaillageWidget::editRectangle);
96 }
97 
99 
101 {
103 
104  if (getElement()->getRectangle())
105  {
106  _lineEditNomRectangle->setText(getElement()->getRectangle()->getName());
107  _lineEditSurface->setText(QString().setNum(getElement()->getRectangle()->surface(), 'f', 2));
108  }
109 
110  _lineEditDensiteX->setText(QString().setNum(getElement()->getDensiteX(), 'f', 4));
111  _lineEditDensiteY->setText(QString().setNum(getElement()->getDensiteY(), 'f', 4));
112 }
113 
115 {
116  double surface = _lineEditSurface->text().toDouble();
117  double densiteX = _lineEditDensiteX->text().toDouble();
118  double densiteY = _lineEditDensiteY->text().toDouble();
119 
120  _maillageW->updateNbPoints((int)(surface * densiteX * densiteY));
121 }
122 
124 {
125  _maillageW->apply();
126 
127  // Si les densites sont differentes
128  double densiteX = _lineEditDensiteX->text().toDouble();
129  double densiteY = _lineEditDensiteY->text().toDouble();
130 
131  if (((getElement()->getDensiteX() != densiteX) || (getElement()->getDensiteY() != densiteY)) &&
132  getElement()->getRectangle())
133  {
134  // Rebuild the noise map
135  getElement()->make(getElement()->getRectangle(), densiteX, densiteY);
136 
137  // Update computation for new number of spectrums
138  dynamic_cast<TYProjet*>(getElement()->getParent())->updateCalculsWithMaillage(getElement());
139 
140  // La densite a changee, il faut mettre a jour l'altimetrie
141  LPTYProjet pProj = dynamic_cast<TYProjet*>(getElement()->getParent());
142  if (pProj && pProj->getSite()->getAltimetry()->containsData())
143  {
144  pProj->updateAltiRecepteurs();
145  }
146  }
147 
148  emit modified();
149 }
150 
152 {
153  int ret = getElement()->getRectangle()->edit(this);
154 
155  if ((ret == QDialog::Accepted) && (getElement()->getRectangle()))
156  {
157  _lineEditNomRectangle->setText(getElement()->getRectangle()->getName());
158  }
159 }
outil IHM pour une entrée utilisateur (fichier header)
Outil IHM pour un maillage (fichier header)
#define TR(id)
outil IHM pour un maillage rectangulaire (fichier header)
bool containsData()
Definition: TYAltimetrie.h:237
classe de l'objet IHM pour un maillage
virtual void updateContent()
void updateNbPoints(unsigned int nbPts)
virtual void apply()
classe de definition d'un projet.
Definition: TYProjet.h:45
bool updateAltiRecepteurs()
Definition: TYProjet.cpp:599
LPTYSiteNode getSite()
Get du site.
Definition: TYProjet.h:169
TYRectangularMaillageWidget(TYRectangularMaillage *pElement, QWidget *_pParent=NULL)
Classe de definition d'un maillage rectangulaire.
LPTYAltimetrie getAltimetry() const
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
void modified()