X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_DisplayEntitiesDlg.cxx;h=06a44303aa540602b354fa74a682a8876a57de76;hb=53cfbcdd3398697cb1581f0dcd92fb3cd7805fc3;hp=2cb8f5af5e88a8c7f5b66da21360be623228e7c7;hpb=6bac08c1a81f34d3f21c550bd92f83654b2546a5;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx index 2cb8f5af5..06a44303a 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-2021 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 @@ -22,22 +22,24 @@ #include "SMESHGUI_DisplayEntitiesDlg.h" #include "SMESHGUI.h" +#include "SMESHGUI_MeshUtils.h" #include "SMESHGUI_Utils.h" #include "SMESHGUI_VTKUtils.h" -#include "SMESHGUI_MeshUtils.h" - -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include const int MARGIN = 9; const int SPACING = 6; @@ -80,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(); @@ -96,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(); @@ -111,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(); @@ -126,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(); @@ -141,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(); @@ -156,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 ); @@ -164,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(); } /* @@ -176,7 +185,7 @@ SMESHGUI_DisplayEntitiesDlg::~SMESHGUI_DisplayEntitiesDlg() } void SMESHGUI_DisplayEntitiesDlg::InverseEntityMode(unsigned int& theOutputMode, - unsigned int theMode) + unsigned int theMode) { bool anIsNotPresent = ~theOutputMode & theMode; if(anIsNotPresent) @@ -191,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 ) @@ -209,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(); } /*! @@ -220,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" ); } /*! @@ -228,11 +229,12 @@ void SMESHGUI_DisplayEntitiesDlg::onHelp() */ void SMESHGUI_DisplayEntitiesDlg::onOk() { + SUIT_OverrideCursor wc; + const char* entry = myIObject->getEntry(); if ( !myActor ) { - myActor = SMESH::CreateActor(SMESH::GetActiveStudyDocument(), - entry, true); + myActor = SMESH::CreateActor(entry, true); } if( myEntityMode != myActor->GetEntityMode() ) { @@ -245,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 ); +}