Salome HOME
issue 22082 note 017956. Hide controls of Filter dialog useless for creating the...
authoreap <eap@opencascade.com>
Thu, 14 Aug 2014 14:56:38 +0000 (18:56 +0400)
committereap <eap@opencascade.com>
Thu, 14 Aug 2014 14:56:38 +0000 (18:56 +0400)
  Hide "Insert filter in viewer" and "Source" button group.

src/SMESHGUI/SMESHGUI_FilterDlg.cxx
src/SMESHGUI/SMESHGUI_FilterDlg.h
src/SMESHGUI/SMESHGUI_GroupDlg.cxx

index 4211d08bffaa52994ee96cba3463069744b36e4c..8409afa4a0f54b61bce997949ef38269d7e850d2 100755 (executable)
@@ -2654,7 +2654,9 @@ SMESHGUI_FilterDlg::SMESHGUI_FilterDlg( SMESHGUI*         theModule,
 : QDialog( SMESH::GetDesktop( theModule ) ),
   mySMESHGUI( theModule ),
   mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
-  myInitSourceWgOnApply( true )
+  myInitSourceWgOnApply( true ),
+  myInsertEnabled( true ),
+  myDiffSourcesEnabled( true )
 {
   if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
     mySelector = aViewWindow->GetSelector();
@@ -2671,7 +2673,9 @@ SMESHGUI_FilterDlg::SMESHGUI_FilterDlg( SMESHGUI*   theModule,
 : QDialog( SMESH::GetDesktop( theModule ) ),
   mySMESHGUI( theModule ),
   mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
-  myInitSourceWgOnApply( true )
+  myInitSourceWgOnApply( true ),
+  myInsertEnabled( true ),
+  myDiffSourcesEnabled( true )
 {
   if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
     mySelector = aViewWindow->GetSelector();
@@ -2730,6 +2734,7 @@ QWidget* SMESHGUI_FilterDlg::createMainFrame (QWidget* theParent)
   int rows = aLay->rowCount();
   int cols = aLay->columnCount();
 
+  // This line looks strange when all additional parameters and mySetInViewer are hidden
   QFrame* aLine = new QFrame(aGrp);
   aLine->setFrameStyle(QFrame::HLine | QFrame::Sunken);
   aLay->addWidget(aLine, rows++, 0, 1, cols);
@@ -3215,6 +3220,21 @@ void SMESHGUI_FilterDlg::SetSourceWg (QWidget* theWg,
   myInitSourceWgOnApply = initOnApply;
 }
 
+//=======================================================================
+//function : EnableFiltering
+//purpose  : Enables "Insert filter in the viewer"
+//           and different "Source"s (Mesh, Initial Selection, Current Group)
+//=======================================================================
+
+void SMESHGUI_FilterDlg::SetEnabled( bool setInViewer, bool diffSources )
+{
+  myInsertEnabled = setInViewer;
+  myDiffSourcesEnabled = diffSources;
+
+  mySetInViewer->setVisible( myInsertEnabled );
+  mySourceGrp->button(0)->parentWidget()->setVisible( myDiffSourcesEnabled );
+}
+
 //=======================================================================
 // name    : SMESHGUI_FilterDlg::SetMesh
 // Purpose : Set mesh
@@ -3397,8 +3417,10 @@ void SMESHGUI_FilterDlg::insertFilterInViewer()
     SMESH::ElementType anEntType = (SMESH::ElementType)myTable->GetType();
 
     if (myFilter[ myTable->GetType() ]->_is_nil() ||
-         myFilter[ myTable->GetType() ]->GetPredicate()->_is_nil() ||
-         !mySetInViewer->isChecked()) {
+        myFilter[ myTable->GetType() ]->GetPredicate()->_is_nil() ||
+        !mySetInViewer->isChecked() ||
+        !myInsertEnabled )
+    {
       SMESH::RemoveFilter(getFilterId(anEntType), aSelector);
     }
     else {
@@ -3423,7 +3445,7 @@ void SMESHGUI_FilterDlg::filterSource (const int theType,
 
   int aSourceId = mySourceGrp->checkedId();
 
-  if (aSourceId == Mesh)
+  if (aSourceId == Mesh || !myDiffSourcesEnabled )
   {
     if (myMesh->_is_nil())
       return;
index e00941329b5a1479e7e3f28bea65bb8a66f49f29..da3358a8a88053192a93671e9f648bf725780325 100755 (executable)
@@ -229,6 +229,7 @@ public:
   void                      SetSelection();
   void                      SetMesh (SMESH::SMESH_Mesh_var);
   void                      SetSourceWg( QWidget*, const bool initOnApply = true );
+  void                      SetEnabled( bool setInViewer, bool diffSources );
 
   static SMESH::Filter::Criterion createCriterion();
 
@@ -297,6 +298,8 @@ private:
   SVTK_Selector*            mySelector;
   SMESH::SMESH_Mesh_var     myMesh;
   bool                      myInitSourceWgOnApply;
+  bool                      myInsertEnabled;
+  bool                      myDiffSourcesEnabled;
   QWidget*                  mySourceWg;
 
   SALOME_DataMapOfIOMapOfInteger myIObjects;
index e7b45e88913ac29e326f4b725fd08bf60ea130f5..60095ebe2a7651a7ec543801ba34316e50278c05 100644 (file)
@@ -447,16 +447,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()));
@@ -1648,7 +1649,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)
 {
@@ -1659,7 +1660,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();
     }
@@ -1747,10 +1748,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();
 }