]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
FacePanel does not uses the workshop filters(avoid Sketch filters using)
authornds <nds@opencascade.com>
Thu, 14 Dec 2017 10:30:55 +0000 (13:30 +0300)
committernds <nds@opencascade.com>
Thu, 14 Dec 2017 10:30:55 +0000 (13:30 +0300)
13 files changed:
src/ModuleBase/ModuleBase_IModule.h
src/PartSet/CMakeLists.txt
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_Module.h
src/PartSet/PartSet_SelectionFilterType.h [deleted file]
src/PartSet/PartSet_SketcherMgr.cpp
src/PartSet/PartSet_SketcherMgr.h
src/XGUI/CMakeLists.txt
src/XGUI/XGUI_ActiveControlMgr.cpp
src/XGUI/XGUI_FacesPanel.cpp
src/XGUI/XGUI_FacesPanel.h
src/XGUI/XGUI_SelectionActivate.cpp
src/XGUI/XGUI_SelectionFilterType.h [new file with mode: 0644]

index 65d6088a1d2031d62401578bfbdaada97913359e..058fe4761978f2e216f2debe4f9d8ac30c97d1ca 100755 (executable)
@@ -245,6 +245,11 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   /// \param theSelectionFilters [out] container of type value
   virtual QIntList selectionFilters() { return QIntList(); }
 
+  /// Returns selection filter
+  /// \param theType selection filter type
+  /// \param theFilter instance of filter
+  virtual Handle(SelectMgr_Filter) selectionFilter(const int theType) = 0;
+
   /// Return true if the custom presentation is activated
   /// \param theFlag a flag of level of customization, which means that only part of sub-elements
   /// \return boolean value
