-// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021 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
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() );
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() )
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 );
\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
}
}
-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();
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 );
myIDPreview->SetPointsLabeled( false );
if ( myProxy ) {
- TColStd_MapOfInteger ID;
+ SVTK_TVtkIDsMap ID;
QSet<uint> ids;
std::vector<int> idVec;
std::list< gp_XYZ > aGrCentersXYZ;
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 );
+ }
}
}
}
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" );
connect( aOverContVolumesBtn,SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() ) );
connect( myToleranceWidget, SIGNAL( valueChanged( double ) ), this, SLOT( setTolerance( double ) ) );
- 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();
}
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 ] );
}
}
else {
- for( int i=2; i<=13; i++)
- dynamic_cast<QGridLayout*>(layout())->itemAt(i)->widget()->setVisible( false );
+ myMeshTB->setItemEnabled(0, false );
+ myMeshTB->widget(0)->setVisible( false );
}
// edges info
myButtons[3]->setEnabled( true );
}
else {
- for( int i=14; i<=17; i++)
- dynamic_cast<QGridLayout*>(layout())->itemAt(i)->widget()->setVisible( false );
+ myMeshTB->setItemEnabled(1, false );
+ myMeshTB->widget(1)->setVisible( false );
}
// faces info
myButtons[5]->setEnabled( true );
myButtons[6]->setEnabled( true );
}
-#ifdef DISABLE_PLOT2DVIEWER
- for( int i=25; i<=27; i++)
- dynamic_cast<QGridLayout*>(layout())->itemAt(i)->widget()->setVisible( false );
-#endif
}
else {
- for( int i=18; i<=27; i++)
- dynamic_cast<QGridLayout*>(layout())->itemAt(i)->widget()->setVisible( false );
+ myMeshTB->setItemEnabled(2, false );
+ myMeshTB->widget(2)->setVisible( false );
}
// volumes info
myButtons[8]->setEnabled( true );
myButtons[9]->setEnabled( true );
}
-#ifdef DISABLE_PLOT2DVIEWER
- for( int i=35; i<=37; i++)
- dynamic_cast<QGridLayout*>(layout())->itemAt(i)->widget()->setVisible( false );
-#endif
}
else {
- for( int i=28; i<=37; i++)
- dynamic_cast<QGridLayout*>(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 );
}
//================================================================================
*/
void SMESHGUI_CtrlInfo::clearInternal()
{
- for( int i=0; i<=37; i++)
- dynamic_cast<QGridLayout*>(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();
void SMESHGUI_CtrlInfo::setTolerance( double theTolerance )
{
- //SMESH::long_array_var anElems = getElementsByType( SMESH::NODE );
- myButtons[1]->setEnabled( true );
- myWidgets[2]->setText("");
+ myButtons[2]->setEnabled( true );
+ myWidgets[3]->setText("");
+ for ( int i = 0; i < myPredicates.count(); ++i )
+ if ( myPredicates[i]->GetFunctorType() == SMESH::FT_EqualNodes )
+ {
+ SMESH::EqualNodes_var functor = SMESH::EqualNodes::_narrow( myPredicates[i] );
+ if ( !functor->_is_nil() )
+ functor->SetTolerance( theTolerance );
+ }
}
#ifndef DISABLE_PLOT2DVIEWER
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;
}
////////////////////////////////////////////////////////////////////////////////