22 #include <qtreewidget.h>
25 #include <qtoolbutton.h>
28 #include <qfiledialog.h>
29 #include <qmessagebox.h>
30 #include <QTextStream>
34 #include <QVBoxLayout>
36 #include <QHeaderView>
38 #include <QMdiSubWindow>
54 #include "Tympan\gui\app\TYActions.h"
56 #define TR(id) OLocalizator::getString("TYProjetFrame", (id))
57 #define IMG(id) OLocalizator::getPicture("TYProjetFrame", (id))
64 QBoxLayout* pLayout =
new QVBoxLayout(
this);
65 pLayout->setContentsMargins(0, 0, 0, 0);
70 QStringList stringList;
71 stringList.append(
TR(
"id_column_projet"));
72 stringList.append(
TR(
"id_column_solver"));
134 pRootItem->setExpanded(
true);
158 QStringList(),
true);
178 pRootItem->setIcon(0, QPixmap(
IMG(
"id_icon_check")));
185 pRootItem->setIcon(0, QPixmap(
IMG(
"id_icon_no_check")));
194 pRootItem->setExpanded(
true);
212 QTreeWidgetItem* pProjetItem =
_pListView->topLevelItem(0);
213 for (
int i = 0; i < pProjetItem->childCount(); i++)
228 if (pCalcItem != NULL)
230 QFont f = pCalcItem->font(0);
234 pCalcItem->setForeground(0, QBrush(QColor::fromRgb(0, 0, 0)));
235 pCalcItem->setText(0, pCalcItem->text(0).replace(
" *",
""));
239 pCalcItem->setForeground(0, QBrush(QColor::fromRgb(128, 128, 128)));
240 pCalcItem->setText(0, pCalcItem->text(0).replace(
" *",
""));
241 pCalcItem->setText(0, pCalcItem->text(0) +
" *");
243 pCalcItem->setFont(0, f);
252 QPoint point =
_pListView->mapFrom(
this, e->pos());
253 QTreeWidgetItem* item =
_pListView->itemAt(point.x(), point.y() -
_pListView->header()->height());
263 QMenu* pMenu =
new QMenu(
this);
265 QAction* curCalcul = NULL;
266 QAction* remCalculRes = NULL;
267 QAction* goCalcul = NULL;
268 QAction* duplicateCalcul = NULL;
269 QAction* showModeler = NULL;
270 QAction* delCalcul = NULL;
271 QAction* addCalcul = NULL;
272 QAction* remPtControl = NULL;
273 QAction* highlight = NULL;
274 QAction* remMaillage = NULL;
275 QAction* changeSiteRoot = NULL;
276 QAction* exportCsv = NULL;
277 QAction *calc_actif = NULL, *calc_locked = NULL;
283 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
TR(
"id_contextmenu_properties"));
284 pMenu->addSeparator();
290 if (pCalcul ==
nullptr)
296 remCalculRes = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_bin"))),
297 TR(
"id_contextmenu_remcalculresult"));
298 pMenu->addSeparator();
304 curCalcul = pMenu->addAction(
TR(
"id_contextmenu_setascurcalcul"));
305 pMenu->addSeparator();
308 calc_actif = pMenu->addAction(
TR(
"id_contextmenu_ptactif"));
311 calc_actif->setCheckable(
true);
312 calc_actif->setChecked(
true);
315 calc_locked = pMenu->addAction(
TR(
"id_contextmenu_ptlocked"));
318 calc_locked->setCheckable(
true);
319 calc_locked->setChecked(
true);
322 pMenu->addSeparator();
327 goCalcul = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
328 TR(
"id_contextmenu_gocalcul"));
329 pMenu->addSeparator();
333 duplicateCalcul = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
334 TR(
"id_contextmenu_duplicatecalcul"));
336 pMenu->addSeparator();
337 delCalcul = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_contextmenu_delete"));
338 pMenu->addSeparator();
345 addCalcul = pMenu->addAction(
TR(
"id_contextmenu_addcalcul"));
346 pMenu->addSeparator();
349 remCalculRes = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_bin"))),
350 TR(
"id_contextmenu_remcalculresults"));
351 pMenu->addSeparator();
355 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_modeler"))),
TR(
"id_contextmenu_modeler"));
356 pMenu->addSeparator();
359 changeSiteRoot = pMenu->addAction(
TR(
"id_contextmenu_changesiteroot"));
364 pGraphicObject = eltItem->
getElement()->getGraphicObject();
367 highlight = pMenu->addAction(
TR(
"id_contextmenu_highlight"));
368 highlight->setCheckable(
true);
370 pMenu->addSeparator();
374 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_contextmenu_remptcontrol"));
375 pMenu->addSeparator();
380 pGraphicObject = eltItem->
getElement()->getGraphicObject();
383 highlight = pMenu->addAction(
TR(
"id_contextmenu_highlight"));
384 highlight->setCheckable(
true);
386 pMenu->addSeparator();
389 pMenu->addSeparator();
390 exportCsv = pMenu->addAction(
TR(
"id_contextmenu_exportcsv"));
391 pMenu->addSeparator();
393 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_contextmenu_remmaillage"));
394 pMenu->addSeparator();
398 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
407 if (pElt->edit(
this) == QDialog::Accepted)
410 if (pElt->
isA(
"TYCalcul"))
416 else if (ret == showModeler)
421 else if (ret == remPtControl)
425 if (QMessageBox::warning(
this,
"Tympan",
427 QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
433 TR(
"id_contextmenu_remptcontrol"));
440 else if (ret == highlight)
445 else if (ret == remMaillage)
448 if (pMail !=
nullptr)
457 else if (ret == exportCsv)
463 else if (ret == changeSiteRoot)
465 vector<LPTYElement> tabElem;
468 if (tabElem.size() > 0)
471 if ((pElt != NULL) && (pElt->
isA(
"TYSiteNode")))
486 else if (ret == delCalcul)
491 QMessageBox::warning(
this,
"Tympan",
TR(
"id_warning_def_calc_suppr"));
493 else if (QMessageBox::warning(
495 QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
506 QMessageBox::warning(
512 else if (ret == remCalculRes)
515 if (pProjet.
_pObj !=
nullptr)
517 for (
unsigned int i = 0; i < pProjet->
getListCalcul().size(); i++)
521 pCalcul->updateGraphic();
527 if (pCalcul.
_pObj !=
nullptr)
530 pCalcul->updateGraphic();
536 else if (ret == curCalcul)
551 if (pSite && pCalcul)
561 else if (ret == goCalcul)
570 else if (ret == duplicateCalcul)
581 else if (ret == calc_actif)
586 else if (ret == calc_locked)
591 else if (ret == addCalcul)
604 else if (eltItem->text(0) ==
TR(
"id_list_pointscontrol_item"))
606 QMenu* pMenu =
new QMenu(
this);
607 QAction* addPtControl = pMenu->addAction(
TR(
"id_contextmenu_addptcontrol"));
608 QAction* selectAllPts = pMenu->addAction(
TR(
"id_contextmenu_selectAllPts"));
609 QAction* unselectAllPts = pMenu->addAction(
TR(
"id_contextmenu_unselectAllPts"));
612 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
616 if (ret == addPtControl)
621 if (pPtControl->edit(
this) == QDialog::Accepted)
627 TR(
"id_contextmenu_addptcontrol"));
635 else if (ret == selectAllPts)
639 else if (ret == unselectAllPts)
645 else if (eltItem->text(0) ==
"id_list_maillages_item")
647 QMenu* pMenu =
new QMenu(
this);
648 QAction* selectAllMaps = pMenu->addAction(
TR(
"id_contextmenu_selectAllMaps"));
649 QAction* unselectAllMaps = pMenu->addAction(
TR(
"id_contextmenu_unselectAllMaps"));
652 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
656 if (ret == selectAllMaps)
660 else if (ret == unselectAllMaps)
666 else if (eltItem->text(0) ==
"Etats")
668 QMenu* pMenu =
new QMenu(
this);
669 QAction* prop = NULL;
671 prop = pMenu->addAction(
TR(
"id_contextmenu_properties"));
674 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
754 if (pElt->edit(
this) == QDialog::Accepted)
757 pElt->updateGraphic();
761 else if (eltItem->text(0) ==
"Etats")
786 QString fileName = QFileDialog::getSaveFileName(
this,
"",
"",
"CSV (*.csv)");
788 if (!fileName.isEmpty())
790 if (!fileName.endsWith(
".csv"))
798 if (f.open(QIODevice::WriteOnly))
814 for (
int i = 0; i < tabPoints.size(); i++)
816 pPtCalcul = tabPoints[i];
819 switch (pMaillage->getDataType())
843 if (
getTYApp()->getCalculManager()->askForResetResultat())
862 if (psiteframe !=
nullptr)
876 bool bCenterOnLocate =
false;
888 for (
int i = 0; i < int(windows.count()); ++i)
890 QWidget* internal_window = windows.at(i)->widget();
892 QString qClassName = internal_window->metaObject()->className();
893 if (qClassName == QString(
"TYSiteModelerFrame"))
912 NxVec3 oBoxCenter = oBoxMin + ((oBoxMax - oBoxMin) / 2);
913 NxVec3 center = repereCenter + oBoxCenter;
917 for (
int i = 0; i < int(windows.count()); ++i)
919 QWidget* internal_window = windows.at(i)->widget();
937 for (
int i = 0; i < int(windows.count()); ++i)
939 QWidget* internal_window = windows.at(i)->widget();
941 QString qClassName = internal_window->metaObject()->className();
942 if (qClassName == QString(
"TYSiteModelerFrame"))
TYApplication * getTYApp()
Retourne le pointeur sur l'application.
TYMainWindow * getTYMainWnd()
Retourne le pointeur sur la fenetre principale.
pour l'application Tympan (fichier header)
std::vector< LPTYPointCalcul > TYTabLPPointCalcul
Collection de pointeurs de TYPointCalcul.
Frame pour les messages de retour (fichier header)
#define TYDIRPREFERENCEMANAGER
Fenetre principale de l'application Tympan (fichier header)
Classe generique pour une fenetre de modeleur (fichier header)
Frame pour la gestion de projet (fichier header)
Le role de cette classe est limite a emettre des signaux pouvant etre utilise pour interagir sur le r...
Frame pour la gestion de site (fichier header)
Classe Modeler specialisee pour l'edition des sites (fichier header)
const NxReal * get() const
OPoint3D _min
Minimal coordinates of the OBox.
OPoint3D _max
Maximal coordinates of the OBox.
double _y
y coordinate of OCoord3D
double _z
z coordinate of OCoord3D
double _x
x coordinate of OCoord3D
static OPrototype * safeDownCast(OPrototype *pObject)
bool isA(const char *className) const
3D frame with a point and 3 vectors.
OPoint3D _origin
The origin point.
double getValueReal(double freq)
T * _pObj
The real pointer, must derived IRefCount.
void addAction(TYAction *pAction)
Ajoute une nouvelle action a l'historique.
Definit une action, necessaire pour la gestion de l'undo.
Action d'ajout d'un point de controle.
TYMainWindow * getMainWnd()
Get de la fenetre principale.
TYCalculManager * getCalculManager()
Get du gestionnaire de calculs.
bool askForResetResultat()
Previent l'utilisateur que le resultat va etre efface, si celui-ci est valide.
bool launch(LPTYCalcul pCalcul)
Execute un calcul.
int getState()
Get calculation state.
void setStatusPartialResult(const bool &status)
Partial result retention set.
void setIsUpTodate(bool upTodate)
Set the calculated state up to date or not link to the infrastructure.
const LPTYResultat getResultat() const
Get result.
bool getIsUpTodate() const
Get the calculated state up to date or not link to the infrastructure.
classe graphique pour un element de base
virtual void computeBoundingBox()
void highlight(bool state=true)
Frame pour les messages de retour.
bool isElementItem()
Indique si un element est associe a cet item.
void updateContent()
Mets a jour le contenu des colonnes.
LPTYElement getElement()
Retourne l'element associe a cet item.
void remove()
Supprime l'item de la liste.
void setCheckState(int column, Qt::CheckState state)
Reimplementation.
static void setIsSavedOk(const bool &toSave)
const TYUUID & getID() const
virtual QString getName() const
bool getIsAcousticModified()
void setParent(TYElement *pParent)
const ORepere3D & getORepere3D() const
static TYGeometryNode * GetGeoNode(TYElement *pElement)
bool updateAcoustic(const TYCalcul *pCalcul, const bool &force=false)
Classe de definition d'un maillage.
void updateModelers(bool clipping=true, bool axesAndGrid=true, bool displayList=true)
TYSiteFrame * getSiteFrame()
void makeProjetModeler(LPTYProjet pProjet=NULL)
QMdiArea * getWorkspace()
TYModelerFrame * getCurrentModeler()
Classe generique pour une fenetre de modeleur.
TYRenderWindowInteractor * getView()
TYActionManager * getActionManager()
void updateDisplayList(void)
void removeSelectedElement(TYElement *pElement)
OGLCamera * getActiveCamera()
void addSelectedElement(TYElement *pElement)
double getValLin()
Get de la valeur globale Lin au point.
virtual LPTYSpectre getSpectre()
Get du spectre resultat d'un calcul donne.
TYPoint getCoordSIG()
Passage en coordonnees SIG.
double getValA()
Get de la valeur globale A au point.
Classe de definition d'un point de controle.Le point de controle est un point de calcul avec une haut...
void apply(QTreeWidgetItem *item, int col)
bool remFromList(TYElementListItem *item)
void setCalculDone(bool state)
void changeSite(LPTYSiteNode pSite)
TYElementListItem * addEltToList(LPTYElement pElement, TYElementListItem *parent=NULL)
void setCalculItemState(TYElementListItem *pCalcItem, bool state)
LPTYProjet _pProjet
Le projet.
virtual void contextMenuEvent(QContextMenuEvent *e)
void keyPressEvent(QKeyEvent *e)
void selectOrUnselectAll(TYElementListItem *item, const bool &bSelect)
TYElementListItem * addToList(LPTYProjet pElement, TYElementListItem *parent=NULL)
TYProjetFrame(QWidget *parent=0, const char *name=0, Qt::WindowFlags f=QFlag(0))
TYElementListItem * _pCurrentCalculItem
L'item du treeview du projet.
void setProjet(LPTYProjet pProjet)
void updateGraphics()
void updateGraphics()
void exportMaillageCSV(const LPTYMaillage pMaillage)
void changeCurrentCalcul(LPTYCalcul pCalcul)
void highlight_element(TYElementGraphic *pGraphicObject, TYElement *pElement)
highlight object
LPTYCalcul _pCurrentCalcul
Le calcul courant.
void doubleClic(QTreeWidgetItem *, int)
classe de definition d'un projet.
TYTabLPCalcul & getListCalcul()
Set/Get de la liste des Calcul.
TYTabMaillageGeoNode & getMaillages()
Get de la collection de maillages.
bool addPointControl(LPTYPointControl pPointControl)
void setCurrentCalcul(LPTYCalcul pCurCalcul)
Set/Get du pointeur du Calcul courant.
bool remPointControl(LPTYPointControl pPointControl)
bool remMaillage(const LPTYMaillageGeoNode pMaillageGeoNode)
Suppression d'un maillage.
LPTYSiteNode getSite()
Get du site.
LPTYPointControl getPointControl(int index)
void setSite(const LPTYSiteNode pSite)
Set du site.
LPTYMaillage getMaillage(int index)
Retourne un maillage a partir de son index.
bool addCalcul(LPTYCalcul pCalcul)
Ajout d'un Calcul a la liste des Calcul.
LPTYCalcul duplicateCalcul(const LPTYCalcul pCalcul)
Duplique pCalcul.
virtual void updateGraphic()
TYTabLPPointControl & getPointsControl()
LPTYCalcul getCurrentCalcul()
Set/Get du pointeur du Calcul courant.
bool remCalcul(const LPTYCalcul pCalcul)
Suppression d'un Calcul a la liste des Calcul.
Action de suppression d'un point de controle.
Le role de cette classe est limite a emettre des signaux pouvant etre utilise pour interagir sur le r...
TYOpenGLRenderer * getRenderer()
void setSiteNodeRoot(LPTYSiteNode pSiteNode)
Classe Modeler specialisee pour l'edition des sites.
void setSite(LPTYSiteNode pSite)
virtual void updateView(bool clipping=true, bool axesAndGrid=true)
LPTYInfrastructure getInfrastructure()