X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MeshInfo.cxx;h=24c610d783233a1976abede0dbb3a83fbff5d3af;hb=66c7e4a32db7714e0215a1b1edce997759e5d573;hp=fc5ac8b734201afe9f1f53bd999c602df9598138;hpb=4e9fa6a7f415f8dfa6f72a4b638faf91c3770d01;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx index fc5ac8b73..24c610d78 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -66,24 +66,24 @@ #include //////////////////////////////////////////////////////////////////////////////// -/// \class Field -/// \brief Field widget. +/// \class FieldInfo +/// \brief FieldInfo widget. /// \internal //////////////////////////////////////////////////////////////////////////////// -class Field : public QLabel +class FieldInfo : public QLabel { public: - Field( QWidget*, const QString& = QString() ); + FieldInfo( QWidget*, const QString& = QString() ); bool event( QEvent* ); }; /*! \brief Constructor. \param parent Parent widget. - \param name Field name. Defaults to null string. + \param name FieldInfo name. Defaults to null string. */ -Field::Field( QWidget* parent, const QString& name ): QLabel( parent ) +FieldInfo::FieldInfo( QWidget* parent, const QString& name ): QLabel( parent ) { setFrameStyle( QLabel::StyledPanel | QLabel::Sunken ); setAlignment( Qt::AlignCenter ); @@ -100,7 +100,7 @@ Field::Field( QWidget* parent, const QString& name ): QLabel( parent ) /*! \brief Event handler. Redefined from QLabel. */ -bool Field::event( QEvent* e ) +bool FieldInfo::event( QEvent* e ) { if ( e->type() == QEvent::DynamicPropertyChange ) { @@ -332,12 +332,12 @@ namespace /*! \brief Create information field. \param parent Parent widget. - \param name Field's object. Default to null string. - \return New field. + \param name FieldInfo's object. Default to null string. + \return New FieldInfo. */ QLabel* createField( QWidget* parent, const QString& name = QString() ) { - return new Field( parent, name ); + return new FieldInfo( parent, name ); } /*! @@ -1674,6 +1674,8 @@ QString SMESHGUI_ElemInfo::ctrl2str( int control ) title = tr( "ASPECTRATIO_3D_ELEMENTS" ); break; case SMESH::FT_Warping: title = tr( "WARP_ELEMENTS" ); break; + case SMESH::FT_Warping3D: + title = tr( "WARP_3D_ELEMENTS" ); break; case SMESH::FT_MinimumAngle: title = tr( "MINIMUMANGLE_ELEMENTS" ); break; case SMESH::FT_Taper: @@ -1684,6 +1686,8 @@ QString SMESHGUI_ElemInfo::ctrl2str( int control ) title = tr( "AREA_ELEMENTS" ); break; case SMESH::FT_Volume3D: title = tr( "VOLUME_3D_ELEMENTS" ); break; + case SMESH::FT_ScaledJacobian: + title = tr( "SCALED_JACOBIAN" ); break; case SMESH::FT_MaxElementLength2D: title = tr( "MAX_ELEMENT_LENGTH_2D" ); break; case SMESH::FT_MaxElementLength3D: @@ -1804,8 +1808,8 @@ void SMESHGUI_ElemInfo::writeInfo( InfoWriter* writer, const QList& ids ) writer->write( SMESHGUI_AddInfo::tr( "TYPE" ), SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" ) ); } int size = group.size(); - if ( size != -1 ); - writer->write( SMESHGUI_AddInfo::tr( "SIZE" ), size ); + if ( size != -1 ) + writer->write( SMESHGUI_AddInfo::tr( "SIZE" ), size ); QColor color = group.color(); if ( color.isValid() ) writer->write( SMESHGUI_AddInfo::tr( "COLOR" ), color.name() ); @@ -1935,7 +1939,7 @@ void SMESHGUI_ElemInfo::writeInfo( InfoWriter* writer, const QList& ids ) writer->write( SMESHGUI_AddInfo::tr( "TYPE" ), SMESHGUI_AddInfo::tr( "GROUP_ON_FILTER" ) ); } int size = group.size(); - if ( size != -1 ); + if ( size != -1 ) writer->write( SMESHGUI_AddInfo::tr( "SIZE" ), size ); QColor color = group.color(); if ( color.isValid() ) @@ -2147,11 +2151,7 @@ SMESHGUI_TreeElemInfo::SMESHGUI_TreeElemInfo( QWidget* parent ) myInfo->setColumnCount( 2 ); 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 ); -#else myInfo->header()->setSectionResizeMode( 0, QHeaderView::ResizeToContents ); -#endif myInfo->setItemDelegate( new ItemDelegate( myInfo ) ); QVBoxLayout* l = new QVBoxLayout( centralWidget() ); l->setMargin( 0 ); @@ -2179,8 +2179,8 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) \param nbNodes number of unique nodes in element \param parentItem parent item of tree */ -void SMESHGUI_TreeElemInfo::nodeInfo( const SMDS_MeshNode* node, int index, - int nbNodes, QTreeWidgetItem* parentItem ) +void SMESHGUI_TreeElemInfo::nodeInfo( const SMDS_MeshNode* /*node*/, int /*index*/, + int /*nbNodes*/, QTreeWidgetItem* /*parentItem*/ ) { // int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 ); // // node number and ID @@ -2288,7 +2288,7 @@ void SMESHGUI_TreeElemInfo::contextMenuEvent( QContextMenuEvent* e ) } } -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(); @@ -2379,11 +2379,7 @@ SMESHGUI_AddInfo::SMESHGUI_AddInfo( QWidget* parent ): SMESHGUI_Info( parent ) myTree->setColumnCount( 2 ); myTree->header()->setStretchLastSection( true ); -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - myTree->header()->setResizeMode( 0, QHeaderView::ResizeToContents ); -#else myTree->header()->setSectionResizeMode( 0, QHeaderView::ResizeToContents ); -#endif myTree->header()->hide(); l->addWidget( myTree ); @@ -3323,7 +3319,7 @@ void SMESHGUI_MeshInfoDlg::idChanged() myIDPreview->SetPointsLabeled( false ); if ( myProxy ) { - TColStd_MapOfInteger ID; + SVTK_TVtkIDsMap ID; QSet ids; std::vector idVec; std::list< gp_XYZ > aGrCentersXYZ; @@ -3410,7 +3406,11 @@ void SMESHGUI_MeshInfoDlg::dump() if ( fd.isChecked( BaseInfo ) ) myBaseInfo->saveInfo( out ); if ( fd.isChecked( ElemInfo ) ) myElemInfo->saveInfo( out ); if ( fd.isChecked( AddInfo ) ) myAddInfo->saveInfo( out ); - if ( fd.isChecked( CtrlInfo ) ) myCtrlInfo->saveInfo( out ); + if ( fd.isChecked( CtrlInfo ) ) + { + myCtrlInfo->showInfo( myProxy ); // it saves what is shown only + myCtrlInfo->saveInfo( out ); + } } } } @@ -3436,6 +3436,9 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ): SMESHGUI_Info( parent ) QIcon aComputeIcon( SUIT_Session::session()->resourceMgr()->loadPixmap( "SMESH", tr( "ICON_COMPUTE" ) ) ); SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager(); + // QToolBox with MeshInfo + myMeshTB = new QToolBox(this); + // name QLabel* aNameLab = createLabel( tr( "NAME_LAB" ), this, Bold ); QLabel* aName = createField( this, "ctrlName" ); @@ -3550,51 +3553,84 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent ): SMESHGUI_Info( parent ) connect( aDoubleVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleVolumesInfo() ) ); connect( aOverContVolumesBtn,SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() ) ); connect( myToleranceWidget, SIGNAL( valueChanged( double ) ), this, SLOT( setTolerance( double ) ) ); + this->setTolerance(myToleranceWidget->GetValue()); - l->addWidget( aNameLab, 0, 0 ); //0 - l->addWidget( aName, 0, 1, 1, 2 ); //1 - l->addWidget( aNodesLab, 1, 0, 1, 3 ); //2 - l->addWidget( aNodesFreeLab, 2, 0 ); //3 - l->addWidget( aNodesFree, 2, 1 ); //4 - l->addWidget( aFreeNodesBtn, 2, 2 ); //5 - l->addWidget( aNodesNbConnLab, 3, 0 ); //6 - l->addWidget( aNodesNbConn, 3, 1 ); //7 - l->addWidget( aNodesNbConnBtn, 3, 2 ); //8 - l->addWidget( aNodesDoubleLab, 4, 0 ); //9 - l->addWidget( aNodesDouble, 4, 1 ); //10 - l->addWidget( aDoubleNodesBtn, 4, 2 ); //11 - l->addWidget( aToleranceLab, 5, 0 ); //12 - l->addWidget( myToleranceWidget, 5, 1 ); //13 - l->addWidget( anEdgesLab, 6, 0, 1, 3 ); //14 - l->addWidget( anEdgesDoubleLab, 7, 0 ); //15 - l->addWidget( anEdgesDouble, 7, 1 ); //16 - l->addWidget( aDoubleEdgesBtn, 7, 2 ); //17 - l->addWidget( aFacesLab, 8, 0, 1, 3 ); //18 - l->addWidget( aFacesDoubleLab, 9, 0 ); //19 - l->addWidget( aFacesDouble, 9, 1 ); //20 - l->addWidget( aDoubleFacesBtn, 9, 2 ); //21 - l->addWidget( aFacesOverLab, 10, 0 ); //22 - l->addWidget( aFacesOver, 10, 1 ); //23 - l->addWidget( aOverContFacesBtn, 10, 2 ); //24 - l->addWidget( anAspectRatioLab, 11, 0 ); //25 - l->addWidget( aComputeFaceBtn, 11, 2 ); //26 - l->addWidget( myPlot, 12, 0, 1, 3 );//27 - l->addWidget( aVolumesLab, 13, 0, 1, 3 );//28 - l->addWidget( aVolumesDoubleLab, 14, 0 ); //29 - l->addWidget( aVolumesDouble, 14, 1 ); //30 - l->addWidget( aDoubleVolumesBtn, 14, 2 ); //31 - l->addWidget( aVolumesOverLab, 15, 0 ); //32 - l->addWidget( aVolumesOver, 15, 1 ); //33 - l->addWidget( aOverContVolumesBtn,15, 2 ); //34 - l->addWidget( anAspectRatio3DLab, 16, 0 ); //35 - l->addWidget( aComputeVolumeBtn, 16, 2 ); //36 - l->addWidget( myPlot3D, 17, 0, 1, 3 );//37 - - l->setColumnStretch( 0, 0 ); - l->setColumnStretch( 1, 5 ); - l->setRowStretch ( 12, 5 ); - l->setRowStretch ( 17, 5 ); - l->setRowStretch ( 18, 1 ); + l->addWidget( aNameLab, 0, 0 ); //0 + l->addWidget( aName, 0, 1 ); //1 + + // Node group + QWidget* NodeGrp = new QWidget(); + QGridLayout* NodeLayout = new QGridLayout(NodeGrp); + NodeLayout->setSpacing(SPACING); NodeLayout->setMargin(MARGIN); + + NodeLayout->addWidget( aNodesFreeLab, 0, 0 ); + NodeLayout->addWidget( aNodesFree, 0, 1 ); + NodeLayout->addWidget( aFreeNodesBtn, 0, 2 ); + NodeLayout->addWidget( aNodesNbConnLab, 1, 0 ); + NodeLayout->addWidget( aNodesNbConn, 1, 1 ); + NodeLayout->addWidget( aNodesNbConnBtn, 1, 2 ); + NodeLayout->addWidget( aNodesDoubleLab, 2, 0 ); + NodeLayout->addWidget( aNodesDouble, 2, 1 ); + NodeLayout->addWidget( aDoubleNodesBtn, 2, 2 ); + NodeLayout->addWidget( aToleranceLab, 3, 0 ); + NodeLayout->addWidget( myToleranceWidget, 3, 1 ); + NodeLayout->addWidget( myToleranceWidget, 3, 1 ); + NodeLayout->setRowStretch(4, 5); + + myMeshTB->addItem(NodeGrp, aNodesLab->text()); + aNodesLab->setVisible(false); + + // Edge group + QWidget* EdgeGrp = new QWidget(); + QGridLayout* EdgeLayout = new QGridLayout(EdgeGrp); + EdgeLayout->setSpacing(SPACING); EdgeLayout->setMargin(MARGIN); + + EdgeLayout->addWidget( anEdgesDoubleLab, 0, 0 ); + EdgeLayout->addWidget( anEdgesDouble, 0, 1 ); + EdgeLayout->addWidget( aDoubleEdgesBtn, 0, 2 ); + EdgeLayout->setRowStretch(1, 5); + + myMeshTB->addItem(EdgeGrp, anEdgesLab->text()); + anEdgesLab->setVisible(false); + + // Face group + QWidget* FaceGrp = new QWidget(); + QGridLayout* FaceLayout = new QGridLayout(FaceGrp); + FaceLayout->setSpacing(SPACING); FaceLayout->setMargin(MARGIN); + + FaceLayout->addWidget( aFacesDoubleLab, 0, 0 ); + FaceLayout->addWidget( aFacesDouble, 0, 1 ); + FaceLayout->addWidget( aDoubleFacesBtn, 0, 2 ); + FaceLayout->addWidget( aFacesOverLab, 1, 0 ); + FaceLayout->addWidget( aFacesOver, 1, 1 ); + FaceLayout->addWidget( aOverContFacesBtn, 1, 2 ); + FaceLayout->addWidget( anAspectRatioLab, 2, 0 ); + FaceLayout->addWidget( aComputeFaceBtn, 2, 2 ); + FaceLayout->addWidget( myPlot, 3, 0, 1, 3 ); + + myMeshTB->addItem(FaceGrp, aFacesLab->text()); + aFacesLab->setVisible(false); + + // Volume group + QWidget* VolumeGrp = new QWidget(); + QGridLayout* VolumeLayout = new QGridLayout(VolumeGrp); + VolumeLayout->setSpacing(SPACING); VolumeLayout->setMargin(MARGIN); + + VolumeLayout->addWidget( aVolumesDoubleLab, 0, 0 ); + VolumeLayout->addWidget( aVolumesDouble, 0, 1 ); + VolumeLayout->addWidget( aDoubleVolumesBtn, 0, 2 ); + VolumeLayout->addWidget( aVolumesOverLab, 1, 0 ); + VolumeLayout->addWidget( aVolumesOver, 1, 1 ); + VolumeLayout->addWidget( aOverContVolumesBtn,1, 2 ); + VolumeLayout->addWidget( anAspectRatio3DLab, 2, 0 ); + VolumeLayout->addWidget( aComputeVolumeBtn, 2, 2 ); + VolumeLayout->addWidget( myPlot3D, 3, 0, 1, 3 ); + + myMeshTB->addItem(VolumeGrp, aVolumesLab->text()); + aVolumesLab->setVisible(false); + + l->addWidget( myMeshTB, 1, 0, 1, 2 ); //2 + l->setRowStretch( 2, 5 ); clearInternal(); } @@ -3650,14 +3686,14 @@ void SMESHGUI_CtrlInfo::showInfo( const SMESH::SelectionProxy& proxy ) for ( int i = 0; i < myButtons.count(); ++i ) myButtons[i]->setEnabled( true ); - SMESH::long_array_var nbElemsByType = obj->GetNbElementsByType(); + SMESH::smIdType_array_var nbElemsByType = obj->GetNbElementsByType(); if ( ! &nbElemsByType.in() ) return; const CORBA::Long ctrlLimit = meshLoaded ? SMESHGUI::resourceMgr()->integerValue( "SMESH", "info_controls_limit", 3000 ) : -1; // nodes info - const CORBA::Long nbNodes = nbElemsByType[ SMESH::NODE ]; + const SMESH::smIdType nbNodes = nbElemsByType[ SMESH::NODE ]; // const CORBA::Long nbElems = ( nbElemsByType[ SMESH::EDGE ] + // nbElemsByType[ SMESH::FACE ] + // nbElemsByType[ SMESH::VOLUME ] ); @@ -3677,8 +3713,8 @@ void SMESHGUI_CtrlInfo::showInfo( const SMESH::SelectionProxy& proxy ) } } else { - for( int i=2; i<=13; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( false ); + myMeshTB->setItemEnabled(0, false ); + myMeshTB->widget(0)->setVisible( false ); } // edges info @@ -3690,8 +3726,8 @@ void SMESHGUI_CtrlInfo::showInfo( const SMESH::SelectionProxy& proxy ) myButtons[3]->setEnabled( true ); } else { - for( int i=14; i<=17; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( false ); + myMeshTB->setItemEnabled(1, false ); + myMeshTB->widget(1)->setVisible( false ); } // faces info @@ -3709,14 +3745,10 @@ void SMESHGUI_CtrlInfo::showInfo( const SMESH::SelectionProxy& proxy ) myButtons[5]->setEnabled( true ); myButtons[6]->setEnabled( true ); } -#ifdef DISABLE_PLOT2DVIEWER - for( int i=25; i<=27; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( false ); -#endif } else { - for( int i=18; i<=27; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( false ); + myMeshTB->setItemEnabled(2, false ); + myMeshTB->widget(2)->setVisible( false ); } // volumes info @@ -3734,15 +3766,15 @@ void SMESHGUI_CtrlInfo::showInfo( const SMESH::SelectionProxy& proxy ) myButtons[8]->setEnabled( true ); myButtons[9]->setEnabled( true ); } -#ifdef DISABLE_PLOT2DVIEWER - for( int i=35; i<=37; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( false ); -#endif } else { - for( int i=28; i<=37; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( false ); + myMeshTB->setItemEnabled(3, false ); + myMeshTB->widget(3)->setVisible( false ); } + myMeshTB->setCurrentIndex(0); + myMeshTB->setVisible( (nbNodes + nbElemsByType[ SMESH::EDGE ] + + nbElemsByType[ SMESH::FACE ] + + nbElemsByType[ SMESH::VOLUME ]) > 0 ); } //================================================================================ @@ -3896,8 +3928,10 @@ void SMESHGUI_CtrlInfo::computeAspectRatio3D() */ void SMESHGUI_CtrlInfo::clearInternal() { - for( int i=0; i<=37; i++) - dynamic_cast(layout())->itemAt(i)->widget()->setVisible( true ); + for (int i=0; i<=3;i++) { + myMeshTB->setItemEnabled(i, true ); + myMeshTB->widget(i)->setVisible( true ); + } for( int i=0; i<=9; i++) myButtons[i]->setEnabled( false ); myPlot->detachItems(); @@ -3970,15 +4004,15 @@ void SMESHGUI_CtrlInfo::saveInfo( QTextStream &out ) out << tr( "NAME_LAB" ) << " " << myWidgets[0]->text() << endl; out << tr( "NODES_INFO" ) << endl; out << indent() << tr( "NUMBER_OF_THE_FREE_NODES" ) << ": " << myWidgets[1]->text() << endl; - out << indent() << tr( "NUMBER_OF_THE_DOUBLE_NODES" ) << ": " << myWidgets[2]->text() << endl; + out << indent() << tr( "NUMBER_OF_THE_DOUBLE_NODES" ) << ": " << myWidgets[3]->text() << endl; out << tr( "EDGES_INFO" ) << endl; - out << indent() << tr( "NUMBER_OF_THE_DOUBLE_EDGES" ) << ": " << myWidgets[3]->text() << endl; + out << indent() << tr( "NUMBER_OF_THE_DOUBLE_EDGES" ) << ": " << myWidgets[4]->text() << endl; out << tr( "FACES_INFO" ) << endl; - out << indent() << tr( "NUMBER_OF_THE_DOUBLE_FACES" ) << ": " << myWidgets[4]->text() << endl; - out << indent() << tr( "NUMBER_OF_THE_OVER_CONSTRAINED" ) << ": " << myWidgets[5]->text() << endl; + out << indent() << tr( "NUMBER_OF_THE_DOUBLE_FACES" ) << ": " << myWidgets[5]->text() << endl; + out << indent() << tr( "NUMBER_OF_THE_OVER_CONSTRAINED" ) << ": " << myWidgets[6]->text() << endl; out << tr( "VOLUMES_INFO" ) << endl; - out << indent() << tr( "NUMBER_OF_THE_DOUBLE_VOLUMES" ) << ": " << myWidgets[6]->text() << endl; - out << indent() << tr( "NUMBER_OF_THE_OVER_CONSTRAINED" ) << ": " << myWidgets[7]->text() << endl; + out << indent() << tr( "NUMBER_OF_THE_DOUBLE_VOLUMES" ) << ": " << myWidgets[7]->text() << endl; + out << indent() << tr( "NUMBER_OF_THE_OVER_CONSTRAINED" ) << ": " << myWidgets[8]->text() << endl; } ////////////////////////////////////////////////////////////////////////////////