]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Activate all commands when there is no selection
authorvsv <vitaly.smetannikov@opencascade.com>
Mon, 6 Apr 2015 13:31:15 +0000 (16:31 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Mon, 6 Apr 2015 13:31:15 +0000 (16:31 +0300)
src/XGUI/XGUI_ActionsMgr.cpp

index 33f1826a792e99d7bcb183d94f35cddb37e78f2d..9e7ce02ae348cfb50ee3f37950e607beb4bfd377 100644 (file)
@@ -128,32 +128,39 @@ void XGUI_ActionsMgr::updateCheckState()
 
 void XGUI_ActionsMgr::updateOnViewSelection()
 {
-  XGUI_Selection* aSelection = myWorkshop->selector()->selection();
-  if (aSelection->getSelected().size() == 0 || !myOperationMgr->hasOperation())
+  if (!myOperationMgr->hasOperation())
     return;
+
   ModuleBase_Operation* anOperation = myOperationMgr->currentOperation();
   FeaturePtr anActiveFeature = anOperation->feature();
   if(!anActiveFeature.get())
     return;
-  QString aFeatureId = QString::fromStdString(anActiveFeature->getKind());
 
-  SessionPtr aMgr = ModelAPI_Session::get();
-  ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
-  foreach(QString aId, nestedCommands(aFeatureId)) {
-    std::list<ModelAPI_Validator*> aValidators;
-    std::list<std::list<std::string> > anArguments;
-    aFactory->validators(aId.toStdString(), aValidators, anArguments);
-    std::list<ModelAPI_Validator*>::iterator aValidator = aValidators.begin();
-    std::list<std::list<std::string> >::iterator aValidatorArgs = anArguments.begin();
-    for (; aValidator != aValidators.end(); aValidator++, aValidatorArgs++) {
-      if (!(*aValidator))
-        continue;
-      const ModuleBase_SelectionValidator* aSelValidator =
-          dynamic_cast<const ModuleBase_SelectionValidator*>(*aValidator);
-      if (!aSelValidator)
-        continue;
-      setActionEnabled(aId, aSelValidator->isValid(aSelection, *aValidatorArgs));
+  QString aFeatureId = QString::fromStdString(anActiveFeature->getKind());
+  XGUI_Selection* aSelection = myWorkshop->selector()->selection();
+  if (aSelection->getSelected().size() == 0) {
+    foreach(QString aId, nestedCommands(aFeatureId)) {
+      setActionEnabled(aId, true);
+    }
+  } else { 
+    SessionPtr aMgr = ModelAPI_Session::get();
+    ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
+    foreach(QString aId, nestedCommands(aFeatureId)) {
+      std::list<ModelAPI_Validator*> aValidators;
+      std::list<std::list<std::string> > anArguments;
+      aFactory->validators(aId.toStdString(), aValidators, anArguments);
+      std::list<ModelAPI_Validator*>::iterator aValidator = aValidators.begin();
+      std::list<std::list<std::string> >::iterator aValidatorArgs = anArguments.begin();
+      for (; aValidator != aValidators.end(); aValidator++, aValidatorArgs++) {
+        if (!(*aValidator))
+          continue;
+        const ModuleBase_SelectionValidator* aSelValidator =
+            dynamic_cast<const ModuleBase_SelectionValidator*>(*aValidator);
+        if (!aSelValidator)
+          continue;
+        setActionEnabled(aId, aSelValidator->isValid(aSelection, *aValidatorArgs));
 
+      }
     }
   }
 }