From 7a7d7e6e48067265c3c05f5063ffb934d9056b74 Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 12 Nov 2015 14:46:55 +0300 Subject: [PATCH] IPAL52943: "Apply and Close" button does not active on symmetry dialog box Enable work with not shown meshes --- src/SMESHGUI/SMESHGUI_RotationDlg.cxx | 68 ++++++++----- src/SMESHGUI/SMESHGUI_RotationDlg.h | 1 + src/SMESHGUI/SMESHGUI_ScaleDlg.cxx | 120 +++++++++-------------- src/SMESHGUI/SMESHGUI_ScaleDlg.h | 1 + src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx | 92 +++++++++-------- src/SMESHGUI/SMESHGUI_SymmetryDlg.h | 1 + src/SMESHGUI/SMESHGUI_TranslationDlg.cxx | 82 ++++++++++------ src/SMESHGUI/SMESHGUI_TranslationDlg.h | 1 + 8 files changed, 198 insertions(+), 168 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI_RotationDlg.cxx b/src/SMESHGUI/SMESHGUI_RotationDlg.cxx index 1ed6e0a79..81568b57d 100644 --- a/src/SMESHGUI/SMESHGUI_RotationDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_RotationDlg.cxx @@ -706,34 +706,35 @@ void SMESHGUI_RotationDlg::SelectionIntoArgument() int aNbUnits = 0; - if (myEditCurrentArgument == (QWidget*)LineEditElements) { + if (myEditCurrentArgument == (QWidget*)LineEditElements) + { myElementsId = ""; myObjects.clear(); myObjectsNames.clear(); myMeshes.clear(); - for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) { + for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) + { Handle(SALOME_InteractiveObject) IO = it.Value(); SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( IO ); if ( aMesh->_is_nil() ) return; - + myActor = SMESH::FindActorByObject( aMesh ); if ( !myActor ) myActor = SMESH::FindActorByEntry( IO->getEntry() ); - if ( !myActor && !CheckBoxMesh->isChecked() ) - return; - - if ( !SMESH::IObjectToInterface( IO )->_is_nil() ) { - if ( _PTR(Study) aStudy = SMESH::GetActiveStudyDocument() ) { - _PTR(SObject) obj = aStudy->FindObjectID( qPrintable( QString( IO->getEntry() ) ) ); - _PTR(GenericAttribute) anAttr; - if ( obj && obj->FindAttribute( anAttr, "AttributeName" ) ) { - _PTR(AttributeName) aNameAttr( anAttr ); - myObjects << SMESH::IObjectToInterface( IO ); - myObjectsNames << aNameAttr->Value().c_str(); - myMeshes << aMesh; - } + // if ( !myActor && !CheckBoxMesh->isChecked() ) -- elems can be selected by Filter + // return; + + SMESH::SMESH_IDSource_var idSrc = SMESH::IObjectToInterface( IO ); + if ( _PTR(SObject) obj = SMESH::FindSObject( idSrc )) + { + std::string name = obj->GetName(); + if ( !name.empty() ) + { + myObjects << idSrc; + myObjectsNames << name.c_str(); + myMeshes << aMesh; } } } @@ -749,11 +750,11 @@ void SMESHGUI_RotationDlg::SelectionIntoArgument() else if ( ActionGroup->checkedId() != MOVE_ELEMS_BUTTON ) { MakeGroupsCheck->setEnabled(true); } - if (CheckBoxMesh->isChecked()) { - SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); + if (CheckBoxMesh->isChecked()) { if ( myMeshes.isEmpty() ) return; + SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); } else { aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, aList.First(), aString); @@ -764,15 +765,13 @@ void SMESHGUI_RotationDlg::SelectionIntoArgument() myNbOkElements = true; - } else { + } + else // set coordinates by picked nodes + { Handle(SALOME_InteractiveObject) IO = aList.First(); - if ((SMESH::GetMeshByIO(IO))->_is_nil()) - return; - SMESH_Actor* anActor = SMESH::FindActorByObject(SMESH::GetMeshByIO(IO)); + SMESH_Actor* anActor = SMESH::FindActorByEntry( IO->getEntry() ); if (!anActor) - anActor = SMESH::FindActorByEntry(IO->getEntry()); - if (!anActor && !CheckBoxMesh->isChecked()) return; aNbUnits = SMESH::GetNameOfSelectedNodes(mySelector, IO, aString); @@ -1062,8 +1061,10 @@ void SMESHGUI_RotationDlg::setFilters() tr("NO_MESH_SELECTED")); return; } - if ( !myFilterDlg ) + if ( !myFilterDlg ) { myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL ); + connect(myFilterDlg, SIGNAL(Accepted()), SLOT(onFilterAccepted())); + } QList types; if ( myMeshes[0]->NbEdges() ) types << SMESH::EDGE; @@ -1081,6 +1082,23 @@ void SMESHGUI_RotationDlg::setFilters() myFilterDlg->show(); } +//======================================================================= +// name : onFilterAccepted() +// Purpose : SLOT. Called when Filter dlg closed with OK button. +// Activate [Apply] if no Actor is available +//======================================================================= +void SMESHGUI_RotationDlg::onFilterAccepted() +{ + if ( myMeshes.length() > 0 && !buttonOk->isEnabled() ) + { + myElementsId = LineEditElements->text(); + QStringList aListElementsId = myElementsId.split(" ", QString::SkipEmptyParts); + myNbOkElements = aListElementsId.count(); + buttonOk->setEnabled( myNbOkElements ); + buttonApply->setEnabled( myNbOkElements ); + } +} + //================================================================================= // function : isValid // purpose : diff --git a/src/SMESHGUI/SMESHGUI_RotationDlg.h b/src/SMESHGUI/SMESHGUI_RotationDlg.h index 8b4be67e6..736bafb59 100644 --- a/src/SMESHGUI/SMESHGUI_RotationDlg.h +++ b/src/SMESHGUI/SMESHGUI_RotationDlg.h @@ -135,6 +135,7 @@ private: protected slots: virtual void onDisplaySimulation( bool ); virtual void reject(); + void onFilterAccepted(); private slots: void ClickOnOk(); diff --git a/src/SMESHGUI/SMESHGUI_ScaleDlg.cxx b/src/SMESHGUI/SMESHGUI_ScaleDlg.cxx index 8f4ab6993..2248ac60e 100644 --- a/src/SMESHGUI/SMESHGUI_ScaleDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ScaleDlg.cxx @@ -743,38 +743,39 @@ void SMESHGUI_ScaleDlg::SelectionIntoArgument() int aNbUnits = 0; - if (myEditCurrentArgument == (QWidget*)LineEditElements) { + if (myEditCurrentArgument == (QWidget*)LineEditElements) + { myElementsId = ""; myObjects.clear(); myObjectsNames.clear(); myMeshes.clear(); - for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) { + for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) + { Handle(SALOME_InteractiveObject) IO = it.Value(); SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( IO ); if ( aMesh->_is_nil() ) return; - + myActor = SMESH::FindActorByObject( aMesh ); if ( !myActor ) myActor = SMESH::FindActorByEntry( IO->getEntry() ); - if ( !myActor && !CheckBoxMesh->isChecked() ) - return; - - if ( !SMESH::IObjectToInterface( IO )->_is_nil() ) { - if ( _PTR(Study) aStudy = SMESH::GetActiveStudyDocument() ) { - _PTR(SObject) obj = aStudy->FindObjectID( qPrintable( QString( IO->getEntry() ) ) ); - _PTR(GenericAttribute) anAttr; - if ( obj && obj->FindAttribute( anAttr, "AttributeName" ) ) { - _PTR(AttributeName) aNameAttr( anAttr ); - myObjects << SMESH::IObjectToInterface( IO ); - myObjectsNames << aNameAttr->Value().c_str(); - myMeshes << aMesh; - } + // if ( !myActor && !CheckBoxMesh->isChecked() ) -- elems can be selected by Filter + // return; + + SMESH::SMESH_IDSource_var idSrc = SMESH::IObjectToInterface( IO ); + if ( _PTR(SObject) obj = SMESH::FindSObject( idSrc )) + { + std::string name = obj->GetName(); + if ( !name.empty() ) + { + myObjects << idSrc; + myObjectsNames << name.c_str(); + myMeshes << aMesh; } } } - + // MakeGroups is available if there are groups and "Copy" int aNbGroups = 0; for ( int i = 0; i < myMeshes.count(); i++ ) @@ -789,50 +790,11 @@ void SMESHGUI_ScaleDlg::SelectionIntoArgument() } if (CheckBoxMesh->isChecked()) { - SMESH::GetNameOfSelectedIObjects( mySelectionMgr, aString ); if (myMeshes.isEmpty()) return; - // get IDs from mesh - /* - SMDS_Mesh* aSMDSMesh = myActor->GetObject()->GetMesh(); - if (!aSMDSMesh) - return; - - for (int i = aSMDSMesh->MinElementID(); i <= aSMDSMesh->MaxElementID(); i++) { - const SMDS_MeshElement * e = aSMDSMesh->FindElement(i); - if (e) { - myElementsId += QString(" %1").arg(i); - aNbUnits++; - } - } - } else if (!SMESH::IObjectToInterface(IO)->_is_nil()) { //SUBMESH - // get submesh - SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface(IO); - - // get IDs from submesh - SMESH::long_array_var anElementsIds = new SMESH::long_array; - anElementsIds = aSubMesh->GetElementsId(); - for (int i = 0; i < anElementsIds->length(); i++) { - myElementsId += QString(" %1").arg(anElementsIds[i]); - } - aNbUnits = anElementsIds->length(); - } else { // GROUP - // get smesh group - SMESH::SMESH_GroupBase_var aGroup = - SMESH::IObjectToInterface(IO); - if (aGroup->_is_nil()) - return; - - // get IDs from smesh group - SMESH::long_array_var anElementsIds = new SMESH::long_array; - anElementsIds = aGroup->GetListOfID(); - for (int i = 0; i < anElementsIds->length(); i++) { - myElementsId += QString(" %1").arg(anElementsIds[i]); - } - aNbUnits = anElementsIds->length(); - } - */ - } else { + SMESH::GetNameOfSelectedIObjects( mySelectionMgr, aString ); + } + else { aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, aList.First(), aString); myElementsId = aString; if (aNbUnits < 1) @@ -840,15 +802,14 @@ void SMESHGUI_ScaleDlg::SelectionIntoArgument() } myNbOkElements = true; - } else { + + } + else // set coordinates by a picked node + { Handle(SALOME_InteractiveObject) IO = aList.First(); - if ((SMESH::GetMeshByIO(IO))->_is_nil()) - return; - SMESH_Actor* anActor = SMESH::FindActorByObject(SMESH::GetMeshByIO(IO)); + SMESH_Actor* anActor = SMESH::FindActorByEntry( IO->getEntry() ); if (!anActor) - anActor = SMESH::FindActorByEntry(IO->getEntry()); - if (!anActor && !CheckBoxMesh->isChecked()) return; aNbUnits = SMESH::GetNameOfSelectedNodes(mySelector, IO, aString); @@ -1105,14 +1066,14 @@ void SMESHGUI_ScaleDlg::keyPressEvent( QKeyEvent* e ) //================================================================================= void SMESHGUI_ScaleDlg::setFilters() { - if(myMeshes.isEmpty()) { - SUIT_MessageBox::critical(this, - tr("SMESH_ERROR"), - tr("NO_MESH_SELECTED")); - return; + if ( myMeshes.isEmpty() ) { + SUIT_MessageBox::critical(this, tr("SMESH_ERROR"), tr("NO_MESH_SELECTED")); + return; } - if ( !myFilterDlg ) + if ( !myFilterDlg ) { myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL ); + connect(myFilterDlg, SIGNAL(Accepted()), SLOT(onFilterAccepted())); + } QList types; if ( myMeshes[0]->NbEdges() ) types << SMESH::EDGE; @@ -1130,6 +1091,23 @@ void SMESHGUI_ScaleDlg::setFilters() myFilterDlg->show(); } +//======================================================================= +// name : onFilterAccepted() +// Purpose : SLOT. Called when Filter dlg closed with OK button. +// Activate [Apply] if no Actor is available +//======================================================================= +void SMESHGUI_ScaleDlg::onFilterAccepted() +{ + if ( myMeshes.length() > 0 && !buttonOk->isEnabled() ) + { + myElementsId = LineEditElements->text(); + QStringList aListElementsId = myElementsId.split(" ", QString::SkipEmptyParts); + myNbOkElements = aListElementsId.count(); + buttonOk->setEnabled ( myNbOkElements ); + buttonApply->setEnabled( myNbOkElements ); + } +} + //================================================================================= // function : isValid // purpose : diff --git a/src/SMESHGUI/SMESHGUI_ScaleDlg.h b/src/SMESHGUI/SMESHGUI_ScaleDlg.h index a7a15d6ba..bdd285b28 100644 --- a/src/SMESHGUI/SMESHGUI_ScaleDlg.h +++ b/src/SMESHGUI/SMESHGUI_ScaleDlg.h @@ -131,6 +131,7 @@ private: protected slots: virtual void onDisplaySimulation( bool ); virtual void reject(); + void onFilterAccepted(); private slots: void ConstructorsClicked( int ); diff --git a/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx b/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx index eebc605df..d5c5d473d 100644 --- a/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx @@ -765,44 +765,44 @@ void SMESHGUI_SymmetryDlg::SelectionIntoArgument() int aNbUnits = 0; - if (myEditCurrentArgument == (QWidget*)LineEditElements) { + if (myEditCurrentArgument == (QWidget*)LineEditElements) + { myElementsId = ""; myObjects.clear(); myObjectsNames.clear(); myMeshes.clear(); - for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) { + for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) + { Handle(SALOME_InteractiveObject) IO = it.Value(); - SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( IO ); - if( aMesh->_is_nil() ) - return; + if ( aMesh->_is_nil() ) + continue; myActor = SMESH::FindActorByObject( aMesh ); if ( !myActor ) myActor = SMESH::FindActorByEntry( IO->getEntry() ); - if ( !myActor && !CheckBoxMesh->isChecked() ) - return; + // if ( !myActor && !CheckBoxMesh->isChecked() ) -- elems can be selected by Filter + // return; - if ( !SMESH::IObjectToInterface( IO )->_is_nil() ) { - if ( _PTR(Study) aStudy = SMESH::GetActiveStudyDocument() ) { - _PTR(SObject) obj = aStudy->FindObjectID( qPrintable( QString( IO->getEntry() ) ) ); - _PTR(GenericAttribute) anAttr; - if ( obj && obj->FindAttribute( anAttr, "AttributeName" ) ) { - _PTR(AttributeName) aNameAttr( anAttr ); - myObjects << SMESH::IObjectToInterface( IO ); - myObjectsNames << aNameAttr->Value().c_str(); - myMeshes << aMesh; - } + SMESH::SMESH_IDSource_var idSrc = SMESH::IObjectToInterface( IO ); + if ( _PTR(SObject) obj = SMESH::FindSObject( idSrc )) + { + std::string name = obj->GetName(); + if ( !name.empty() ) + { + myObjects << idSrc; + myObjectsNames << name.c_str(); + myMeshes << aMesh; } } } // MakeGroups is available if there are groups and "Copy" - int aNbGroups = 0; - for ( int i = 0; i < myMeshes.count(); i++ ) - aNbGroups += myMeshes[i]->NbGroups(); - + int aNbGroups = 0; + for ( int i = 0; i < myMeshes.count(); i++ ) + aNbGroups += myMeshes[i]->NbGroups(); + if ( aNbGroups == 0 ) { MakeGroupsCheck->setChecked(false); MakeGroupsCheck->setEnabled(false); @@ -810,31 +810,26 @@ void SMESHGUI_SymmetryDlg::SelectionIntoArgument() else if ( ActionGroup->checkedId() != MOVE_ELEMS_BUTTON ) { MakeGroupsCheck->setEnabled(true); } - if (CheckBoxMesh->isChecked()) { - SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); + if (CheckBoxMesh->isChecked()) { if ( myObjects.isEmpty() ) return; - // get IDs from mesh - // get IDs from submesh - // get IDs from smesh group - } else { + SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); + } + else { aNbUnits = SMESH::GetNameOfSelectedElements( mySelector, aList.First(), aString); myElementsId = aString; if (aNbUnits < 1) return; } - myNbOkElements = true; - } else { + } + else // set coordinates by a picked node + { Handle(SALOME_InteractiveObject) IO = aList.First(); - if ((SMESH::GetMeshByIO(IO))->_is_nil()) - return; - SMESH_Actor* anActor = SMESH::FindActorByObject(SMESH::GetMeshByIO(IO)); + SMESH_Actor* anActor = SMESH::FindActorByEntry( IO->getEntry() ); if (!anActor) - anActor = SMESH::FindActorByEntry(IO->getEntry()); - if (!anActor && !CheckBoxMesh->isChecked()) return; aNbUnits = SMESH::GetNameOfSelectedNodes(mySelector, IO, aString); @@ -1126,14 +1121,14 @@ void SMESHGUI_SymmetryDlg::keyPressEvent( QKeyEvent* e ) //================================================================================= void SMESHGUI_SymmetryDlg::setFilters() { - if(myMeshes.isEmpty()) { - SUIT_MessageBox::critical(this, - tr("SMESH_ERROR"), - tr("NO_MESH_SELECTED")); - return; + if ( myMeshes.isEmpty() ) { + SUIT_MessageBox::critical(this, tr("SMESH_ERROR"), tr("NO_MESH_SELECTED")); + return; } - if ( !myFilterDlg ) + if ( !myFilterDlg ) { myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL ); + connect(myFilterDlg, SIGNAL(Accepted()), SLOT(onFilterAccepted())); + } QList types; if ( myMeshes[0]->NbEdges() ) types << SMESH::EDGE; @@ -1151,6 +1146,23 @@ void SMESHGUI_SymmetryDlg::setFilters() myFilterDlg->show(); } +//======================================================================= +// name : onFilterAccepted() +// Purpose : SLOT. Called when Filter dlg closed with OK button. +// Activate [Apply] if no Actor is available +//======================================================================= +void SMESHGUI_SymmetryDlg::onFilterAccepted() +{ + if ( myMeshes.length() > 0 && !buttonOk->isEnabled() ) + { + myElementsId = LineEditElements->text(); + QStringList aListElementsId = myElementsId.split(" ", QString::SkipEmptyParts); + myNbOkElements = aListElementsId.count(); + buttonOk->setEnabled( myNbOkElements ); + buttonApply->setEnabled( myNbOkElements ); + } +} + //================================================================================= // function : isValid // purpose : diff --git a/src/SMESHGUI/SMESHGUI_SymmetryDlg.h b/src/SMESHGUI/SMESHGUI_SymmetryDlg.h index 1727b59f3..c7845dcf6 100644 --- a/src/SMESHGUI/SMESHGUI_SymmetryDlg.h +++ b/src/SMESHGUI/SMESHGUI_SymmetryDlg.h @@ -139,6 +139,7 @@ private: protected slots: virtual void onDisplaySimulation( bool ); virtual void reject(); + void onFilterAccepted(); private slots: void ConstructorsClicked( int ); diff --git a/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx b/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx index 5d1c66901..be53d01e4 100644 --- a/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx @@ -772,13 +772,15 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument() return; int aNbUnits = 0; - if (myEditCurrentArgument == (QWidget*)LineEditElements) { + if (myEditCurrentArgument == (QWidget*)LineEditElements) + { myElementsId = ""; myObjects.clear(); myObjectsNames.clear(); myMeshes.clear(); - for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) { + for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) + { Handle(SALOME_InteractiveObject) IO = it.Value(); SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( IO ); if ( aMesh->_is_nil() ) @@ -788,25 +790,24 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument() if ( !anActor ) anActor = SMESH::FindActorByEntry( IO->getEntry() ); - if ( !anActor && !CheckBoxMesh->isChecked() ) - return; - - if ( !SMESH::IObjectToInterface( IO )->_is_nil() ) { - if ( _PTR(Study) aStudy = SMESH::GetActiveStudyDocument() ) { - _PTR(SObject) obj = aStudy->FindObjectID( qPrintable( QString( IO->getEntry() ) ) ); - _PTR(GenericAttribute) anAttr; - if ( obj && obj->FindAttribute( anAttr, "AttributeName" ) ) { - _PTR(AttributeName) aNameAttr( anAttr ); - myObjects << SMESH::IObjectToInterface( IO ); - myObjectsNames << aNameAttr->Value().c_str(); - myMeshes << aMesh; - } + // if ( !anActor && !CheckBoxMesh->isChecked() ) -- elems can be selected by Filter + // return; + + SMESH::SMESH_IDSource_var idSrc = SMESH::IObjectToInterface( IO ); + if ( _PTR(SObject) obj = SMESH::FindSObject( idSrc )) + { + std::string name = obj->GetName(); + if ( !name.empty() ) + { + myObjects << idSrc; + myObjectsNames << name.c_str(); + myMeshes << aMesh; } } - - myActor = anActor; + if ( anActor ) + myActor = anActor; } - + // MakeGroups is available if there are groups and "Copy" int aNbGroups = 0; for ( int i = 0; i < myMeshes.count(); i++ ) @@ -821,10 +822,11 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument() } if (CheckBoxMesh->isChecked()) { - SMESH::GetNameOfSelectedIObjects( mySelectionMgr, aString ); if (myMeshes.isEmpty()) return; - } else { + SMESH::GetNameOfSelectedIObjects( mySelectionMgr, aString ); + } + else { aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, aList.First(), aString); myElementsId = aString; if (aNbUnits < 1) @@ -832,16 +834,15 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument() } myNbOkElements = true; - } else { + } + else // set coordinates by a picked node + { Handle(SALOME_InteractiveObject) IO = aList.First(); - if ((SMESH::GetMeshByIO(IO))->_is_nil()) - return; - SMESH_Actor* anActor = SMESH::FindActorByObject(SMESH::GetMeshByIO(IO)); + SMESH_Actor* anActor = SMESH::FindActorByEntry( IO->getEntry() ); if (!anActor) - anActor = SMESH::FindActorByEntry(IO->getEntry()); - if (!anActor && !CheckBoxMesh->isChecked()) return; + aNbUnits = SMESH::GetNameOfSelectedNodes(mySelector, IO, aString); if (aNbUnits != 1) return; @@ -1099,14 +1100,14 @@ void SMESHGUI_TranslationDlg::keyPressEvent( QKeyEvent* e ) //================================================================================= void SMESHGUI_TranslationDlg::setFilters() { - if(myMeshes.isEmpty()) { - SUIT_MessageBox::critical(this, - tr("SMESH_ERROR"), - tr("NO_MESH_SELECTED")); - return; + if ( myMeshes.isEmpty() ) { + SUIT_MessageBox::critical(this, tr("SMESH_ERROR"), tr("NO_MESH_SELECTED")); + return; } - if ( !myFilterDlg ) + if ( !myFilterDlg ) { myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL ); + connect(myFilterDlg, SIGNAL(Accepted()), SLOT(onFilterAccepted())); + } QList types; if ( myMeshes[0]->NbEdges() ) types << SMESH::EDGE; @@ -1124,6 +1125,23 @@ void SMESHGUI_TranslationDlg::setFilters() myFilterDlg->show(); } +//======================================================================= +// name : onFilterAccepted() +// Purpose : SLOT. Called when Filter dlg closed with OK button. +// Activate [Apply] if no Actor is available +//======================================================================= +void SMESHGUI_TranslationDlg::onFilterAccepted() +{ + if ( myMeshes.length() > 0 && !buttonOk->isEnabled() ) + { + myElementsId = LineEditElements->text(); + QStringList aListElementsId = myElementsId.split(" ", QString::SkipEmptyParts); + myNbOkElements = aListElementsId.count(); + buttonOk->setEnabled( myNbOkElements ); + buttonApply->setEnabled( myNbOkElements ); + } +} + //================================================================================= // function : isValid // purpose : diff --git a/src/SMESHGUI/SMESHGUI_TranslationDlg.h b/src/SMESHGUI/SMESHGUI_TranslationDlg.h index f625c61f4..cfd801c7a 100644 --- a/src/SMESHGUI/SMESHGUI_TranslationDlg.h +++ b/src/SMESHGUI/SMESHGUI_TranslationDlg.h @@ -133,6 +133,7 @@ private: protected slots: virtual void onDisplaySimulation( bool ); virtual void reject(); + void onFilterAccepted(); private slots: void ConstructorsClicked( int ); -- 2.30.2