]> SALOME platform Git repositories - modules/shaper.git/blob - src/PartSetPlugin/PartSetPlugin_Plugin.cxx
Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[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(string theFeatureID)
19 {
20   std::shared_ptr<ModelAPI_Feature> aCreated;
21   bool isCurrent = true; // to create a feature in the current document
22   if (theFeatureID == "Part") {
23     aCreated = std::shared_ptr<ModelAPI_Feature>(new PartSetPlugin_Part);
24     isCurrent = false; // allways create in the root document
25   } else if (theFeatureID == "Point") {
26     aCreated = std::shared_ptr<ModelAPI_Feature>(new PartSetPlugin_Point);
27   }
28
29   // add to a root document for the current moment
30   if (aCreated) {
31     shared_ptr<ModelAPI_Document> aDoc = isCurrent ? 
32       ModelAPI_PluginManager::get()->currentDocument() :
33       ModelAPI_PluginManager::get()->rootDocument();
34     aDoc->addFeature(aCreated, PARTS_GROUP);
35   }
36   // feature of such kind is not found
37   return aCreated;
38 }