Salome HOME
0021669: EDF 2262 SMESH: "Mesh information" takes a long time on small mesh with...
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshInfo.h
index 0229a7f9206a0035a297c54dbe0bb48d0b645f3b..f96142108102a10059c4b8ac047be4fb865a8538 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <QList>
 #include <QMap>
 #include <QSet>
+#include <QTreeWidget>
 #include <QVector>
 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include CORBA_SERVER_HEADER(SMESH_Group)
 
 class QButtonGroup;
 class QLabel;
@@ -44,12 +46,12 @@ class QLineEdit;
 class QPushButton;
 class QTabWidget;
 class QTextBrowser;
-class QTreeWidget;
-class QTreeWidgetItem;
 class SMESH_Actor;
 class SMDS_MeshNode;
 class SMDS_MeshElement;
 
+class ExtraWidget;
+
 class SMESHGUI_EXPORT SMESHGUI_MeshInfo : public QFrame
 {
   Q_OBJECT;
@@ -80,6 +82,7 @@ class SMESHGUI_EXPORT SMESHGUI_MeshInfo : public QFrame
     i3DHexahedrons,
     i3DPyramids,
     i3DPrisms,
+    i3DHexaPrisms,
     i3DPolyhedrons,
     i3DEnd,
     iElementsEnd   = i3DEnd
@@ -110,8 +113,12 @@ private:
   void     setFontAttributes( QWidget*, int, bool = true );
   void     setFieldsVisible( int, int, bool );
 
+private slots:
+  void loadMesh();
+
 private:
-  iwlist   myWidgets;
+  iwlist       myWidgets;
+  QPushButton* myLoadBtn;
 };
 
 class SMESHGUI_EXPORT SMESHGUI_ElemInfo : public QWidget
@@ -161,10 +168,7 @@ private:
   QList<long>      myIDs;
   int              myIsElement;
   QWidget*         myFrame;
-  QWidget*         myExtra;
-  QLabel*          myCurrent;
-  QPushButton*     myPrev;
-  QPushButton*     myNext;
+  ExtraWidget*     myExtra;
   int              myIndex;
 };
 
@@ -185,6 +189,8 @@ class SMESHGUI_EXPORT SMESHGUI_TreeElemInfo : public SMESHGUI_ElemInfo
 {
   class ItemDelegate;
 
+  enum { Bold = 0x01, All = 0x80 };
+
 public:
   SMESHGUI_TreeElemInfo( QWidget* = 0 );
 
@@ -193,12 +199,63 @@ protected:
   void             clearInternal();
 
 private:
-  QTreeWidgetItem* createItem( QTreeWidgetItem* = 0, int = 100 );
+  QTreeWidgetItem* createItem( QTreeWidgetItem* = 0, int = 0 );
   
 private:
   QTreeWidget*     myInfo;
 };
 
+class GrpComputor: public QObject
+{
+  Q_OBJECT;
+
+public:
+  GrpComputor( SMESH::SMESH_GroupBase_ptr, QTreeWidgetItem*, QObject* );
+  QTreeWidgetItem* getItem() { return myItem; }
+
+public slots:
+  void compute();
+
+private:
+  SMESH::SMESH_GroupBase_var myGroup;
+  QTreeWidgetItem*           myItem;
+};
+
+class SMESHGUI_EXPORT SMESHGUI_AddInfo : public QTreeWidget
+{
+  Q_OBJECT;
+
+  enum { Bold = 0x01, All = 0x80 };
+
+public:
+  SMESHGUI_AddInfo( QWidget* = 0 );
+  ~SMESHGUI_AddInfo();
+
+  void             showInfo( SMESH::SMESH_IDSource_ptr );
+  //  void             clear();
+
+private slots:
+  void             changeLoadToCompute();
+  void             showPreviousGroups();
+  void             showNextGroups();
+  void             showPreviousSubMeshes();
+  void             showNextSubMeshes();
+
+private:
+  QTreeWidgetItem* createItem( QTreeWidgetItem* = 0, int = 0 );
+  void             meshInfo( SMESH::SMESH_Mesh_ptr, QTreeWidgetItem* );
+  void             subMeshInfo( SMESH::SMESH_subMesh_ptr, QTreeWidgetItem* );
+  void             groupInfo( SMESH::SMESH_GroupBase_ptr, QTreeWidgetItem* );
+
+  void             showGroups();
+  void             showSubMeshes();
+
+private:
+  QList<GrpComputor*>      myComputors;
+  SMESH::ListOfGroups_var  myGroups;
+  SMESH::submesh_array_var mySubMeshes;
+};
+
 class SMESHGUI_EXPORT SMESHGUI_MeshInfoDlg : public QDialog
 { 
   Q_OBJECT;
@@ -209,7 +266,8 @@ public:
   //! Information type
   enum { 
     BaseInfo,  //!< base mesh information
-    ElemInfo   //!< mesh element information
+    ElemInfo,  //!< mesh element information
+    AddInfo    //!< additional information
   };
 
   SMESHGUI_MeshInfoDlg( QWidget* = 0, int = BaseInfo );
@@ -237,6 +295,7 @@ private:
   QButtonGroup*      myMode;
   QLineEdit*         myID;
   SMESHGUI_ElemInfo* myElemInfo;   
+  SMESHGUI_AddInfo*  myAddInfo;
   SMESH_Actor*       myActor;
 };