X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_DisplayEntitiesDlg.cxx;h=68f7379a1ba109da67a81df74e47f7ad76e0655f;hp=c26925804953a9f0d089bafc9ac2d9b5a49f5602;hb=d9f4b53e489dd5857db264ede6acded7b076c9f1;hpb=6c4a9f32ed7b4416d79e0d0d293919609a8eb178 diff --git a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx index c26925804..68f7379a1 100644 --- a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2014-2022 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -81,7 +82,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) QGridLayout* hl = new QGridLayout( anEntitiesGrp ); hl->setMargin( MARGIN ); hl->setSpacing( SPACING ); - int nbElements; + smIdType nbElements; // 0DElements nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_0DElement ) : aMesh->Nb0DElements(); @@ -97,6 +98,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nb0DElemsLab, 0, 1 ); my0DElemsTB->setEnabled( nbElements ); nb0DElemsLab->setEnabled( nbElements ); + myNbTypes = ( nbElements > 0 ); // Edges nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Edge ) : aMesh->NbEdges(); @@ -112,6 +114,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbEdgesLab, 1, 1 ); myEdgesTB->setEnabled( nbElements ); nbEdgesLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Faces nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Face ) : aMesh->NbFaces(); @@ -127,6 +130,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbFacesLab, 2, 1 ); myFacesTB->setEnabled( nbElements ); nbFacesLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Volumes nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Volume ) : aMesh->NbVolumes(); @@ -142,6 +146,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbVolumesLab, 3, 1 ); myVolumesTB->setEnabled( nbElements ); nbVolumesLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Balls nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Ball ) : aMesh->NbBalls(); @@ -157,6 +162,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbBallsLab, 4, 1 ); myBallsTB->setEnabled( nbElements ); nbBallsLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); QVBoxLayout* aDlgLay = new QVBoxLayout( mainFrame() ); aDlgLay->setMargin( 0 ); @@ -165,8 +171,10 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) button( OK )->setText( tr( "SMESH_BUT_OK" ) ); - connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() ) ); - connect( this, SIGNAL( dlgOk() ), this, SLOT( onOk() ) ); + connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() )); + connect( this, SIGNAL( dlgOk() ), this, SLOT( onOk() )); + + updateButtons(); } /* @@ -192,14 +200,6 @@ void SMESHGUI_DisplayEntitiesDlg::InverseEntityMode(unsigned int& theOutputMode, void SMESHGUI_DisplayEntitiesDlg::onChangeEntityMode( bool isChecked ) { QCheckBox* aSender = (QCheckBox*)sender(); - if ( myNbCheckedButtons == 1 && !isChecked ) { - SUIT_MessageBox::warning(this, tr("SMESH_WRN_WARNING"), - tr("WRN_AT_LEAST_ONE")); - disconnect( aSender, SIGNAL(toggled(bool)), this, SLOT(onChangeEntityMode(bool)) ); - aSender->setChecked( true ); - connect( aSender, SIGNAL(toggled(bool)), this, SLOT(onChangeEntityMode(bool)) ); - return; - } if ( my0DElemsTB == aSender ) InverseEntityMode( myEntityMode, SMESH_Actor::e0DElements ); else if ( myEdgesTB == aSender ) @@ -210,9 +210,9 @@ void SMESHGUI_DisplayEntitiesDlg::onChangeEntityMode( bool isChecked ) InverseEntityMode( myEntityMode, SMESH_Actor::eVolumes ); else if ( myBallsTB == aSender ) InverseEntityMode( myEntityMode, SMESH_Actor::eBallElem ); - + isChecked ? myNbCheckedButtons++ : myNbCheckedButtons--; - + updateButtons(); } /*! @@ -221,7 +221,7 @@ void SMESHGUI_DisplayEntitiesDlg::onChangeEntityMode( bool isChecked ) void SMESHGUI_DisplayEntitiesDlg::onHelp() { LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); - app->onHelpContextModule( "SMESH", "display_entity_page.html" ); + app->onHelpContextModule( "SMESH", "display_entity.html" ); } /*! @@ -234,8 +234,7 @@ void SMESHGUI_DisplayEntitiesDlg::onOk() const char* entry = myIObject->getEntry(); if ( !myActor ) { - myActor = SMESH::CreateActor(SMESH::GetActiveStudyDocument(), - entry, true); + myActor = SMESH::CreateActor(entry, true); } if( myEntityMode != myActor->GetEntityMode() ) { @@ -248,3 +247,11 @@ void SMESHGUI_DisplayEntitiesDlg::onOk() SMESH::UpdateView( wnd, SMESH::eDisplay, entry ); } } + +/*! + * \brief Enable/disable OK button depending on nb of selected entities + */ +void SMESHGUI_DisplayEntitiesDlg::updateButtons() +{ + setButtonEnabled( myNbCheckedButtons > 0 || myNbTypes == 0, OK ); +}