Salome HOME
Bugfix and set Point to the Construction groups
[modules/shaper.git] / src / PartSetPlugin / PartSetPlugin_Plugin.cxx
1 #include "PartSetPlugin_Plugin.h"
2 #include "PartSetPlugin_Part.h"
3 #include "PartSetPlugin_Point.h"
4 #include <ModelAPI_PluginManager.h>
5 #include <ModelAPI_Document.h>
6
7 using namespace std;
8
9 // the only created instance of this plugin
10 static PartSetPlugin_Plugin* MY_INSTANCE = new PartSetPlugin_Plugin();
11
12 PartSetPlugin_Plugin::PartSetPlugin_Plugin() 
13 {
14   // register this plugin
15   ModelAPI_PluginManager::get()->registerPlugin(this);
16 }
17
18 std::shared_ptr<ModelAPI_Feature> PartSetPlugin_Plugin::createFeature(
19   string theFeatureID, const bool theAddToDoc)
20 {
21   std::shared_ptr<ModelAPI_Feature> aCreated;
22   bool isCurrent = true; // to create a feature in the current document
23   std::string aGroup;
24   if (theFeatureID == "Part") {
25     aCreated = std::shared_ptr<ModelAPI_Feature>(new PartSetPlugin_Part);
26     isCurrent = false; // allways create in the root document
27     aGroup = PARTS_GROUP;
28   } else if (theFeatureID == "Point") {
29     aCreated = std::shared_ptr<ModelAPI_Feature>(new PartSetPlugin_Point);
30     aGroup = CONSTRUCTIONS_GROUP;
31   }
32
33   // add to a root document for the current moment
34   if (aCreated && theAddToDoc) {
35     shared_ptr<ModelAPI_Document> aDoc = isCurrent ? 
36       ModelAPI_PluginManager::get()->currentDocument() :
37       ModelAPI_PluginManager::get()->rootDocument();
38     aDoc->addFeature(aCreated, aGroup);
39   }
40   // feature of such kind is not found
41   return aCreated;
42 }