Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYMurElementWidget.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 
21 // Added by qt3to4:
22 #include <QMessageBox>
23 #include <QGridLayout>
24 #include <QtWidgets>
25 
32 #include "TYMurElementWidget.h"
33 
34 #include <math.h>
35 
36 #define TR(id) OLocalizator::getString("TYMurElementWidget", (id))
37 
38 TYMurElementWidget::TYMurElementWidget(TYMurElement* pElement, QWidget* _pParent /*=NULL*/)
39  : TYWidget(pElement, _pParent)
40 {
41 
42  _elmW = new TYAcousticRectangleWidget(pElement, this);
43  _elmW->setLayoutSpacing(0, 0);
44 
46 
47  resize(300, 680);
48  setWindowTitle(TR("id_caption"));
49  _murElemntLayout = new QGridLayout();
50  setLayout(_murElemntLayout);
51 
52  _murElemntLayout->addWidget(_elmW, 0, 0);
53 
54  _groupBoxParoi = new QGroupBox(this);
55  _groupBoxParoi->setTitle(TR("id_paroi"));
56  _groupBoxParoiLayout = new QGridLayout();
58 
59  _pushButtonParoi = new QPushButton(_groupBoxParoi);
60  _pushButtonParoi->setText(TR("id_proprietes_button"));
61  _groupBoxParoiLayout->addWidget(_pushButtonParoi, 0, 1);
62 
63  _lineEditNomParoi = new QLineEdit(_groupBoxParoi);
64  _lineEditNomParoi->setEnabled(false);
65  _lineEditNomParoi->setText(getElement()->getParoi()->getName());
66  _groupBoxParoiLayout->addWidget(_lineEditNomParoi, 0, 0);
67 
68  _murElemntLayout->addWidget(_groupBoxParoi, 1, 0);
69 
70  // Dimensions
71  _groupBoxDimensions = new QGroupBox(this);
72  _groupBoxDimensions->setTitle(TR("id_title_dimensions"));
73  _groupBoxDimensionsLayout = new QGridLayout();
75 
76  _dimensionsXLabel = new QLabel("labelName");
77  _dimensionsXLabel->setText("X :");
79 
80  _dimensionsYLabel = new QLabel("labelName");
81  _dimensionsYLabel->setText("Y :");
83 
88 
89  _murElemntLayout->addWidget(_groupBoxDimensions, 2, 0);
90 
91  updateContent();
92 
93  connect(_pushButtonParoi, &QPushButton::clicked, this, &TYMurElementWidget::editParoi);
94 }
95 
97 
99 {
100  _elmW->updateContent();
101 
102  _lineEditNomParoi->setText(getElement()->getParoi()->getName());
103 
104  float sizeX = NAN, sizeY = NAN;
105  ((TYRectangle*)_elmW->getElement()->getShape())->getSize(sizeX, sizeY);
106 
107  _dimensionsXLineEdit->setText(QString().setNum(sizeX, 'f', 2));
108  _dimensionsYLineEdit->setText(QString().setNum(sizeY, 'f', 2));
109 }
110 
112 {
113  _elmW->apply();
114 
115  double sizeX = _dimensionsXLineEdit->text().toDouble();
116  double sizeY = _dimensionsYLineEdit->text().toDouble();
117 
118  if (sizeX <= 1E-4 || sizeY <= 1.E-4) // Eviter les surfaces nulles
119  {
120  QMessageBox::warning(this, "Tympan", TR("id_warning_size_not_ok"),
121  QMessageBox::Yes); //, QMessageBox::No);
122  return;
123  }
124 
125  ((TYRectangle*)_elmW->getElement()->getShape())->setSize(sizeX, sizeY);
126  TYAcousticRectangleNode* pRectNode = TYAcousticRectangleNode::safeDownCast(getElement()->getParent());
127  if (pRectNode)
128  {
129  pRectNode->updateGrid();
130  }
131 
132  emit modified();
133 }
134 
136 {
137  int ret = getElement()->getParoi()->edit(this);
138 
139  if (ret == QDialog::Accepted)
140  {
141  _lineEditNomParoi->setText(getElement()->getParoi()->getName());
142  }
143 }
outil IHM pour un rectangle acoustique (fichier header)
outil IHM pour une surface acoustique (fichier header)
outil IHM pour une entrée utilisateur (fichier header)
#define TR(id)
outil IHM pour un element de mur (fichier header)
static OPrototype * safeDownCast(OPrototype *pObject)
Definition: TYElement.cpp:71
classe d'un objet IHM pour un rectangle acoustique
TYAcousticSurfaceWidget * getSurfaceWidget()
void setLayoutSpacing(int margin, int spacing)
QGroupBox * _groupBoxDimensions
virtual void updateContent()
TYLineEdit * _dimensionsXLineEdit
TYMurElementWidget(TYMurElement *pElement, QWidget *_pParent=NULL)
QLineEdit * _lineEditNomParoi
TYAcousticRectangleWidget * _elmW
QGridLayout * _murElemntLayout
QGroupBox * _groupBoxParoi
QPushButton * _pushButtonParoi
QGridLayout * _groupBoxDimensionsLayout
TYLineEdit * _dimensionsYLineEdit
QGridLayout * _groupBoxParoiLayout
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
void modified()