Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYSourceLineicWidget.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 <QLabel>
26 #include <QHeaderView>
27 
32 #include "TYSourceLineicWidget.h"
33 
34 #define TR(id) OLocalizator::getString("TYSourceLineicWidget", (id))
35 
36 TYSourceLineicWidget::TYSourceLineicWidget(TYSourceLineic* pElement, QWidget* _pParent /*=NULL*/)
37  : TYWidget(pElement, _pParent)
38 {
39 
40  _elmW = new TYSourceWidget(pElement, this);
41 
42  resize(300, 444);
43  setWindowTitle(TR("id_caption"));
44  _sourceLineicLayout = new QGridLayout();
45 
46  _sourceLineicLayout->addWidget(_elmW, 0, 0);
47 
48  _groupBoxEdit = new QGroupBox(this);
49  _groupBoxEdit->setTitle(TR(""));
50  _groupBoxEditLayout = new QGridLayout();
52 
54  _groupBoxEditLayout->addWidget(_lineEditDensiteSrcs, 0, 1);
55  QLabel* pUnitDensite = new QLabel(_groupBoxEdit);
56  pUnitDensite->setText(TR("id_unite_densite_srcs"));
57  _groupBoxEditLayout->addWidget(pUnitDensite, 0, 2);
58 
59  _labelDensiteSrcs = new QLabel(_groupBoxEdit);
60  _labelDensiteSrcs->setText(TR("id_densitessrcs_label"));
61  _groupBoxEditLayout->addWidget(_labelDensiteSrcs, 0, 0);
62 
63  _labeSrcsCor = new QLabel(_groupBoxEdit);
64  _labeSrcsCor->setText(TR("id_srcscor_label"));
65  _groupBoxEditLayout->addWidget(_labeSrcsCor, 1, 0);
66 
67  _checkBoxSrcsCor = new QCheckBox(_groupBoxEdit);
68  _checkBoxSrcsCor->setText(TR(""));
69  _groupBoxEditLayout->addWidget(_checkBoxSrcsCor, 1, 1);
70 
71  _sourceLineicLayout->addWidget(_groupBoxEdit, 1, 0);
72 
73  _groupBoxListSrc = new QGroupBox(this);
74  _groupBoxListSrc->setTitle(TR("id_tabsrc_box"));
75  _groupBoxListSrcLayout = new QGridLayout();
77 
78  _listViewListSrc = new QTreeWidget(_groupBoxListSrc);
79  _listViewListSrc->setColumnCount(2);
80  QStringList list;
81  list.append(TR(""));
82  list.append(TR("id_source"));
83  _listViewListSrc->setHeaderLabels(list);
84  // _listViewListSrc->addColumn( TR( "" ) );
85  // _listViewListSrc->addColumn( TR( "id_source" ) );
86 
87  _listViewListSrc->setRootIsDecorated(true);
88 
89  _groupBoxListSrcLayout->addWidget(_listViewListSrc, 0, 0);
90 
91  _sourceLineicLayout->addWidget(_groupBoxListSrc, 2, 0);
92 
93  updateContent();
94 
95  setLayout(_sourceLineicLayout);
96 }
97 
99 
101 {
102  QString num;
103 
104  _elmW->updateContent();
105 
106  _lineEditDensiteSrcs->setText(num.setNum(getElement()->getDensiteSrcs(), 'f', 2));
107  _checkBoxSrcsCor->setChecked(getElement()->getSrcsCorr());
108 
109  _listViewListSrc->clear();
110  for (unsigned int i = 0; i < getElement()->getNbSrcs(); i++)
111  {
112  QTreeWidgetItem* item = new QTreeWidgetItem(_listViewListSrc, 0);
113  item->setText(0, num.setNum(i));
114  item->setText(1, getElement()->getSrc(i)->getName());
115  }
116 }
117 
119 {
120  _elmW->apply();
121 
122  getElement()->setSrcsCorr(_checkBoxSrcsCor->isChecked());
123  getElement()->setDensiteSrcs(_lineEditDensiteSrcs->text().toDouble());
124 
125  emit modified();
126 }
127 
128 void TYSourceLineicWidget::editSource(QTreeWidgetItem* item)
129 {
130  int ret = getElement()->getSrc(item->text(0).toInt())->edit(this);
131 
132  if (ret == QDialog::Accepted)
133  {
134  _listViewListSrc->clear();
135  for (unsigned int i = 0; i < getElement()->getNbSrcs(); i++)
136  {
137  QTreeWidgetItem* item = new QTreeWidgetItem(_listViewListSrc, 0);
138  item->setText(0, QString().setNum(i));
139  item->setText(1, getElement()->getSrc(i)->getName());
140  }
141  }
142 }
143 
144 void TYSourceLineicWidget::contextMenuEvent(QContextMenuEvent* e)
145 {
146  // si on trouve un item associe
147  QPoint point = _listViewListSrc->mapFrom(this, e->pos());
148  QTreeWidgetItem* item =
149  _listViewListSrc->itemAt(point.x(), point.y() - _listViewListSrc->header()->height());
150 
151  if (item != NULL)
152  {
153  QMenu* pMenu = new QMenu(this);
154 
155  QAction* prop = pMenu->addAction(TR("id_property"));
156  QAction* ret = pMenu->exec(_listViewListSrc->mapToGlobal(point));
157 
158  if (ret == prop)
159  {
160  editSource(item);
161  }
162  }
163 }
outil IHM pour une entrée utilisateur (fichier header)
#define TR(id)
outil IHM pour une source lineique (fichier header)
outil IHM pour une source (fichier header)
QGridLayout * _groupBoxEditLayout
virtual void contextMenuEvent(QContextMenuEvent *e)
TYLineEdit * _lineEditDensiteSrcs
TYSourceLineicWidget(TYSourceLineic *pElement, QWidget *_pParent=NULL)
QGridLayout * _groupBoxListSrcLayout
QTreeWidget * _listViewListSrc
void editSource(QTreeWidgetItem *item)
QGridLayout * _sourceLineicLayout
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()