diff --git a/ewol/widget/Manager.cpp b/ewol/widget/Manager.cpp index 41907b2e..d0b129a0 100644 --- a/ewol/widget/Manager.cpp +++ b/ewol/widget/Manager.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include ewol::widget::Manager::Manager() : @@ -44,6 +45,7 @@ ewol::widget::Manager::Manager() : ewol::widget::Image::createManagerWidget(*this); ewol::widget::Gird::createManagerWidget(*this); ewol::widget::Entry::createManagerWidget(*this); + ewol::widget::Menu::createManagerWidget(*this); ewol::widget::CheckBox::createManagerWidget(*this); ewol::widget::Scroll::createManagerWidget(*this); ewol::widget::ContextMenu::createManagerWidget(*this); diff --git a/ewol/widget/Menu.cpp b/ewol/widget/Menu.cpp index 9f19fda5..b9cc64a0 100644 --- a/ewol/widget/Menu.cpp +++ b/ewol/widget/Menu.cpp @@ -246,4 +246,47 @@ void ewol::widget::Menu::onButtonPressed(ewol::widget::ButtonWeak _button) { } } - +bool ewol::widget::Menu::loadXML(const exml::Element& _node) { + if (_node.exist() == false) { + return false; + } + // parse generic properties: + ewol::Widget::loadXML(_node); + // parse all the elements : + for (const auto nodeIt : _node.nodes) { + const exml::Element pNode = nodeIt.toElement(); + if (pNode.exist() == false) { + // trash here all that is not element + continue; + } + std::string widgetName = pNode.getValue(); + EWOL_INFO("Get node : " << pNode); + if (widgetName == "elem") { + // + int32_t idMenu = addTitle(pNode.attributes["title"], pNode.attributes["image"], pNode.attributes["event"]); + for (const auto nodeIt2 : pNode.nodes) { + + const exml::Element pNode2 = nodeIt2.toElement(); + if (pNode2.exist() == false) { + // trash here all that is not element + continue; + } + std::string widgetName2 = pNode2.getValue(); + EWOL_INFO("Get node : " << pNode2); + if (widgetName2 == "elem") { + // + add(idMenu, pNode2.attributes["title"], pNode2.attributes["image"], pNode2.attributes["event"]); + } else if (widgetName2 == "separator") { + addSpacer(); + } else { + EWOL_ERROR("[" << getId() << "] {" << getObjectType() << "} (l " << pNode2.getPos() << ") Unknown basic node='" << widgetName2 << "' not in : [elem,separator]" ); + } + } + } else if (widgetName == "separator") { + addSpacer(); + } else { + EWOL_ERROR("[" << getId() << "] {" << getObjectType() << "} (l " << pNode.getPos() << ") Unknown basic node='" << widgetName << "' not in : [elem,separator]" ); + } + } + return true; +} diff --git a/ewol/widget/Menu.hpp b/ewol/widget/Menu.hpp index 73356a2a..2e9307d4 100644 --- a/ewol/widget/Menu.hpp +++ b/ewol/widget/Menu.hpp @@ -43,6 +43,7 @@ namespace ewol { int32_t subWidgetAdd(ewol::WidgetShared _newWidget) override; void subWidgetRemove(ewol::WidgetShared _newWidget) override; void subWidgetUnLink(ewol::WidgetShared _newWidget) override; + bool loadXML(const exml::Element& _node) override; private: std::vector m_listElement; int32_t m_staticId; // unique ID for every element of the menu ... diff --git a/ewol/widget/meta/FileChooser.hpp b/ewol/widget/meta/FileChooser.hpp index 02f19fb7..7724bab8 100644 --- a/ewol/widget/meta/FileChooser.hpp +++ b/ewol/widget/meta/FileChooser.hpp @@ -22,12 +22,12 @@ namespace ewol { * * Fist global static declaration and inclusion: * [code style=c++] - * #include + * #include * [/code] * * The first step is to create the file chooser pop-up : (never in the constructor!!!) * [code style=c++] - * ewol::widget::FileChooserShared tmpWidget = ewol::Widget::FileChooser::create(); + * ewol::widget::FileChooserShared tmpWidget = ewol::widget::FileChooser::create(); * if (tmpWidget == nullptr) { * APPL_ERROR("Can not open File chooser !!! "); * return -1;