Salome HOME
Issue #2954: Provide activation/deactivation of filters
authorvsv <vsv@opencascade.com>
Mon, 29 Jul 2019 13:01:15 +0000 (16:01 +0300)
committervsv <vsv@opencascade.com>
Mon, 29 Jul 2019 13:01:15 +0000 (16:01 +0300)
src/ModuleBase/ModuleBase_WidgetSelectionFilter.cpp
src/ModuleBase/ModuleBase_WidgetSelectionFilter.h

index 2b7763ce2ef6a8aed7a8eb2a3c7ec10282772f8b..868ae81c468fdf2f0faece0272c5c0e55280bb01 100644 (file)
@@ -214,18 +214,6 @@ void ModuleBase_FilterItem::onDelete()
   emit deleteItem(this);
 }
 
-QList<QWidget*> ModuleBase_FilterItem::getControls() const
-{
-  QList<QWidget*> aWidgetsList;
-  foreach(ModuleBase_ModelWidget* aWgt, myWidgets) {
-    QList<QWidget*> aSubList = aWgt->getControls();
-    foreach(QWidget* aSub, aSubList) {
-      aWidgetsList.append(aSub);
-    }
-  }
-  return aWidgetsList;
-}
-
 
 //*****************************************************************************
 //*****************************************************************************
@@ -345,7 +333,7 @@ void ModuleBase_WidgetSelectionFilter::onAddFilter(int theIndex)
       break;
     }
   }
-  onAddFilter(aFilter);
+  ModuleBase_FilterItem* aItem = onAddFilter(aFilter);
   FiltersFeaturePtr aFiltersFeature =
     std::dynamic_pointer_cast<ModelAPI_FiltersFeature>(myFeature);
   aFiltersFeature->addFilter(aFilter);
@@ -353,16 +341,21 @@ void ModuleBase_WidgetSelectionFilter::onAddFilter(int theIndex)
   myFiltersCombo->setCurrentIndex(0);
   myFiltersCombo->removeItem(theIndex);
   updateObject(myFeature);
+
+  if (aItem && (aItem->widgets().size() > 0))
+    aItem->widgets().first()->emitFocusInWidget();
+  else
+    emitFocusInWidget();
 }
 
-void ModuleBase_WidgetSelectionFilter::onAddFilter(const std::string& theFilter)
+ModuleBase_FilterItem* ModuleBase_WidgetSelectionFilter::onAddFilter(const std::string& theFilter)
 {
   if (theFilter.length() == 0)
-    return;
+    return 0;
   std::list<std::string>::const_iterator aIt;
   for (aIt = myUseFilters.cbegin(); aIt != myUseFilters.cend(); aIt++) {
     if (theFilter == (*aIt))
-      return;
+      return 0;
   }
   myFilters.remove(theFilter);
   myUseFilters.push_back(theFilter);
@@ -376,6 +369,7 @@ void ModuleBase_WidgetSelectionFilter::onAddFilter(const std::string& theFilter)
   updateSelectBtn();
   clearCurrentSelection(true);
   updateNumberSelected();
+  return aItem;
 }
 
 void ModuleBase_WidgetSelectionFilter::onDeleteItem(ModuleBase_FilterItem* theItem)
@@ -404,7 +398,7 @@ void ModuleBase_WidgetSelectionFilter::onDeleteItem(ModuleBase_FilterItem* theIt
   myWorkshop->selectionActivate()->updateSelectionModes();
   myWorkshop->selectionActivate()->updateSelectionFilters();
   redisplayFeature();
-  myFiltersCombo->setFocus();
+  emitFocusInWidget();
   updateObject(myFeature);
 }
 
@@ -546,13 +540,6 @@ void ModuleBase_WidgetSelectionFilter::updateNumberSelected()
 QList<QWidget*> ModuleBase_WidgetSelectionFilter::getControls() const
 {
   QList<QWidget*> aWidgets;
-  QList<ModuleBase_FilterItem*> aItems = myFiltersWgt->findChildren<ModuleBase_FilterItem*>();
-  foreach(ModuleBase_FilterItem* aItem, aItems) {
-    QList<QWidget*> aSubList = aItem->getControls();
-    foreach(QWidget* aWgt, aSubList) {
-      aWidgets.append(aWgt);
-    }
-  }
   aWidgets.append(myFiltersCombo);
   return aWidgets;
 }
index 3c76e55dc237149755ed3349739e1b29a583e1e1..30eb1b342c6040ffb2571c3343816f1802c1d5b6 100644 (file)
@@ -94,10 +94,6 @@ public:
   /// Returns filter Id
   std::string filter() const { return myFilterID; }
 
-  /// Returns list of widget controls
-  /// \return a control list
-  QList<QWidget*> getControls() const;
-
   /// Returns list of widgets which reperesent the current filter GUI
   QList<ModuleBase_ModelWidget*> widgets() const {
     return myWidgets;
@@ -183,9 +179,6 @@ private slots:
   /// Add a filter by Id in combo box
   void onAddFilter(int);
 
-  /// Add a filter by name
-  void onAddFilter(const std::string& theFilter);
-
   /// Process deletion of a filter item
   void onDeleteItem(ModuleBase_FilterItem* theItem);
 
@@ -218,6 +211,9 @@ private:
   /// Call to redisplay the fiter feature
   void redisplayFeature();
 
+  /// Add a filter by name
+  ModuleBase_FilterItem* onAddFilter(const std::string& theFilter);
+
 private:
   ModuleBase_IWorkshop* myWorkshop;