X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_DisplayEntitiesDlg.cxx;h=378e2ae0d23beda1b9e283da253142d40594a042;hb=13e344b8720248d920a39505004bb9a889a0b2d7;hp=c26925804953a9f0d089bafc9ac2d9b5a49f5602;hpb=6c4a9f32ed7b4416d79e0d0d293919609a8eb178;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx index c26925804..378e2ae0d 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-2020 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 @@ -97,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(); @@ -112,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(); @@ -127,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(); @@ -142,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(); @@ -157,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 ); @@ -165,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(); } /* @@ -192,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 ) @@ -210,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(); } /*! @@ -221,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" ); } /*! @@ -234,8 +233,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 +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 ); +}