X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_ComputeDlg.h;h=0c0b7ff317f0b979cb863d35cb2e21dd36c3986e;hb=21ea791049211d08356651965878a227b739c2ce;hp=5ea7a662b6229d9a046bb9ecc6f40e6752ed37f5;hpb=79b1ac2b6df9117f16f11d444b1f165d477a1813;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_ComputeDlg.h b/src/SMESHGUI/SMESHGUI_ComputeDlg.h index 5ea7a662b..0c0b7ff31 100644 --- a/src/SMESHGUI/SMESHGUI_ComputeDlg.h +++ b/src/SMESHGUI/SMESHGUI_ComputeDlg.h @@ -1,148 +1,325 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// -// -// File : SMESHGUI_ComputeDlg.h -// Author : Edward AGAPOV -// Module : SMESH +// File : SMESHGUI_ComputeDlg.h +// Author : Edward AGAPOV, Open CASCADE S.A.S. +// +#ifndef SMESHGUI_COMPUTEDLG_H +#define SMESHGUI_COMPUTEDLG_H -#ifndef SMESHGUI_ComputeDlg_H -#define SMESHGUI_ComputeDlg_H +// SMESH includes +#include "SMESH_SMESHGUI.hxx" #include "SMESHGUI_Dialog.h" -#include "SMESHGUI_SelectionOp.h" +#include "SMESHGUI_Operation.h" -#include "VTKViewer.h" +// SALOME GUI includes +#include -#include "SALOMEconfig.h" -#include CORBA_SERVER_HEADER(GEOM_Gen) +// Qt includes +#include +#include +#include +#include +#include -#include +// IDL includes +#include +#include CORBA_SERVER_HEADER(SMESH_Gen) +#include CORBA_SERVER_HEADER(SMESH_Mesh) class QFrame; class QPushButton; -class QTable; +class QTableWidget; class QLabel; +class QtxComboBox; +class QProgressBar; class SMESHGUI_ComputeDlg; -class GEOM_Actor; +class SMESHGUI_MeshInfosBox; +class SMESHGUI_PrecomputeDlg; +class SMESHGUI_MeshEditPreview; -namespace SMESH { +namespace SMESH +{ class TShapeDisplayer; } /*! - * \brief Operation to compute a mesh and show computation errors + * \brief Base operation to compute a mesh and show computation errors */ -class SMESHGUI_ComputeOp: public SMESHGUI_Operation +class SMESHGUI_EXPORT SMESHGUI_BaseComputeOp: public SMESHGUI_Operation { Q_OBJECT public: - SMESHGUI_ComputeOp(); - virtual ~SMESHGUI_ComputeOp(); + SMESHGUI_BaseComputeOp(); + virtual ~SMESHGUI_BaseComputeOp(); - virtual LightApp_Dialog* dlg() const; + SMESH::SMESH_Mesh_ptr getMesh(); protected: - virtual void startOperation(); virtual void stopOperation(); + SMESHGUI_ComputeDlg* computeDlg() const; + void computeMesh(); + void showComputeResult( const bool, + const bool, + SMESH::compute_error_array_var&, + const bool, + const QString& ); + SMESHGUI_ComputeDlg* evaluateDlg() const; + void evaluateMesh(); + void showEvaluateResult(const SMESH::long_array& theRes, + const bool, + const bool, + SMESH::compute_error_array_var&, + const bool, + const QString&); + + virtual bool isValid( SUIT_Operation* theOp ) const; + protected slots: virtual bool onApply(); - -private slots: - void onPreviewShape(); void onPublishShape(); + void onShowBadMesh(); + void onGroupOfBadMesh(); void currentCellChanged(); private: + QTableWidget* table(); - QTable* table(); - - SMESHGUI_ComputeDlg* myDlg; +private: + QPointer myCompDlg; - GEOM::GEOM_Object_var myMainShape; - SMESH::TShapeDisplayer* myTShapeDisplayer; +protected: + SMESH::SMESH_Mesh_var myMesh; + GEOM::GEOM_Object_var myMainShape; + SMESH::TShapeDisplayer* myTShapeDisplayer; + SMESHGUI_MeshEditPreview* myBadMeshDisplayer; + Handle(SALOME_InteractiveObject) myIObject; }; /*! - * \brief Box showing mesh info + * \brief Operation to compute a mesh and show computation errors */ +class SMESHGUI_EXPORT SMESHGUI_ComputeOp: public SMESHGUI_BaseComputeOp +{ + Q_OBJECT + +public: + SMESHGUI_ComputeOp(); + virtual ~SMESHGUI_ComputeOp(); + + virtual LightApp_Dialog* dlg() const; -class SMESHGUI_MeshInfosBox : public QGroupBox +protected: + virtual void startOperation(); + +protected slots: +}; + +class SMESHGUI_MeshOrderMgr; + +/*! + * \brief Operation to preview and compute a mesh and show computation errors + */ +class SMESHGUI_EXPORT SMESHGUI_PrecomputeOp: public SMESHGUI_BaseComputeOp { Q_OBJECT + public: + SMESHGUI_PrecomputeOp(); + virtual ~SMESHGUI_PrecomputeOp(); + + virtual LightApp_Dialog* dlg() const; - SMESHGUI_MeshInfosBox(const bool full, QWidget* theParent); - void SetInfoByMesh(SMESH::SMESH_Mesh_var mesh); + /** + * \brief returns map of assigned algorithms modes + */ + static void getAssignedAlgos(_PTR(SObject) theMesh, + QMap& theModeMap); + +protected: + virtual void startOperation(); + virtual void stopOperation(); + virtual void resumeOperation(); + + virtual void initDialog(); + +protected slots: + virtual void onCancel(); + +private slots: + void onPreview(); + void onCompute(); private: + //! private fields + QMap< int, int > myMapShapeId; + QPointer myActiveDlg; + QPointer myDlg; + SMESHGUI_MeshEditPreview* myPreviewDisplayer; + //! fields for mesh order + typedef QList TListOfInt; + typedef QList TListOfListOfInt; + TListOfListOfInt myPrevOrder; + SMESHGUI_MeshOrderMgr* myOrderMgr; +}; + +/*! + * \brief Operation to evaluate a mesh and show result + */ +class SMESHGUI_EXPORT SMESHGUI_EvaluateOp: public SMESHGUI_BaseComputeOp +{ + Q_OBJECT + +public: + SMESHGUI_EvaluateOp(); + virtual ~SMESHGUI_EvaluateOp(); + + virtual LightApp_Dialog* dlg() const; + +protected: + virtual void startOperation(); - bool myFull; - QLabel* myNbNode; - QLabel* myNbEdge, *myNbLinEdge, *myNbQuadEdge; - QLabel* myNbTrai, *myNbLinTrai, *myNbQuadTrai; - QLabel* myNbQuad, *myNbLinQuad, *myNbQuadQuad; - QLabel* myNbFace, *myNbLinFace, *myNbQuadFace; - QLabel* myNbPolyg; - QLabel* myNbHexa, *myNbLinHexa, *myNbQuadHexa; - QLabel* myNbTetra, *myNbLinTetra, *myNbQuadTetra; - QLabel* myNbPyra, *myNbLinPyra, *myNbQuadPyra; - QLabel* myNbPrism, *myNbLinPrism, *myNbQuadPrism; - QLabel* myNbVolum, *myNbLinVolum, *myNbQuadVolum; - QLabel* myNbPolyh; +protected slots: }; /*! * \brief Dialog to compute a mesh and show computation errors */ -class SMESHGUI_ComputeDlg : public SMESHGUI_Dialog +class SMESHGUI_EXPORT SMESHGUI_ComputeDlg : public SMESHGUI_Dialog { Q_OBJECT public: - SMESHGUI_ComputeDlg(); - -private: + SMESHGUI_ComputeDlg( QWidget*, bool ); + virtual ~SMESHGUI_ComputeDlg(); - QFrame* createMainFrame (QWidget*); +protected: + QFrame* createMainFrame( QWidget*, bool ); QLabel* myMeshName; QGroupBox* myMemoryLackGroup; QGroupBox* myCompErrorGroup; QGroupBox* myHypErrorGroup; QLabel* myHypErrorLabel; - QTable* myTable; + QLabel* myWarningLabel; + QTableWidget* myTable; QPushButton* myShowBtn; QPushButton* myPublishBtn; + QPushButton* myBadMeshBtn; + QPushButton* myBadMeshToGroupBtn; SMESHGUI_MeshInfosBox* myBriefInfo; SMESHGUI_MeshInfosBox* myFullInfo; - friend class SMESHGUI_ComputeOp; + friend class SMESHGUI_BaseComputeOp; + friend class SMESHGUI_PrecomputeOp; +}; + +class SMESHGUI_MeshOrderBox; + +/*! + * \brief Dialog to preview and compute a mesh and show computation errors + */ + +class SMESHGUI_EXPORT SMESHGUI_PrecomputeDlg : public SMESHGUI_Dialog +{ + Q_OBJECT + +public: + SMESHGUI_PrecomputeDlg( QWidget* ); + virtual ~SMESHGUI_PrecomputeDlg(); + + void setPreviewModes( const QList& ); + int getPreviewMode() const; + + SMESHGUI_MeshOrderBox* getMeshOrderBox() const; + +signals: + void preview(); + +private: + SMESHGUI_MeshOrderBox* myOrderBox; + QPushButton* myPreviewBtn; + QtxComboBox* myPreviewMode; +}; + +/*! + * \brief Thread to launch computation + */ + +class SMESHGUI_EXPORT SMESHGUI_ComputeDlg_QThread : public QThread +{ + Q_OBJECT + +public: + SMESHGUI_ComputeDlg_QThread(SMESH::SMESH_Gen_var gen, + SMESH::SMESH_Mesh_var mesh, + GEOM::GEOM_Object_var mainShape); + bool result(); + void cancel(); + SMESH::SMESH_Mesh_var& getMesh() { return myMesh; } + +protected: + void run(); + +private: + SMESH::SMESH_Gen_var myGen; + SMESH::SMESH_Mesh_var myMesh; + GEOM::GEOM_Object_var myMainShape; + bool myResult; +}; + +/*! + * \brief Dialog to display Cancel button + */ +class SMESHGUI_EXPORT SMESHGUI_ComputeDlg_QThreadQDialog : public QDialog +{ + Q_OBJECT + +public: + SMESHGUI_ComputeDlg_QThreadQDialog(QWidget * parent, + SMESH::SMESH_Gen_var gen, + SMESH::SMESH_Mesh_var mesh, + GEOM::GEOM_Object_var mainShape); + bool result(); + +protected: + void timerEvent(QTimerEvent *timer); + void closeEvent(QCloseEvent *event); + +private slots: + void onCancel(); + +private: + SMESHGUI_ComputeDlg_QThread qthread; + QPushButton * cancelButton; + QLabel * nbNodesLabel; + QLabel * nbElemsLabel; + QLabel * freeRAMLabel; + QProgressBar* progressBar; }; -#endif +#endif // SMESHGUI_COMPUTEDLG_H