void Menu::LoadWidget(Profile * profile, const xmlNode * rootMenuNode, WidgetList * container) { XmlReader * xmlFile = profile->GetXMLDocument(); uint widgetCount = xmlFile->GetNbChildren(rootMenuNode); const xmlNode * currentNode = xmlFile->GetFirstChild(rootMenuNode); std::string currentNodeName; // For each sub-node ... for ( ; widgetCount > 0; --widgetCount) { currentNodeName = xmlFile->GetNodeName(currentNode); Widget * newWidget = CreateWidget(profile, currentNode, currentNodeName); if (newWidget) { if ("GridBox" == currentNodeName || "HorizontalBox" == currentNodeName || "VerticalBox" == currentNodeName) { LoadWidget(profile, currentNode, (WidgetList*)newWidget); } container->AddWidget(newWidget); } currentNode = xmlFile->GetNextSibling(currentNode); } if (container) { container->Pack(); } }