X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MeshInfo.cxx;h=34c737faf5fdd533c84526a18d1a95159dff5e6d;hp=7bf088b0a95ac9a6dadb6d373b22d417c27c751c;hb=2f529dcd2629679dadcca3047583bfcf28ca7b1a;hpb=0463dee59265d136a942064635a6642cfd85fae8 diff --git a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx index 7bf088b0a..34c737faf 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 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 @@ -33,6 +33,7 @@ #include "SMESHDS_Mesh.hxx" #include "SMESHGUI.h" #include "SMESHGUI_FilterUtils.h" +#include "SMESHGUI_IdPreview.h" #include "SMESHGUI_IdValidator.h" #include "SMESHGUI_SpinBox.h" #include "SMESHGUI_Utils.h" @@ -76,22 +77,24 @@ namespace { -const int SPACING = 6; -const int MARGIN = 9; -const int MAXITEMS = 10; -const int GROUPS_ID = 100; -const int SUBMESHES_ID = 200; -const int SPACING_INFO = 2; + const int SPACING = 6; + const int MARGIN = 9; + const int MAXITEMS = 10; + const int GROUPS_ID = 100; + const int SUBMESHES_ID = 200; + const int SPACING_INFO = 2; -enum InfoRole { - TypeRole = Qt::UserRole + 10, - IdRole, -}; + const char* id_preview_resource = "id_preview_resource"; -enum InfoType { - NodeConnectivity = 100, - ElemConnectivity, -}; + enum InfoRole { + TypeRole = Qt::UserRole + 10, + IdRole, + }; + + enum InfoType { + NodeConnectivity = 100, + ElemConnectivity, + }; } // namesapce /*! @@ -136,7 +139,7 @@ void ExtraWidget::updateControls( int total, int index, int blockSize ) { setVisible( total > blockSize ); QString format = brief ? QString( "%1-%2 / %3" ) : SMESHGUI_MeshInfoDlg::tr( "X_FROM_Y_ITEMS_SHOWN" ); - current->setText( format.arg( index*blockSize+1 ).arg( qMin( index*blockSize+blockSize, total ) ).arg( total ) ); + current->setText( format.arg( index*blockSize+1 ).arg( qMin( index*blockSize+blockSize, total )).arg( total )); prev->setEnabled( index > 0 ); next->setEnabled( (index+1)*blockSize < total ); } @@ -319,7 +322,7 @@ SMESHGUI_MeshInfo::SMESHGUI_MeshInfo( QWidget* parent ) QLabel* a2DTriQuad = createField(); a2DTriQuad->setObjectName("nbQuadraticTriangle"); QLabel* a2DTriBiQuad = createField(); - a2DTriBiQuad->setObjectName("nbBiQuadraticTriangle"); + a2DTriBiQuad->setObjectName("nbBiQuadraticTriangle"); QLabel* a2DQuaLab = new QLabel( tr( "QUADRANGLES_LAB" ), this ); QLabel* a2DQuaTotal = createField(); a2DQuaTotal->setObjectName("nbQuadrangle"); @@ -383,6 +386,8 @@ SMESHGUI_MeshInfo::SMESHGUI_MeshInfo( QWidget* parent ) a3DPriLin->setObjectName("nbLinearPrism"); QLabel* a3DPriQuad = createField(); a3DPriQuad->setObjectName("nbQuadraticPrism"); + QLabel* a3DPriBiQuad = createField(); + a3DPriBiQuad->setObjectName("nbBiQuadraticPrism"); QLabel* a3DHexPriLab = new QLabel( tr( "HEX_PRISMS_LAB" ), this ); QLabel* a3DHexPriTotal = createField(); a3DHexPriTotal->setObjectName("nbHexagonalPrism"); @@ -394,13 +399,13 @@ SMESHGUI_MeshInfo::SMESHGUI_MeshInfo( QWidget* parent ) myWidgets[ index++ ] << a3DTetLab << a3DTetTotal << a3DTetLin << a3DTetQuad; myWidgets[ index++ ] << a3DHexLab << a3DHexTotal << a3DHexLin << a3DHexQuad << a3DHexBiQuad; myWidgets[ index++ ] << a3DPyrLab << a3DPyrTotal << a3DPyrLin << a3DPyrQuad; - myWidgets[ index++ ] << a3DPriLab << a3DPriTotal << a3DPriLin << a3DPriQuad; + myWidgets[ index++ ] << a3DPriLab << a3DPriTotal << a3DPriLin << a3DPriQuad << a3DPriBiQuad; myWidgets[ index++ ] << a3DHexPriLab << a3DHexPriTotal; myWidgets[ index++ ] << a3DPolLab << a3DPolTotal; myLoadBtn = new QPushButton( tr( "BUT_LOAD_MESH" ), this ); myLoadBtn->setAutoDefault( true ); - connect( myLoadBtn, SIGNAL( clicked() ), this, SLOT( loadMesh() ) ); + connect( myLoadBtn, SIGNAL( clicked() ), this, SLOT( loadMesh() )); setFontAttributes( aNameLab, Bold ); setFontAttributes( aObjLab, Bold ); @@ -488,6 +493,7 @@ SMESHGUI_MeshInfo::SMESHGUI_MeshInfo( QWidget* parent ) l->addWidget( a3DPriTotal, 24, 1 ); l->addWidget( a3DPriLin, 24, 2 ); l->addWidget( a3DPriQuad, 24, 3 ); + l->addWidget( a3DPriBiQuad, 24, 4 ); l->addWidget( a3DHexPriLab, 25, 0 ); l->addWidget( a3DHexPriTotal, 25, 1 ); l->addWidget( a3DPolLab, 26, 0 ); @@ -518,7 +524,7 @@ SMESHGUI_MeshInfo::~SMESHGUI_MeshInfo() void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) { clear(); - if ( !CORBA::is_nil( obj ) ) { + if ( !CORBA::is_nil( obj )) { _PTR(SObject) sobj = SMESH::ObjectToSObject( obj ); if ( sobj ) myWidgets[iName][iSingle]->setProperty( "text", sobj->GetName().c_str() ); @@ -526,10 +532,10 @@ void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow( obj ); SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( obj ); if ( !aMesh->_is_nil() ) { - myWidgets[iObject][iSingle]->setProperty( "text", tr( "OBJECT_MESH" ) ); + myWidgets[iObject][iSingle]->setProperty( "text", tr( "OBJECT_MESH" )); } else if ( !aSubMesh->_is_nil() ) { - myWidgets[iObject][iSingle]->setProperty( "text", tr( "OBJECT_SUBMESH" ) ); + myWidgets[iObject][iSingle]->setProperty( "text", tr( "OBJECT_SUBMESH" )); } else if ( !aGroup->_is_nil() ) { QString objType; @@ -545,13 +551,13 @@ void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myWidgets[iObject][iSingle]->setProperty( "text", objType ); } SMESH::long_array_var info = obj->GetMeshInfo(); - myWidgets[iNodes][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Node] ) ); - myWidgets[i0D][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_0D] ) ); - myWidgets[iBalls][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Ball] ) ); + myWidgets[iNodes][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Node] )); + myWidgets[i0D][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_0D] )); + myWidgets[iBalls][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Ball] )); long nbEdges = info[SMDSEntity_Edge] + info[SMDSEntity_Quad_Edge]; - myWidgets[i1D][iTotal] ->setProperty( "text", QString::number( nbEdges ) ); - myWidgets[i1D][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Edge] ) ); - myWidgets[i1D][iQuadratic]->setProperty( "text", QString::number( info[SMDSEntity_Quad_Edge] ) ); + myWidgets[i1D][iTotal] ->setProperty( "text", QString::number( nbEdges )); + myWidgets[i1D][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Edge] )); + myWidgets[i1D][iQuadratic]->setProperty( "text", QString::number( info[SMDSEntity_Quad_Edge] )); long nbTriangles = info[SMDSEntity_Triangle] + info[SMDSEntity_Quad_Triangle] + info[SMDSEntity_BiQuad_Triangle]; long nbQuadrangles = info[SMDSEntity_Quadrangle] + info[SMDSEntity_Quad_Quadrangle] + info[SMDSEntity_BiQuad_Quadrangle]; long nb2DPolygons = info[SMDSEntity_Polygon] + info[SMDSEntity_Quad_Polygon]; @@ -561,55 +567,56 @@ void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) long nb2DTotal = nb2DLinear + nb2DQuadratic + nb2DBiQuadratic; myWidgets[i2D][iTotal] ->setProperty( "text", QString::number( nb2DTotal )); - myWidgets[i2D][iLinear] ->setProperty( "text", QString::number( nb2DLinear ) ); - myWidgets[i2D][iQuadratic] ->setProperty( "text", QString::number( nb2DQuadratic ) ); - myWidgets[i2D][iBiQuadratic] ->setProperty( "text", QString::number( nb2DBiQuadratic ) ); - myWidgets[i2DTriangles][iTotal] ->setProperty( "text", QString::number( nbTriangles ) ); - myWidgets[i2DTriangles][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Triangle] ) ); - myWidgets[i2DTriangles][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Triangle] ) ); - myWidgets[i2DTriangles][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_BiQuad_Triangle] ) ); - myWidgets[i2DQuadrangles][iTotal] ->setProperty( "text", QString::number( nbQuadrangles ) ); - myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Quadrangle] ) ); - myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Quadrangle] ) ); - myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_BiQuad_Quadrangle] ) ); + myWidgets[i2D][iLinear] ->setProperty( "text", QString::number( nb2DLinear )); + myWidgets[i2D][iQuadratic] ->setProperty( "text", QString::number( nb2DQuadratic )); + myWidgets[i2D][iBiQuadratic] ->setProperty( "text", QString::number( nb2DBiQuadratic )); + myWidgets[i2DTriangles][iTotal] ->setProperty( "text", QString::number( nbTriangles )); + myWidgets[i2DTriangles][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Triangle] )); + myWidgets[i2DTriangles][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Triangle] )); + myWidgets[i2DTriangles][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_BiQuad_Triangle] )); + myWidgets[i2DQuadrangles][iTotal] ->setProperty( "text", QString::number( nbQuadrangles )); + myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Quadrangle] )); + myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Quadrangle] )); + myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_BiQuad_Quadrangle] )); myWidgets[i2DPolygons][iTotal] ->setProperty( "text", QString::number( nb2DPolygons )); - myWidgets[i2DPolygons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Polygon] ) ); - myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Polygon] ) ); + myWidgets[i2DPolygons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Polygon] )); + myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Polygon] )); long nbTetrahedrons = info[SMDSEntity_Tetra] + info[SMDSEntity_Quad_Tetra]; long nbHexahedrons = info[SMDSEntity_Hexa] + info[SMDSEntity_Quad_Hexa] + info[SMDSEntity_TriQuad_Hexa]; long nbPyramids = info[SMDSEntity_Pyramid] + info[SMDSEntity_Quad_Pyramid]; - long nbPrisms = info[SMDSEntity_Penta] + info[SMDSEntity_Quad_Penta]; + long nbPrisms = info[SMDSEntity_Penta] + info[SMDSEntity_Quad_Penta] + info[SMDSEntity_BiQuad_Penta]; long nb3DLinear = info[SMDSEntity_Tetra] + info[SMDSEntity_Hexa] + info[SMDSEntity_Pyramid] + info[SMDSEntity_Penta] + info[SMDSEntity_Polyhedra] + info[SMDSEntity_Hexagonal_Prism]; long nb3DQuadratic = info[SMDSEntity_Quad_Tetra] + info[SMDSEntity_Quad_Hexa] + info[SMDSEntity_Quad_Pyramid] + info[SMDSEntity_Quad_Penta]; - long nb3DBiQuadratic = info[SMDSEntity_TriQuad_Hexa]; + long nb3DBiQuadratic = info[SMDSEntity_TriQuad_Hexa] + info[SMDSEntity_BiQuad_Penta]; long nb3DTotal = nb3DLinear + nb3DQuadratic + nb3DBiQuadratic; - myWidgets[i3D][iTotal] ->setProperty( "text", QString::number( nb3DTotal ) ); - myWidgets[i3D][iLinear] ->setProperty( "text", QString::number( nb3DLinear ) ); - myWidgets[i3D][iQuadratic] ->setProperty( "text", QString::number( nb3DQuadratic ) ); - myWidgets[i3D][iBiQuadratic] ->setProperty( "text", QString::number( nb3DBiQuadratic ) ); - myWidgets[i3DTetrahedrons][iTotal] ->setProperty( "text", QString::number( nbTetrahedrons ) ); - myWidgets[i3DTetrahedrons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Tetra] ) ); - myWidgets[i3DTetrahedrons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Tetra] ) ); - myWidgets[i3DHexahedrons][iTotal] ->setProperty( "text", QString::number( nbHexahedrons ) ); - myWidgets[i3DHexahedrons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Hexa] ) ); - myWidgets[i3DHexahedrons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Hexa] ) ); - myWidgets[i3DHexahedrons][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_TriQuad_Hexa] ) ); - myWidgets[i3DPyramids][iTotal] ->setProperty( "text", QString::number( nbPyramids ) ); - myWidgets[i3DPyramids][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Pyramid] ) ); - myWidgets[i3DPyramids][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Pyramid] ) ); - myWidgets[i3DPrisms][iTotal] ->setProperty( "text", QString::number( nbPrisms ) ); - myWidgets[i3DPrisms][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Penta] ) ); - myWidgets[i3DPrisms][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Penta] ) ); - myWidgets[i3DHexaPrisms][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Hexagonal_Prism] ) ); - myWidgets[i3DPolyhedrons][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Polyhedra] ) ); + myWidgets[i3D][iTotal] ->setProperty( "text", QString::number( nb3DTotal )); + myWidgets[i3D][iLinear] ->setProperty( "text", QString::number( nb3DLinear )); + myWidgets[i3D][iQuadratic] ->setProperty( "text", QString::number( nb3DQuadratic )); + myWidgets[i3D][iBiQuadratic] ->setProperty( "text", QString::number( nb3DBiQuadratic )); + myWidgets[i3DTetrahedrons][iTotal] ->setProperty( "text", QString::number( nbTetrahedrons )); + myWidgets[i3DTetrahedrons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Tetra] )); + myWidgets[i3DTetrahedrons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Tetra] )); + myWidgets[i3DHexahedrons][iTotal] ->setProperty( "text", QString::number( nbHexahedrons )); + myWidgets[i3DHexahedrons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Hexa] )); + myWidgets[i3DHexahedrons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Hexa] )); + myWidgets[i3DHexahedrons][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_TriQuad_Hexa] )); + myWidgets[i3DPyramids][iTotal] ->setProperty( "text", QString::number( nbPyramids )); + myWidgets[i3DPyramids][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Pyramid] )); + myWidgets[i3DPyramids][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Pyramid] )); + myWidgets[i3DPrisms][iTotal] ->setProperty( "text", QString::number( nbPrisms )); + myWidgets[i3DPrisms][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Penta] )); + myWidgets[i3DPrisms][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Penta] )); + myWidgets[i3DPrisms][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_BiQuad_Penta] )); + myWidgets[i3DHexaPrisms][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Hexagonal_Prism] )); + myWidgets[i3DPolyhedrons][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Polyhedra] )); long nbElemTotal = info[SMDSEntity_0D] + info[SMDSEntity_Ball] + nbEdges + nb2DTotal + nb3DTotal; - long nbElemLinerial = info[SMDSEntity_Edge] + nb2DLinear + nb3DLinear; + long nbElemLinearial = info[SMDSEntity_Edge] + nb2DLinear + nb3DLinear; long nbElemQuadratic = info[SMDSEntity_Quad_Edge] + nb2DQuadratic + nb3DQuadratic; long nbElemBiQuadratic = nb2DBiQuadratic + nb3DBiQuadratic; - myWidgets[iNb][iTotal] ->setProperty( "text", QString::number( nbElemTotal ) ); - myWidgets[iNb][iLinear] ->setProperty( "text", QString::number( nbElemLinerial ) ); - myWidgets[iNb][iQuadratic] ->setProperty( "text", QString::number( nbElemQuadratic ) ); - myWidgets[iNb][iBiQuadratic]->setProperty( "text", QString::number( nbElemBiQuadratic ) ); + myWidgets[iNb][iTotal] ->setProperty( "text", QString::number( nbElemTotal )); + myWidgets[iNb][iLinear] ->setProperty( "text", QString::number( nbElemLinearial )); + myWidgets[iNb][iQuadratic] ->setProperty( "text", QString::number( nbElemQuadratic )); + myWidgets[iNb][iBiQuadratic]->setProperty( "text", QString::number( nbElemBiQuadratic )); // before full loading from study file, type of elements in a sub-mesh can't be defined // in some cases bool infoOK = obj->IsMeshInfoCorrect(); @@ -732,7 +739,7 @@ void SMESHGUI_MeshInfo::loadMesh() if ( selected.Extent() == 1 ) { Handle(SALOME_InteractiveObject) IO = selected.First(); SMESH::SMESH_IDSource_var obj = SMESH::IObjectToInterface( IO ); - if ( !CORBA::is_nil( obj ) ) { + if ( !CORBA::is_nil( obj )) { SMESH::SMESH_Mesh_var mesh = obj->GetMesh(); if ( !mesh->_is_nil() ) { @@ -750,50 +757,50 @@ void SMESHGUI_MeshInfo::clear() { myWidgets[iName][iSingle] ->setProperty( "text", QString() ); myWidgets[iObject][iSingle] ->setProperty( "text", QString() ); - myWidgets[iNodes][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i0D][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[iBalls][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i1D][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i1D][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i1D][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2D][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2D][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2D][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2D][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DTriangles][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DTriangles][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DTriangles][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DTriangles][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DQuadrangles][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DPolygons][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i2DPolygons][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3D][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3D][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3D][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3D][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DTetrahedrons][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DTetrahedrons][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DTetrahedrons][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DHexahedrons][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DHexahedrons][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DHexahedrons][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DHexahedrons][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPyramids][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPyramids][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPyramids][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPrisms][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPrisms][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPrisms][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DHexaPrisms][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[i3DPolyhedrons][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[iNb][iTotal] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[iNb][iLinear] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[iNb][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); - myWidgets[iNb][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); + myWidgets[iNodes][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i0D][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[iBalls][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i1D][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i1D][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i1D][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2D][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2D][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2D][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2D][iBiQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DTriangles][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DTriangles][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DTriangles][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DTriangles][iBiQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DQuadrangles][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DPolygons][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i2DPolygons][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3D][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3D][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3D][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3D][iBiQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DTetrahedrons][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DTetrahedrons][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DTetrahedrons][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DHexahedrons][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DHexahedrons][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DHexahedrons][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DHexahedrons][iBiQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPyramids][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPyramids][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPyramids][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPrisms][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPrisms][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPrisms][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DHexaPrisms][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[i3DPolyhedrons][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[iNb][iTotal] ->setProperty( "text", QString::number( 0 )); + myWidgets[iNb][iLinear] ->setProperty( "text", QString::number( 0 )); + myWidgets[iNb][iQuadratic] ->setProperty( "text", QString::number( 0 )); + myWidgets[iNb][iBiQuadratic] ->setProperty( "text", QString::number( 0 )); } /*! @@ -807,7 +814,7 @@ QLabel* SMESHGUI_MeshInfo::createField() lab->setAlignment( Qt::AlignCenter ); lab->setAutoFillBackground( true ); QPalette pal = lab->palette(); - pal.setColor( QPalette::Window, QApplication::palette().color( QPalette::Active, QPalette::Base ) ); + pal.setColor( QPalette::Window, QApplication::palette().color( QPalette::Active, QPalette::Base )); lab->setPalette( pal ); lab->setMinimumWidth( 70 ); return lab; @@ -861,67 +868,67 @@ void SMESHGUI_MeshInfo::saveInfo( QTextStream &out ) out << QString( 9, '-' ) << "\n"; out << tr( "BASE_INFO" ) << "\n"; out << QString( 9, '-' ) << "\n"; - out << tr( "NAME_LAB" ) << " " << ( myWidgets[iName][iSingle]->property( "text" ) ).toString() << "\n"; - out << tr( "OBJECT_LAB" ) << " " << ( myWidgets[iObject][iSingle]->property( "text" ) ).toString() << "\n"; - out << tr( "NODES_LAB" ) << " " << ( myWidgets[iNodes][iTotal]->property( "text" ) ).toString() << "\n"; + out << tr( "NAME_LAB" ) << " " << ( myWidgets[iName][iSingle]->property( "text" )).toString() << "\n"; + out << tr( "OBJECT_LAB" ) << " " << ( myWidgets[iObject][iSingle]->property( "text" )).toString() << "\n"; + out << tr( "NODES_LAB" ) << " " << ( myWidgets[iNodes][iTotal]->property( "text" )).toString() << "\n"; out << tr( "ELEMENTS_LAB" ) << "\n"; - out << QString( SPACING_INFO, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[iNb][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[iNb][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[iNb][iQuadratic]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[iNb][iBiQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[iNb][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[iNb][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[iNb][iQuadratic]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[iNb][iBiQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO, ' ' ) << tr( "0D_LAB" ) << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i0D][iTotal]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i0D][iTotal]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO, ' ' ) << tr( "BALL_LAB" ) << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[iBalls][iTotal]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[iBalls][iTotal]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO, ' ' ) << tr( "1D_LAB" ) << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i1D][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i1D][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i1D][iQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i1D][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i1D][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i1D][iQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO, ' ' ) << tr( "2D_LAB" ) << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2D][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2D][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2D][iQuadratic]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2D][iBiQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2D][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2D][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2D][iQuadratic]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2D][iBiQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "TRIANGLES_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DTriangles][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DTriangles][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DTriangles][iQuadratic]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DTriangles][iBiQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DTriangles][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DTriangles][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DTriangles][iQuadratic]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DTriangles][iBiQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRANGLES_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iQuadratic]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iBiQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iQuadratic]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iBiQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "POLYGONS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DPolygons][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DPolygons][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DPolygons][iQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DPolygons][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DPolygons][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DPolygons][iQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO, ' ' ) << tr( "3D_LAB" ) << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3D][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3D][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3D][iQuadratic]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*2, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i3D][iBiQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3D][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3D][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3D][iQuadratic]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*2, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i3D][iBiQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "TETRAHEDRONS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DTetrahedrons][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DTetrahedrons][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DTetrahedrons][iQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DTetrahedrons][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DTetrahedrons][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DTetrahedrons][iQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "HEXAHEDONRS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iQuadratic]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iBiQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iQuadratic]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DHexahedrons][iBiQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "PYRAMIDS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DPyramids][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DPyramids][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DPyramids][iQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DPyramids][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DPyramids][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DPyramids][iQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "PRISMS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DPrisms][iTotal]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DPrisms][iLinear]->property( "text" ) ).toString() << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DPrisms][iQuadratic]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DPrisms][iTotal]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3DPrisms][iLinear]->property( "text" )).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i3DPrisms][iQuadratic]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "HEX_PRISMS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DHexaPrisms][iTotal]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DHexaPrisms][iTotal]->property( "text" )).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "POLYHEDRONS_LAB" ) << "\n"; - out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DPolyhedrons][iTotal]->property( "text" ) ).toString() << "\n" << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3DPolyhedrons][iTotal]->property( "text" )).toString() << "\n" << "\n"; } /*! @@ -934,7 +941,7 @@ void SMESHGUI_MeshInfo::saveInfo( QTextStream &out ) \param parent parent widget */ SMESHGUI_ElemInfo::SMESHGUI_ElemInfo( QWidget* parent ) -: QWidget( parent ), myActor( 0 ), myIsElement( -1 ) + : QWidget( parent ), myActor( 0 ), myIsElement( -1 ) { myFrame = new QWidget( this ); myExtra = new ExtraWidget( this ); @@ -943,8 +950,8 @@ SMESHGUI_ElemInfo::SMESHGUI_ElemInfo( QWidget* parent ) vbl->setSpacing( 0 ); vbl->addWidget( myFrame ); vbl->addWidget( myExtra ); - connect( myExtra->prev, SIGNAL( clicked() ), this, SLOT( showPrevious() ) ); - connect( myExtra->next, SIGNAL( clicked() ), this, SLOT( showNext() ) ); + connect( myExtra->prev, SIGNAL( clicked() ), this, SLOT( showPrevious() )); + connect( myExtra->next, SIGNAL( clicked() ), this, SLOT( showNext() )); clear(); } @@ -959,11 +966,13 @@ SMESHGUI_ElemInfo::~SMESHGUI_ElemInfo() \brief Set mesh data source (actor) \param actor mesh object actor */ -void SMESHGUI_ElemInfo::setSource( SMESH_Actor* actor ) +void SMESHGUI_ElemInfo::setSource( SMESH_Actor* actor, SMESH::SMESH_IDSource_var obj ) { if ( myActor != actor ) { myActor = actor; myIsElement = -1; + SMESH::SMESH_Mesh_var mesh = obj->GetMesh(); + myMeshHasShape = ( !mesh->_is_nil() && mesh->HasShapeToMesh() ); clear(); } } @@ -995,7 +1004,7 @@ void SMESHGUI_ElemInfo::showInfo( QSet ids, bool isElem ) myIsElement = isElem; myIndex = 0; updateControls(); - information( myIDs.mid( myIndex*MAXITEMS, MAXITEMS ) ); + information( myIDs.mid( myIndex*MAXITEMS, MAXITEMS )); } /*! @@ -1079,7 +1088,7 @@ SMESHGUI_ElemInfo::Connectivity SMESHGUI_ElemInfo::nodeConnectivity( const SMDS_ QString SMESHGUI_ElemInfo::formatConnectivity( Connectivity connectivity, int type ) { QStringList str; - if ( connectivity.contains( type ) ) { + if ( connectivity.contains( type )) { QList elements = connectivity[ type ]; qSort( elements ); foreach( int id, elements ) @@ -1112,7 +1121,7 @@ SMESHGUI_ElemInfo::XYZ SMESHGUI_ElemInfo::gravityCenter( const SMDS_MeshElement* */ SMESHGUI_ElemInfo::XYZ SMESHGUI_ElemInfo::normal( const SMDS_MeshElement* element ) { - gp_XYZ n = SMESH::getNormale( dynamic_cast( element ) ); + gp_XYZ n = SMESH::getNormale( SMDS_Mesh::DownCast( element )); return XYZ(n.X(), n.Y(), n.Z()); } @@ -1124,7 +1133,7 @@ void SMESHGUI_ElemInfo::showPrevious() { myIndex = qMax( 0, myIndex-1 ); updateControls(); - information( myIDs.mid( myIndex*MAXITEMS, MAXITEMS ) ); + information( myIDs.mid( myIndex*MAXITEMS, MAXITEMS )); } /*! @@ -1135,7 +1144,7 @@ void SMESHGUI_ElemInfo::showNext() { myIndex = qMin( myIndex+1, myIDs.count() / MAXITEMS ); updateControls(); - information( myIDs.mid( myIndex*MAXITEMS, MAXITEMS ) ); + information( myIDs.mid( myIndex*MAXITEMS, MAXITEMS )); } /*! @@ -1156,7 +1165,7 @@ void SMESHGUI_ElemInfo::updateControls() \param parent parent widget */ SMESHGUI_SimpleElemInfo::SMESHGUI_SimpleElemInfo( QWidget* parent ) -: SMESHGUI_ElemInfo( parent ) + : SMESHGUI_ElemInfo( parent ) { myInfo = new QTextBrowser( frame() ); QVBoxLayout* l = new QVBoxLayout( frame() ); @@ -1171,12 +1180,12 @@ SMESHGUI_SimpleElemInfo::SMESHGUI_SimpleElemInfo( QWidget* parent ) void SMESHGUI_SimpleElemInfo::information( const QList& ids ) { clearInternal(); - + if ( actor() ) { int grp_details = SMESHGUI::resourceMgr()->booleanValue( "SMESH", "elem_info_grp_details", false ); int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 ); int cprecision = -1; - if ( SMESHGUI::resourceMgr()->booleanValue( "SMESH", "use_precision", false ) ) + if ( SMESHGUI::resourceMgr()->booleanValue( "SMESH", "use_precision", false )) cprecision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "controls_precision", -1 ); foreach ( long id, ids ) { if ( !isElements() ) { @@ -1187,47 +1196,47 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) if ( !node ) return; // node ID - myInfo->append( QString( "%1 #%2" ).arg( SMESHGUI_ElemInfo::tr( "NODE" ) ).arg( id ) ); + myInfo->append( QString( "%1 #%2" ).arg( SMESHGUI_ElemInfo::tr( "NODE" )).arg( id )); // separator myInfo->append( "" ); // coordinates - myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "COORDINATES" ) ). - arg( node->X(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ). - arg( node->Y(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ). - arg( node->Z(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "COORDINATES" )). + arg( node->X(), 0, precision > 0 ? 'f' : 'g', qAbs( precision )). + arg( node->Y(), 0, precision > 0 ? 'f' : 'g', qAbs( precision )). + arg( node->Z(), 0, precision > 0 ? 'f' : 'g', qAbs( precision )) ); // separator myInfo->append( "" ); // connectivity Connectivity connectivity = nodeConnectivity( node ); if ( !connectivity.isEmpty() ) { - myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "CONNECTIVITY" ) ) ); + myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "CONNECTIVITY" )) ); QString con = formatConnectivity( connectivity, SMDSAbs_0DElement ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Edge ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "EDGES" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "EDGES" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Ball ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "BALL_ELEMENTS" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "BALL_ELEMENTS" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Face ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "FACES" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "FACES" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Volume ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "VOLUMES" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "VOLUMES" )).arg( con )); } else { - myInfo->append( QString( "%1" ).arg( SMESHGUI_ElemInfo::tr( "FREE_NODE" ) ).arg( id ) ); + myInfo->append( QString( "%1" ).arg( SMESHGUI_ElemInfo::tr( "FREE_NODE" )).arg( id )); } // node position - SMESH::SMESH_Mesh_ptr aMeshPtr = actor()->GetObject()->GetMeshServer(); - if ( !CORBA::is_nil( aMeshPtr ) ) { + SMESH::SMESH_Mesh_ptr aMeshPtr = actor()->GetObject()->GetMeshServer(); + if ( !CORBA::is_nil( aMeshPtr )) { SMESH::NodePosition_var pos = aMeshPtr->GetNodePosition( id ); int shapeID = pos->shapeID; if ( shapeID > 0 ) { QString shapeType; - double u, v; + double u = 0, v = 0; switch ( pos->shapeType ) { case GEOM::EDGE: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_EDGE" ); @@ -1237,8 +1246,8 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) case GEOM::FACE: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_FACE" ); if ( pos->params.length() == 2 ) { - u = pos->params[0]; - v = pos->params[1]; + u = pos->params[0]; + v = pos->params[1]; } break; case GEOM::VERTEX: @@ -1250,67 +1259,67 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) } // separator myInfo->append( "" ); - myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "POSITION" ) ) ); - myInfo->append( QString( "- %1: #%2" ).arg( shapeType ).arg( shapeID ) ); + myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "POSITION" )) ); + myInfo->append( QString( "- %1: #%2" ).arg( shapeType ).arg( shapeID )); if ( pos->shapeType == GEOM::EDGE || pos->shapeType == GEOM::FACE ) { - myInfo->append( QString( "- %1: #%2" ).arg( SMESHGUI_ElemInfo::tr( "U_POSITION" ) ). - arg( QString::number( u, precision > 0 ? 'f' : 'g', qAbs( precision )) ) ); + myInfo->append( QString( "- %1: #%2" ).arg( SMESHGUI_ElemInfo::tr( "U_POSITION" )). + arg( QString::number( u, precision > 0 ? 'f' : 'g', qAbs( precision )) )); if ( pos->shapeType == GEOM::FACE ) { - myInfo->append( QString( "- %1: #%2" ).arg( SMESHGUI_ElemInfo::tr( "V_POSITION" ) ). - arg( QString::number( v, precision > 0 ? 'f' : 'g', qAbs( precision )) ) ); + myInfo->append( QString( "- %1: #%2" ).arg( SMESHGUI_ElemInfo::tr( "V_POSITION" )). + arg( QString::number( v, precision > 0 ? 'f' : 'g', qAbs( precision )) )); } } } } // groups node belongs to SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); - if ( !CORBA::is_nil( aMesh ) ) { + if ( !CORBA::is_nil( aMesh )) { SMESH::ListOfGroups_var groups = aMesh->GetGroups(); myInfo->append( "" ); // separator bool top_created = false; - for ( int i = 0; i < groups->length(); i++ ) { + for ( CORBA::ULong i = 0; i < groups->length(); i++ ) { SMESH::SMESH_GroupBase_var aGrp = groups[i]; - if ( CORBA::is_nil( aGrp ) ) continue; + if ( CORBA::is_nil( aGrp )) continue; QString aName = aGrp->GetName(); - if ( aGrp->GetType() == SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id ) ) { + if ( aGrp->GetType() == SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id )) { if ( !top_created ) { - myInfo->append( QString( "%1:" ).arg( SMESHGUI_AddInfo::tr( "GROUPS" ) ) ); + myInfo->append( QString( "%1:" ).arg( SMESHGUI_AddInfo::tr( "GROUPS" )) ); top_created = true; } - myInfo->append( QString( "+ %1:" ).arg( aName.trimmed() ) ); + myInfo->append( QString( "+ %1:" ).arg( aName.trimmed() )); if ( grp_details ) { SMESH::SMESH_Group_var aStdGroup = SMESH::SMESH_Group::_narrow( aGrp ); SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( aGrp ); SMESH::SMESH_GroupOnFilter_var aFltGroup = SMESH::SMESH_GroupOnFilter::_narrow( aGrp ); - + // type : group on geometry, standalone group, group on filter - if ( !CORBA::is_nil( aStdGroup ) ) { - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" ) ) ); + if ( !CORBA::is_nil( aStdGroup )) { + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" )) ); } - else if ( !CORBA::is_nil( aGeomGroup ) ) { - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" ) ) ); + else if ( !CORBA::is_nil( aGeomGroup )) { + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" )) ); GEOM::GEOM_Object_var gobj = aGeomGroup->GetShape(); _PTR(SObject) sobj = SMESH::ObjectToSObject( gobj ); if ( sobj ) { - myInfo->append( QString( " - %1: %2: %3" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "GEOM_OBJECT" ) ).arg( sobj->GetName().c_str() ) ); + myInfo->append( QString( " - %1: %2: %3" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "GEOM_OBJECT" )).arg( sobj->GetName().c_str() )); } } - else if ( !CORBA::is_nil( aFltGroup ) ) { - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" ) ) ); + else if ( !CORBA::is_nil( aFltGroup )) { + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" )) ); } - + // size - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "SIZE" ) ). - arg( QString::number( aGrp->Size() ) ) ); - + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "SIZE" )). + arg( QString::number( aGrp->Size() )) ); + // color SALOMEDS::Color color = aGrp->GetColor(); - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "COLOR" ) ). - arg( QColor( color.R*255., color.G*255., color.B*255. ).name() ) ); + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "COLOR" )). + arg( QColor( color.R*255., color.G*255., color.B*255. ).name() )); } } } @@ -1319,11 +1328,11 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) else { // // show element info - // + // const SMDS_MeshElement* e = actor()->GetObject()->GetMesh()->FindElement( id ); SMESH::Controls::NumericalFunctorPtr afunctor; if ( !e ) return; - + // Element ID && Type QString stype; switch( e->GetType() ) { @@ -1337,11 +1346,11 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) stype = SMESHGUI_ElemInfo::tr( "FACE" ); break; case SMDSAbs_Volume: stype = SMESHGUI_ElemInfo::tr( "VOLUME" ); break; - default: + default: break; } if ( stype.isEmpty() ) return; - myInfo->append( QString( "%1 #%2" ).arg( stype ).arg( id ) ); + myInfo->append( QString( "%1 #%2" ).arg( stype ).arg( id )); // separator myInfo->append( "" ); @@ -1371,25 +1380,26 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) gtype = SMESHGUI_ElemInfo::tr( "HEXAHEDRON" ); break; case SMDSEntity_Penta: case SMDSEntity_Quad_Penta: + case SMDSEntity_BiQuad_Penta: gtype = SMESHGUI_ElemInfo::tr( "PRISM" ); break; case SMDSEntity_Hexagonal_Prism: gtype = SMESHGUI_ElemInfo::tr( "HEX_PRISM" ); break; case SMDSEntity_Polyhedra: case SMDSEntity_Quad_Polyhedra: gtype = SMESHGUI_ElemInfo::tr( "POLYHEDRON" ); break; - default: + default: break; } if ( !gtype.isEmpty() ) - myInfo->append( QString( "%1: %2" ).arg( SMESHGUI_ElemInfo::tr( "TYPE" ) ).arg( gtype ) ); + myInfo->append( QString( "%1: %2" ).arg( SMESHGUI_ElemInfo::tr( "TYPE" )).arg( gtype )); // Quadratic flag (any element except 0D) if ( e->GetEntityType() > SMDSEntity_0D && e->GetEntityType() < SMDSEntity_Ball ) { - myInfo->append( QString( "%1? %2" ).arg( SMESHGUI_ElemInfo::tr( "QUADRATIC" ) ).arg( e->IsQuadratic() ? SMESHGUI_ElemInfo::tr( "YES" ) : SMESHGUI_ElemInfo::tr( "NO" ) ) ); + myInfo->append( QString( "%1? %2" ).arg( SMESHGUI_ElemInfo::tr( "QUADRATIC" )).arg( e->IsQuadratic() ? SMESHGUI_ElemInfo::tr( "YES" ) : SMESHGUI_ElemInfo::tr( "NO" )) ); } - if ( const SMDS_BallElement* ball = dynamic_cast( e )) { + if ( const SMDS_BallElement* ball = SMDS_Mesh::DownCast( e )) { // Ball diameter - myInfo->append( QString( "%1: %2" ).arg( SMESHGUI_ElemInfo::tr( "BALL_DIAMETER" ) ).arg( ball->GetDiameter() )); + myInfo->append( QString( "%1: %2" ).arg( SMESHGUI_ElemInfo::tr( "BALL_DIAMETER" )).arg( ball->GetDiameter() )); } // separator myInfo->append( "" ); @@ -1399,111 +1409,116 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) for ( int idx = 1; nodeIt->more(); idx++ ) { const SMDS_MeshNode* node = static_cast( nodeIt->next() ); // node number and ID - myInfo->append( QString( "%1 %2/%3 - #%4" ).arg( SMESHGUI_ElemInfo::tr( "NODE" ) ).arg( idx ).arg( e->NbNodes() ).arg( node->GetID() ) ); + myInfo->append( QString( "%1 %2/%3 - #%4" ).arg( SMESHGUI_ElemInfo::tr( "NODE" )).arg( idx ).arg( e->NbNodes() ).arg( node->GetID() )); // node coordinates - myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "COORDINATES" ) ). - arg( node->X(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ). - arg( node->Y(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ). - arg( node->Z(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "COORDINATES" )). + arg( node->X(), 0, precision > 0 ? 'f' : 'g', qAbs( precision )). + arg( node->Y(), 0, precision > 0 ? 'f' : 'g', qAbs( precision )). + arg( node->Z(), 0, precision > 0 ? 'f' : 'g', qAbs( precision )) ); // node connectivity Connectivity connectivity = nodeConnectivity( node ); if ( !connectivity.isEmpty() ) { - myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "CONNECTIVITY" ) ) ); + myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "CONNECTIVITY" )) ); QString con = formatConnectivity( connectivity, SMDSAbs_0DElement ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Edge ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "EDGES" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "EDGES" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Face ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "FACES" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "FACES" )).arg( con )); con = formatConnectivity( connectivity, SMDSAbs_Volume ); if ( !con.isEmpty() ) - myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "VOLUMES" ) ).arg( con ) ); + myInfo->append( QString( "- %1: %2" ).arg( SMESHGUI_ElemInfo::tr( "VOLUMES" )).arg( con )); } else { - myInfo->append( QString( "%1" ).arg( SMESHGUI_ElemInfo::tr( "FREE_NODE" ) ).arg( id ) ); + myInfo->append( QString( "%1" ).arg( SMESHGUI_ElemInfo::tr( "FREE_NODE" )).arg( id )); } } // separator myInfo->append( "" ); // Controls - myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "CONTROLS" ) ) ); + myInfo->append( QString( "%1:" ).arg( SMESHGUI_ElemInfo::tr( "CONTROLS" )) ); //Length if ( e->GetType() == SMDSAbs_Edge ) { afunctor.reset( new SMESH::Controls::Length() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "LENGTH_EDGES" ) ).arg( afunctor->GetValue( id ) ) ); + myInfo->append( QString( "- %1: %2" ).arg( tr( "LENGTH_EDGES" )).arg( afunctor->GetValue( id )) ); } if( e->GetType() == SMDSAbs_Face ) { //Area afunctor.reset( new SMESH::Controls::Area() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - afunctor->SetPrecision( cprecision ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "AREA_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); + afunctor->SetPrecision( cprecision ); + myInfo->append( QString( "- %1: %2" ).arg( tr( "AREA_ELEMENTS" )).arg( afunctor->GetValue( id )) ); //Taper afunctor.reset( new SMESH::Controls::Taper() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "TAPER_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); + myInfo->append( QString( "- %1: %2" ).arg( tr( "TAPER_ELEMENTS" )).arg( afunctor->GetValue( id )) ); //AspectRatio2D afunctor.reset( new SMESH::Controls::AspectRatio() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "ASPECTRATIO_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); - //Minimum angle + myInfo->append( QString( "- %1: %2" ).arg( tr( "ASPECTRATIO_ELEMENTS" )).arg( afunctor->GetValue( id )) ); + //Minimum angle afunctor.reset( new SMESH::Controls::MinimumAngle() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "MINIMUMANGLE_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); - //Wraping angle + myInfo->append( QString( "- %1: %2" ).arg( tr( "MINIMUMANGLE_ELEMENTS" )).arg( afunctor->GetValue( id )) ); + //Warping angle afunctor.reset( new SMESH::Controls::Warping() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "WARP_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); - //Skew + myInfo->append( QString( "- %1: %2" ).arg( tr( "WARP_ELEMENTS" )).arg( afunctor->GetValue( id )) ); + //Skew afunctor.reset( new SMESH::Controls::Skew() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "SKEW_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); - //ElemDiam2D + myInfo->append( QString( "- %1: %2" ).arg( tr( "SKEW_ELEMENTS" )).arg( afunctor->GetValue( id )) ); + //ElemDiam2D afunctor.reset( new SMESH::Controls::MaxElementLength2D() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "MAX_ELEMENT_LENGTH_2D" ) ).arg( afunctor->GetValue( id ) ) ); + afunctor->SetPrecision( cprecision ); + myInfo->append( QString( "- %1: %2" ).arg( tr( "MAX_ELEMENT_LENGTH_2D" )).arg( afunctor->GetValue( id )) ); + //min edge length + afunctor.reset( new SMESH::Controls::Length2D() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + myInfo->append( QString( "- %1: %2" ).arg( tr( "MIN_ELEM_EDGE" )).arg( afunctor->GetValue( id )) ); } if( e->GetType() == SMDSAbs_Volume ) { //AspectRatio3D afunctor.reset( new SMESH::Controls::AspectRatio3D() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "ASPECTRATIO_3D_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); - //Volume + myInfo->append( QString( "- %1: %2" ).arg( tr( "ASPECTRATIO_3D_ELEMENTS" )).arg( afunctor->GetValue( id )) ); + //Volume afunctor.reset( new SMESH::Controls::Volume() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "VOLUME_3D_ELEMENTS" ) ).arg( afunctor->GetValue( id ) ) ); - //ElementDiameter3D + myInfo->append( QString( "- %1: %2" ).arg( tr( "VOLUME_3D_ELEMENTS" )).arg( afunctor->GetValue( id )) ); + //ElementDiameter3D afunctor.reset( new SMESH::Controls::Volume() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - myInfo->append( QString( "- %1: %2" ).arg( tr( "MAX_ELEMENT_LENGTH_3D" ) ).arg( afunctor->GetValue( id ) ) ); + myInfo->append( QString( "- %1: %2" ).arg( tr( "MAX_ELEMENT_LENGTH_3D" )).arg( afunctor->GetValue( id )) ); } // separator myInfo->append( "" ); // Gravity center XYZ gc = gravityCenter( e ); - myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "GRAVITY_CENTER" ) ).arg( gc.x() ).arg( gc.y() ).arg( gc.z() ) ); - + myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "GRAVITY_CENTER" )).arg( gc.x() ).arg( gc.y() ).arg( gc.z() )); + // Normal vector if( e->GetType() == SMDSAbs_Face ) { XYZ gc = normal( e ); - myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" ) ).arg( gc.x() ).arg( gc.y() ).arg( gc.z() ) ); + myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" )).arg( gc.x() ).arg( gc.y() ).arg( gc.z() )); } // Element position if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) { - SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); - if ( !CORBA::is_nil( aMesh ) ) { + SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); + if ( !CORBA::is_nil( aMesh )) { SMESH::ElementPosition pos = aMesh->GetElementPosition( id ); int shapeID = pos.shapeID; if ( shapeID > 0 ) { @@ -1517,59 +1532,59 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) case GEOM::SHELL: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_SHELL" ); break; default: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_SHAPE" ); break; } - myInfo->append( QString( "%1: %2 #%3" ).arg( SMESHGUI_ElemInfo::tr( "POSITION" ) ).arg( shapeType ).arg( shapeID ) ); + myInfo->append( QString( "%1: %2 #%3" ).arg( SMESHGUI_ElemInfo::tr( "POSITION" )).arg( shapeType ).arg( shapeID )); } } } // Groups the element belongs to SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); - if ( !CORBA::is_nil( aMesh ) ) { + if ( !CORBA::is_nil( aMesh )) { SMESH::ListOfGroups_var groups = aMesh->GetGroups(); myInfo->append( "" ); // separator bool top_created = false; - for ( int i = 0; i < groups->length(); i++ ) { + for ( CORBA::ULong i = 0; i < groups->length(); i++ ) { SMESH::SMESH_GroupBase_var aGrp = groups[i]; - if ( CORBA::is_nil( aGrp ) ) continue; + if ( CORBA::is_nil( aGrp )) continue; QString aName = aGrp->GetName(); - if ( aGrp->GetType() != SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id ) ) { + if ( aGrp->GetType() != SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id )) { if ( !top_created ) { - myInfo->append( QString( "%1:" ).arg( SMESHGUI_AddInfo::tr( "GROUPS" ) ) ); + myInfo->append( QString( "%1:" ).arg( SMESHGUI_AddInfo::tr( "GROUPS" )) ); top_created = true; } - myInfo->append( QString( "+ %1:" ).arg( aName.trimmed() ) ); + myInfo->append( QString( "+ %1:" ).arg( aName.trimmed() )); if ( grp_details ) { SMESH::SMESH_Group_var aStdGroup = SMESH::SMESH_Group::_narrow( aGrp ); SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( aGrp ); SMESH::SMESH_GroupOnFilter_var aFltGroup = SMESH::SMESH_GroupOnFilter::_narrow( aGrp ); - + // type : group on geometry, standalone group, group on filter - if ( !CORBA::is_nil( aStdGroup ) ) { - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" ) ) ); + if ( !CORBA::is_nil( aStdGroup )) { + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" )) ); } - else if ( !CORBA::is_nil( aGeomGroup ) ) { - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" ) ) ); + else if ( !CORBA::is_nil( aGeomGroup )) { + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" )) ); GEOM::GEOM_Object_var gobj = aGeomGroup->GetShape(); _PTR(SObject) sobj = SMESH::ObjectToSObject( gobj ); if ( sobj ) { - myInfo->append( QString( " - %1: %2: %3" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "GEOM_OBJECT" ) ).arg( sobj->GetName().c_str() ) ); + myInfo->append( QString( " - %1: %2: %3" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "GEOM_OBJECT" )).arg( sobj->GetName().c_str() )); } } - else if ( !CORBA::is_nil( aFltGroup ) ) { - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" ) ). - arg( SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" ) ) ); + else if ( !CORBA::is_nil( aFltGroup )) { + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "TYPE" )). + arg( SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" )) ); } - - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "SIZE" ) ). - arg( QString::number( aGrp->Size() ) ) ); - + + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "SIZE" )). + arg( QString::number( aGrp->Size() )) ); + // color SALOMEDS::Color color = aGrp->GetColor(); - myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "COLOR" ) ). - arg( QColor( color.R*255., color.G*255., color.B*255. ).name() ) ); + myInfo->append( QString( " - %1: %2" ).arg( SMESHGUI_AddInfo::tr( "COLOR" )). + arg( QColor( color.R*255., color.G*255., color.B*255. ).name() )); } } } @@ -1630,7 +1645,7 @@ SMESHGUI_TreeElemInfo::ItemDelegate::ItemDelegate( QObject* parent ) : QItemDele QWidget* SMESHGUI_TreeElemInfo::ItemDelegate::createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const { QWidget* w = index.column() == 0 ? 0: QItemDelegate::createEditor( parent, option, index ); - if ( qobject_cast( w ) ) qobject_cast( w )->setReadOnly( true ); + if ( qobject_cast( w )) qobject_cast( w )->setReadOnly( true ); return w; } @@ -1644,18 +1659,24 @@ QWidget* SMESHGUI_TreeElemInfo::ItemDelegate::createEditor( QWidget* parent, con \param parent parent widget */ SMESHGUI_TreeElemInfo::SMESHGUI_TreeElemInfo( QWidget* parent ) -: SMESHGUI_ElemInfo( parent ) + : SMESHGUI_ElemInfo( parent ) { myInfo = new QTreeWidget( frame() ); myInfo->setColumnCount( 2 ); - myInfo->setHeaderLabels( QStringList() << tr( "PROPERTY" ) << tr( "VALUE" ) ); + myInfo->setHeaderLabels( QStringList() << tr( "PROPERTY" ) << tr( "VALUE" )); myInfo->header()->setStretchLastSection( true ); +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) myInfo->header()->setResizeMode( 0, QHeaderView::ResizeToContents ); - myInfo->setItemDelegate( new ItemDelegate( myInfo ) ); +#else + myInfo->header()->setSectionResizeMode( 0, QHeaderView::ResizeToContents ); +#endif + myInfo->setItemDelegate( new ItemDelegate( myInfo )); QVBoxLayout* l = new QVBoxLayout( frame() ); l->setMargin( 0 ); l->addWidget( myInfo ); - connect( myInfo, SIGNAL( itemDoubleClicked( QTreeWidgetItem*, int ) ), this, SLOT( itemDoubleClicked( QTreeWidgetItem*, int ) ) ); + connect( myInfo, SIGNAL( itemDoubleClicked( QTreeWidgetItem*, int )), this, SLOT( itemDoubleClicked( QTreeWidgetItem*, int )) ); + connect( myInfo, SIGNAL( itemCollapsed( QTreeWidgetItem* )), this, SLOT( saveExpanded( QTreeWidgetItem* )) ); + connect( myInfo, SIGNAL( itemExpanded( QTreeWidgetItem* )), this, SLOT( saveExpanded( QTreeWidgetItem* )) ); } /*! @@ -1670,7 +1691,7 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) int grp_details = SMESHGUI::resourceMgr()->booleanValue( "SMESH", "elem_info_grp_details", false ); int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 ); int cprecision = -1; - if ( SMESHGUI::resourceMgr()->booleanValue( "SMESH", "use_precision", false ) ) + if ( SMESHGUI::resourceMgr()->booleanValue( "SMESH", "use_precision", false )) cprecision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "controls_precision", -1 ); foreach ( long id, ids ) { if ( !isElements() ) { @@ -1683,71 +1704,71 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) // node ID QTreeWidgetItem* nodeItem = createItem( 0, Bold | All ); - nodeItem->setText( 0, SMESHGUI_ElemInfo::tr( "NODE" ) ); - nodeItem->setText( 1, QString( "#%1" ).arg( id ) ); + nodeItem->setText( 0, SMESHGUI_ElemInfo::tr( "NODE" )); + nodeItem->setText( 1, QString( "#%1" ).arg( id )); // coordinates QTreeWidgetItem* coordItem = createItem( nodeItem, Bold ); - coordItem->setText( 0, SMESHGUI_ElemInfo::tr( "COORDINATES" ) ); + coordItem->setText( 0, SMESHGUI_ElemInfo::tr( "COORDINATES" )); QTreeWidgetItem* xItem = createItem( coordItem ); xItem->setText( 0, "X" ); - xItem->setText( 1, QString::number( node->X(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + xItem->setText( 1, QString::number( node->X(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* yItem = createItem( coordItem ); yItem->setText( 0, "Y" ); - yItem->setText( 1, QString::number( node->Y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + yItem->setText( 1, QString::number( node->Y(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* zItem = createItem( coordItem ); zItem->setText( 0, "Z" ); - zItem->setText( 1, QString::number( node->Z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + zItem->setText( 1, QString::number( node->Z(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); // connectivity QTreeWidgetItem* conItem = createItem( nodeItem, Bold ); - conItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONNECTIVITY" ) ); + conItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONNECTIVITY" )); Connectivity connectivity = nodeConnectivity( node ); if ( !connectivity.isEmpty() ) { QString con = formatConnectivity( connectivity, SMDSAbs_0DElement ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( conItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" )); i->setText( 1, con ); } con = formatConnectivity( connectivity, SMDSAbs_Ball ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( conItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "BALL_ELEMENTS" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "BALL_ELEMENTS" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } con = formatConnectivity( connectivity, SMDSAbs_Edge ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( conItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "EDGES" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "EDGES" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } con = formatConnectivity( connectivity, SMDSAbs_Face ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( conItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "FACES" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "FACES" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } con = formatConnectivity( connectivity, SMDSAbs_Volume ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( conItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "VOLUMES" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "VOLUMES" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } } else { - conItem->setText( 1, SMESHGUI_ElemInfo::tr( "FREE_NODE" ) ); + conItem->setText( 1, SMESHGUI_ElemInfo::tr( "FREE_NODE" )); } // node position SMESH::SMESH_Mesh_ptr aMeshPtr = actor()->GetObject()->GetMeshServer(); - if ( !CORBA::is_nil( aMeshPtr ) ) { + if ( !CORBA::is_nil( aMeshPtr )) { SMESH::NodePosition_var pos = aMeshPtr->GetNodePosition( id ); int shapeID = pos->shapeID; if ( shapeID > 0 ) { QString shapeType; - double u, v; + double u = 0, v = 0; switch ( pos->shapeType ) { case GEOM::EDGE: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_EDGE" ); @@ -1785,17 +1806,17 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) } // groups node belongs to SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); - if ( !CORBA::is_nil( aMesh ) ) { + if ( !CORBA::is_nil( aMesh )) { SMESH::ListOfGroups_var groups = aMesh->GetGroups(); QTreeWidgetItem* groupsItem = 0; - for ( int i = 0; i < groups->length(); i++ ) { + for ( CORBA::ULong i = 0; i < groups->length(); i++ ) { SMESH::SMESH_GroupBase_var aGrp = groups[i]; - if ( CORBA::is_nil( aGrp ) ) continue; + if ( CORBA::is_nil( aGrp )) continue; QString aName = aGrp->GetName(); - if ( aGrp->GetType() == SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id ) ) { + if ( aGrp->GetType() == SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id )) { if ( !groupsItem ) { groupsItem = createItem( nodeItem, Bold ); - groupsItem->setText( 0, SMESHGUI_AddInfo::tr( "GROUPS" ) ); + groupsItem->setText( 0, SMESHGUI_AddInfo::tr( "GROUPS" )); } QTreeWidgetItem* it = createItem( groupsItem, Bold ); it->setText( 0, aName.trimmed() ); @@ -1806,34 +1827,34 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) // type : group on geometry, standalone group, group on filter QTreeWidgetItem* typeItem = createItem( it ); - typeItem->setText( 0, SMESHGUI_AddInfo::tr( "TYPE" ) ); - if ( !CORBA::is_nil( aStdGroup ) ) { - typeItem->setText( 1, SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" ) ); + typeItem->setText( 0, SMESHGUI_AddInfo::tr( "TYPE" )); + if ( !CORBA::is_nil( aStdGroup )) { + typeItem->setText( 1, SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" )); } - else if ( !CORBA::is_nil( aGeomGroup ) ) { - typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" ) ); + else if ( !CORBA::is_nil( aGeomGroup )) { + typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" )); GEOM::GEOM_Object_var gobj = aGeomGroup->GetShape(); _PTR(SObject) sobj = SMESH::ObjectToSObject( gobj ); if ( sobj ) { QTreeWidgetItem* gobjItem = createItem( typeItem ); - gobjItem->setText( 0, SMESHGUI_AddInfo::tr( "GEOM_OBJECT" ) ); + gobjItem->setText( 0, SMESHGUI_AddInfo::tr( "GEOM_OBJECT" )); gobjItem->setText( 1, sobj->GetName().c_str() ); } } - else if ( !CORBA::is_nil( aFltGroup ) ) { - typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" ) ); + else if ( !CORBA::is_nil( aFltGroup )) { + typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" )); } // size QTreeWidgetItem* sizeItem = createItem( it ); - sizeItem->setText( 0, SMESHGUI_AddInfo::tr( "SIZE" ) ); - sizeItem->setText( 1, QString::number( aGrp->Size() ) ); + sizeItem->setText( 0, SMESHGUI_AddInfo::tr( "SIZE" )); + sizeItem->setText( 1, QString::number( aGrp->Size() )); // color SALOMEDS::Color color = aGrp->GetColor(); QTreeWidgetItem* colorItem = createItem( it ); - colorItem->setText( 0, SMESHGUI_AddInfo::tr( "COLOR" ) ); - colorItem->setBackground( 1, QBrush( QColor( color.R*255., color.G*255., color.B*255.) ) ); + colorItem->setText( 0, SMESHGUI_AddInfo::tr( "COLOR" )); + colorItem->setBackground( 1, QBrush( QColor( color.R*255., color.G*255., color.B*255.) )); } } } @@ -1860,7 +1881,7 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) if ( stype.isEmpty() ) return; QTreeWidgetItem* elemItem = createItem( 0, Bold | All ); elemItem->setText( 0, stype ); - elemItem->setText( 1, QString( "#%1" ).arg( id ) ); + elemItem->setText( 1, QString( "#%1" ).arg( id )); // geometry type QString gtype; switch( e->GetEntityType() ) { @@ -1887,36 +1908,37 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) gtype = SMESHGUI_ElemInfo::tr( "HEXAHEDRON" ); break; case SMDSEntity_Penta: case SMDSEntity_Quad_Penta: + case SMDSEntity_BiQuad_Penta: gtype = SMESHGUI_ElemInfo::tr( "PRISM" ); break; case SMDSEntity_Hexagonal_Prism: gtype = SMESHGUI_ElemInfo::tr( "HEX_PRISM" ); break; case SMDSEntity_Polyhedra: case SMDSEntity_Quad_Polyhedra: gtype = SMESHGUI_ElemInfo::tr( "POLYHEDRON" ); break; - default: + default: break; } if ( !gtype.isEmpty() ) { QTreeWidgetItem* typeItem = createItem( elemItem, Bold ); - typeItem->setText( 0, SMESHGUI_ElemInfo::tr( "TYPE" ) ); + typeItem->setText( 0, SMESHGUI_ElemInfo::tr( "TYPE" )); typeItem->setText( 1, gtype ); } // quadratic flag (for edges, faces and volumes) if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) { // quadratic flag QTreeWidgetItem* quadItem = createItem( elemItem, Bold ); - quadItem->setText( 0, SMESHGUI_ElemInfo::tr( "QUADRATIC" ) ); - quadItem->setText( 1, e->IsQuadratic() ? SMESHGUI_ElemInfo::tr( "YES" ) : SMESHGUI_ElemInfo::tr( "NO" ) ); + quadItem->setText( 0, SMESHGUI_ElemInfo::tr( "QUADRATIC" )); + quadItem->setText( 1, e->IsQuadratic() ? SMESHGUI_ElemInfo::tr( "YES" ) : SMESHGUI_ElemInfo::tr( "NO" )); } - if ( const SMDS_BallElement* ball = dynamic_cast( e )) { + if ( const SMDS_BallElement* ball = SMDS_Mesh::DownCast< SMDS_BallElement >( e )) { // ball diameter QTreeWidgetItem* diamItem = createItem( elemItem, Bold ); - diamItem->setText( 0, SMESHGUI_ElemInfo::tr( "BALL_DIAMETER" ) ); + diamItem->setText( 0, SMESHGUI_ElemInfo::tr( "BALL_DIAMETER" )); diamItem->setText( 1, QString( "%1" ).arg( ball->GetDiameter() )); } // connectivity QTreeWidgetItem* conItem = createItem( elemItem, Bold ); - conItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONNECTIVITY" ) ); + conItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONNECTIVITY" )); if( e->GetGeomType() != SMDSGeom_POLYHEDRA ) { @@ -1927,143 +1949,178 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) } } else { - const SMDS_VtkVolume* aVtkVolume = dynamic_cast(e); - SMDS_ElemIteratorPtr nodeIt = aVtkVolume->uniqueNodesIterator(); + SMDS_NodeIteratorPtr nodeIt = e->nodeIterator(); + std::set< const SMDS_MeshNode* > addedNodes; QList uniqueNodes; - while ( nodeIt->more() ) - uniqueNodes.append( nodeIt->next() ); - + while ( nodeIt->more() ) { + const SMDS_MeshNode* node = nodeIt->next(); + if ( addedNodes.insert( node ).second ) + uniqueNodes.append( nodeIt->next() ); + } SMDS_VolumeTool vtool( e ); const int nbFaces = vtool.NbFaces(); for( int face_id = 0; face_id < nbFaces; face_id++ ) { QTreeWidgetItem* faceItem = createItem( conItem, Bold ); - faceItem->setText( 0, QString( "%1 %2 / %3" ).arg( SMESHGUI_ElemInfo::tr( "FACE" ) ).arg( face_id + 1 ).arg( nbFaces ) ); + faceItem->setText( 0, QString( "%1 %2 / %3" ).arg( SMESHGUI_ElemInfo::tr( "FACE" )).arg( face_id + 1 ).arg( nbFaces )); faceItem->setExpanded( true ); const SMDS_MeshNode** aNodeIds = vtool.GetFaceNodes( face_id ); - const int nbNodes = vtool.NbFaceNodes( face_id ); + const int nbNodes = vtool.NbFaceNodes ( face_id ); for( int node_id = 0; node_id < nbNodes; node_id++ ) { const SMDS_MeshNode* node = aNodeIds[node_id]; - nodeInfo( node, uniqueNodes.indexOf(node) + 1, aVtkVolume->NbUniqueNodes(), faceItem ); + nodeInfo( node, uniqueNodes.indexOf(node) + 1, uniqueNodes.size(), faceItem ); } } } //Controls QTreeWidgetItem* cntrItem = createItem( elemItem, Bold ); - cntrItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONTROLS" ) ); + cntrItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONTROLS" )); //Length - if( e->GetType()==SMDSAbs_Edge){ + if( e->GetType()==SMDSAbs_Edge){ afunctor.reset( new SMESH::Controls::Length() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); QTreeWidgetItem* lenItem = createItem( cntrItem, Bold ); - lenItem->setText( 0, tr( "LENGTH_EDGES" ) ); - lenItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + lenItem->setText( 0, tr( "LENGTH_EDGES" )); + lenItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); } if( e->GetType() == SMDSAbs_Face ) { - //Area - afunctor.reset( new SMESH::Controls::Area() ); + //Area + afunctor.reset( new SMESH::Controls::Area() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); QTreeWidgetItem* areaItem = createItem( cntrItem, Bold ); - areaItem->setText( 0, tr( "AREA_ELEMENTS" ) ); - areaItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue(id) ) ); + areaItem->setText( 0, tr( "AREA_ELEMENTS" )); + areaItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue(id) )); //Taper - afunctor.reset( new SMESH::Controls::Taper() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - afunctor->SetPrecision( cprecision ); - QTreeWidgetItem* taperlItem = createItem( cntrItem, Bold ); - taperlItem->setText( 0, tr( "TAPER_ELEMENTS" ) ); - taperlItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + if ( e->NbNodes() == 4 ) // see SMESH_Controls.cxx + { + afunctor.reset( new SMESH::Controls::Taper() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + afunctor->SetPrecision( cprecision ); + QTreeWidgetItem* taperlItem = createItem( cntrItem, Bold ); + taperlItem->setText( 0, tr( "TAPER_ELEMENTS" )); + taperlItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + //Warping angle + afunctor.reset( new SMESH::Controls::Warping() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + afunctor->SetPrecision( cprecision ); + QTreeWidgetItem* warpItem = createItem( cntrItem, Bold ); + warpItem->setText( 0, tr( "WARP_ELEMENTS" )); + warpItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + } //AspectRatio2D - afunctor.reset( new SMESH::Controls::AspectRatio() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - QTreeWidgetItem* ratlItem = createItem( cntrItem, Bold ); - ratlItem->setText( 0, tr( "ASPECTRATIO_ELEMENTS" )); - ratlItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + if ( !e->IsPoly() ) + { + afunctor.reset( new SMESH::Controls::AspectRatio() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + QTreeWidgetItem* ratlItem = createItem( cntrItem, Bold ); + ratlItem->setText( 0, tr( "ASPECTRATIO_ELEMENTS" )); + ratlItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + } //Minimum angle afunctor.reset( new SMESH::Controls::MinimumAngle() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetPrecision( cprecision ); QTreeWidgetItem* minanglItem = createItem( cntrItem, Bold ); - minanglItem->setText( 0, tr( "MINIMUMANGLE_ELEMENTS" ) ); - minanglItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); - //Wraping angle - afunctor.reset( new SMESH::Controls::Warping() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - afunctor->SetPrecision( cprecision ); - QTreeWidgetItem* warpItem = createItem( cntrItem, Bold ); - warpItem->setText( 0, tr( "WARP_ELEMENTS" )); - warpItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); - //Skew - afunctor.reset( new SMESH::Controls::Skew() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - afunctor->SetPrecision( cprecision ); - QTreeWidgetItem* skewItem = createItem( cntrItem, Bold ); - skewItem->setText( 0, tr( "SKEW_ELEMENTS" ) ); - skewItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); - //ElemDiam2D - afunctor.reset( new SMESH::Controls::MaxElementLength2D() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - QTreeWidgetItem* diamItem = createItem( cntrItem, Bold ); - diamItem->setText( 0, tr( "MAX_ELEMENT_LENGTH_2D" )); - diamItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + minanglItem->setText( 0, tr( "MINIMUMANGLE_ELEMENTS" )); + minanglItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + //Skew + if ( e->NbNodes() == 3 || e->NbNodes() == 4 ) + { + afunctor.reset( new SMESH::Controls::Skew() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + afunctor->SetPrecision( cprecision ); + QTreeWidgetItem* skewItem = createItem( cntrItem, Bold ); + skewItem->setText( 0, tr( "SKEW_ELEMENTS" )); + skewItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + } + //Deflection + if ( hasShapeToMesh() ) + { + afunctor.reset( new SMESH::Controls::Deflection2D() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + QTreeWidgetItem* deflItem = createItem( cntrItem, Bold ); + deflItem->setText( 0, tr( "DEFLECTION_2D" )); + deflItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + } + //ElemDiam2D + if ( !e->IsPoly() ) + { + afunctor.reset( new SMESH::Controls::MaxElementLength2D() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + QTreeWidgetItem* diamItem = createItem( cntrItem, Bold ); + diamItem->setText( 0, tr( "MAX_ELEMENT_LENGTH_2D" )); + diamItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + } } if( e->GetType() == SMDSAbs_Volume ) { - //AspectRatio3D - afunctor.reset( new SMESH::Controls::AspectRatio3D() ); - afunctor->SetMesh( actor()->GetObject()->GetMesh() ); - QTreeWidgetItem* ratlItem3 = createItem( cntrItem, Bold ); - ratlItem3->setText( 0, tr( "ASPECTRATIO_3D_ELEMENTS" ) ); - ratlItem3->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + if ( !e->IsPoly() ) + { + //AspectRatio3D + afunctor.reset( new SMESH::Controls::AspectRatio3D() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + QTreeWidgetItem* ratlItem3 = createItem( cntrItem, Bold ); + ratlItem3->setText( 0, tr( "ASPECTRATIO_3D_ELEMENTS" )); + ratlItem3->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); + } //Volume afunctor.reset( new SMESH::Controls::Volume() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); QTreeWidgetItem* volItem = createItem( cntrItem, Bold ); - volItem->setText( 0, tr( "VOLUME_3D_ELEMENTS" ) ); - volItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + volItem->setText( 0, tr( "VOLUME_3D_ELEMENTS" )); + volItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); //ElementDiameter3D afunctor.reset( new SMESH::Controls::MaxElementLength3D() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() ); QTreeWidgetItem* diam3Item = createItem( cntrItem, Bold ); - diam3Item->setText( 0, tr( "MAX_ELEMENT_LENGTH_3D" ) ); - diam3Item->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id ) ) ); + diam3Item->setText( 0, tr( "MAX_ELEMENT_LENGTH_3D" )); + diam3Item->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); } + //min edge length + afunctor.reset( new SMESH::Controls::Length2D() ); + afunctor->SetMesh( actor()->GetObject()->GetMesh() ); + QTreeWidgetItem* minEdgeItem = createItem( cntrItem, Bold ); + minEdgeItem->setText( 0, tr( "MIN_ELEM_EDGE" )); + SMESH::Controls::TSequenceOfXYZ points; + afunctor->GetPoints( e, points ); // "non-standard" way, to make it work for all elem types + minEdgeItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( points )) ); + // gravity center XYZ gc = gravityCenter( e ); QTreeWidgetItem* gcItem = createItem( elemItem, Bold ); - gcItem->setText( 0, SMESHGUI_ElemInfo::tr( "GRAVITY_CENTER" ) ); + gcItem->setText( 0, SMESHGUI_ElemInfo::tr( "GRAVITY_CENTER" )); QTreeWidgetItem* xItem = createItem( gcItem ); xItem->setText( 0, "X" ); - xItem->setText( 1, QString::number( gc.x(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + xItem->setText( 1, QString::number( gc.x(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* yItem = createItem( gcItem ); yItem->setText( 0, "Y" ); - yItem->setText( 1, QString::number( gc.y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + yItem->setText( 1, QString::number( gc.y(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* zItem = createItem( gcItem ); zItem->setText( 0, "Z" ); - zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); // normal vector if( e->GetType() == SMDSAbs_Face ) { XYZ gc = normal( e ); QTreeWidgetItem* nItem = createItem( elemItem, Bold ); - nItem->setText( 0, SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" ) ); + nItem->setText( 0, SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" )); QTreeWidgetItem* xItem = createItem( nItem ); xItem->setText( 0, "X" ); - xItem->setText( 1, QString::number( gc.x(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + xItem->setText( 1, QString::number( gc.x(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* yItem = createItem( nItem ); yItem->setText( 0, "Y" ); - yItem->setText( 1, QString::number( gc.y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + yItem->setText( 1, QString::number( gc.y(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* zItem = createItem( nItem ); zItem->setText( 0, "Z" ); - zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); } // element position SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) { - if ( !CORBA::is_nil( aMesh ) ) { + if ( !CORBA::is_nil( aMesh )) { SMESH::ElementPosition pos = aMesh->GetElementPosition( id ); int shapeID = pos.shapeID; if ( shapeID > 0 ) { @@ -2077,23 +2134,23 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) case GEOM::SHELL: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_SHELL" ); break; default: shapeType = SMESHGUI_ElemInfo::tr( "GEOM_SHAPE" ); break; } - shItem->setText( 0, SMESHGUI_ElemInfo::tr( "POSITION" ) ); - shItem->setText( 1, QString( "%1 #%2" ).arg( shapeType ).arg( shapeID ) ); + shItem->setText( 0, SMESHGUI_ElemInfo::tr( "POSITION" )); + shItem->setText( 1, QString( "%1 #%2" ).arg( shapeType ).arg( shapeID )); } } } // groups element belongs to - if ( !CORBA::is_nil( aMesh ) ) { + if ( !CORBA::is_nil( aMesh )) { SMESH::ListOfGroups_var groups = aMesh->GetGroups(); QTreeWidgetItem* groupsItem = 0; - for ( int i = 0; i < groups->length(); i++ ) { + for ( CORBA::ULong i = 0; i < groups->length(); i++ ) { SMESH::SMESH_GroupBase_var aGrp = groups[i]; - if ( CORBA::is_nil( aGrp ) ) continue; + if ( CORBA::is_nil( aGrp )) continue; QString aName = aGrp->GetName(); - if ( aGrp->GetType() != SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id ) ) { + if ( aGrp->GetType() != SMESH::NODE && !aName.isEmpty() && aGrp->Contains( id )) { if ( !groupsItem ) { groupsItem = createItem( elemItem, Bold ); - groupsItem->setText( 0, SMESHGUI_AddInfo::tr( "GROUPS" ) ); + groupsItem->setText( 0, SMESHGUI_AddInfo::tr( "GROUPS" )); } QTreeWidgetItem* it = createItem( groupsItem, Bold ); it->setText( 0, aName.trimmed() ); @@ -2104,34 +2161,34 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) // type : group on geometry, standalone group, group on filter QTreeWidgetItem* typeItem = createItem( it ); - typeItem->setText( 0, SMESHGUI_AddInfo::tr( "TYPE" ) ); - if ( !CORBA::is_nil( aStdGroup ) ) { - typeItem->setText( 1, SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" ) ); + typeItem->setText( 0, SMESHGUI_AddInfo::tr( "TYPE" )); + if ( !CORBA::is_nil( aStdGroup )) { + typeItem->setText( 1, SMESHGUI_AddInfo::tr( "STANDALONE_GROUP" )); } - else if ( !CORBA::is_nil( aGeomGroup ) ) { - typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" ) ); + else if ( !CORBA::is_nil( aGeomGroup )) { + typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_GEOMETRY" )); GEOM::GEOM_Object_var gobj = aGeomGroup->GetShape(); _PTR(SObject) sobj = SMESH::ObjectToSObject( gobj ); if ( sobj ) { QTreeWidgetItem* gobjItem = createItem( typeItem ); - gobjItem->setText( 0, SMESHGUI_AddInfo::tr( "GEOM_OBJECT" ) ); + gobjItem->setText( 0, SMESHGUI_AddInfo::tr( "GEOM_OBJECT" )); gobjItem->setText( 1, sobj->GetName().c_str() ); } } - else if ( !CORBA::is_nil( aFltGroup ) ) { - typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" ) ); + else if ( !CORBA::is_nil( aFltGroup )) { + typeItem->setText( 1, SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" )); } // size QTreeWidgetItem* sizeItem = createItem( it ); - sizeItem->setText( 0, SMESHGUI_AddInfo::tr( "SIZE" ) ); - sizeItem->setText( 1, QString::number( aGrp->Size() ) ); + sizeItem->setText( 0, SMESHGUI_AddInfo::tr( "SIZE" )); + sizeItem->setText( 1, QString::number( aGrp->Size() )); // color SALOMEDS::Color color = aGrp->GetColor(); QTreeWidgetItem* colorItem = createItem( it ); - colorItem->setText( 0, SMESHGUI_AddInfo::tr( "COLOR" ) ); - colorItem->setBackground( 1, QBrush( QColor( color.R*255., color.G*255., color.B*255.) ) ); + colorItem->setText( 0, SMESHGUI_AddInfo::tr( "COLOR" )); + colorItem->setBackground( 1, QBrush( QColor( color.R*255., color.G*255., color.B*255.) )); } } } @@ -2154,59 +2211,59 @@ void SMESHGUI_TreeElemInfo::nodeInfo( const SMDS_MeshNode* node, int index, int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 ); // node number and ID QTreeWidgetItem* nodeItem = createItem( parentItem, Bold ); - nodeItem->setText( 0, QString( "%1 %2 / %3" ).arg( SMESHGUI_ElemInfo::tr( "NODE" ) ).arg( index ).arg( nbNodes ) ); - nodeItem->setText( 1, QString( "#%1" ).arg( node->GetID() ) ); + nodeItem->setText( 0, QString( "%1 %2 / %3" ).arg( SMESHGUI_ElemInfo::tr( "NODE" )).arg( index ).arg( nbNodes )); + nodeItem->setText( 1, QString( "#%1" ).arg( node->GetID() )); nodeItem->setData( 1, TypeRole, ElemConnectivity ); nodeItem->setData( 1, IdRole, node->GetID() ); nodeItem->setExpanded( false ); // node coordinates QTreeWidgetItem* coordItem = createItem( nodeItem ); - coordItem->setText( 0, SMESHGUI_ElemInfo::tr( "COORDINATES" ) ); + coordItem->setText( 0, SMESHGUI_ElemInfo::tr( "COORDINATES" )); QTreeWidgetItem* xItem = createItem( coordItem ); xItem->setText( 0, "X" ); - xItem->setText( 1, QString::number( node->X(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + xItem->setText( 1, QString::number( node->X(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* yItem = createItem( coordItem ); yItem->setText( 0, "Y" ); - yItem->setText( 1, QString::number( node->Y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + yItem->setText( 1, QString::number( node->Y(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); QTreeWidgetItem* zItem = createItem( coordItem ); zItem->setText( 0, "Z" ); - zItem->setText( 1, QString::number( node->Z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + zItem->setText( 1, QString::number( node->Z(), precision > 0 ? 'f' : 'g', qAbs( precision )) ); // node connectivity QTreeWidgetItem* nconItem = createItem( nodeItem ); - nconItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONNECTIVITY" ) ); + nconItem->setText( 0, SMESHGUI_ElemInfo::tr( "CONNECTIVITY" )); Connectivity connectivity = nodeConnectivity( node ); if ( !connectivity.isEmpty() ) { QString con = formatConnectivity( connectivity, SMDSAbs_0DElement ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( nconItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "0D_ELEMENTS" )); i->setText( 1, con ); } con = formatConnectivity( connectivity, SMDSAbs_Edge ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( nconItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "EDGES" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "EDGES" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } con = formatConnectivity( connectivity, SMDSAbs_Ball ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( nconItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "BALL_ELEMENTS" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "BALL_ELEMENTS" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } con = formatConnectivity( connectivity, SMDSAbs_Face ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( nconItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "FACES" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "FACES" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } con = formatConnectivity( connectivity, SMDSAbs_Volume ); if ( !con.isEmpty() ) { QTreeWidgetItem* i = createItem( nconItem ); - i->setText( 0, SMESHGUI_ElemInfo::tr( "VOLUMES" ) ); + i->setText( 0, SMESHGUI_ElemInfo::tr( "VOLUMES" )); i->setText( 1, con ); i->setData( 1, TypeRole, NodeConnectivity ); } @@ -2240,10 +2297,16 @@ QTreeWidgetItem* SMESHGUI_TreeElemInfo::createItem( QTreeWidgetItem* parent, int QFont f = item->font( 0 ); f.setBold( true ); for ( int i = 0; i < myInfo->columnCount(); i++ ) { - if ( ( flags & Bold ) && ( i == 0 || flags & All ) ) + if ( ( flags & Bold ) && ( i == 0 || flags & All )) item->setFont( i, f ); } + if ( parent && parent->childCount() == 1 && itemDepth( parent ) == 1 ) + { + QString resName = expandedResource( parent ); + parent->setExpanded( SMESHGUI::resourceMgr()->booleanValue("SMESH", resName, true )); + } + item->setExpanded( true ); return item; } @@ -2256,25 +2319,36 @@ void SMESHGUI_TreeElemInfo::contextMenuEvent( QContextMenuEvent* e ) int type = aTreeItem->data( 1, TypeRole ).toInt(); int id = aTreeItem->data( 1, IdRole ).toInt(); QMenu menu; - QAction* a = menu.addAction( tr( "SHOW_ITEM_INFO" ) ); + QAction* a = menu.addAction( tr( "SHOW_ITEM_INFO" )); if ( type == ElemConnectivity && id > 0 && menu.exec( e->globalPos() ) == a ) - emit( itemInfo( id ) ); + emit( itemInfo( id )); else if ( type == NodeConnectivity && menu.exec( e->globalPos() ) == a ) - emit( itemInfo( aTreeItem->text( 1 ) ) ); + emit( itemInfo( aTreeItem->text( 1 )) ); } -void SMESHGUI_TreeElemInfo::itemDoubleClicked( QTreeWidgetItem* theItem, int theColumn ) +void SMESHGUI_TreeElemInfo::itemDoubleClicked( QTreeWidgetItem* theItem, int theColumn ) { if ( theItem ) { int type = theItem->data( 1, TypeRole ).toInt(); int id = theItem->data( 1, IdRole ).toInt(); if ( type == ElemConnectivity && id > 0 ) - emit( itemInfo( id ) ); + emit( itemInfo( id )); else if ( type == NodeConnectivity ) - emit( itemInfo( theItem->text( 1 ) ) ); + emit( itemInfo( theItem->text( 1 )) ); } } +void SMESHGUI_TreeElemInfo::saveExpanded( QTreeWidgetItem* theItem ) +{ + if ( theItem ) + SMESHGUI::resourceMgr()->setValue("SMESH", expandedResource( theItem ), theItem->isExpanded() ); +} + +QString SMESHGUI_TreeElemInfo::expandedResource( QTreeWidgetItem* theItem ) +{ + return QString("Expanded_") + ( isElements() ? "E_" : "N_" ) + theItem->text(0); +} + void SMESHGUI_TreeElemInfo::saveInfo( QTextStream &out ) { out << QString( 12, '-' ) << "\n"; @@ -2303,7 +2377,7 @@ void SMESHGUI_TreeElemInfo::saveInfo( QTextStream &out ) */ /*! - \brief Contructor + \brief Constructor */ GrpComputor::GrpComputor( SMESH::SMESH_GroupBase_ptr grp, QTreeWidgetItem* item, @@ -2320,6 +2394,7 @@ GrpComputor::GrpComputor( SMESH::SMESH_GroupBase_ptr grp, void GrpComputor::compute() { if ( !CORBA::is_nil( myGroup ) && myItem ) { + SUIT_OverrideCursor wc; QTreeWidgetItem* item = myItem; myItem = 0; int nb = myToComputeSize ? myGroup->Size() : myGroup->GetNumberOfNodes(); @@ -2338,11 +2413,15 @@ void GrpComputor::compute() \param parent parent widget */ SMESHGUI_AddInfo::SMESHGUI_AddInfo( QWidget* parent ) -: QTreeWidget( parent ) + : QTreeWidget( parent ) { setColumnCount( 2 ); header()->setStretchLastSection( true ); +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) header()->setResizeMode( 0, QHeaderView::ResizeToContents ); +#else + header()->setSectionResizeMode( 0, QHeaderView::ResizeToContents ); +#endif header()->hide(); } @@ -2364,14 +2443,14 @@ void SMESHGUI_AddInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myComputors.clear(); clear(); - if ( CORBA::is_nil( obj ) ) return; + if ( CORBA::is_nil( obj )) return; _PTR(SObject) sobj = SMESH::ObjectToSObject( obj ); if ( !sobj ) return; // name QTreeWidgetItem* nameItem = createItem( 0, Bold | All ); - nameItem->setText( 0, tr( "NAME" ) ); + nameItem->setText( 0, tr( "NAME" )); nameItem->setText( 1, sobj->GetName().c_str() ); SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( obj ); @@ -2406,7 +2485,7 @@ QTreeWidgetItem* SMESHGUI_AddInfo::createItem( QTreeWidgetItem* parent, int flag QFont f = item->font( 0 ); f.setBold( true ); for ( int i = 0; i < columnCount(); i++ ) { - if ( ( flags & Bold ) && ( i == 0 || flags & All ) ) + if ( ( flags & Bold ) && ( i == 0 || flags & All )) item->setFont( i, f ); } @@ -2425,24 +2504,24 @@ void SMESHGUI_AddInfo::meshInfo( SMESH::SMESH_Mesh_ptr mesh, QTreeWidgetItem* pa GEOM::GEOM_Object_var shape = mesh->GetShapeToMesh(); SMESH::MedFileInfo_var inf = mesh->GetMEDFileInfo(); QTreeWidgetItem* typeItem = createItem( parent, Bold ); - typeItem->setText( 0, tr( "TYPE" ) ); - if ( !CORBA::is_nil( shape ) ) { - typeItem->setText( 1, tr( "MESH_ON_GEOMETRY" ) ); + typeItem->setText( 0, tr( "TYPE" )); + if ( !CORBA::is_nil( shape )) { + typeItem->setText( 1, tr( "MESH_ON_GEOMETRY" )); _PTR(SObject) sobj = SMESH::ObjectToSObject( shape ); if ( sobj ) { QTreeWidgetItem* gobjItem = createItem( typeItem ); - gobjItem->setText( 0, tr( "GEOM_OBJECT" ) ); + gobjItem->setText( 0, tr( "GEOM_OBJECT" )); gobjItem->setText( 1, sobj->GetName().c_str() ); } } else if ( strlen( (char*)inf->fileName ) > 0 ) { - typeItem->setText( 1, tr( "MESH_FROM_FILE" ) ); + typeItem->setText( 1, tr( "MESH_FROM_FILE" )); QTreeWidgetItem* fileItem = createItem( typeItem ); - fileItem->setText( 0, tr( "FILE_NAME" ) ); + fileItem->setText( 0, tr( "FILE_NAME" )); fileItem->setText( 1, (char*)inf->fileName ); } else { - typeItem->setText( 1, tr( "STANDALONE_MESH" ) ); + typeItem->setText( 1, tr( "STANDALONE_MESH" )); } // groups @@ -2468,7 +2547,7 @@ void SMESHGUI_AddInfo::subMeshInfo( SMESH::SMESH_subMesh_ptr subMesh, QTreeWidge _PTR(SObject) sobj = SMESH::ObjectToSObject( subMesh->GetFather() ); if ( sobj ) { QTreeWidgetItem* nameItem = createItem( parent, Bold ); - nameItem->setText( 0, tr( "PARENT_MESH" ) ); + nameItem->setText( 0, tr( "PARENT_MESH" )); nameItem->setText( 1, sobj->GetName().c_str() ); } } @@ -2478,7 +2557,7 @@ void SMESHGUI_AddInfo::subMeshInfo( SMESH::SMESH_subMesh_ptr subMesh, QTreeWidge _PTR(SObject) sobj = SMESH::ObjectToSObject( gobj ); if ( sobj ) { QTreeWidgetItem* gobjItem = createItem( parent, Bold ); - gobjItem->setText( 0, tr( "GEOM_OBJECT" ) ); + gobjItem->setText( 0, tr( "GEOM_OBJECT" )); gobjItem->setText( 1, sobj->GetName().c_str() ); } } @@ -2501,29 +2580,29 @@ void SMESHGUI_AddInfo::groupInfo( SMESH::SMESH_GroupBase_ptr grp, QTreeWidgetIte _PTR(SObject) sobj = SMESH::ObjectToSObject( grp->GetMesh() ); if ( sobj ) { QTreeWidgetItem* nameItem = createItem( parent, Bold ); - nameItem->setText( 0, tr( "PARENT_MESH" ) ); + nameItem->setText( 0, tr( "PARENT_MESH" )); nameItem->setText( 1, sobj->GetName().c_str() ); } } // type : group on geometry, standalone group, group on filter QTreeWidgetItem* typeItem = createItem( parent, Bold ); - typeItem->setText( 0, tr( "TYPE" ) ); - if ( !CORBA::is_nil( aStdGroup ) ) { - typeItem->setText( 1, tr( "STANDALONE_GROUP" ) ); + typeItem->setText( 0, tr( "TYPE" )); + if ( !CORBA::is_nil( aStdGroup )) { + typeItem->setText( 1, tr( "STANDALONE_GROUP" )); } - else if ( !CORBA::is_nil( aGeomGroup ) ) { - typeItem->setText( 1, tr( "GROUP_ON_GEOMETRY" ) ); + else if ( !CORBA::is_nil( aGeomGroup )) { + typeItem->setText( 1, tr( "GROUP_ON_GEOMETRY" )); GEOM::GEOM_Object_var gobj = aGeomGroup->GetShape(); _PTR(SObject) sobj = SMESH::ObjectToSObject( gobj ); if ( sobj ) { QTreeWidgetItem* gobjItem = createItem( typeItem ); - gobjItem->setText( 0, tr( "GEOM_OBJECT" ) ); + gobjItem->setText( 0, tr( "GEOM_OBJECT" )); gobjItem->setText( 1, sobj->GetName().c_str() ); } } - else if ( !CORBA::is_nil( aFltGroup ) ) { - typeItem->setText( 1, tr( "GROUP_ON_FILTER" ) ); + else if ( !CORBA::is_nil( aFltGroup )) { + typeItem->setText( 1, tr( "GROUP_ON_FILTER" )); } if ( !isShort ) { @@ -2552,7 +2631,7 @@ void SMESHGUI_AddInfo::groupInfo( SMESH::SMESH_GroupBase_ptr grp, QTreeWidgetIte break; } QTreeWidgetItem* etypeItem = createItem( parent, Bold ); - etypeItem->setText( 0, tr( "ENTITY_TYPE" ) ); + etypeItem->setText( 0, tr( "ENTITY_TYPE" )); etypeItem->setText( 1, etype ); } @@ -2565,44 +2644,44 @@ void SMESHGUI_AddInfo::groupInfo( SMESH::SMESH_GroupBase_ptr grp, QTreeWidgetIte groupSize = grp->Size(); QTreeWidgetItem* sizeItem = createItem( parent, Bold ); - sizeItem->setText( 0, tr( "SIZE" ) ); + sizeItem->setText( 0, tr( "SIZE" )); if ( groupSize > -1 ) { - sizeItem->setText( 1, QString::number( groupSize ) ); + sizeItem->setText( 1, QString::number( groupSize )); } else { QPushButton* btn = new QPushButton( tr( meshLoaded ? "COMPUTE" : "LOAD"), this ); setItemWidget( sizeItem, 1, btn ); GrpComputor* comp = new GrpComputor( grp, sizeItem, this, /*size=*/true ); - connect( btn, SIGNAL( clicked() ), comp, SLOT( compute() ) ); + connect( btn, SIGNAL( clicked() ), comp, SLOT( compute() )); myComputors.append( comp ); if ( !meshLoaded ) - connect( btn, SIGNAL( clicked() ), this, SLOT( changeLoadToCompute() ) ); + connect( btn, SIGNAL( clicked() ), this, SLOT( changeLoadToCompute() )); } // color SALOMEDS::Color color = grp->GetColor(); QTreeWidgetItem* colorItem = createItem( parent, Bold ); - colorItem->setText( 0, tr( "COLOR" ) ); - colorItem->setBackground( 1, QBrush( QColor( color.R*255., color.G*255., color.B*255.) ) ); + colorItem->setText( 0, tr( "COLOR" )); + colorItem->setBackground( 1, QBrush( QColor( color.R*255., color.G*255., color.B*255.) )); // nb of underlying nodes if ( grp->GetType() != SMESH::NODE) { QTreeWidgetItem* nodesItem = createItem( parent, Bold ); - nodesItem->setText( 0, tr( "NB_NODES" ) ); + nodesItem->setText( 0, tr( "NB_NODES" )); int nbNodesLimit = SMESHGUI::resourceMgr()->integerValue( "SMESH", "info_groups_nodes_limit", 100000 ); bool toShowNodes = groupSize >= 0 ? ( grp->IsNodeInfoAvailable() || nbNodesLimit <= 0 || groupSize <= nbNodesLimit ) : false; if ( toShowNodes && meshLoaded ) { // already calculated and up-to-date - nodesItem->setText( 1, QString::number( grp->GetNumberOfNodes() ) ); + nodesItem->setText( 1, QString::number( grp->GetNumberOfNodes() )); } else { QPushButton* btn = new QPushButton( tr( meshLoaded ? "COMPUTE" : "LOAD"), this ); setItemWidget( nodesItem, 1, btn ); GrpComputor* comp = new GrpComputor( grp, nodesItem, this ); - connect( btn, SIGNAL( clicked() ), comp, SLOT( compute() ) ); + connect( btn, SIGNAL( clicked() ), comp, SLOT( compute() )); myComputors.append( comp ); if ( !meshLoaded ) - connect( btn, SIGNAL( clicked() ), this, SLOT( changeLoadToCompute() ) ); + connect( btn, SIGNAL( clicked() ), this, SLOT( changeLoadToCompute() )); } } } @@ -2620,7 +2699,7 @@ void SMESHGUI_AddInfo::showGroups() for ( int i = 0; i < parent->childCount() && !itemGroups; i++ ) { if ( parent->child( i )->data( 0, Qt::UserRole ).toInt() == GROUPS_ID ) { itemGroups = parent->child( i ); - ExtraWidget* extra = dynamic_cast( itemWidget( itemGroups, 1 ) ); + ExtraWidget* extra = dynamic_cast( itemWidget( itemGroups, 1 )); if ( extra ) extra->updateControls( myGroups->length(), idx ); while ( itemGroups->childCount() ) delete itemGroups->child( 0 ); // clear child items @@ -2630,7 +2709,7 @@ void SMESHGUI_AddInfo::showGroups() QMap grpItems; for ( int i = idx*MAXITEMS ; i < qMin( (idx+1)*MAXITEMS, (int)myGroups->length() ); i++ ) { SMESH::SMESH_GroupBase_var grp = myGroups[i]; - if ( CORBA::is_nil( grp ) ) continue; + if ( CORBA::is_nil( grp )) continue; _PTR(SObject) grpSObj = SMESH::ObjectToSObject( grp ); if ( !grpSObj ) continue; @@ -2639,14 +2718,14 @@ void SMESHGUI_AddInfo::showGroups() if ( !itemGroups ) { // create top-level groups container item itemGroups = createItem( parent, Bold | All ); - itemGroups->setText( 0, tr( "GROUPS" ) ); + itemGroups->setText( 0, tr( "GROUPS" )); itemGroups->setData( 0, Qt::UserRole, GROUPS_ID ); // total number of groups > 10, show extra widgets for info browsing - if ( myGroups->length() > MAXITEMS ) { + if ((int) myGroups->length() > MAXITEMS ) { ExtraWidget* extra = new ExtraWidget( this, true ); - connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousGroups() ) ); - connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextGroups() ) ); + connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousGroups() )); + connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextGroups() )); setItemWidget( itemGroups, 1, extra ); extra->updateControls( myGroups->length(), idx ); } @@ -2654,7 +2733,7 @@ void SMESHGUI_AddInfo::showGroups() if ( grpItems.find( grpType ) == grpItems.end() ) { grpItems[ grpType ] = createItem( itemGroups, Bold | All ); - grpItems[ grpType ]->setText( 0, tr( QString( "GROUPS_%1" ).arg( grpType ).toLatin1().constData() ) ); + grpItems[ grpType ]->setText( 0, tr( QString( "GROUPS_%1" ).arg( grpType ).toLatin1().constData() )); itemGroups->insertChild( grpType-1, grpItems[ grpType ] ); } @@ -2678,7 +2757,7 @@ void SMESHGUI_AddInfo::showSubMeshes() for ( int i = 0; i < parent->childCount() && !itemSubMeshes; i++ ) { if ( parent->child( i )->data( 0, Qt::UserRole ).toInt() == SUBMESHES_ID ) { itemSubMeshes = parent->child( i ); - ExtraWidget* extra = dynamic_cast( itemWidget( itemSubMeshes, 1 ) ); + ExtraWidget* extra = dynamic_cast( itemWidget( itemSubMeshes, 1 )); if ( extra ) extra->updateControls( mySubMeshes->length(), idx ); while ( itemSubMeshes->childCount() ) delete itemSubMeshes->child( 0 ); // clear child items @@ -2688,26 +2767,26 @@ void SMESHGUI_AddInfo::showSubMeshes() QMap smItems; for ( int i = idx*MAXITEMS ; i < qMin( (idx+1)*MAXITEMS, (int)mySubMeshes->length() ); i++ ) { SMESH::SMESH_subMesh_var sm = mySubMeshes[i]; - if ( CORBA::is_nil( sm ) ) continue; + if ( CORBA::is_nil( sm )) continue; _PTR(SObject) smSObj = SMESH::ObjectToSObject( sm ); if ( !smSObj ) continue; GEOM::GEOM_Object_var gobj = sm->GetSubShape(); - if ( CORBA::is_nil(gobj ) ) continue; + if ( CORBA::is_nil(gobj )) continue; int smType = gobj->GetShapeType(); if ( smType == GEOM::COMPSOLID ) smType = GEOM::COMPOUND; if ( !itemSubMeshes ) { itemSubMeshes = createItem( parent, Bold | All ); - itemSubMeshes->setText( 0, tr( "SUBMESHES" ) ); + itemSubMeshes->setText( 0, tr( "SUBMESHES" )); itemSubMeshes->setData( 0, Qt::UserRole, SUBMESHES_ID ); // total number of sub-meshes > 10, show extra widgets for info browsing - if ( mySubMeshes->length() > MAXITEMS ) { + if ((int) mySubMeshes->length() > MAXITEMS ) { ExtraWidget* extra = new ExtraWidget( this, true ); - connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousSubMeshes() ) ); - connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextSubMeshes() ) ); + connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousSubMeshes() )); + connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextSubMeshes() )); setItemWidget( itemSubMeshes, 1, extra ); extra->updateControls( mySubMeshes->length(), idx ); } @@ -2715,7 +2794,7 @@ void SMESHGUI_AddInfo::showSubMeshes() if ( smItems.find( smType ) == smItems.end() ) { smItems[ smType ] = createItem( itemSubMeshes, Bold | All ); - smItems[ smType ]->setText( 0, tr( QString( "SUBMESHES_%1" ).arg( smType ).toLatin1().constData() ) ); + smItems[ smType ]->setText( 0, tr( QString( "SUBMESHES_%1" ).arg( smType ).toLatin1().constData() )); itemSubMeshes->insertChild( smType, smItems[ smType ] ); } @@ -2737,7 +2816,7 @@ void SMESHGUI_AddInfo::changeLoadToCompute() { if ( QTreeWidgetItem* item = myComputors[i]->getItem() ) { - if ( QPushButton* btn = qobject_cast( itemWidget ( item, 1 ) ) ) + if ( QPushButton* btn = qobject_cast( itemWidget ( item, 1 )) ) btn->setText( tr("COMPUTE") ); } } @@ -2780,7 +2859,7 @@ void SMESHGUI_AddInfo::saveInfo( QTextStream &out ) while ( *it ) { if ( !( ( *it )->text(0) ).isEmpty() ) { out << QString( SPACING_INFO * itemDepth( *it ), ' ' ) << ( *it )->text(0); - if ( ( *it )->text(0) == tr( "COLOR" ) ) { + if ( ( *it )->text(0) == tr( "COLOR" )) { out << ": " << ( ( ( *it )->background(1) ).color() ).name(); } else if ( !( ( *it )->text(1) ).isEmpty() ) out << ": " << ( *it )->text(1); @@ -2802,22 +2881,22 @@ void SMESHGUI_AddInfo::saveInfo( QTextStream &out ) \param page specifies the dialog page to be shown at the start-up */ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) -: QDialog( parent ), myActor( 0 ) + : QDialog( parent ), myActor( 0 ) { setModal( false ); setAttribute( Qt::WA_DeleteOnClose, true ); - setWindowTitle( tr( "MESH_INFO" ) ); + setWindowTitle( tr( "MESH_INFO" )); setSizeGripEnabled( true ); myTabWidget = new QTabWidget( this ); - // base info + // base info myBaseInfo = new SMESHGUI_MeshInfo( myTabWidget ); - myTabWidget->addTab( myBaseInfo, tr( "BASE_INFO" ) ); + myTabWidget->addTab( myBaseInfo, tr( "BASE_INFO" )); // elem info - + QWidget* w = new QWidget( myTabWidget ); myMode = new QButtonGroup( this ); @@ -2825,12 +2904,14 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) myMode->addButton( new QRadioButton( tr( "ELEM_MODE" ), w ), ElemMode ); myMode->button( NodeMode )->setChecked( true ); myID = new QLineEdit( w ); - myID->setValidator( new SMESHGUI_IdValidator( this ) ); + myID->setValidator( new SMESHGUI_IdValidator( this )); + myIDPreviewCheck = new QCheckBox( tr( "SHOW_IDS" ), w ); + myIDPreview = new SMESHGUI_IdPreview( SMESH::GetViewWindow( SMESHGUI::GetSMESHGUI() )); int mode = SMESHGUI::resourceMgr()->integerValue( "SMESH", "mesh_elem_info", 1 ); - mode = qMin( 1, qMax( 0, mode ) ); - - if ( mode == 0 ) + mode = qMin( 1, qMax( 0, mode )); + + if ( mode == 0 ) myElemInfo = new SMESHGUI_SimpleElemInfo( w ); else myElemInfo = new SMESHGUI_TreeElemInfo( w ); @@ -2840,20 +2921,21 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) elemLayout->setSpacing( SPACING ); elemLayout->addWidget( myMode->button( NodeMode ), 0, 0 ); elemLayout->addWidget( myMode->button( ElemMode ), 0, 1 ); - elemLayout->addWidget( myID, 0, 2 ); - elemLayout->addWidget( myElemInfo, 1, 0, 1, 3 ); - - myTabWidget->addTab( w, tr( "ELEM_INFO" ) ); + elemLayout->addWidget( myID, 0, 2 ); + elemLayout->addWidget( myIDPreviewCheck, 1, 0, 1, 2 ); + elemLayout->addWidget( myElemInfo, 2, 0, 1, 3 ); + + myTabWidget->addTab( w, tr( "ELEM_INFO" )); // additional info myAddInfo = new SMESHGUI_AddInfo( myTabWidget ); - myTabWidget->addTab( myAddInfo, tr( "ADDITIONAL_INFO" ) ); + myTabWidget->addTab( myAddInfo, tr( "ADDITIONAL_INFO" )); // controls info myCtrlInfo = new SMESHGUI_CtrlInfo( myTabWidget ); - myTabWidget->addTab( myCtrlInfo, tr( "CTRL_INFO" ) ); + myTabWidget->addTab( myCtrlInfo, tr( "CTRL_INFO" )); // buttons @@ -2881,18 +2963,21 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) l->addWidget( myTabWidget ); l->addLayout( btnLayout ); - myTabWidget->setCurrentIndex( qMax( (int)BaseInfo, qMin( (int)ElemInfo, page ) ) ); + myTabWidget->setCurrentIndex( qMax( (int)BaseInfo, qMin( (int)ElemInfo, page ))); - connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( dumpBtn, SIGNAL( clicked() ), this, SLOT( dump() ) ); - connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() ) ); - connect( myTabWidget, SIGNAL( currentChanged( int ) ), this, SLOT( updateSelection() ) ); - connect( myMode, SIGNAL( buttonClicked( int ) ), this, SLOT( modeChanged() ) ); - connect( myID, SIGNAL( textChanged( QString ) ), this, SLOT( idChanged() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( deactivate() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() ) ); - connect( myElemInfo, SIGNAL( itemInfo( int ) ), this, SLOT( showItemInfo( int ) ) ); - connect( myElemInfo, SIGNAL( itemInfo( QString ) ), this, SLOT( showItemInfo( QString ) ) ); + connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() )); + connect( dumpBtn, SIGNAL( clicked() ), this, SLOT( dump() )); + connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() )); + connect( myTabWidget, SIGNAL( currentChanged( int )), this, SLOT( updateSelection() )); + connect( myMode, SIGNAL( buttonClicked( int )), this, SLOT( modeChanged() )); + connect( myID, SIGNAL( textChanged( QString )), this, SLOT( idChanged() )); + connect( myIDPreviewCheck, SIGNAL( toggled(bool) ), this, SLOT( idPreviewChange(bool) )); + connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( deactivate() )); + connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() )); + connect( myElemInfo, SIGNAL( itemInfo( int )), this, SLOT( showItemInfo( int ))); + connect( myElemInfo, SIGNAL( itemInfo( QString )), this, SLOT( showItemInfo( QString ))); + + myIDPreviewCheck->setChecked( SMESHGUI::resourceMgr()->booleanValue( "SMESH", id_preview_resource, false )); updateSelection(); } @@ -2902,6 +2987,7 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) */ SMESHGUI_MeshInfoDlg::~SMESHGUI_MeshInfoDlg() { + delete myIDPreview; } /*! @@ -2910,33 +2996,40 @@ SMESHGUI_MeshInfoDlg::~SMESHGUI_MeshInfoDlg() */ void SMESHGUI_MeshInfoDlg::showInfo( const Handle(SALOME_InteractiveObject)& IO ) { + if ( !IO.IsNull() ) + myIO = IO; + SMESH::SMESH_IDSource_var obj = SMESH::IObjectToInterface( IO ); - if ( !CORBA::is_nil( obj ) ) { - myBaseInfo->showInfo( obj ); - myAddInfo->showInfo( obj ); - myCtrlInfo->showInfo( obj ); + if ( !CORBA::is_nil( obj )) + { + myAddInfo->showInfo( obj ); // nb of nodes in a group can be computed by myAddInfo, + myBaseInfo->showInfo( obj ); // and it will be used by myBaseInfo (IPAL52871) + if ( myTabWidget->currentIndex() == CtrlInfo ) + myCtrlInfo->showInfo( obj ); - myActor = SMESH::FindActorByEntry( IO->getEntry() ); - SVTK_Selector* selector = SMESH::GetViewWindow()->GetSelector(); - QString ID; - int nb = 0; - if ( myActor && selector ) { - nb = myMode->checkedId() == NodeMode ? - SMESH::GetNameOfSelectedElements( selector, IO, ID ) : - SMESH::GetNameOfSelectedNodes( selector, IO, ID ); - } - myElemInfo->setSource( myActor ) ; - if ( nb > 0 ) { - myID->setText( ID.trimmed() ); - QSet ids; - QStringList idTxt = ID.split( " ", QString::SkipEmptyParts ); - foreach ( ID, idTxt ) - ids << ID.trimmed().toLong(); - myElemInfo->showInfo( ids, myMode->checkedId() == ElemMode ); - } - else { - myID->clear(); - myElemInfo->clear(); + { + myActor = SMESH::FindActorByEntry( IO->getEntry() ); + SVTK_Selector* selector = SMESH::GetSelector(); + QString ID; + int nb = 0; + if ( myActor && selector ) { + nb = myMode->checkedId() == NodeMode ? + SMESH::GetNameOfSelectedElements( selector, IO, ID ) : + SMESH::GetNameOfSelectedNodes( selector, IO, ID ); + } + myElemInfo->setSource( myActor, obj ) ; + if ( nb > 0 ) { + myID->setText( ID.trimmed() ); + QSet ids; + QStringList idTxt = ID.split( " ", QString::SkipEmptyParts ); + foreach ( ID, idTxt ) + ids << ID.trimmed().toLong(); + myElemInfo->showInfo( ids, myMode->checkedId() == ElemMode ); + } + else { + myID->clear(); + myElemInfo->clear(); + } } } } @@ -2952,6 +3045,7 @@ void SMESHGUI_MeshInfoDlg::reject() if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) aViewWindow->SetSelectionMode( ActorSelection ); QDialog::reject(); + myIDPreview->SetPointsLabeled(false); } /*! @@ -2985,7 +3079,9 @@ void SMESHGUI_MeshInfoDlg::updateSelection() disconnect( selMgr, 0, this, 0 ); selMgr->clearFilters(); - if ( myTabWidget->currentIndex() == BaseInfo || myTabWidget->currentIndex() == AddInfo || myTabWidget->currentIndex() == CtrlInfo ) { + if ( myTabWidget->currentIndex() == BaseInfo || + myTabWidget->currentIndex() == AddInfo || + myTabWidget->currentIndex() == CtrlInfo ) { SMESH::SetPointRepresentation( false ); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) aViewWindow->SetSelectionMode( ActorSelection ); @@ -3007,7 +3103,7 @@ void SMESHGUI_MeshInfoDlg::updateSelection() SMESH_Actor* oldActor = myActor; myID->clear(); - connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() ) ); + connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() )); updateInfo(); if ( oldActor == myActor && myActor && !oldID.isEmpty() ) { @@ -3022,8 +3118,8 @@ void SMESHGUI_MeshInfoDlg::updateSelection() void SMESHGUI_MeshInfoDlg::help() { SMESH::ShowHelpFile( ( myTabWidget->currentIndex() == BaseInfo || myTabWidget->currentIndex() == AddInfo ) ? - "mesh_infos_page.html#advanced_mesh_infos_anchor" : - "mesh_infos_page.html#mesh_element_info_anchor" ); + "mesh_infos.html#advanced-mesh-infos-anchor" : + "mesh_infos.html#mesh-element-info-anchor" ); } /*! @@ -3040,11 +3136,9 @@ void SMESHGUI_MeshInfoDlg::updateInfo() Handle(SALOME_InteractiveObject) IO = selected.First(); showInfo( IO ); } -// else { -// myBaseInfo->clear(); -// myElemInfo->clear(); -// myAddInfo->clear(); -// } + else { + showInfo( myIO ); + } } /*! @@ -3064,7 +3158,7 @@ void SMESHGUI_MeshInfoDlg::activate() void SMESHGUI_MeshInfoDlg::deactivate() { myTabWidget->setEnabled( false ); - disconnect( SMESHGUI::selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() ) ); + disconnect( SMESHGUI::selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() )); } /*! @@ -3077,28 +3171,48 @@ void SMESHGUI_MeshInfoDlg::modeChanged() } /*! - \brief Caled when users prints mesh element ID in the corresponding field. + \brief Called when users prints mesh element ID in the corresponding field. */ void SMESHGUI_MeshInfoDlg::idChanged() { - SVTK_Selector* selector = SMESH::GetViewWindow()->GetSelector(); + myIDPreview->SetPointsLabeled( false ); + + SVTK_Selector* selector = SMESH::GetSelector(); if ( myActor && selector ) { Handle(SALOME_InteractiveObject) IO = myActor->getIO(); TColStd_MapOfInteger ID; - QSet ids; + QSet ids; + std::vector idVec; + std::list< gp_XYZ > aGrCentersXYZ; QStringList idTxt = myID->text().split( " ", QString::SkipEmptyParts ); foreach ( QString tid, idTxt ) { long id = tid.trimmed().toLong(); - const SMDS_MeshElement* e = myMode->checkedId() == ElemMode ? + const SMDS_MeshElement* e = myMode->checkedId() == ElemMode ? myActor->GetObject()->GetMesh()->FindElement( id ) : myActor->GetObject()->GetMesh()->FindNode( id ); if ( e ) { ID.Add( id ); ids << id; + if ( myMode->checkedId() == ElemMode ) + { + idVec.push_back( id ); + aGrCentersXYZ.push_back( myElemInfo->getGravityCenter( e )); + } } } selector->AddOrRemoveIndex( IO, ID, false ); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) { + + if ( myMode->checkedId() == NodeMode ) + myIDPreview->SetPointsData( myActor->GetObject()->GetMesh(), ID ); + else + myIDPreview->SetElemsData( idVec, aGrCentersXYZ ); + + bool showIDs = ( !ID.IsEmpty() && + myIDPreviewCheck->isChecked() && + myTabWidget->currentIndex() == ElemInfo ); + myIDPreview->SetPointsLabeled( showIDs, myActor->GetVisibility() ); + aViewWindow->highlight( IO, true, true ); aViewWindow->Repaint(); } @@ -3106,11 +3220,22 @@ void SMESHGUI_MeshInfoDlg::idChanged() } } +/*! + * \brief Show IDs clicked + */ +void SMESHGUI_MeshInfoDlg::idPreviewChange( bool isOn ) +{ + myIDPreview->SetPointsLabeled( isOn && !myID->text().simplified().isEmpty() ); + SMESHGUI::resourceMgr()->setValue("SMESH", id_preview_resource, isOn ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) + aViewWindow->Repaint(); +} + void SMESHGUI_MeshInfoDlg::showItemInfo( int id ) { - if ( id > 0 && myActor->GetObject()->GetMesh()->FindNode( id ) ) { + if ( id > 0 && myActor->GetObject()->GetMesh()->FindNode( id )) { myMode->button( NodeMode )->click(); - myID->setText( QString::number( id ) ); + myID->setText( QString::number( id )); } } @@ -3124,14 +3249,8 @@ void SMESHGUI_MeshInfoDlg::showItemInfo( const QString& theStr ) void SMESHGUI_MeshInfoDlg::dump() { - SUIT_Application* app = SUIT_Session::session()->activeApplication(); - if ( !app ) return; - SalomeApp_Study* appStudy = dynamic_cast( app->activeStudy() ); - if ( !appStudy ) return; - _PTR( Study ) aStudy = appStudy->studyDS(); - QStringList aFilters; - aFilters.append( tr( "TEXT_FILES" ) ); + aFilters.append( tr( "TEXT_FILES" )); bool anIsBase = true; bool anIsElem = true; @@ -3146,8 +3265,8 @@ void SMESHGUI_MeshInfoDlg::dump() } DumpFileDlg fd( this ); - fd.setWindowTitle( tr( "SAVE_INFO" ) ); - fd.setFilters( aFilters ); + fd.setWindowTitle( tr( "SAVE_INFO" )); + fd.setNameFilters( aFilters ); fd.myBaseChk->setChecked( anIsBase ); fd.myElemChk->setChecked( anIsElem ); fd.myAddChk ->setChecked( anIsAdd ); @@ -3167,7 +3286,7 @@ void SMESHGUI_MeshInfoDlg::dump() return; QFile aFile( aFileName ); - if ( !aFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + if ( !aFile.open( QIODevice::WriteOnly | QIODevice::Text )) return; QTextStream out( &aFile ); @@ -3205,7 +3324,7 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ) myWidgets << aName; SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - QIcon aComputeIcon( aResMgr->loadPixmap( "SMESH", tr( "ICON_COMPUTE" ) ) ); + QIcon aComputeIcon( aResMgr->loadPixmap( "SMESH", tr( "ICON_COMPUTE" )) ); SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager(); @@ -3216,6 +3335,11 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ) myWidgets << aNodesFree; myPredicates << aFilterMgr->CreateFreeNodes(); // + QLabel* aNodesNbConnLab = new QLabel( tr( "MAX_NODE_CONNECTIVITY" ), this ); + QLabel* aNodesNbConn = createField(); + myWidgets << aNodesNbConn; + myNodeConnFunctor = aFilterMgr->CreateNodeConnectivityNumber(); + // QLabel* aNodesDoubleLab = new QLabel( tr( "NUMBER_OF_THE_DOUBLE_NODES" ), this ); QLabel* aNodesDouble = createField(); myWidgets << aNodesDouble; @@ -3224,7 +3348,7 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ) myToleranceWidget = new SMESHGUI_SpinBox( this ); myToleranceWidget->RangeStepAndValidator(0.0000000001, 1000000.0, 0.0000001, "length_precision" ); myToleranceWidget->setAcceptNames( false ); - myToleranceWidget->SetValue( SMESHGUI::resourceMgr()->doubleValue( "SMESH", "equal_nodes_tolerance", 1e-7 ) ); + myToleranceWidget->SetValue( SMESHGUI::resourceMgr()->doubleValue( "SMESH", "equal_nodes_tolerance", 1e-7 )); // edges info QLabel* anEdgesLab = new QLabel( tr( "EDGES_INFO" ), this ); @@ -3265,47 +3389,52 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ) aFreeNodesBtn->setIcon(aComputeIcon); myButtons << aFreeNodesBtn; //0 + QToolButton* aNodesNbConnBtn = new QToolButton( this ); + aNodesNbConnBtn->setIcon(aComputeIcon); + myButtons << aNodesNbConnBtn; //1 + QToolButton* aDoubleNodesBtn = new QToolButton( this ); aDoubleNodesBtn->setIcon(aComputeIcon); - myButtons << aDoubleNodesBtn; //1 + myButtons << aDoubleNodesBtn; //2 QToolButton* aDoubleEdgesBtn = new QToolButton( this ); aDoubleEdgesBtn->setIcon(aComputeIcon); - myButtons << aDoubleEdgesBtn; //2 + myButtons << aDoubleEdgesBtn; //3 QToolButton* aDoubleFacesBtn = new QToolButton( this ); aDoubleFacesBtn->setIcon(aComputeIcon); - myButtons << aDoubleFacesBtn; //3 + myButtons << aDoubleFacesBtn; //4 QToolButton* aOverContFacesBtn = new QToolButton( this ); aOverContFacesBtn->setIcon(aComputeIcon); - myButtons << aOverContFacesBtn; //4 + myButtons << aOverContFacesBtn; //5 QToolButton* aComputeFaceBtn = new QToolButton( this ); aComputeFaceBtn->setIcon(aComputeIcon); - myButtons << aComputeFaceBtn; //5 + myButtons << aComputeFaceBtn; //6 QToolButton* aDoubleVolumesBtn = new QToolButton( this ); aDoubleVolumesBtn->setIcon(aComputeIcon); - myButtons << aDoubleVolumesBtn; //6 + myButtons << aDoubleVolumesBtn; //7 QToolButton* aOverContVolumesBtn = new QToolButton( this ); aOverContVolumesBtn->setIcon(aComputeIcon); - myButtons << aOverContVolumesBtn; //7 + myButtons << aOverContVolumesBtn; //8 QToolButton* aComputeVolumeBtn = new QToolButton( this ); aComputeVolumeBtn->setIcon(aComputeIcon); - myButtons << aComputeVolumeBtn; //8 - - connect( aComputeFaceBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio() ) ); - connect( aComputeVolumeBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio3D() ) ); - connect( aFreeNodesBtn, SIGNAL( clicked() ), this, SLOT( computeFreeNodesInfo() ) ); - connect( aDoubleNodesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleNodesInfo() ) ); - connect( aDoubleEdgesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleEdgesInfo() ) ); - connect( aDoubleFacesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleFacesInfo() ) ); - connect( aOverContFacesBtn, SIGNAL( clicked() ), this, SLOT( computeOverConstrainedFacesInfo() ) ); - connect( aDoubleVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleVolumesInfo() ) ); - connect( aOverContVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() ) ); + myButtons << aComputeVolumeBtn; //9 + + connect( aComputeFaceBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio() )); + connect( aComputeVolumeBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio3D() )); + connect( aFreeNodesBtn, SIGNAL( clicked() ), this, SLOT( computeFreeNodesInfo() )); + connect( aNodesNbConnBtn, SIGNAL( clicked() ), this, SLOT( computeNodesNbConnInfo() )); + connect( aDoubleNodesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleNodesInfo() )); + connect( aDoubleEdgesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleEdgesInfo() )); + connect( aDoubleFacesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleFacesInfo() )); + connect( aOverContFacesBtn, SIGNAL( clicked() ), this, SLOT( computeOverConstrainedFacesInfo() )); + connect( aDoubleVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleVolumesInfo() )); + connect( aOverContVolumesBtn,SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() )); connect( myToleranceWidget, SIGNAL(valueChanged(double)), this, SLOT( setTolerance( double ))); setFontAttributes( aNameLab ); @@ -3320,35 +3449,38 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ) myMainLayout->addWidget( aNodesFreeLab, 2, 0 ); //3 myMainLayout->addWidget( aNodesFree, 2, 1 ); //4 myMainLayout->addWidget( aFreeNodesBtn, 2, 2 ); //5 - myMainLayout->addWidget( aNodesDoubleLab, 3, 0 ); //6 - myMainLayout->addWidget( aNodesDouble, 3, 1 ); //7 - myMainLayout->addWidget( aDoubleNodesBtn, 3, 2 ); //8 - myMainLayout->addWidget( aToleranceLab, 4, 0 ); //9 - myMainLayout->addWidget( myToleranceWidget, 4, 1 ); //10 - myMainLayout->addWidget( anEdgesLab, 5, 0, 1, 3 ); //11 - myMainLayout->addWidget( anEdgesDoubleLab, 6, 0 ); //12 - myMainLayout->addWidget( anEdgesDouble, 6, 1 ); //13 - myMainLayout->addWidget( aDoubleEdgesBtn, 6, 2 ); //14 - myMainLayout->addWidget( aFacesLab, 7, 0, 1, 3 ); //15 - myMainLayout->addWidget( aFacesDoubleLab, 8, 0 ); //16 - myMainLayout->addWidget( aFacesDouble, 8, 1 ); //17 - myMainLayout->addWidget( aDoubleFacesBtn, 8, 2 ); //18 - myMainLayout->addWidget( aFacesOverLab, 9, 0 ); //19 - myMainLayout->addWidget( aFacesOver, 9, 1 ); //20 - myMainLayout->addWidget( aOverContFacesBtn, 9, 2 ); //21 - myMainLayout->addWidget( anAspectRatioLab, 10, 0 ); //22 - myMainLayout->addWidget( aComputeFaceBtn, 10, 2 ); //23 - myMainLayout->addWidget( myPlot, 11, 0, 1, 3 );//24 - myMainLayout->addWidget( aVolumesLab, 12, 0, 1, 3 );//25 - myMainLayout->addWidget( aVolumesDoubleLab, 13, 0 ); //26 - myMainLayout->addWidget( aVolumesDouble, 13, 1 ); //27 - myMainLayout->addWidget( aDoubleVolumesBtn, 13, 2 ); //28 - myMainLayout->addWidget( aVolumesOverLab, 14, 0 ); //28 - myMainLayout->addWidget( aVolumesOver, 14, 1 ); //30 - myMainLayout->addWidget( aOverContVolumesBtn,14, 2 ); //31 - myMainLayout->addWidget( anAspectRatio3DLab, 15, 0 ); //32 - myMainLayout->addWidget( aComputeVolumeBtn, 15, 2 ); //33 - myMainLayout->addWidget( myPlot3D, 16, 0, 1, 3 );//34 + myMainLayout->addWidget( aNodesNbConnLab, 3, 0 ); //6 + myMainLayout->addWidget( aNodesNbConn, 3, 1 ); //7 + myMainLayout->addWidget( aNodesNbConnBtn, 3, 2 ); //8 + myMainLayout->addWidget( aNodesDoubleLab, 4, 0 ); //9 + myMainLayout->addWidget( aNodesDouble, 4, 1 ); //10 + myMainLayout->addWidget( aDoubleNodesBtn, 4, 2 ); //11 + myMainLayout->addWidget( aToleranceLab, 5, 0 ); //12 + myMainLayout->addWidget( myToleranceWidget, 5, 1 ); //13 + myMainLayout->addWidget( anEdgesLab, 6, 0, 1, 3 ); //14 + myMainLayout->addWidget( anEdgesDoubleLab, 7, 0 ); //15 + myMainLayout->addWidget( anEdgesDouble, 7, 1 ); //16 + myMainLayout->addWidget( aDoubleEdgesBtn, 7, 2 ); //17 + myMainLayout->addWidget( aFacesLab, 8, 0, 1, 3 ); //18 + myMainLayout->addWidget( aFacesDoubleLab, 9, 0 ); //19 + myMainLayout->addWidget( aFacesDouble, 9, 1 ); //20 + myMainLayout->addWidget( aDoubleFacesBtn, 9, 2 ); //21 + myMainLayout->addWidget( aFacesOverLab, 10, 0 ); //22 + myMainLayout->addWidget( aFacesOver, 10, 1 ); //23 + myMainLayout->addWidget( aOverContFacesBtn, 10, 2 ); //24 + myMainLayout->addWidget( anAspectRatioLab, 11, 0 ); //25 + myMainLayout->addWidget( aComputeFaceBtn, 11, 2 ); //26 + myMainLayout->addWidget( myPlot, 12, 0, 1, 3 );//27 + myMainLayout->addWidget( aVolumesLab, 13, 0, 1, 3 );//28 + myMainLayout->addWidget( aVolumesDoubleLab, 14, 0 ); //29 + myMainLayout->addWidget( aVolumesDouble, 14, 1 ); //30 + myMainLayout->addWidget( aDoubleVolumesBtn, 14, 2 ); //31 + myMainLayout->addWidget( aVolumesOverLab, 15, 0 ); //32 + myMainLayout->addWidget( aVolumesOver, 15, 1 ); //33 + myMainLayout->addWidget( aOverContVolumesBtn,15, 2 ); //34 + myMainLayout->addWidget( anAspectRatio3DLab, 16, 0 ); //35 + myMainLayout->addWidget( aComputeVolumeBtn, 16, 2 ); //36 + myMainLayout->addWidget( myPlot3D, 17, 0, 1, 3 );//37 myMainLayout->setColumnStretch( 0, 0 ); myMainLayout->setColumnStretch( 1, 5 ); @@ -3390,7 +3522,7 @@ QLabel* SMESHGUI_CtrlInfo::createField() lab->setAlignment( Qt::AlignCenter ); lab->setAutoFillBackground( true ); QPalette pal = lab->palette(); - pal.setColor( QPalette::Window, QApplication::palette().color( QPalette::Active, QPalette::Base ) ); + pal.setColor( QPalette::Window, QApplication::palette().color( QPalette::Active, QPalette::Base )); lab->setPalette( pal ); lab->setMinimumWidth( 60 ); return lab; @@ -3444,24 +3576,26 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) // nodes info const CORBA::Long nbNodes = nbElemsByType[ SMESH::NODE ]; - const CORBA::Long nbElems = ( nbElemsByType[ SMESH::EDGE ] + - nbElemsByType[ SMESH::FACE ] + - nbElemsByType[ SMESH::VOLUME ] ); - if ( nbNodes + nbElems > 0 ) { - if ( Max( (int)nbNodes, (int)nbElems ) <= ctrlLimit ) { + // const CORBA::Long nbElems = ( nbElemsByType[ SMESH::EDGE ] + + // nbElemsByType[ SMESH::FACE ] + + // nbElemsByType[ SMESH::VOLUME ] ); + if ( nbNodes > 0 ) { + if ( nbNodes <= ctrlLimit ) { // free nodes computeFreeNodesInfo(); + // node connectivity number + computeNodesNbConnInfo(); // double nodes - if ( Max( (int)mesh->NbNodes(), (int)mesh->NbElements() ) <= ctrlLimit ) - computeDoubleNodesInfo(); + computeDoubleNodesInfo(); } else { myButtons[0]->setEnabled( true ); myButtons[1]->setEnabled( true ); + myButtons[2]->setEnabled( true ); } } else { - for( int i=2; i<=10; i++) + for( int i=2; i<=13; i++) myMainLayout->itemAt(i)->widget()->setVisible( false ); } @@ -3471,10 +3605,10 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) if( nbElemsByType[ SMESH::EDGE ] <= ctrlLimit ) computeDoubleEdgesInfo(); else - myButtons[2]->setEnabled( true ); + myButtons[3]->setEnabled( true ); } else { - for( int i=11; i<=14; i++) + for( int i=14; i<=17; i++) myMainLayout->itemAt(i)->widget()->setVisible( false ); } @@ -3489,19 +3623,19 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) computeAspectRatio(); } else { - myButtons[3]->setEnabled( true ); myButtons[4]->setEnabled( true ); myButtons[5]->setEnabled( true ); + myButtons[6]->setEnabled( true ); } #ifdef DISABLE_PLOT2DVIEWER - myMainLayout->setRowStretch(11,0); - for( int i=22; i<=24; i++) + myMainLayout->setRowStretch(12,0); + for( int i=25; i<=27; i++) myMainLayout->itemAt(i)->widget()->setVisible( false ); #endif } else { - myMainLayout->setRowStretch(11,0); - for( int i=15; i<=24; i++) + myMainLayout->setRowStretch(12,0); + for( int i=18; i<=27; i++) myMainLayout->itemAt(i)->widget()->setVisible( false ); } @@ -3514,21 +3648,21 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) computeOverConstrainedVolumesInfo(); // aspect Ratio 3D histogram computeAspectRatio3D(); - } - else { - myButtons[6]->setEnabled( true ); - myButtons[7]->setEnabled( true ); - myButtons[8]->setEnabled( true ); - } + } + else { + myButtons[7]->setEnabled( true ); + myButtons[8]->setEnabled( true ); + myButtons[9]->setEnabled( true ); + } #ifdef DISABLE_PLOT2DVIEWER - myMainLayout->setRowStretch(16,0); - for( int i=32; i<=34; i++) + myMainLayout->setRowStretch(17,0); + for( int i=35; i<=37; i++) myMainLayout->itemAt(i)->widget()->setVisible( false ); #endif } else { - myMainLayout->setRowStretch(16,0); - for( int i=25; i<=34; i++) + myMainLayout->setRowStretch(17,0); + for( int i=28; i<=37; i++) myMainLayout->itemAt(i)->widget()->setVisible( false ); } } @@ -3574,38 +3708,58 @@ void SMESHGUI_CtrlInfo::computeFreeNodesInfo() void SMESHGUI_CtrlInfo::computeDoubleNodesInfo() { - computeNb( SMESH::FT_EqualNodes, 1, 2 ); + computeNb( SMESH::FT_EqualNodes, 2, 3 ); } void SMESHGUI_CtrlInfo::computeDoubleEdgesInfo() { - computeNb( SMESH::FT_EqualEdges, 2, 3 ); + computeNb( SMESH::FT_EqualEdges, 3, 4 ); } void SMESHGUI_CtrlInfo::computeDoubleFacesInfo() { - computeNb( SMESH::FT_EqualFaces, 3, 4 ); + computeNb( SMESH::FT_EqualFaces, 4, 5 ); } void SMESHGUI_CtrlInfo::computeOverConstrainedFacesInfo() { - computeNb( SMESH::FT_OverConstrainedFace, 4, 5 ); + computeNb( SMESH::FT_OverConstrainedFace, 5, 6 ); } void SMESHGUI_CtrlInfo::computeDoubleVolumesInfo() { - computeNb( SMESH::FT_EqualVolumes, 6, 6 ); + computeNb( SMESH::FT_EqualVolumes, 7, 7 ); } void SMESHGUI_CtrlInfo::computeOverConstrainedVolumesInfo() { - computeNb( SMESH::FT_OverConstrainedVolume, 7, 7 ); + computeNb( SMESH::FT_OverConstrainedVolume, 8, 8 ); +} + +void SMESHGUI_CtrlInfo::computeNodesNbConnInfo() +{ + myButtons[ 1 ]->setEnabled( false ); + myWidgets[ 2 ]->setText( "" ); + SMESH::SMESH_Mesh_var mesh = myObject->GetMesh(); + if ( mesh->_is_nil() ) return; + if ( !mesh->IsLoaded() ) + { + mesh->Load(); + this->showInfo( myObject ); // try to show all values + if ( !myWidgets[ 2 ]->text().isEmpty() ) + return; // already computed + } + myNodeConnFunctor->SetMesh( mesh ); + SMESH::Histogram_var histogram = + myNodeConnFunctor->GetLocalHistogram( 1, /*isLogarithmic=*/false, myObject ); + + myWidgets[ 2 ]->setText( QString::number( histogram[0].max )); } void SMESHGUI_CtrlInfo::computeAspectRatio() { #ifndef DISABLE_PLOT2DVIEWER - myButtons[5]->setEnabled( false ); + myButtons[6]->setEnabled( false ); if ( myObject->_is_nil() ) return; @@ -3624,7 +3778,7 @@ void SMESHGUI_CtrlInfo::computeAspectRatio() void SMESHGUI_CtrlInfo::computeAspectRatio3D() { #ifndef DISABLE_PLOT2DVIEWER - myButtons[8]->setEnabled( false ); + myButtons[9]->setEnabled( false ); if ( myObject->_is_nil() ) return; @@ -3645,9 +3799,9 @@ void SMESHGUI_CtrlInfo::computeAspectRatio3D() */ void SMESHGUI_CtrlInfo::clearInternal() { - for( int i=0; i<=34; i++) + for( int i=0; i<=35; i++) myMainLayout->itemAt(i)->widget()->setVisible( true ); - for( int i=0; i<=8; i++) + for( int i=0; i<=9; i++) myButtons[i]->setEnabled( false ); myPlot->detachItems(); myPlot3D->detachItems(); @@ -3677,7 +3831,7 @@ Plot2d_Histogram* SMESHGUI_CtrlInfo::getHistogram( SMESH::NumericalFunctor_ptr a aNumFun->SetMesh( mesh ); CORBA::Long cprecision = 6; - if ( SMESHGUI::resourceMgr()->booleanValue( "SMESH", "use_precision", false ) ) + if ( SMESHGUI::resourceMgr()->booleanValue( "SMESH", "use_precision", false )) cprecision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "controls_precision", -1 ); aNumFun->SetPrecision( cprecision ); @@ -3687,7 +3841,7 @@ Plot2d_Histogram* SMESHGUI_CtrlInfo::getHistogram( SMESH::NumericalFunctor_ptr a /*isLogarithmic=*/false, myObject ); Plot2d_Histogram* aHistogram = new Plot2d_Histogram(); - aHistogram->setColor( palette().color( QPalette::Highlight ) ); + aHistogram->setColor( palette().color( QPalette::Highlight )); if ( &histogramVar.in() ) { for ( size_t i = 0, nb = histogramVar->length(); i < nb; i++ ) @@ -3725,13 +3879,12 @@ void SMESHGUI_CtrlInfo::saveInfo( QTextStream &out ) { /*! \brief Constructor \param parent parent widget - \param page specifies the dialog page to be shown at the start-up */ SMESHGUI_CtrlInfoDlg::SMESHGUI_CtrlInfoDlg( QWidget* parent ) -: QDialog( parent ) + : QDialog( parent ) { setAttribute( Qt::WA_DeleteOnClose, true ); - setWindowTitle( tr( "CTRL_INFO" ) ); + setWindowTitle( tr( "CTRL_INFO" )); setMinimumSize( 400, 600 ); myCtrlInfo = new SMESHGUI_CtrlInfo( this ); @@ -3761,11 +3914,11 @@ SMESHGUI_CtrlInfoDlg::SMESHGUI_CtrlInfoDlg( QWidget* parent ) l->addWidget( myCtrlInfo ); l->addLayout( btnLayout ); - connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( dumpBtn, SIGNAL( clicked() ), this, SLOT( dump() ) ); - connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( deactivate() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() ) ); + connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() )); + connect( dumpBtn, SIGNAL( clicked() ), this, SLOT( dump() )); + connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() )); + connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( deactivate() )); + connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() )); updateSelection(); } @@ -3783,7 +3936,7 @@ SMESHGUI_CtrlInfoDlg::~SMESHGUI_CtrlInfoDlg() */ void SMESHGUI_CtrlInfoDlg::showInfo( const Handle(SALOME_InteractiveObject)& IO ) { - if ( SMESH::SMESH_IDSource_var obj = SMESH::IObjectToInterface( IO ) ) + if ( SMESH::SMESH_IDSource_var obj = SMESH::IObjectToInterface( IO )) myCtrlInfo->showInfo( obj ); } @@ -3804,7 +3957,7 @@ void SMESHGUI_CtrlInfoDlg::updateSelection() LightApp_SelectionMgr* selMgr = SMESHGUI::selectionMgr(); disconnect( selMgr, 0, this, 0 ); SMESH::SetPointRepresentation( false ); - connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() ) ); + connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() )); updateInfo(); } @@ -3839,7 +3992,7 @@ void SMESHGUI_CtrlInfoDlg::activate() */ void SMESHGUI_CtrlInfoDlg::deactivate() { - disconnect( SMESHGUI::selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() ) ); + disconnect( SMESHGUI::selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( updateInfo() )); } /*! @@ -3847,18 +4000,12 @@ void SMESHGUI_CtrlInfoDlg::deactivate() */ void SMESHGUI_CtrlInfoDlg::dump() { - SUIT_Application* app = SUIT_Session::session()->activeApplication(); - if ( !app ) return; - SalomeApp_Study* appStudy = dynamic_cast( app->activeStudy() ); - if ( !appStudy ) return; - _PTR( Study ) aStudy = appStudy->studyDS(); - QStringList aFilters; - aFilters.append( tr( "TEXT_FILES" ) ); + aFilters.append( tr( "TEXT_FILES" )); DumpFileDlg fd( this ); - fd.setWindowTitle( tr( "SAVE_INFO" ) ); - fd.setFilters( aFilters ); + fd.setWindowTitle( tr( "SAVE_INFO" )); + fd.setNameFilters( aFilters ); fd.myBaseChk->hide(); fd.myElemChk->hide(); fd.myAddChk ->hide(); @@ -3872,7 +4019,7 @@ void SMESHGUI_CtrlInfoDlg::dump() return; QFile aFile( aFileName ); - if ( !aFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + if ( !aFile.open( QIODevice::WriteOnly | QIODevice::Text )) return; QTextStream out( &aFile ); @@ -3886,5 +4033,5 @@ void SMESHGUI_CtrlInfoDlg::dump() */ void SMESHGUI_CtrlInfoDlg::help() { - SMESH::ShowHelpFile("mesh_infos_page.html#mesh_quality_info_anchor"); + SMESH::ShowHelpFile("mesh_infos.html#mesh_quality_info_anchor"); }