Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYSourcePonctuelleWidget.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 #include <qcombobox.h>
22 #include <qradiobutton.h>
23 #include <qbuttongroup.h>
24 // Added by qt3to4:
25 #include <QGridLayout>
26 #include <QLabel>
27 
35 
36 #define TR(id) OLocalizator::getString("TYSourcePonctuelleWidget", (id))
37 
39  : TYWidget(pElement, _pParent)
40 {
41 
42  _elmW = new TYSourceWidget(pElement, this);
43  _colorW = new TYColorInterfaceWidget(pElement, this);
44 
45  unsigned short wln = 0;
46 
47  resize(300, 550);
48  setWindowTitle(TR("id_caption"));
49  _sourcePonctuelleLayout = new QGridLayout();
50 
51  _sourcePonctuelleLayout->addWidget(_elmW, wln++, 0);
52 
53  _pPointW = new TYPointWidget(getElement()->getPos(), this);
54 
55  _sourcePonctuelleLayout->addWidget(_pPointW, wln++, 0);
56 
57  // Gestion hauteur
58  _groupBoxType = new QGroupBox(this);
59  _groupBoxType->setTitle(TR(""));
60  _groupBoxTypeLayout = new QGridLayout();
62 
63  QLabel* pLabelHauteur = new QLabel(TR("id_hauteur_label"), _groupBoxType);
64  _groupBoxTypeLayout->addWidget(pLabelHauteur, 0, 0);
65 
67  _groupBoxTypeLayout->addWidget(_pLineEditHauteur, 0, 1);
68 
69  _sourcePonctuelleLayout->addWidget(_groupBoxType, wln++, 0);
70 
71  // Choix de l'object geometrique et couleur
72  QGroupBox* groupBoxObject = new QGroupBox(this);
73  groupBoxObject->setTitle(TR(""));
74  QGridLayout* groupBoxLayoutObject = new QGridLayout();
75  groupBoxObject->setLayout(groupBoxLayoutObject);
76 
77  // Gestion de la forme
78  QGroupBox* groupBoxForme = new QGroupBox(groupBoxObject);
79  QGridLayout* groupBoxFormeLayout = new QGridLayout();
80  groupBoxForme->setLayout(groupBoxFormeLayout);
81 
82  _labelSelectObject = new QLabel(groupBoxForme);
83  _labelSelectObject->setText(TR("id_objet_label"));
84 
85  groupBoxFormeLayout->addWidget(_labelSelectObject, 0, 0);
86 
87  _comboBoxSelectObject = new QComboBox(groupBoxObject);
88  groupBoxFormeLayout->addWidget(_comboBoxSelectObject, 0, 1);
89 
90  groupBoxLayoutObject->addWidget(groupBoxForme, 0, 0);
91  groupBoxLayoutObject->addWidget(_colorW, 0, 1);
92 
93  _sourcePonctuelleLayout->addWidget(groupBoxObject, wln++, 0);
94 
95  // Gestion du type de rayonnement
96  // Retrait de la possibilité de mettre des sources hémispheriques. Cette option pourra être réintroduite
97  // avec une meilleure modélisation. Puisque toutes les sources sont sphérique, le choix du type de
98  // rayonnement est enlevé
99  // _buttonGroupTypeRaynt = new QButtonGroup(this);
100  // _buttonGroupTypeRaynt->setExclusive(true);
101  // _pRadioButtonSpheric = new QRadioButton(TR("id_spherique"));
102  // _buttonGroupTypeRaynt->addButton(_pRadioButtonSpheric, 0);
103  // _pRadioButtonHemi = new QRadioButton(TR("id_hemispherique"));
104  // _buttonGroupTypeRaynt->addButton(_pRadioButtonHemi, 1);
105  // _pRadioButtonForce = new QRadioButton(TR("id_forcee"));
106  // _buttonGroupTypeRaynt->addButton(_pRadioButtonForce, 3);
107 
108  /*QGridLayout* groupBoxTypeRayntLayout = new QGridLayout();
109  groupBoxTypeRayntLayout->addWidget(_pRadioButtonSpheric, 0, 0);*/
110  // groupBoxTypeRayntLayout->addWidget(_pRadioButtonHemi, 0, 1);
111  // groupBoxTypeRayntLayout->addWidget(_pRadioButtonForce, 0, 3);
112 
113  // QGroupBox* groupBoxTypeRaynt = new QGroupBox();
114  // groupBoxTypeRaynt->setTitle(TR("id_type_raynt_label"));
115  // groupBoxTypeRaynt->setLayout(groupBoxTypeRayntLayout);
116 
117  //_sourcePonctuelleLayout->addWidget(groupBoxTypeRaynt, wln++, 0);
118 
119  //_sourcePonctuelleLayout->setContentsMargins(0, 0, 0, 0);
120  setLayout(_sourcePonctuelleLayout);
121 
122  updateContent();
123 
124  // Disambiguate the overloaded signals
125  void (QComboBox::*_qComboBox_activated)(int) = &QComboBox::activated;
126  // void (QButtonGroup:: * _qButtonGroup_clicked)(int) = &QButtonGroup::buttonClicked;
127 
128  // connect(_buttonGroupTypeRaynt, _qButtonGroup_clicked, this,
129  // &TYSourcePonctuelleWidget::changeTypeRaynt);
130  connect(_comboBoxSelectObject, _qComboBox_activated, this, &TYSourcePonctuelleWidget::changeObject);
131 }
132 
134 
136 {
137  _comboBoxSelectObject->clear();
138 
139  // Remplissage du comboBox des objects
140  _comboBoxSelectObject->insertItem(0, TR("id_objet_cube"));
141  _comboBoxSelectObject->insertItem(1, TR("id_objet_pyramide"));
142  _comboBoxSelectObject->insertItem(2, TR("id_objet_sphere"));
143  _comboBoxSelectObject->insertItem(3, TR("id_objet_etoile"));
144 
145  // On affiche la forme d'objet courante
146  _comboBoxSelectObject->setCurrentIndex(getElement()->getObject());
147 }
148 
150 {
151  _elmW->updateContent();
153 
154  // Mise a jour des boutons radio de type de rayonnement (uniquement si source utilisateur)
155  if (getElement()->getType() == TYSourcePonctuelle::TypeUser)
156  {
157  //_pRadioButtonSpheric->setEnabled(true);
160  // switch (getElement()->getTypeRaynt())
161  //{
162  // case(0):
163  // {
164  // _pRadioButtonSpheric->setChecked(true);
165  // }
166  // break;
167  // //case(1):
168  // //{
169  // // _pRadioButtonHemi->setChecked(true);
170  // //}
171  // //break;
172  // //case(2):
173  // //{
174  // // _pRadioButtonForce->setChecked(true);
175  // //}
176  // // break;
177  //}
178  _pLineEditHauteur->setEnabled(true);
179  _pLineEditHauteur->setText(QString().setNum(getElement()->getHauteur()));
180  }
181  else
182  {
183  //_pRadioButtonSpheric->setEnabled(false);
186  _pLineEditHauteur->setEnabled(false);
187  }
188 
189  // Mise a jour de la position du point et desactivation du Z;
190  _pPointW->update();
191  _pPointW->disableZ();
192 
193  // Mise a jour du combo des objets
195 }
196 
198 
200 {
201  _elmW->apply();
202  _colorW->apply();
203 
204  getElement()->setHauteur(_pLineEditHauteur->text().toDouble());
205 
206  // getElement()->setTypeRaynt((TYTypeRaynt)_buttonGroupTypeRaynt->checkedId());
207 
208  _pPointW->apply();
209 
210  emit modified();
211 }
212 
214 {
215  int ret = getElement()->getPos()->edit(this);
216 
217  if (ret == QDialog::Accepted)
218  {
219  // _lineEditNomPosition->setText( getElement()->getPos()->getName());
220  }
221 }
222 
223 // void TYSourcePonctuelleWidget::changeTypeRaynt(int id)
224 //{
225 // emit typeRayntChanged(id);
226 //}
227 
229 {
230  getElement()->setObject(object);
231 }
outil IHM pour l'objet ColorInterface (fichier header)
outil IHM pour une entrée utilisateur (fichier header)
outil IHM pour un point (fichier header)
#define TR(id)
outil IHM pour une source ponctuelle (fichier header)
outil IHM pour une source (fichier header)
classe de l'objet IHM pour l'objet ColorInterface
classe de l'objet IHM pour un point
Definition: TYPointWidget.h:49
virtual void apply()
QLabel * _labelSelectObject
Choix de la forme de l'objet.
TYSourcePonctuelleWidget(TYSourcePonctuelle *pElement, QWidget *_pParent=NULL)
TYColorInterfaceWidget * _colorW
classe de l'objet IHM pour une source
virtual void updateContent()
virtual void apply()
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
void modified()