Salome HOME
Linux (CentOS 6.3) environment created.
[modules/shaper.git] / src / PartSet / PartSet_Module.cpp
index ba04d395c19ff3572b01fbac351bfee2bad620ae..409e38484871b43be35dd85042f6c838a0fc099f 100644 (file)
@@ -1,14 +1,19 @@
-#include "PartSet_Module.h"
+#include <PartSet_Module.h>
+#include <ModuleBase_Operation.h>
 
+#include <Config_PointerMessage.h>
 #include <Config_ModuleReader.h>
-#include <Config_FeatureReader.h>
+#include <Config_WidgetReader.h>
+#include <Event_Loop.h>
+#include <Event_Message.h>
 
-#include <Event_Loop.hxx>
+#include <QObject>
+#include <QString>
+
+#ifdef _DEBUG
+#include <QDebug>
+#endif
 
-#include <QFile>
-#include <QDir>
-#include <QApplication>
-#include <QTextStream>
 
 /*!Create and return new instance of XGUI_Module*/
 extern "C" PARTSET_EXPORT XGUI_Module* createModule(XGUI_Workshop* theWshop)
@@ -36,18 +41,25 @@ void PartSet_Module::createFeatures()
 void PartSet_Module::featureCreated(XGUI_Command* theFeature)
 {
   QString aFtId = theFeature->getId();
-  if (aFtId == "new_point") {
-    theFeature->connectTo(this, SLOT(onCommandTriggered()));
-  }
+  theFeature->connectTo(this, SLOT(onFeatureTriggered()));
 }
 
-void PartSet_Module::onCommandTriggered()
+void PartSet_Module::onFeatureTriggered()
 {
   Config_ModuleReader aModuleReader = Config_ModuleReader();
   aModuleReader.readAll();
-//  std::string aPluginName = aModuleReader.plugins().front();
-//  Config_FeatureReader* aReader = new Config_FeatureReader(aPluginName);
-//  XGUI_Command* aCmd = dynamic_cast<XGUI_Command*>(sender());
-//  std::string aXMLWidgetCfg = aReader->featureWidgetCfg(aCmd->getId().toStdString());
-//  delete aReader;
+  std::map<std::string, std::string> aPluginMap = aModuleReader.plugins();
+  std::string aPluginName = aPluginMap["PartSetPlugin"];
+  Config_WidgetReader aWdgReader = Config_WidgetReader(aPluginName);
+  aWdgReader.readAll();
+  XGUI_Command* aCmd = dynamic_cast<XGUI_Command*>(sender());
+  QString aCmdId = aCmd->getId();
+  std::string aXmlCfg = aWdgReader.featureWidgetCfg(aCmdId.toStdString());
+  //TODO(sbh): Implement static method to extract event id [SEID]
+  static Event_ID aModuleEvent = Event_Loop::eventByName("PartSetModuleEvent");
+  Config_PointerMessage aMessage(aModuleEvent, this);
+  ModuleBase_Operation* aPartSetOp = new ModuleBase_Operation(aCmdId, this);
+  aPartSetOp->setXmlRepresentation(QString::fromStdString(aXmlCfg));
+  aMessage.setPointer(aPartSetOp);
+  Event_Loop::loop()->send(aMessage);
 }