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>
39 #include <qvector3d.h>
58 #define TR(id) OLocalizator::getString("TYProjetFrame", (id))
59 #define IMG(id) OLocalizator::getPicture("TYProjetFrame", (id))
66 QBoxLayout* pLayout =
new QVBoxLayout(
this);
67 pLayout->setContentsMargins(0, 0, 0, 0);
72 QStringList stringList;
73 stringList.append(
TR(
"id_column_projet"));
74 stringList.append(
TR(
"id_column_solver"));
139 pRootItem->setExpanded(
true);
158 pListPointsControlItem->sortChildren(0, Qt::AscendingOrder);
166 QStringList(),
true);
168 pLisMaillagesItem->sortChildren(0, Qt::AscendingOrder);
187 pRootItem->setIcon(0, QPixmap(
IMG(
"id_icon_check")));
194 pRootItem->setIcon(0, QPixmap(
IMG(
"id_icon_no_check")));
203 pRootItem->setExpanded(
true);
221 QTreeWidgetItem* pProjetItem =
_pListView->topLevelItem(0);
222 for (
int i = 0; i < pProjetItem->childCount(); i++)
237 if (pCalcItem != NULL)
239 QFont f = pCalcItem->font(0);
243 pCalcItem->setForeground(0, QBrush(QColor::fromRgb(0, 0, 0)));
244 pCalcItem->setText(0, pCalcItem->text(0).replace(
" *",
""));
248 pCalcItem->setForeground(0, QBrush(QColor::fromRgb(128, 128, 128)));
249 pCalcItem->setText(0, pCalcItem->text(0).replace(
" *",
""));
250 pCalcItem->setText(0, pCalcItem->text(0) +
" *");
252 pCalcItem->setFont(0, f);
263 QPoint point =
_pListView->mapFrom(
this, e->pos());
264 QTreeWidgetItem* item =
_pListView->itemAt(point.x(), point.y() -
_pListView->header()->height());
274 QMenu* pMenu =
new QMenu(
this);
276 QAction* curCalcul = NULL;
277 QAction* remCalculRes = NULL;
278 QAction* goCalcul = NULL;
279 QAction* duplicateCalcul = NULL;
280 QAction* showModeler = NULL;
281 QAction* delCalcul = NULL;
282 QAction* addCalcul = NULL;
283 QAction* remPtControl = NULL;
284 QAction* highlight = NULL;
285 QAction* remMaillage = NULL;
286 QAction* changeSiteRoot = NULL;
287 QAction* exportCsv = NULL;
288 QAction *calc_actif = NULL, *calc_locked = NULL;
294 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
TR(
"id_contextmenu_properties"));
295 pMenu->addSeparator();
301 if (pCalcul ==
nullptr)
307 remCalculRes = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_bin"))),
308 TR(
"id_contextmenu_remcalculresult"));
309 pMenu->addSeparator();
315 curCalcul = pMenu->addAction(
TR(
"id_contextmenu_setascurcalcul"));
316 pMenu->addSeparator();
319 calc_actif = pMenu->addAction(
TR(
"id_contextmenu_ptactif"));
322 calc_actif->setCheckable(
true);
323 calc_actif->setChecked(
true);
326 calc_locked = pMenu->addAction(
TR(
"id_contextmenu_ptlocked"));
329 calc_locked->setCheckable(
true);
330 calc_locked->setChecked(
true);
333 pMenu->addSeparator();
338 goCalcul = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
339 TR(
"id_contextmenu_gocalcul"));
340 pMenu->addSeparator();
344 duplicateCalcul = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
345 TR(
"id_contextmenu_duplicatecalcul"));
347 pMenu->addSeparator();
348 delCalcul = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_contextmenu_delete"));
349 pMenu->addSeparator();
356 addCalcul = pMenu->addAction(
TR(
"id_contextmenu_addcalcul"));
357 pMenu->addSeparator();
360 remCalculRes = pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_bin"))),
361 TR(
"id_contextmenu_remcalculresults"));
362 pMenu->addSeparator();
366 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_modeler"))),
TR(
"id_contextmenu_modeler"));
367 pMenu->addSeparator();
370 changeSiteRoot = pMenu->addAction(
TR(
"id_contextmenu_changesiteroot"));
375 pGraphicObject = eltItem->
getElement()->getGraphicObject();
378 highlight = pMenu->addAction(
TR(
"id_contextmenu_highlight"));
379 highlight->setCheckable(
true);
381 pMenu->addSeparator();
385 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_contextmenu_remptcontrol"));
386 pMenu->addSeparator();
391 pGraphicObject = eltItem->
getElement()->getGraphicObject();
394 highlight = pMenu->addAction(
TR(
"id_contextmenu_highlight"));
395 highlight->setCheckable(
true);
397 pMenu->addSeparator();
400 pMenu->addSeparator();
401 exportCsv = pMenu->addAction(
TR(
"id_contextmenu_exportcsv"));
402 pMenu->addSeparator();
404 pMenu->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_contextmenu_remmaillage"));
405 pMenu->addSeparator();
409 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
418 if (pElt->edit(
this) == QDialog::Accepted)
424 else if (ret == showModeler)
429 else if (ret == remPtControl)
433 if (QMessageBox::warning(
this,
"Tympan",
435 QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
441 TR(
"id_contextmenu_remptcontrol"));
448 else if (ret == highlight)
453 else if (ret == remMaillage)
456 if (pMail !=
nullptr)
465 else if (ret == exportCsv)
471 else if (ret == changeSiteRoot)
473 vector<LPTYElement> tabElem;
476 if (tabElem.size() > 0)
479 if ((pElt != NULL) && (pElt->
isA(
"TYSiteNode")))
494 else if (ret == delCalcul)
499 QMessageBox::warning(
this,
"Tympan",
TR(
"id_warning_def_calc_suppr"));
501 else if (QMessageBox::warning(
503 QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
514 QMessageBox::warning(
520 else if (ret == remCalculRes)
523 if (pProjet.
_pObj !=
nullptr)
525 for (
unsigned int i = 0; i < pProjet->
getListCalcul().size(); i++)
529 pCalcul->updateGraphic();
535 if (pCalcul.
_pObj !=
nullptr)
538 pCalcul->updateGraphic();
544 else if (ret == curCalcul)
559 if (pSite && pCalcul)
569 else if (ret == goCalcul)
578 else if (ret == duplicateCalcul)
589 else if (ret == calc_actif)
594 else if (ret == calc_locked)
599 else if (ret == addCalcul)
612 else if (eltItem->text(0) ==
TR(
"id_list_pointscontrol_item"))
614 QMenu* pMenu =
new QMenu(
this);
615 QAction* addPtControl = pMenu->addAction(
TR(
"id_contextmenu_addptcontrol"));
616 QAction* selectAllPts = pMenu->addAction(
TR(
"id_contextmenu_selectAllPts"));
617 QAction* unselectAllPts = pMenu->addAction(
TR(
"id_contextmenu_unselectAllPts"));
620 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
624 if (ret == addPtControl)
629 if (pPtControl->edit(
this) == QDialog::Accepted)
635 TR(
"id_contextmenu_addptcontrol"));
643 else if (ret == selectAllPts)
647 else if (ret == unselectAllPts)
653 else if (eltItem->text(0) ==
TR(
"id_list_maillages_item"))
655 QMenu* pMenu =
new QMenu(
this);
656 QAction* selectAllMaps = pMenu->addAction(
TR(
"id_contextmenu_selectAllMaps"));
657 QAction* unselectAllMaps = pMenu->addAction(
TR(
"id_contextmenu_unselectAllMaps"));
660 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
664 if (ret == selectAllMaps)
668 else if (ret == unselectAllMaps)
674 else if (eltItem->text(0) ==
"Etats")
676 QMenu* pMenu =
new QMenu(
this);
677 QAction* prop = NULL;
679 prop = pMenu->addAction(
TR(
"id_contextmenu_properties"));
682 QAction* ret = pMenu->exec(
_pListView->mapToGlobal(point));
695 if (pAction && pModeler)
765 if (pElt->edit(
this) == QDialog::Accepted)
768 pElt->updateGraphic();
772 else if (eltItem->text(0) ==
"Etats")
797 QString fileName = QFileDialog::getSaveFileName(
this,
"",
"",
"CSV (*.csv)");
799 if (!fileName.isEmpty())
801 if (!fileName.endsWith(
".csv"))
809 if (f.open(QIODevice::WriteOnly))
825 for (
int i = 0; i < tabPoints.size(); i++)
827 pPtCalcul = tabPoints[i];
830 switch (pMaillage->getDataType())
854 if (
getTYApp()->getCalculManager()->askForResetResultat())
873 if (psiteframe !=
nullptr)
887 bool bCenterOnLocate =
false;
899 for (
int i = 0; i < int(windows.count()); ++i)
901 QWidget* internal_window = windows.at(i)->widget();
903 QString qClassName = internal_window->metaObject()->className();
904 if (qClassName == QString(
"TYSiteModelerFrame"))
922 QVector3D oBoxCenter = oBoxMin + ((oBoxMax - oBoxMin) / 2);
923 QVector3D center = repereCenter + oBoxCenter;
927 for (
int i = 0; i < int(windows.count()); ++i)
929 QWidget* internal_window = windows.at(i)->widget();
947 for (
int i = 0; i < int(windows.count()); ++i)
949 QWidget* internal_window = windows.at(i)->widget();
951 QString qClassName = internal_window->metaObject()->className();
952 if (qClassName == QString(
"TYSiteModelerFrame"))
fichier contenant differents types d'actions (fichier header)
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)
Helper pour la gestion des arbres Site et Projet (fichier header)
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
void setTo(const QVector3D &_to)
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
void setBoundingBoxVisible(bool state=true)
bool isBoundingBoxVisible() const
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()
Generic class for a modeler window.
TYRenderWindowInteractor * getView()
TYActionManager * getActionManager()
void removeSelectedElement(TYElement *pElement)
void invalidateScene(void)
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()
OGLCamera * getActiveCamera()
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()
static void capture(QTreeWidget *tree, TYTreeViewState &outState)
Capture l'état complet (expansions + scroll) du QTreeWidget.
static void apply(QTreeWidget *tree, const TYTreeViewState &state)
Applique l'état complet (expansions + scroll) au QTreeWidget.