]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/FeaturesPlugin/FeaturesPlugin_Recover.cpp
Salome HOME
Copyright update 2022
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Recover.cpp
index 4cebf871bb4201c544d3d1964a212d918e23b981..2e48e7d7e96051717bd32610210d74487bb6b432 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022  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
@@ -24,6 +24,7 @@
 #include <ModelAPI_AttributeReference.h>
 #include <ModelAPI_AttributeRefList.h>
 #include <ModelAPI_AttributeBoolean.h>
+#include <ModelAPI_AttributeString.h>
 #include <ModelAPI_Session.h>
 #include <ModelAPI_Validator.h>
 #include <ModelAPI_Result.h>
@@ -33,6 +34,7 @@
 #include <GeomAlgoAPI_Tools.h>
 
 FeaturesPlugin_Recover::FeaturesPlugin_Recover()
+  : myClearListOnTypeChange(true)
 {
 }
 
@@ -41,6 +43,15 @@ void FeaturesPlugin_Recover::initAttributes()
   data()->addAttribute(BASE_FEATURE(), ModelAPI_AttributeReference::typeId());
   data()->addAttribute(RECOVERED_ENTITIES(), ModelAPI_AttributeRefList::typeId());
 
+  data()->addAttribute(METHOD(), ModelAPI_AttributeString::typeId());
+  if (!string(METHOD())->isInitialized()) {
+    myClearListOnTypeChange = false;
+    data()->blockSendAttributeUpdated(true, false);
+    string(METHOD())->setValue(METHOD_DEFAULT());
+    data()->blockSendAttributeUpdated(false, false);
+    myClearListOnTypeChange = true;
+  }
+  ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), METHOD());
 }
 
 void FeaturesPlugin_Recover::execute()
@@ -81,3 +92,9 @@ void FeaturesPlugin_Recover::execute()
 
   removeResults(aResultIndex);
 }
+
+void FeaturesPlugin_Recover::attributeChanged(const std::string& theID)
+{
+  if (theID == METHOD() && myClearListOnTypeChange)
+    reflist(RECOVERED_ENTITIES())->clear();
+}