Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYMurElementWidget.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 <QMessageBox>
23 #include <QGridLayout>
24 
31 #include "TYMurElementWidget.h"
32 
33 #include <math.h>
34 
35 #define TR(id) OLocalizator::getString("TYMurElementWidget", (id))
36 
37 TYMurElementWidget::TYMurElementWidget(TYMurElement* pElement, QWidget* _pParent /*=NULL*/)
38  : TYWidget(pElement, _pParent)
39 {
40 
41  _elmW = new TYAcousticRectangleWidget(pElement, this);
42  _elmW->setLayoutSpacing(0, 0);
43 
45 
46  resize(300, 680);
47  setWindowTitle(TR("id_caption"));
48  _murElemntLayout = new QGridLayout();
49  setLayout(_murElemntLayout);
50 
51  _murElemntLayout->addWidget(_elmW, 0, 0);
52 
53  _groupBoxParoi = new QGroupBox(this);
54  _groupBoxParoi->setTitle(TR("id_paroi"));
55  _groupBoxParoiLayout = new QGridLayout();
57 
58  _pushButtonParoi = new QPushButton(_groupBoxParoi);
59  _pushButtonParoi->setText(TR("id_proprietes_button"));
60  _groupBoxParoiLayout->addWidget(_pushButtonParoi, 0, 1);
61 
62  _lineEditNomParoi = new QLineEdit(_groupBoxParoi);
63  _lineEditNomParoi->setEnabled(false);
64  _lineEditNomParoi->setText(getElement()->getParoi()->getName());
65  _groupBoxParoiLayout->addWidget(_lineEditNomParoi, 0, 0);
66 
67  _murElemntLayout->addWidget(_groupBoxParoi, 1, 0);
68 
69  // Dimensions
70  _groupBoxDimensions = new QGroupBox(this);
71  _groupBoxDimensions->setTitle(TR("id_title_dimensions"));
72  _groupBoxDimensionsLayout = new QGridLayout();
74 
75  _dimensionsXLabel = new QLabel("labelName");
76  _dimensionsXLabel->setText("X :");
78 
79  _dimensionsYLabel = new QLabel("labelName");
80  _dimensionsYLabel->setText("Y :");
82 
87 
88  _murElemntLayout->addWidget(_groupBoxDimensions, 2, 0);
89 
90  updateContent();
91 
92  connect(_pushButtonParoi, &QPushButton::clicked, this, &TYMurElementWidget::editParoi);
93 }
94 
96 
98 {
100 
101  _lineEditNomParoi->setText(getElement()->getParoi()->getName());
102 
103  float sizeX = NAN, sizeY = NAN;
104  ((TYRectangle*)_elmW->getElement()->getShape())->getSize(sizeX, sizeY);
105 
106  _dimensionsXLineEdit->setText(QString().setNum(sizeX, 'f', 2));
107  _dimensionsYLineEdit->setText(QString().setNum(sizeY, 'f', 2));
108 }
109 
111 {
112  _elmW->apply();
113 
114  double sizeX = _dimensionsXLineEdit->text().toDouble();
115  double sizeY = _dimensionsYLineEdit->text().toDouble();
116 
117  if (sizeX <= 1E-4 || sizeY <= 1.E-4) // Eviter les surfaces nulles
118  {
119  QMessageBox::warning(this, "Tympan", TR("id_warning_size_not_ok"),
120  QMessageBox::Yes); //, QMessageBox::No);
121  return;
122  }
123 
124  ((TYRectangle*)_elmW->getElement()->getShape())->setSize(sizeX, sizeY);
125  TYAcousticRectangleNode* pRectNode = TYAcousticRectangleNode::safeDownCast(getElement()->getParent());
126  if (pRectNode)
127  {
128  pRectNode->updateGrid();
129  }
130 
131  emit modified();
132 }
133 
135 {
136  int ret = getElement()->getParoi()->edit(this);
137 
138  if (ret == QDialog::Accepted)
139  {
140  _lineEditNomParoi->setText(getElement()->getParoi()->getName());
141  }
142 }
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()