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