index 36a107106353e992d9eff7a8b21446ae7d5d8aea..8bb95e123773e96885c16eb3ffa570cad42b2c95 100644 (file)
@@ -43,7 +43,6 @@ SET(PROJECT_HEADERS
     PartSet_PreviewPlanes.h
     PartSet_PreviewSketchPlane.h
     PartSet_ResultSketchPrs.h
-    PartSet_SelectionFilterType.h
     PartSet_SketcherMgr.h
     PartSet_SketcherReentrantMgr.h
     PartSet_Tools.h
index cd241315e4eb35dd40e2145658ee3e0fe469c258..6d3684ec28fc9cbaf9be7c2d3ab156db6ae43360 100755 (executable)
@@ -208,7 +208,7 @@ PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
 //******************************************************
 PartSet_Module::~PartSet_Module()
 {
-  std::map<PartSet_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
+  std::map<XGUI_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
     mySelectionFilters.begin();
   for (; aFiltersIt != mySelectionFilters.end(); aFiltersIt++) {
     Handle(SelectMgr_Filter) aFilter = aFiltersIt->second;
@@ -622,12 +622,8 @@ void PartSet_Module::moduleSelectionFilters(const QIntList& theFilterTypes,
                                             SelectMgr_ListOfFilter& theSelectionFilters)
 {
   bool isSketchActive = mySketchMgr->activeSketch();
-  XGUI_ActiveControlSelector* anActiveSelector =
-    getWorkshop()->activeControlMgr()->activeSelector();
-  bool isHideFacesActive = anActiveSelector &&
-                           anActiveSelector->getType() == XGUI_FacesPanelSelector::Type();
 
-  std::map<PartSet_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
+  std::map<XGUI_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
     mySelectionFilters.begin();
   for (; aFiltersIt != mySelectionFilters.end(); aFiltersIt++) {
     int aFilterType = aFiltersIt->first;
@@ -637,11 +633,11 @@ void PartSet_Module::moduleSelectionFilters(const QIntList& theFilterTypes,
 
     // using sketch filters only if sketch operation is active
     if (!isSketchActive &&
-        mySketchMgr->sketchSelectionFilter((PartSet_SelectionFilterType)aFilterType))
+        mySketchMgr->sketchSelectionFilter((XGUI_SelectionFilterType)aFilterType))
       continue;
 
-    // using filtering of construction results only when faces panel is active
-    if (aFilterType == SF_ResultGroupNameFilter && !isHideFacesActive)
+    // using filtering of construction results only from faces panel
+    if (aFilterType == SF_ResultGroupNameFilter)
       continue;
 
     theSelectionFilters.Append(aFiltersIt->second);
@@ -653,7 +649,7 @@ QIntList PartSet_Module::selectionFilters()
 {
   QIntList aTypes;
 
-  std::map<PartSet_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
+  std::map<XGUI_SelectionFilterType, Handle(SelectMgr_Filter)>::const_iterator aFiltersIt =
     mySelectionFilters.begin();
   for (; aFiltersIt != mySelectionFilters.end(); aFiltersIt++)
     aTypes.append(aFiltersIt->first);
@@ -662,18 +658,19 @@ QIntList PartSet_Module::selectionFilters()
 }
 
 //******************************************************
-void PartSet_Module::registerSelectionFilter(const PartSet_SelectionFilterType theFilterType,
+void PartSet_Module::registerSelectionFilter(const XGUI_SelectionFilterType theFilterType,
                                              const Handle(SelectMgr_Filter)& theFilter)
 {
   mySelectionFilters[theFilterType] = theFilter;
 }
 
 //******************************************************
-Handle(SelectMgr_Filter) PartSet_Module::selectionFilter(
-  const PartSet_SelectionFilterType theFilterType)
+Handle(SelectMgr_Filter) PartSet_Module::selectionFilter(const int theType)
 {
-  if (mySelectionFilters.find(theFilterType) != mySelectionFilters.end())
-    return mySelectionFilters[theFilterType];
+  XGUI_SelectionFilterType aType = (XGUI_SelectionFilterType)theType;
+
+  if (mySelectionFilters.find(aType) != mySelectionFilters.end())
+    return mySelectionFilters[aType];
   else
     return Handle(SelectMgr_Filter)();
 }
index 153c715c7a15543e58fe4d5da232e3631a75ddd9..70de7236d9c54db8df08983fa3336f5394bff575 100755 (executable)
@@ -24,7 +24,7 @@
 #include "PartSet.h"
 #include "PartSet_Tools.h"
 #include "PartSet_OverconstraintListener.h"
-#include "PartSet_SelectionFilterType.h"
+#include "XGUI_SelectionFilterType.h"
 #include "PartSet_SketcherMgr.h"
 
 #include <ModuleBase_IModule.h>
@@ -237,13 +237,13 @@ public:
   /// Append selection filter into the module and type of the filter in internal container
   /// \param theFilterType selection filter type
   /// \param theFilter added filter
-  void registerSelectionFilter(const PartSet_SelectionFilterType theFilterType,
+  void registerSelectionFilter(const XGUI_SelectionFilterType theFilterType,
                                const Handle(SelectMgr_Filter)& theFilter);
 
   /// Returns selection filter
-  /// \param theFilterType selection filter type
+  /// \param theType selection filter type
   /// \param theFilter instance of filter
-  Handle(SelectMgr_Filter) selectionFilter(const PartSet_SelectionFilterType theFilterType);
+  virtual Handle(SelectMgr_Filter) selectionFilter(const int theType);
 
   /// Returns whether the mouse enter the viewer's window
   /// \return true if items are added and there is no necessity to provide standard menu
@@ -473,7 +473,7 @@ protected:
 
 private:
   bool myIsOperationIsLaunched; /// state of application between launch and stop operation
-  std::map<PartSet_SelectionFilterType, Handle(SelectMgr_Filter)> mySelectionFilters;
+  std::map<XGUI_SelectionFilterType, Handle(SelectMgr_Filter)> mySelectionFilters;
 
   PartSet_SketcherMgr* mySketchMgr;
   PartSet_SketcherReentrantMgr* mySketchReentrantMgr;
diff --git a/src/PartSet/PartSet_SelectionFilterType.h b/src/PartSet/PartSet_SelectionFilterType.h
deleted file mode 100644 (file)
index 3fa61e1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
-//
-
-#ifndef PartSet_SelectionFilterType_H
-#define PartSet_SelectionFilterType_H
-
-/// Enumeration to specify module selection filters
-enum PartSet_SelectionFilterType {
-  SF_GlobalFilter, /// filter for different documents, group results
-  SF_FilterInfinite, /// filter for infinite construction results
-  SF_ResultGroupNameFilter, /// filter for selection some kind of results
-  SF_SketchCirclePointFilter, /// filter for selection circle points on current sketch
-  SF_SketchPlaneFilter /// filter for selection in the current sketch plane only
-};
-
-#endif
index 68045ed3e414645c7963c5372bf6e57212ffd980..e34587a07b4cbdf0bd3fab5f67b54bc35e25357a 100755 (executable)
@@ -1161,12 +1161,12 @@ void PartSet_SketcherMgr::commitNestedSketch(ModuleBase_Operation* theOperation)
   }
 }
 
-bool PartSet_SketcherMgr::sketchSelectionFilter(const PartSet_SelectionFilterType theFilterType)
+bool PartSet_SketcherMgr::sketchSelectionFilter(const XGUI_SelectionFilterType theFilterType)
 {
   return mySelectionFilterTypes.find(theFilterType) != mySelectionFilterTypes.end();
 }
 
-void PartSet_SketcherMgr::registerSelectionFilter(const PartSet_SelectionFilterType theFilterType,
+void PartSet_SketcherMgr::registerSelectionFilter(const XGUI_SelectionFilterType theFilterType,
                                                   const Handle(SelectMgr_Filter)& theFilter)
 {
   mySelectionFilterTypes.insert(theFilterType);
index 578ada7b0dabc0d011a03cd5ee0ee54263836ea7..634916b7814fb3019823ab6dea15a4305e24547a 100644 (file)
@@ -24,7 +24,7 @@
 #include "PartSet.h"
 
 #include "PartSet_PreviewSketchPlane.h"
-#include "PartSet_SelectionFilterType.h"
+#include "XGUI_SelectionFilterType.h"
 #include "PartSet_Tools.h"
 
 #include <ModelAPI_Feature.h>
@@ -201,12 +201,12 @@ public:
   /// Returns true if the filter is created by the sketch manager
   /// \param theFilterType a checked type
   /// \return boolean value
-  bool sketchSelectionFilter(const PartSet_SelectionFilterType theFilterType);
+  bool sketchSelectionFilter(const XGUI_SelectionFilterType theFilterType);
 
   /// Append selection filter into the module and type of the filter in internal container
   /// \param theFilterType selection filter type
   /// \param theFilter added filter
-  void registerSelectionFilter(const PartSet_SelectionFilterType theFilterType,
+  void registerSelectionFilter(const XGUI_SelectionFilterType theFilterType,
                                const Handle(SelectMgr_Filter)& theFilter);
 
   /// Commit the operation if it is possible. If the operation is dimention constraint,
@@ -445,7 +445,7 @@ private:
 
   CompositeFeaturePtr myCurrentSketch;
 
-  std::set<PartSet_SelectionFilterType> mySelectionFilterTypes;
+  std::set<XGUI_SelectionFilterType> mySelectionFilterTypes;
 
   FeatureToSelectionMap myCurrentSelection;
   bool myPreviousUpdateViewerEnabled;
index 3a62858820ff7f4de2c0215aa08da3ae184d6769..72be73b8ff01f17cdef47dc197fe801e445cf8da 100644 (file)
@@ -55,6 +55,7 @@ SET(PROJECT_HEADERS
     XGUI_SalomeConnector.h
     XGUI_Selection.h
     XGUI_SelectionActivate.h
+    XGUI_SelectionFilterType.h
     XGUI_SelectionMgr.h
     XGUI_Tools.h
     XGUI_TransparencyWidget.h
index 83d1b04c95f56de69e0f687acd31c47e50f005e1..7176e061e45c8bbb407b245b285853a173b85e01 100644 (file)
@@ -21,6 +21,7 @@
 #include "XGUI_ActiveControlMgr.h"
 #include "XGUI_ActiveControlSelector.h"
 #include "XGUI_SelectionActivate.h"
+#include "XGUI_SelectionMgr.h"
 #include "XGUI_Tools.h"
 #include "XGUI_Workshop.h"
 
index f8dde4f9a0661bd87e4d621f718d2ed7dab80458..6c1e40370672d9f413acc44158bc470b25fd28d1 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <ModelAPI_Events.h>
 
+#include <ModuleBase_IModule.h>
 #include <ModuleBase_ISelection.h>
 #include "ModuleBase_IWorkshop.h"
 #include "ModuleBase_ListView.h"
@@ -33,6 +34,8 @@
 #include "ModuleBase_Tools.h"
 #include "ModuleBase_ViewerPrs.h"
 
+#include "XGUI_SelectionMgr.h"
+#include "XGUI_SelectionFilterType.h"
 #include "XGUI_Tools.h"
 #include "XGUI_Workshop.h"
 
@@ -99,6 +102,17 @@ void XGUI_FacesPanel::selectionModes(QIntList& theModes)
   theModes.append(TopAbs_FACE);
 }
 
+//********************************************************************
+void XGUI_FacesPanel::selectionFilters(SelectMgr_ListOfFilter& theSelectionFilters)
+{
+  ModuleBase_IModule* aModule = myWorkshop->module();
+  QIntList aModuleSelectionFilters = myWorkshop->module()->selectionFilters();
+
+  theSelectionFilters.Append(aModule->selectionFilter(SF_GlobalFilter));
+  theSelectionFilters.Append(aModule->selectionFilter(SF_FilterInfinite));
+  theSelectionFilters.Append(aModule->selectionFilter(SF_ResultGroupNameFilter));
+}
+
 //********************************************************************
 bool XGUI_FacesPanel::eventFilter(QObject* theObject, QEvent *theEvent)
 {
@@ -121,8 +135,11 @@ void XGUI_FacesPanel::setActivePanel(const bool theIsActive)
   ModuleBase_Tools::setShadowEffect(myListView->getControl(), theIsActive);
   myIsActive = theIsActive;
 
-  if (myIsActive)
+  if (myIsActive) {
+    // the selection is cleared by activating selection control
+    XGUI_Tools::workshop(myWorkshop)->selector()->clearSelection();
     emit activated();
+  }
   else
     emit deactivated();
 }
index 3f46acc5031abdb27f267d8e457c535a1b2fa804..fdb08cc51e777211a7394813c4509d8f3861f142 100644 (file)
@@ -83,7 +83,7 @@ public:
 
   /// Appends into container of workshop selection filters
   /// \param [out] selection filters
-  void selectionFilters(SelectMgr_ListOfFilter& theSelectionFilters) {}
+  void selectionFilters(SelectMgr_ListOfFilter& theSelectionFilters);
 
   /// Returns whether the panel is active or not
   bool isActivePanel() const { return myIsActive; }
index 82faaa9fd469f9f13a0ea082ac049dfa155b3330..f8a1aaa886926bfa3c60f26475e4899bd70a9653 100644 (file)
@@ -101,13 +101,15 @@ void XGUI_SelectionActivate::updateSelectionModes()
 void XGUI_SelectionActivate::updateSelectionFilters()
 {
   SelectMgr_ListOfFilter aSelectionFilters;
-  QIntList aModuleSelectionFilters = myWorkshop->module()->selectionFilters();
   switch (activeSelectionPlace()) {
-    case Workshop:
+    case Workshop: {
+      QIntList aModuleSelectionFilters = myWorkshop->module()->selectionFilters();
       myWorkshop->module()->moduleSelectionFilters(aModuleSelectionFilters, aSelectionFilters);
-
+    }
     break;
     case PropertyPanel: {
+      QIntList aModuleSelectionFilters = myWorkshop->module()->selectionFilters();
+
       ModuleBase_ModelWidget* anActiveWidget = myWorkshop->module()->activeWidget();
       if (anActiveWidget)
         anActiveWidget->selectionFilters(aModuleSelectionFilters, aSelectionFilters);
@@ -116,7 +118,8 @@ void XGUI_SelectionActivate::updateSelectionFilters()
     break;
     case FacesPanel: {
       XGUI_Tools::workshop(myWorkshop)->facesPanel()->selectionFilters(aSelectionFilters);
-      myWorkshop->module()->moduleSelectionFilters(aModuleSelectionFilters, aSelectionFilters);
+      //QIntList aModuleSelectionFilters = myWorkshop->module()->selectionFilters();
+      //myWorkshop->module()->moduleSelectionFilters(aModuleSelectionFilters, aSelectionFilters);
     }
     break;
     default: break;
diff --git a/src/XGUI/XGUI_SelectionFilterType.h b/src/XGUI/XGUI_SelectionFilterType.h
new file mode 100644 (file)
index 0000000..17a7ad6
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
+
+#ifndef XGUI_SelectionFilterType_H
+#define XGUI_SelectionFilterType_H
+
+#include "XGUI.h"
+
+/// Enumeration to specify module selection filters
+enum XGUI_EXPORT XGUI_SelectionFilterType {
+  SF_GlobalFilter, /// filter for different documents, group results
+  SF_FilterInfinite, /// filter for infinite construction results
+  SF_ResultGroupNameFilter, /// filter for selection some kind of results
+  SF_SketchCirclePointFilter, /// filter for selection circle points on current sketch
+  SF_SketchPlaneFilter /// filter for selection in the current sketch plane only
+};
+
+#endif