X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MeshInfo.h;h=85edb6001be0c7e56d9119479a77cd0bf3790247;hp=111a73b5b3accf20cf41abf0c2e41f3fc3029170;hb=88141f757b048eaa5aae0be49faaf274448bbcaf;hpb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce diff --git a/src/SMESHGUI/SMESHGUI_MeshInfo.h b/src/SMESHGUI/SMESHGUI_MeshInfo.h index 111a73b5b..85edb6001 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfo.h +++ b/src/SMESHGUI/SMESHGUI_MeshInfo.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -6,7 +6,7 @@ // 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. +// 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 @@ -26,7 +26,13 @@ #define SMESHGUI_MESHINFO_H #include "SMESH_SMESHGUI.hxx" -#include +#include "SMESH_ControlsDef.hxx" + +#ifndef DISABLE_PLOT2DVIEWER + #include +#else + #include +#endif #include #include @@ -39,17 +45,26 @@ #include #include CORBA_SERVER_HEADER(SMESH_Mesh) #include CORBA_SERVER_HEADER(SMESH_Group) +#include CORBA_SERVER_HEADER(SMESH_Filter) + +#include +#include +class QAbstractButton; class QButtonGroup; +class QCheckBox; class QContextMenuEvent; +class QGridLayout; class QLabel; class QLineEdit; class QPushButton; class QTabWidget; class QTextBrowser; -class SMESH_Actor; -class SMDS_MeshNode; class SMDS_MeshElement; +class SMDS_MeshNode; +class SMESHGUI_IdPreview; +class SMESHGUI_SpinBox; +class SMESH_Actor; class ExtraWidget; @@ -99,7 +114,8 @@ class SMESHGUI_EXPORT SMESHGUI_MeshInfo : public QFrame iSingle = 1, iTotal = iSingle, iLinear, - iQuadratic + iQuadratic, + iBiQuadratic }; typedef QList wlist; @@ -137,28 +153,33 @@ public: SMESHGUI_ElemInfo( QWidget* = 0 ); ~SMESHGUI_ElemInfo(); - void setSource( SMESH_Actor* ); + void setSource( SMESH_Actor*, SMESH::SMESH_IDSource_var ); void showInfo( long, bool ); void showInfo( QSet, bool ); void clear(); virtual void saveInfo( QTextStream &out ) = 0; + gp_XYZ getGravityCenter( const SMDS_MeshElement* e ) { return gravityCenter(e); } + protected: struct XYZ { double myX, myY, myZ; XYZ() { myX = myY = myZ = 0.0; } + XYZ(double x, double y, double z) { myX = x; myY = y; myZ = z; } void add( double x, double y, double z ) { myX += x; myY += y; myZ += z; } void divide( double a ) { if ( a != 0.) { myX /= a; myY /= a; myZ /= a; } } double x() const { return myX; } double y() const { return myY; } double z() const { return myZ; } + operator gp_XYZ() const { return gp_XYZ( myX, myY, myZ ); } }; typedef QMap< int, QList > Connectivity; QWidget* frame() const; SMESH_Actor* actor() const; bool isElements() const; + bool hasShapeToMesh() const { return myMeshHasShape; } virtual void information( const QList& ) = 0; virtual void clearInternal(); @@ -166,6 +187,7 @@ protected: Connectivity nodeConnectivity( const SMDS_MeshNode* ); QString formatConnectivity( Connectivity, int ); XYZ gravityCenter( const SMDS_MeshElement* ); + XYZ normal( const SMDS_MeshElement* ); signals: void itemInfo( int ); @@ -183,6 +205,7 @@ private: QWidget* myFrame; ExtraWidget* myExtra; int myIndex; + bool myMeshHasShape; }; class SMESHGUI_EXPORT SMESHGUI_SimpleElemInfo : public SMESHGUI_ElemInfo @@ -216,13 +239,16 @@ public: protected: void contextMenuEvent( QContextMenuEvent* e ); void information( const QList& ); + void nodeInfo( const SMDS_MeshNode*, int, int, QTreeWidgetItem* ); void clearInternal(); private slots: void itemDoubleClicked( QTreeWidgetItem*, int ); + void saveExpanded( QTreeWidgetItem* ); private: QTreeWidgetItem* createItem( QTreeWidgetItem* = 0, int = 0 ); + QString expandedResource( QTreeWidgetItem* ); private: QTreeWidget* myInfo; @@ -233,7 +259,7 @@ class GrpComputor: public QObject Q_OBJECT; public: - GrpComputor( SMESH::SMESH_GroupBase_ptr, QTreeWidgetItem*, QObject* ); + GrpComputor( SMESH::SMESH_GroupBase_ptr, QTreeWidgetItem*, QObject*, bool = false); QTreeWidgetItem* getItem() { return myItem; } public slots: @@ -242,6 +268,7 @@ public slots: private: SMESH::SMESH_GroupBase_var myGroup; QTreeWidgetItem* myItem; + bool myToComputeSize; }; class SMESHGUI_EXPORT SMESHGUI_AddInfo : public QTreeWidget @@ -280,6 +307,57 @@ private: SMESH::submesh_array_var mySubMeshes; }; +class SMESHGUI_EXPORT SMESHGUI_CtrlInfo : public QFrame +{ + Q_OBJECT; + +public: + SMESHGUI_CtrlInfo( QWidget* = 0 ); + ~SMESHGUI_CtrlInfo(); + + void showInfo( SMESH::SMESH_IDSource_ptr ); + void saveInfo( QTextStream &out ); + +private: + enum ObjectType { Mesh, SubMesh, Group }; + QLabel* createField(); + QwtPlot* createPlot( QWidget* ); + void setFontAttributes( QWidget* ); + void clearInternal(); +#ifndef DISABLE_PLOT2DVIEWER + Plot2d_Histogram* getHistogram( SMESH::NumericalFunctor_ptr functor ); +#endif + void computeNb( int ft, int iBut, int iWdg ); + +private slots: + void computeAspectRatio(); + void computeAspectRatio3D(); + void computeFreeNodesInfo(); + void computeNodesNbConnInfo(); + void computeDoubleNodesInfo(); + void computeDoubleEdgesInfo(); + void computeDoubleFacesInfo(); + void computeOverConstrainedFacesInfo(); + void computeDoubleVolumesInfo(); + void computeOverConstrainedVolumesInfo(); + void setTolerance( const double theTolerance ); + + +private: + typedef SALOME::GenericObj_wrap< SMESH::Predicate > TPredicate; + typedef SALOME::GenericObj_wrap< SMESH::NumericalFunctor > TNumFunctor; + SMESH::SMESH_IDSource_var myObject; + ObjectType myObjectType; + SMESHGUI_SpinBox* myToleranceWidget; + QList myWidgets; + QGridLayout* myMainLayout; + QwtPlot* myPlot; + QwtPlot* myPlot3D; + QList myButtons; + QList myPredicates; + TNumFunctor myAspectRatio, myAspectRatio3D, myNodeConnFunctor; +}; + class SMESHGUI_EXPORT SMESHGUI_MeshInfoDlg : public QDialog { Q_OBJECT; @@ -291,7 +369,8 @@ public: enum { BaseInfo, //!< base mesh information ElemInfo, //!< mesh element information - AddInfo //!< additional information + AddInfo, //!< additional information + CtrlInfo //!< controls information }; SMESHGUI_MeshInfoDlg( QWidget* = 0, int = BaseInfo ); @@ -312,18 +391,46 @@ private slots: void deactivate(); void modeChanged(); void idChanged(); + void idPreviewChange(bool); void showItemInfo( int ); void showItemInfo( const QString& ); void dump(); private: - QTabWidget* myTabWidget; - SMESHGUI_MeshInfo* myBaseInfo; - QButtonGroup* myMode; - QLineEdit* myID; - SMESHGUI_ElemInfo* myElemInfo; - SMESHGUI_AddInfo* myAddInfo; - SMESH_Actor* myActor; + QTabWidget* myTabWidget; + SMESHGUI_MeshInfo* myBaseInfo; + QButtonGroup* myMode; + QLineEdit* myID; + QCheckBox* myIDPreviewCheck; + SMESHGUI_IdPreview* myIDPreview; + SMESHGUI_ElemInfo* myElemInfo; + SMESHGUI_AddInfo* myAddInfo; + SMESHGUI_CtrlInfo* myCtrlInfo; + SMESH_Actor* myActor; + Handle(SALOME_InteractiveObject) myIO; +}; + +class SMESHGUI_EXPORT SMESHGUI_CtrlInfoDlg : public QDialog +{ + Q_OBJECT; + +public: + SMESHGUI_CtrlInfoDlg( QWidget* = 0 ); + ~SMESHGUI_CtrlInfoDlg(); + + void showInfo( const Handle(SALOME_InteractiveObject)& ); + void reject(); + +private slots: + void updateInfo(); + void activate(); + void deactivate(); + void updateSelection(); + void help(); + void dump(); + +private: + SMESHGUI_CtrlInfo* myCtrlInfo; }; #endif // SMESHGUI_MESHINFO_H