Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / PartSet / PartSet_Module.cpp
1 #include <PartSet_Module.h>
2 #include <ModuleBase_Operation.h>
3
4 #include <Config_PointerMessage.h>
5 #include <Config_ModuleReader.h>
6 #include <Config_WidgetReader.h>
7 #include <Event_Loop.h>
8 #include <Event_Message.h>
9
10 #include <QObject>
11 #include <QString>
12
13 #ifdef _DEBUG
14 #include <QDebug>
15 #endif
16
17
18 /*!Create and return new instance of XGUI_Module*/
19 extern "C" PARTSET_EXPORT XGUI_Module* createModule(XGUI_Workshop* theWshop)
20 {
21   return new PartSet_Module(theWshop);
22 }
23
24 PartSet_Module::PartSet_Module(XGUI_Workshop* theWshop)
25 {
26   myWorkshop = theWshop;
27 }
28
29 PartSet_Module::~PartSet_Module()
30 {
31 }
32
33 void PartSet_Module::createFeatures()
34 {
35   Config_ModuleReader* aXMLReader = new Config_ModuleReader();
36   aXMLReader->setAutoImport(true);
37   aXMLReader->readAll();
38   delete aXMLReader;
39 }
40
41 void PartSet_Module::featureCreated(XGUI_Command* theFeature)
42 {
43   QString aFtId = theFeature->getId();
44   theFeature->connectTo(this, SLOT(onFeatureTriggered()));
45 }
46
47 void PartSet_Module::onFeatureTriggered()
48 {
49   Config_ModuleReader aModuleReader = Config_ModuleReader();
50   aModuleReader.readAll();
51   std::map<std::string, std::string> aPluginMap = aModuleReader.plugins();
52   std::string aPluginName = aPluginMap["PartSetPlugin"];
53   Config_WidgetReader aWdgReader = Config_WidgetReader(aPluginName);
54   aWdgReader.readAll();
55   XGUI_Command* aCmd = dynamic_cast<XGUI_Command*>(sender());
56   QString aCmdId = aCmd->getId();
57   std::string aXmlCfg = aWdgReader.featureWidgetCfg(aCmdId.toStdString());
58   //TODO(sbh): Implement static method to extract event id [SEID]
59   static Event_ID aModuleEvent = Event_Loop::eventByName("PartSetModuleEvent");
60   Config_PointerMessage aMessage(aModuleEvent, this);
61   ModuleBase_Operation* aPartSetOp = new ModuleBase_Operation(aCmdId, this);
62   aPartSetOp->setXmlRepresentation(QString::fromStdString(aXmlCfg));
63   aMessage.setPointer(aPartSetOp);
64   Event_Loop::loop()->send(aMessage);
65 }