]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #591 - Highlight of the first argument of constraints
authornds <natalia.donis@opencascade.com>
Tue, 7 Jul 2015 10:08:30 +0000 (13:08 +0300)
committernds <natalia.donis@opencascade.com>
Tue, 7 Jul 2015 10:08:30 +0000 (13:08 +0300)
It was possible to select an extrusion result in OB for a new created extrusion.

src/ModuleBase/ModuleBase_IViewer.h
src/ModuleBase/ModuleBase_WidgetValidated.cpp
src/NewGeom/NewGeom_SalomeViewer.cpp
src/NewGeom/NewGeom_SalomeViewer.h
src/XGUI/XGUI_Displayer.cpp
src/XGUI/XGUI_Displayer.h
src/XGUI/XGUI_ViewerProxy.cpp
src/XGUI/XGUI_ViewerProxy.h

index 5c62cb5fa922fa320ed0d4c3bca12e20abc16a61..3e557504aeb061377a6168f5aed1f3eda32bbc06 100644 (file)
@@ -70,6 +70,10 @@ Q_OBJECT
   /// \param theFilter a selection filter
   virtual void removeSelectionFilter(const Handle(SelectMgr_Filter)& theFilter) = 0;
 
+  /// Returns true if the selection filter is set to the viewer
+  /// \param theFilter a selection filter
+  virtual bool hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter) = 0;
+
   /// Remove all selection filters from the viewer
   virtual void clearSelectionFilters() = 0;
 
index 49734b6216a553fa2c7d2ce814537f8d9ead7bae..a90eadac2ae53f6fdc7a57ce79bdd7f620557f34 100644 (file)
@@ -195,17 +195,11 @@ bool ModuleBase_WidgetValidated::isFilterActivated() const
   bool isActivated = false;
 
   Handle(SelectMgr_Filter) aSelFilter = myWorkshop->validatorFilter();
+  ModuleBase_IViewer* aViewer = myWorkshop->viewer();
 
-  const SelectMgr_ListOfFilter& aFilters = myWorkshop->viewer()->AISContext()->Filters();
-  SelectMgr_ListIteratorOfListOfFilter aIt(aFilters);
-  for (; aIt.More(); aIt.Next()) {
-    if (aSelFilter.Access() == aIt.Value().Access())
-      isActivated = true;
-  }
-  return isActivated;
+  return aViewer->hasSelectionFilter(aSelFilter);
 }
 
-
 void ModuleBase_WidgetValidated::activateFilters(const bool toActivate)
 {
   ModuleBase_IViewer* aViewer = myWorkshop->viewer();
index a9b8065198911abc86788bec6f9c0842edaade92..41baca6a8937cc1d7e4cde50380bf4e8d22225b1 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <SUIT_ViewManager.h>
 
+#include <SelectMgr_ListIteratorOfListOfFilter.hxx>
+
 #include <QMouseEvent>
 #include <QContextMenuEvent>
 
@@ -333,6 +335,21 @@ void NewGeom_SalomeViewer::removeSelectionFilter(const Handle(SelectMgr_Filter)&
   }
 }
 
+//***************************************
+bool NewGeom_SalomeViewer::hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter)
+{
+  bool aFoundFilter = false;
+  Handle(AIS_InteractiveContext) aContext = AISContext();
+  if (!aContext.IsNull()) {
+    const SelectMgr_ListOfFilter& aFilters = aContext->Filters();
+    SelectMgr_ListIteratorOfListOfFilter aIt(aFilters);
+    for (; aIt.More() && !aFoundFilter; aIt.Next()) {
+      aFoundFilter = theFilter.Access() == aIt.Value().Access();
+    }
+  }
+  return aFoundFilter;
+}
+
 //***************************************
 void NewGeom_SalomeViewer::clearSelectionFilters()
 {
index 8012c4a015c25ad59a452ee9fe598ba28bc30ca3..dcc9acee16cd96026d84a945b48f876ec9baa34a 100644 (file)
@@ -110,6 +110,10 @@ Q_OBJECT
   /// Remove selection filter from the viewer
   virtual void removeSelectionFilter(const Handle(SelectMgr_Filter)& theFilter);
 
+  /// Returns true if the selection filter is set to the viewer
+  /// \param theFilter a selection filter
+  virtual bool hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter);
+
   /// Remove all selection filters from the viewer
   virtual void clearSelectionFilters();
 
