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