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