X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_GroupDlg.cxx;h=7cad3307110b7808401bd9b28896cb2b1f68aa45;hb=324d433f277a1ec6552c93db878504f447f8fbad;hp=1293f3e0d37d95c12dea5f6edbc379f453f01313;hpb=8f57b2cfd33d6d41539b00f3665f184266c297be;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx index 1293f3e0d..7cad33071 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -60,7 +61,6 @@ #include #include -#include #include @@ -446,16 +446,17 @@ void SMESHGUI_GroupDlg::initDialog( bool create) mySMESHGUI->SetActiveDialogBox(this); mySMESHGUI->SetState(800); + SalomeApp_Study* aStudy = dynamic_cast( mySMESHGUI->application()->activeStudy() ); mySelectionMode = grpNoSelection; - myMeshFilter = new SMESH_TypeFilter(SMESH::MESH); + + myMeshFilter = new SMESH_TypeFilter(SMESH::MESH); mySubMeshFilter = new SMESH_LogicalFilter(QList(), SMESH_LogicalFilter::LO_OR, /*takeOwnership=*/true); - myGroupFilter = new SMESH_LogicalFilter(QList(), - SMESH_LogicalFilter::LO_OR, - /*takeOwnership=*/true); - SalomeApp_Study* aStudy = dynamic_cast( mySMESHGUI->application()->activeStudy() ); - myGeomFilter = new GEOM_SelectionFilter( aStudy, true ); + myGroupFilter = new SMESH_LogicalFilter(QList(), + SMESH_LogicalFilter::LO_OR, + /*takeOwnership=*/true); + myGeomFilter = new GEOM_SelectionFilter( aStudy, true ); connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(onDeactivate())); connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(reject())); @@ -923,6 +924,8 @@ bool SMESHGUI_GroupDlg::onApply() SMESH::SMESH_GroupBase_var resultGroup; bool isCreation, isConversion = false; + SUIT_OverrideCursor wc; + if (myGrpTypeId == 0) // standalone { if (!mySelectAll->isChecked() && !myElements->count() && myAllowElemsModif->isChecked()) @@ -1152,9 +1155,10 @@ bool SMESHGUI_GroupDlg::onApply() if ( aMeshGroupSO ) { - if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str())) { + if ( SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str())) + { + Handle(SALOME_InteractiveObject) anIO = anActor->getIO(); if ( isConversion ) { // need to reset TVisualObj and actor - Handle(SALOME_InteractiveObject) anIO = anActor->getIO(); SMESH::RemoveVisualObjectWithActors( anIO->getEntry(), true ); SMESH::Update( anIO,true); myActorsList.clear(); @@ -1180,12 +1184,14 @@ bool SMESHGUI_GroupDlg::onApply() anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B, delta ); break; break; } + // update a visible group accoding to a changed contents + if ( !isConversion && anActor->GetVisibility() ) + SMESH::Update( anIO, true ); } } } SMESHGUI::Modified(); mySMESHGUI->updateObjBrowser(true); - SMESH::UpdateView(); // asv: fix of BUG PAL5515 mySelectionMgr->clearSelected(); if( LightApp_Application* anApp = @@ -1642,7 +1648,7 @@ void SMESHGUI_GroupDlg::onSelectGroup(bool on) //================================================================================= // function : (onSelectGeomGroup) -// purpose : Called when group type changed. on == "on group" or "on filter" +// purpose : Called when group type changed. on == "on geometry" or "on filter" //================================================================================= void SMESHGUI_GroupDlg::onSelectGeomGroup(bool on) { @@ -1653,7 +1659,7 @@ void SMESHGUI_GroupDlg::onSelectGeomGroup(bool on) else if (mySelectGroup->isChecked()) { mySelectGroup->setChecked(false); } - if ( myGrpTypeId == 1 ) { // on group + if ( myGrpTypeId == 1 ) { // on geometry myCurrentLineEdit = myGeomGroupLine; updateGeomPopup(); } @@ -1741,10 +1747,14 @@ void SMESHGUI_GroupDlg::setFilters() myFilterDlg->Init( aType ); } + bool isStandalone = ( sender() == myFilterBtn ); + myFilterDlg->SetEnabled( /*setInViewer=*/isStandalone, + /*diffSources=*/isStandalone ); myFilterDlg->SetMesh( myMesh ); myFilterDlg->SetSelection(); myFilterDlg->SetSourceWg( myElements, false ); + myFilterDlg->show(); }