Salome HOME
Merge remote branch 'origin/Doc_update_ver741' into V7_5_BR
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_GroupDlg.cxx
index 1293f3e0d37d95c12dea5f6edbc379f453f01313..7cad3307110b7808401bd9b28896cb2b1f68aa45 100644 (file)
@@ -53,6 +53,7 @@
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_Session.h>
 #include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
 
 #include <SalomeApp_Tools.h>
 #include <SalomeApp_Application.h>
@@ -60,7 +61,6 @@
 #include <LightApp_SelectionMgr.h>
 
 #include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
 
 #include <SVTK_ViewWindow.h>
 
@@ -446,16 +446,17 @@ void SMESHGUI_GroupDlg::initDialog( bool create)
   mySMESHGUI->SetActiveDialogBox(this);
   mySMESHGUI->SetState(800);
 
+  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( mySMESHGUI->application()->activeStudy() );
   mySelectionMode = grpNoSelection;
-  myMeshFilter = new SMESH_TypeFilter(SMESH::MESH);
+
+  myMeshFilter    = new SMESH_TypeFilter(SMESH::MESH);
   mySubMeshFilter = new SMESH_LogicalFilter(QList<SUIT_SelectionFilter*>(),
                                             SMESH_LogicalFilter::LO_OR,
                                             /*takeOwnership=*/true);
-  myGroupFilter = new SMESH_LogicalFilter(QList<SUIT_SelectionFilter*>(),
-                                          SMESH_LogicalFilter::LO_OR,
-                                          /*takeOwnership=*/true);
-  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( mySMESHGUI->application()->activeStudy() );
-  myGeomFilter = new GEOM_SelectionFilter( aStudy, true );
+  myGroupFilter   = new SMESH_LogicalFilter(QList<SUIT_SelectionFilter*>(),
+                                            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();
 }