index 68d6ae9dcbb8f72c6962d8f1c50a58356a0b6364..8b055e50298e0b30b7f3ec13ed15fdc908caf9f6 100644 (file)
@@ -729,20 +729,10 @@ XGUI_Displayer::DisplayMode XGUI_Displayer::displayMode(ObjectPtr theObject) con
 void XGUI_Displayer::addSelectionFilter(const Handle(SelectMgr_Filter)& theFilter)
 {
   Handle(AIS_InteractiveContext) aContext = AISContext();
-  if (aContext.IsNull())
+  if (aContext.IsNull() || hasSelectionFilter(theFilter))
     return;
-  const SelectMgr_ListOfFilter& aFilters = aContext->Filters();
-  SelectMgr_ListIteratorOfListOfFilter aIt(aFilters);
-  for (; aIt.More(); aIt.Next()) {
-    if (theFilter.Access() == aIt.Value().Access())
-      return;
-  }
+
   Handle(SelectMgr_CompositionFilter) aCompFilter = GetFilter();
-  const SelectMgr_ListOfFilter& aStoredFilters = aCompFilter->StoredFilters();
-  for (aIt.Initialize(aStoredFilters); aIt.More(); aIt.Next()) {
-    if (theFilter.Access() == aIt.Value().Access())
-      return;
-  }
   aCompFilter->Add(theFilter);
 #ifdef DEBUG_SELECTION_FILTERS
   int aCount = GetFilter()->StoredFilters().Extent();
@@ -764,6 +754,28 @@ void XGUI_Displayer::removeSelectionFilter(const Handle(SelectMgr_Filter)& theFi
 #endif
 }
 
+bool XGUI_Displayer::hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter)
+{
+  bool aFilterFound = false;
+
+  Handle(AIS_InteractiveContext) aContext = AISContext();
+  if (aContext.IsNull())
+    return aFilterFound;
+  const SelectMgr_ListOfFilter& aFilters = aContext->Filters();
+  SelectMgr_ListIteratorOfListOfFilter aIt(aFilters);
+  for (; aIt.More() && !aFilterFound; aIt.Next()) {
+    if (theFilter.Access() == aIt.Value().Access())
+      aFilterFound = true;
+  }
+  Handle(SelectMgr_CompositionFilter) aCompFilter = GetFilter();
+  const SelectMgr_ListOfFilter& aStoredFilters = aCompFilter->StoredFilters();
+  for (aIt.Initialize(aStoredFilters); aIt.More() && !aFilterFound; aIt.Next()) {
+    if (theFilter.Access() == aIt.Value().Access())
+      aFilterFound = true;
+  }
+  return aFilterFound;
+}
+
 void XGUI_Displayer::removeFilters()
 {
   Handle(AIS_InteractiveContext) aContext = AISContext();
index 910dcc37bdb6578a02507a1b04b1159bd4e5b8f8..c64bccb21593a156ecba0369dd7d5dcca38a0502 100644 (file)
@@ -117,6 +117,10 @@ class XGUI_EXPORT XGUI_Displayer: public QObject
   /// \param theFilter a filter instance
   void removeSelectionFilter(const Handle(SelectMgr_Filter)& theFilter);
 
+  /// Returns true if the selection filter is set to the viewer
+  /// \param theFilter a selection filter
+  virtual bool hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter);
+
   /// Remove all selection filters
   void removeFilters();
 
index 2f5ba000413b056b8c58deefdd1524dd8803f1f6..e19cb39b0931dea06da0a13a45b93d5065b4c24c 100644 (file)
@@ -284,6 +284,12 @@ void XGUI_ViewerProxy::removeSelectionFilter(const Handle(SelectMgr_Filter)& the
   myWorkshop->displayer()->removeSelectionFilter(theFilter);
 }
 
+//***************************************
+bool XGUI_ViewerProxy::hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter)
+{
+  return myWorkshop->displayer()->hasSelectionFilter(theFilter);
+}
+
 //***************************************
 void XGUI_ViewerProxy::clearSelectionFilters()
 {
index f7c40d4c101830d9d7642bc0218655e0af6d2274..5e8f75a635080430dee5154ea4bab1e9d138eea2 100644 (file)
@@ -62,6 +62,10 @@ Q_OBJECT
   /// Remove selection filter from the viewer
   virtual void removeSelectionFilter(const Handle(SelectMgr_Filter)& theFilter);
 
+  /// Returns true if the selection filter is set to the viewer
+  /// \param theFilter a selection filter
+  virtual bool hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter);
+
   /// Remove all selection filters from the viewer
   virtual void clearSelectionFilters();