Salome HOME
Issue #3122: Move Measurement item to Inspection menu
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Recover.cpp
index 1721e05b6ba21634de84ff9e295d6f6f4bbb3f83..9082ea1684e52a6cc5d77e15f4de911fba3f2fa9 100644 (file)
@@ -34,6 +34,7 @@
 #include <GeomAlgoAPI_Tools.h>
 
 FeaturesPlugin_Recover::FeaturesPlugin_Recover()
+  : myClearListOnTypeChange(true)
 {
 }
 
@@ -43,7 +44,16 @@ void FeaturesPlugin_Recover::initAttributes()
   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());
+  // set default method for recovering
+  string(METHOD())->setValue(METHOD_DEFAULT());
 }
 
 void FeaturesPlugin_Recover::execute()
@@ -87,6 +97,6 @@ void FeaturesPlugin_Recover::execute()
 
 void FeaturesPlugin_Recover::attributeChanged(const std::string& theID)
 {
-  if (theID == METHOD())
+  if (theID == METHOD() && myClearListOnTypeChange)
     reflist(RECOVERED_ENTITIES())->clear();
 }