2 * Config_FeatureReader.cpp
4 * Created on: Mar 20, 2014
8 #include <Config_FeatureReader.h>
10 #include <Event_Loop.h>
12 #include <libxml\parser.h>
13 #include <libxml\tree.h>
19 //Hardcoded xml entities
21 const static char* NODE_WORKBENCH = "workbench";
22 const static char* NODE_GROUP = "group";
23 const static char* NODE_FEATURE = "feature";
26 const static char* _ID = "id";
27 //const static char* WORKBENCH_ID = "id";
28 //const static char* GROUP_ID = "id";
29 //const static char* FEATURE_ID = "id";
30 const static char* FEATURE_TEXT = "text";
31 const static char* FEATURE_TOOLTIP = "tooltip";
32 const static char* FEATURE_ICON = "icon";
33 const static char* FEATURE_KEYSEQUENCE = "keysequence";
35 Config_FeatureReader::Config_FeatureReader(const std::string& theXmlFile)
36 : Config_XMLReader(theXmlFile), m_fetchWidgetCfg(false)
39 if(!Event_Loop::Loop()) {
40 std::cout << "Config_FeatureReader::importWorkbench: "
41 << "No event loop registered" << std::endl;
46 Config_FeatureReader::~Config_FeatureReader()
50 std::string Config_FeatureReader::featureWidgetCfg(std::string theFeatureName)
52 m_fetchWidgetCfg = true;
54 m_fetchWidgetCfg = false;
58 void Config_FeatureReader::processNode(xmlNodePtr theNode)
60 if (isNode(theNode, NODE_FEATURE, NULL)) {
61 if (m_fetchWidgetCfg) {
62 xmlBufferPtr buffer = xmlBufferCreate();
63 int size = xmlNodeDump(buffer, theNode->doc, theNode, 0, 1);
64 m_widgetCfg = std::string((char*) buffer->content);
66 Event_Loop* aEvLoop = Event_Loop::Loop();
67 Config_FeatureMessage aMessage(aEvLoop->EventByName("menu_item"), this);
68 fillFeature(theNode, aMessage);
69 aEvLoop->Send(aMessage);
72 //The m_last* variables always defined before fillFeature() call. XML is a tree.
73 if (isNode(theNode, NODE_GROUP, NULL)) {
74 m_lastGroup = getProperty(theNode, _ID);
76 if (isNode(theNode, NODE_WORKBENCH, NULL)) {
77 m_lastWorkbench = getProperty(theNode, _ID);
81 bool Config_FeatureReader::processChildren(xmlNodePtr theNode)
83 return isNode(theNode, NODE_WORKBENCH, NODE_GROUP, NULL);
86 void Config_FeatureReader::fillFeature(xmlNodePtr theRoot, Config_FeatureMessage& outFtMessage)
88 outFtMessage.setId(getProperty(theRoot, _ID));
89 outFtMessage.setText(getProperty(theRoot, FEATURE_TEXT));
90 outFtMessage.setTooltip(getProperty(theRoot, FEATURE_TOOLTIP));
91 outFtMessage.setIcon(getProperty(theRoot, FEATURE_ICON));
92 outFtMessage.setKeysequence(getProperty(theRoot, FEATURE_KEYSEQUENCE));
93 outFtMessage.setGroupId(m_lastGroup);
94 outFtMessage.setWorkbenchId(m_lastWorkbench);