X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_DisplayEntitiesDlg.cxx;h=808f6e219aa2363567b318f675fb8f79ed81500c;hp=741c0dbdec7b45f9c1fff98d1e5dba03ce304322;hb=8d297d6698f361d4f2dde723050bcfbaea050920;hpb=f5b69ee44c7918a89e5fd9d21d3bd2a10a724b5d diff --git a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx index 741c0dbde..808f6e219 100644 --- a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2014-2016 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,23 @@ #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; @@ -96,6 +97,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 +113,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 +129,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 +145,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 +161,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 +170,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 +184,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 +199,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 +209,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 +220,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 +228,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 +246,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 ); +}