Salome HOME
Fix for dump SketchAPI_Projection and for FeaturesAPI_Recover
[modules/shaper.git] / src / FeaturesAPI / FeaturesAPI_Recover.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
2
3 // File:        FeaturesAPI_Recover.cpp
4 // Created:     07 June 2016
5 // Author:      Dmitry Bobylev
6
7 #include "FeaturesAPI_Recover.h"
8
9 #include <ModelHighAPI_Dumper.h>
10 #include <ModelHighAPI_Reference.h>
11 #include <ModelHighAPI_Tools.h>
12
13 //=================================================================================================
14 FeaturesAPI_Recover::FeaturesAPI_Recover(const std::shared_ptr<ModelAPI_Feature>& theFeature)
15 : ModelHighAPI_Interface(theFeature)
16 {
17   initialize();
18 }
19
20 //=================================================================================================
21 FeaturesAPI_Recover::FeaturesAPI_Recover(const std::shared_ptr<ModelAPI_Feature>& theFeature,
22   const ModelHighAPI_Reference& theBaseFeature,
23   const std::list<ModelHighAPI_Selection>& theRecoveredList, const bool thePersistent)
24 : ModelHighAPI_Interface(theFeature)
25 {
26   if(initialize()) {
27     setBaseFeature(theBaseFeature);
28     setRecoveredList(theRecoveredList);
29     setIsPersistent(thePersistent);
30   }
31 }
32
33 //=================================================================================================
34 FeaturesAPI_Recover::~FeaturesAPI_Recover()
35 {}
36
37 //=================================================================================================
38 void FeaturesAPI_Recover::setBaseFeature(const ModelHighAPI_Reference& theBaseFeature)
39 {
40
41   fillAttribute(theBaseFeature.feature(), mybaseFeature);
42   // do not need to execute because on attribute changed it does everything anyway
43 }
44
45 //=================================================================================================
46 void FeaturesAPI_Recover::setRecoveredList(const std::list<ModelHighAPI_Selection>& theRecoverList)
47 {
48   fillAttribute(theRecoverList, myrecoveredList);
49   // do not need to execute because on attribute changed it does everything anyway
50 }
51
52 //=================================================================================================
53 void FeaturesAPI_Recover::setIsPersistent(bool thePersistent)
54 {
55   fillAttribute(thePersistent, myisPersistent);
56   // do not need to execute because on attribute changed it does everything anyway
57 }
58
59 //==================================================================================================
60 void FeaturesAPI_Recover::dump(ModelHighAPI_Dumper& theDumper) const
61 {
62   FeaturePtr aBase = feature();
63   const std::string& aDocName = theDumper.name(aBase->document());
64
65   AttributeReferencePtr anAttrBaseFeature = aBase->reference(FeaturesPlugin_Recover::BASE_FEATURE());
66   AttributeRefListPtr anAttrRecoveredEntities = aBase->reflist(FeaturesPlugin_Recover::RECOVERED_ENTITIES());
67   AttributeBooleanPtr anAttrPersistent = aBase->boolean(FeaturesPlugin_Recover::PERSISTENT());
68
69   FeaturePtr aFeature = ModelAPI_Feature::feature(anAttrBaseFeature->value());
70
71   theDumper << aBase << " = model.addRecover(" << aDocName << ", "
72             << aFeature << ", " << anAttrRecoveredEntities << ", "
73             << anAttrPersistent << ")" << std::endl;
74 }
75
76 //=================================================================================================
77 RecoverPtr addRecover(const std::shared_ptr<ModelAPI_Document>& thePart,
78   const ModelHighAPI_Reference& theBaseFeature,
79   const std::list<ModelHighAPI_Selection>& theRecoveredList, const bool thePersistent)
80 {
81   std::shared_ptr<ModelAPI_Feature> aFeature = thePart->addFeature(FeaturesAPI_Recover::ID());
82   return RecoverPtr(new FeaturesAPI_Recover(
83     aFeature, theBaseFeature, theRecoveredList, thePersistent));
84 }