void ewol::widget::Container::setSubWidget(std::shared_ptr<ewol::Widget> _newWidget) { if (_newWidget == nullptr) { return; } subWidgetRemove(); m_subWidget = _newWidget; if (m_subWidget != nullptr) { m_subWidget->setParent(shared_from_this()); } markToRedraw(); requestUpdateSize(); }
bool ewol::widget::Container::loadXML(exml::Element* _node) { if (nullptr == _node) { return false; } // parse generic properties : ewol::Widget::loadXML(_node); // remove previous element : subWidgetRemove(); // parse all the elements : for(size_t iii=0; iii< _node->size(); iii++) { exml::Element* pNode = _node->getElement(iii); if (pNode == nullptr) { // trash here all that is not element continue; } std::string widgetName = pNode->getValue(); if (getWidgetManager().exist(widgetName) == false) { EWOL_ERROR("(l "<<pNode->getPos()<<") Unknown basic node=\"" << widgetName << "\" not in : [" << getWidgetManager().list() << "]" ); continue; } if (nullptr != getSubWidget()) { EWOL_ERROR("(l "<<pNode->getPos()<<") " << __class__ << " Can only have one subWidget ??? node=\"" << widgetName << "\"" ); continue; } EWOL_DEBUG("try to create subwidget : '" << widgetName << "'"); std::shared_ptr<ewol::Widget> tmpWidget = getWidgetManager().create(widgetName); if (tmpWidget == nullptr) { EWOL_ERROR ("(l "<<pNode->getPos()<<") Can not create the widget : \"" << widgetName << "\""); continue; } // add widget : setSubWidget(tmpWidget); if (false == tmpWidget->loadXML(pNode)) { EWOL_ERROR ("(l "<<pNode->getPos()<<") can not load widget properties : \"" << widgetName << "\""); return false; } } return true; }
/** * @brief remove the subWidget Toggle node (async). */ void subWidgetRemoveToggle() { subWidgetRemove(1); }
/** * @brief remove the subWidget node (async). */ void subWidgetRemove() { subWidgetRemove(0); }
ewol::widget::Container::~Container() { subWidgetRemove(); }