Salome HOME
Issue #1369: Added "SubShapes" feature.
[modules/shaper.git] / src / BuildPlugin / BuildPlugin_Plugin.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
2
3 // File:        BuildPlugin_Plugin.cpp
4 // Created:     18 April 2016
5 // Author:      Dmitry Bobylev
6
7 #include "BuildPlugin_Plugin.h"
8
9 #include <ModelAPI_Session.h>
10 #include <ModelAPI_Validator.h>
11
12 #include <BuildPlugin_Vertex.h>
13 #include <BuildPlugin_Edge.h>
14 #include <BuildPlugin_Wire.h>
15 #include <BuildPlugin_Face.h>
16 #include <BuildPlugin_Shell.h>
17 #include <BuildPlugin_SubShapes.h>
18 #include <BuildPlugin_Validators.h>
19
20 // the only created instance of this plugin
21 static BuildPlugin_Plugin* MY_INSTANCE = new BuildPlugin_Plugin();
22
23 //=================================================================================================
24 BuildPlugin_Plugin::BuildPlugin_Plugin()
25 {
26   // Register validators.
27   SessionPtr aMgr = ModelAPI_Session::get();
28   ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
29   aFactory->registerValidator("BuildPlugin_ValidatorBaseForBuild",
30                               new BuildPlugin_ValidatorBaseForBuild());
31   aFactory->registerValidator("BuildPlugin_ValidatorBaseForWire",
32                               new BuildPlugin_ValidatorBaseForWire());
33   aFactory->registerValidator("BuildPlugin_ValidatorBaseForFace",
34                               new BuildPlugin_ValidatorBaseForFace());
35   aFactory->registerValidator("BuildPlugin_ValidatorSubShapesSelection",
36                               new BuildPlugin_ValidatorSubShapesSelection());
37
38   // Register this plugin.
39   ModelAPI_Session::get()->registerPlugin(this);
40 }
41
42 //=================================================================================================
43 FeaturePtr BuildPlugin_Plugin::createFeature(std::string theFeatureID)
44 {
45   if(theFeatureID == BuildPlugin_Vertex::ID()) {
46     return FeaturePtr(new BuildPlugin_Vertex());
47   } else if(theFeatureID == BuildPlugin_Edge::ID()) {
48     return FeaturePtr(new BuildPlugin_Edge());
49   } else if(theFeatureID == BuildPlugin_Wire::ID()) {
50     return FeaturePtr(new BuildPlugin_Wire());
51   } else if(theFeatureID == BuildPlugin_Face::ID()) {
52     return FeaturePtr(new BuildPlugin_Face());
53   } else if(theFeatureID == BuildPlugin_Shell::ID()) {
54     return FeaturePtr(new BuildPlugin_Shell());
55   } else if(theFeatureID == BuildPlugin_SubShapes::ID()) {
56     return FeaturePtr(new BuildPlugin_SubShapes());
57   }
58
59   // Feature of such kind is not found.
60   return FeaturePtr();
61 }