Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYTopographieWidget.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 <qmenu.h>
22 // Added by qt3to4:
23 #include <QGridLayout>
24 #include <QTreeWidget>
25 #include <QTreeWidgetItem>
26 #include <QHeaderView>
27 #include <QtWidgets>
28 
29 #include "Tympan/core/config.h"
32 #include "TYTopographieWidget.h"
33 #include "TYElementWidget.h"
34 
35 #define TR(id) OLocalizator::getString("TYTopographieWidget", (id))
36 
37 TYTopographieWidget::TYTopographieWidget(TYTopographie* pElement, QWidget* _pParent /*=NULL*/)
38  : TYWidget(pElement, _pParent)
39 {
40 
41  _elmW = new TYElementWidget(pElement, this);
42  resize(300, 797);
43  setWindowTitle(TR("id_caption"));
44  _topographieLayout = new QGridLayout();
45  setLayout(_topographieLayout);
46 
47  _topographieLayout->addWidget(_elmW, 0, 0);
48 
49  // Terrain par defaut
50  _groupBoxTerrainDef = new QGroupBox(this);
51  _groupBoxTerrainDef->setTitle(TR("id_terraindef"));
52  _groupBoxTerrainDefLayout = new QGridLayout();
54 
55  _pushButtonTerrainDef = new QPushButton(_groupBoxTerrainDef);
56  _pushButtonTerrainDef->setText(TR("id_proprietes_button"));
58 
60  _lineEditNomTerrainDef->setEnabled(false);
62 
63  _topographieLayout->addWidget(_groupBoxTerrainDef, 2, 0);
64 
65  // Cours d'eau
66  _groupBox_2 = new QGroupBox(this);
67  _groupBox_2->setTitle(TR("id_tabcrseaurepere_box"));
68  _groupBox_2Layout = new QGridLayout();
69  _groupBox_2->setLayout(_groupBox_2Layout);
70 
71  _listView_5 = new QTreeWidget(_groupBox_2);
72  _listView_5->setColumnCount(2);
73  QStringList stringList;
74  stringList.append(TR(""));
75  stringList.append(TR("id_crseau"));
76  _listView_5->setHeaderLabels(stringList);
77  _listView_5->setRootIsDecorated(true);
78 
79  _groupBox_2Layout->addWidget(_listView_5, 0, 0);
80 
81  _topographieLayout->addWidget(_groupBox_2, 3, 0);
82 
83  // Plan d'eau
84  _groupBoxPlanEau = new QGroupBox(this);
85  _groupBoxPlanEau->setTitle(TR("id_tabplaneaurepere_box"));
86  _groupBoxPlanEauLayout = new QGridLayout();
88 
89  _listViewPlanEau = new QTreeWidget(_groupBoxPlanEau);
90  _listViewPlanEau->setColumnCount(2);
91  QStringList stringList2;
92  stringList2.append(TR(""));
93  stringList2.append(TR("id_planeau"));
94  _listViewPlanEau->setHeaderLabels(stringList2);
95  _listViewPlanEau->setRootIsDecorated(true);
96 
97  _groupBoxPlanEauLayout->addWidget(_listViewPlanEau, 0, 0);
98 
99  _topographieLayout->addWidget(_groupBoxPlanEau, 4, 0);
100 
101  // Courbes de niveaux
102  _groupBox_3 = new QGroupBox(this);
103  _groupBox_3->setTitle(TR("id_tabcrbnivrepere_box"));
104  _groupBox_3Layout = new QGridLayout();
105  _groupBox_3->setLayout(_groupBox_3Layout);
106 
107  _listView_6 = new QTreeWidget(_groupBox_3);
108  _listView_6->setColumnCount(2);
109  QStringList stringList3;
110  stringList3.append(TR(""));
111  stringList3.append(TR("id_crbniv"));
112  _listView_6->setHeaderLabels(stringList3);
113  _listView_6->setRootIsDecorated(true);
114 
115  _groupBox_3Layout->addWidget(_listView_6, 0, 0);
116 
117  _topographieLayout->addWidget(_groupBox_3, 5, 0);
118 
119  // Terrains
120  _groupBox_4 = new QGroupBox(this);
121  _groupBox_4->setTitle(TR("id_tabterrainrepere_box"));
122  _groupBox_4Layout = new QGridLayout();
123  _groupBox_4->setLayout(_groupBox_4Layout);
124 
125  _listView_7 = new QTreeWidget(_groupBox_4);
126  _listView_7->setColumnCount(2);
127  QStringList stringList4;
128  stringList4.append(TR(""));
129  stringList4.append(TR("id_terrain"));
130  _listView_7->setHeaderLabels(stringList4);
131  _listView_7->setRootIsDecorated(true);
132 
133  _groupBox_4Layout->addWidget(_listView_7, 0, 0);
134 
135  _topographieLayout->addWidget(_groupBox_4, 6, 0);
136 
137  updateContent();
138 
139  connect(_pushButtonTerrainDef, &QPushButton::clicked, this, &TYTopographieWidget::editDefTerrain);
140 }
141 
143 
145 {
146  unsigned int i = 0;
147  _elmW->updateContent();
148 
149  _lineEditNomTerrainDef->setText(getElement()->getDefTerrain()->getName());
150 
151  _listView_7->clear();
152  for (i = 0; i < getElement()->getListTerrain().size(); i++)
153  {
154  QTreeWidgetItem* item = new QTreeWidgetItem(_listView_7, 0);
155  item->setText(0, QString().setNum(i));
156  item->setText(1, getElement()->getListTerrain()[i]->getElement()->getName());
157  }
158 
159  _listView_5->clear();
160  for (i = 0; i < getElement()->getListCrsEau().size(); i++)
161  {
162  QTreeWidgetItem* item = new QTreeWidgetItem(_listView_5, 0);
163  item->setText(0, QString().setNum(i));
164  item->setText(1, getElement()->getListCrsEau()[i]->getElement()->getName());
165  }
166 
167  _listViewPlanEau->clear();
168  for (i = 0; i < getElement()->getListPlanEau().size(); i++)
169  {
170  QTreeWidgetItem* item = new QTreeWidgetItem(_listViewPlanEau, 0);
171  item->setText(0, QString().setNum(i));
172  item->setText(1, getElement()->getPlanEau(i)->getName());
173  }
174 
175  _listView_6->clear();
176  for (i = 0; i < getElement()->getListCrbNiv().size(); i++)
177  {
178  QTreeWidgetItem* item = new QTreeWidgetItem(_listView_6, 0);
179  item->setText(0, QString().setNum(i));
180  item->setText(1, getElement()->getListCrbNiv()[i]->getElement()->getName());
181  }
182 }
183 
185 {
186  _elmW->apply();
187 
188  getElement()->updateGraphic();
189 
190  emit modified();
191 }
192 
194 {
195  int ret = getElement()->getDefTerrain()->edit(this);
196 
197  if (ret == QDialog::Accepted)
198  {
199  _lineEditNomTerrainDef->setText(getElement()->getDefTerrain()->getName());
200  }
201 }
202 
203 void TYTopographieWidget::editTerrain(QTreeWidgetItem* item)
204 {
205  int ret = getElement()->getTerrain(item->text(0).toInt())->edit(this);
206 
207  if (ret == QDialog::Accepted)
208  {
209  _listView_7->clear();
210  for (unsigned int i = 0; i < getElement()->getListTerrain().size(); i++)
211  {
212  QTreeWidgetItem* item = new QTreeWidgetItem(_listView_7, 0);
213  item->setText(0, QString().setNum(i));
214  item->setText(1, getElement()->getListTerrain()[i]->getElement()->getName());
215  }
216  }
217 }
218 
219 void TYTopographieWidget::editCrbNiv(QTreeWidgetItem* item)
220 {
221  int ret = getElement()->getCrbNiv(item->text(0).toInt())->edit(this);
222 
223  if (ret == QDialog::Accepted)
224  {
225  _listView_6->clear();
226  for (unsigned int i = 0; i < getElement()->getListCrbNiv().size(); i++)
227  {
228  QTreeWidgetItem* item = new QTreeWidgetItem(_listView_6, 0);
229  item->setText(0, QString().setNum(i));
230  item->setText(1, getElement()->getListCrbNiv()[i]->getElement()->getName());
231  }
232  }
233 }
234 
235 void TYTopographieWidget::editCrsEau(QTreeWidgetItem* item)
236 {
237  int ret = getElement()->getCrsEau(item->text(0).toInt())->edit(this);
238 
239  if (ret == QDialog::Accepted)
240  {
241  _listView_5->clear();
242  for (unsigned int i = 0; i < getElement()->getListCrsEau().size(); i++)
243  {
244  QTreeWidgetItem* item = new QTreeWidgetItem(_listView_5, 0);
245  item->setText(0, QString().setNum(i));
246  item->setText(1, getElement()->getListCrsEau()[i]->getElement()->getName());
247  }
248  }
249 }
250 
251 void TYTopographieWidget::editPlanEau(QTreeWidgetItem* item)
252 {
253  int ret = getElement()->getPlanEau(item->text(0).toInt())->edit(this);
254 
255  if (ret == QDialog::Accepted)
256  {
257  _listViewPlanEau->clear();
258  for (unsigned int i = 0; i < getElement()->getListPlanEau().size(); i++)
259  {
260  QTreeWidgetItem* item = new QTreeWidgetItem(_listViewPlanEau, 0);
261  item->setText(0, QString().setNum(i));
262  item->setText(1, getElement()->getPlanEau(i)->getName());
263  }
264  }
265 }
266 
267 void TYTopographieWidget::contextMenuEvent(QContextMenuEvent* e)
268 {
269  // si on trouve un item associe
270  QPoint point = _listViewPlanEau->mapFrom(this, e->pos());
271  QTreeWidgetItem* item =
272  _listViewPlanEau->itemAt(point.x(), point.y() - _listViewPlanEau->header()->height());
273  QPoint point5 = _listView_5->mapFrom(this, e->pos());
274  QTreeWidgetItem* item5 = _listView_5->itemAt(point5.x(), point5.y() - _listView_5->header()->height());
275  QPoint point6 = _listView_6->mapFrom(this, e->pos());
276  QTreeWidgetItem* item6 = _listView_6->itemAt(point6.x(), point6.y() - _listView_6->header()->height());
277  QPoint point7 = _listView_7->mapFrom(this, e->pos());
278  QTreeWidgetItem* item7 = _listView_7->itemAt(point7.x(), point7.y() - _listView_7->header()->height());
279  if ((item != NULL) || (item5 != NULL) || (item6 != NULL) || (item7 != NULL))
280  {
281  QMenu* pMenu = new QMenu(this);
282 
283  QAction* prop = pMenu->addAction(TR("id_property"));
284  if (item != NULL)
285  {
286  QAction* ret = pMenu->exec(_listViewPlanEau->mapToGlobal(point));
287  if ((ret) && (ret == prop))
288  {
289  editPlanEau(item);
290  }
291  }
292  else if (item5 != NULL)
293  {
294  QAction* ret = pMenu->exec(_listView_5->mapToGlobal(point5));
295  if ((ret) && (ret == prop))
296  {
297  editCrsEau(item5);
298  }
299  }
300  else if (item6 != NULL)
301  {
302  QAction* ret = pMenu->exec(_listView_6->mapToGlobal(point6));
303  if ((ret) && (ret == prop))
304  {
305  editCrbNiv(item6);
306  }
307  }
308  else if (item7 != NULL)
309  {
310  QAction* ret = pMenu->exec(_listView_7->mapToGlobal(point7));
311  if ((ret) && (ret == prop))
312  {
313  editTerrain(item7);
314  }
315  }
316  }
317 }
outil IHM pour un element (fichier header)
#define TR(id)
outil IHM pour une topographie (fichier header)
classe de l'objet IHM pour un element
virtual void apply()
virtual void updateContent()
QGridLayout * _groupBox_3Layout
void editCrsEau(QTreeWidgetItem *item)
QTreeWidget * _listViewPlanEau
QGridLayout * _topographieLayout
QPushButton * _pushButtonTerrainDef
QLineEdit * _lineEditNomTerrainDef
void editCrbNiv(QTreeWidgetItem *item)
QGridLayout * _groupBoxPlanEauLayout
QGridLayout * _groupBoxTerrainDefLayout
TYElementWidget * _elmW
TYTopographieWidget(TYTopographie *pElement, QWidget *_pParent=NULL)
QGridLayout * _groupBox_4Layout
void editTerrain(QTreeWidgetItem *item)
virtual void contextMenuEvent(QContextMenuEvent *e)
QGridLayout * _groupBox_2Layout
void editPlanEau(QTreeWidgetItem *item)
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
void modified()