X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Add0DElemsOnAllNodesDlg.cxx;h=96fca0d9f0f4e658cf0e94ae1e8d60964a707c9e;hp=295f5c52ee5c5a51caf30abcc6d1850b0d467ffc;hb=674c0d8b9d98776136d216ec8f1bad56acac5bf5;hpb=8682ebb1ebbf9c8392c8fa4adcce76d37e171859 diff --git a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx index 295f5c52e..96fca0d9f 100644 --- a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx @@ -223,6 +223,7 @@ SMESHGUI_Add0DElemsOnAllNodesOp::SMESHGUI_Add0DElemsOnAllNodesOp() connect( myDlg, SIGNAL( selTypeChanged(int) ), SLOT( onSelTypeChange(int))); connect( myDlg->myFilterBtn, SIGNAL( clicked()), SLOT( onSetFilter() )); + connect( myDlg->myGroupBox, SIGNAL( clicked(bool)), SLOT( updateButtons() )); } //================================================================================ @@ -270,6 +271,7 @@ void SMESHGUI_Add0DElemsOnAllNodesOp::selectionDone() myIO.Nullify(); myDlg->setObjectText( 0, ""); + updateButtons(); SALOME_ListIO aList; selectionMgr()->selectedObjects( aList ); @@ -297,7 +299,8 @@ void SMESHGUI_Add0DElemsOnAllNodesOp::selectionDone() // fill the list of existing groups myDlg->myGroupListCmBox->clear(); myDlg->myGroupListCmBox->addItem( QString() ); - if ( !myIO.IsNull() && myIO->hasEntry()) { + if ( !myIO.IsNull() && myIO->hasEntry()) + { SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO( myIO ); _PTR(SObject) meshSO = SMESH::ObjectToSObject( mesh ); _PTR(SObject) group0DRoot; @@ -313,7 +316,42 @@ void SMESHGUI_Add0DElemsOnAllNodesOp::selectionDone() myDlg->myGroupListCmBox->addItem( groupName.c_str() ); } } + // enable buttons + updateButtons(); + } +} + +//======================================================================= +//function : updateButtons +//purpose : enable [Apply] +//======================================================================= + +void SMESHGUI_Add0DElemsOnAllNodesOp::updateButtons() +{ + bool ok = false; + + if (( !myIO.IsNull() && myIO->hasEntry() && !myDlg->objectText( 0 ).isEmpty() ) && + ( !myDlg->myGroupBox->isChecked() || !myDlg->myGroupListCmBox->currentText().isEmpty() )) + { + SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO( myIO ); + if ( !mesh->_is_nil() ) + { + if ( myDlg->getSelectionType() == SEL_OBJECT ) + ok = true; + else + { + QString ids = myDlg->objectText( 0 ); + QStringList idList = ids.split( " ", QString::SkipEmptyParts ); + const bool isElem = ( myDlg->getSelectionType() == SEL_ELEMENTS ); + QStringList::iterator idIt = idList.begin(); + for ( ; idIt != idList.end() && !ok; ++idIt ) + ok = ( mesh->GetElementType( idIt->toLong(), isElem ) != SMESH::ALL ); + } + } } + + myDlg->button( QtxDialog::Apply )->setEnabled( ok ); + myDlg->button( QtxDialog::OK )->setEnabled( ok ); } //================================================================================ @@ -496,3 +534,14 @@ void SMESHGUI_Add0DElemsOnAllNodesOp::onSetFilter() myFilterDlg->show(); } + +//======================================================================= +//function : onTextChanged +//purpose : SLOT called when the user types IDs +//======================================================================= + +void SMESHGUI_Add0DElemsOnAllNodesOp::onTextChanged( int obj, const QStringList& text ) +{ + SMESHGUI_SelectionOp::onTextChanged( obj, text ); + updateButtons(); +}