[Libufo-commits] ufo-0.5/src/xml uxul.cpp,1.8,1.9
Status: Beta
Brought to you by:
schmidtjf
|
From: Johannes S. <sch...@us...> - 2005-10-24 16:01:08
|
Update of /cvsroot/libufo/ufo-0.5/src/xml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32296/src/xml Modified Files: uxul.cpp Log Message: Implemented group box, deck, stack and tabbox. Index: uxul.cpp =================================================================== RCS file: /cvsroot/libufo/ufo-0.5/src/xml/uxul.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** uxul.cpp 30 Sep 2005 12:37:44 -0000 1.8 --- uxul.cpp 24 Oct 2005 16:00:55 -0000 1.9 *************** *** 37,40 **** --- 37,42 ---- #include "ufo/widgets/ucombobox.hpp" #include "ufo/widgets/ucheckbox.hpp" + #include "ufo/widgets/ugroupbox.hpp" + #include "ufo/widgets/ustackwidget.hpp" #include "ufo/widgets/uradiobutton.hpp" #include "ufo/widgets/ulabel.hpp" *************** *** 45,48 **** --- 47,51 ---- #include "ufo/widgets/ucheckboxmenuitem.hpp" #include "ufo/widgets/umenubar.hpp" + #include "ufo/widgets/utabwidget.hpp" #include "ufo/widgets/utextedit.hpp" #include "ufo/widgets/ulineedit.hpp" *************** *** 374,377 **** --- 377,418 ---- } + void + createChildren(TiXmlElement * elem, UWidget * container); + + UTabWidget * + createTabBox(TiXmlElement * elem) { + std::vector<std::string> m_tabs; + std::vector<UWidget*> m_panels; + + if (TiXmlElement * tabs = elem->FirstChildElement("tabs")) { + TiXmlElement* tabElement = tabs->FirstChildElement(); + for(; tabElement; tabElement = tabElement->NextSiblingElement()) { + std::string value = UString(tabElement->Value()).lowerCase(); + if ("tab" == value && tabElement->Attribute("label")) { + m_tabs.push_back(tabElement->Attribute("label")); + } + } + } + if (TiXmlElement * panels = elem->FirstChildElement("tabpanels")) { + TiXmlElement* panelElement = panels->FirstChildElement(); + for(; panelElement; panelElement = panelElement->NextSiblingElement()) { + std::string value = UString(panelElement->Value()).lowerCase(); + if ("tabpanel" == value) { + UWidget * tabPanel = new UWidget(); + genericWidget(panelElement, tabPanel); + createLayout(panelElement, tabPanel); + createChildren(panelElement, tabPanel); + m_panels.push_back(tabPanel); + } + } + } + UTabWidget * tabBox = new UTabWidget(); + unsigned int min_size = std::min(m_tabs.size(), m_panels.size()); + for (unsigned int i = 0; i < min_size; ++i) { + tabBox->addTab(m_panels[i], m_tabs[i]); + } + return tabBox; + } + void *************** *** 395,398 **** --- 436,462 ---- // recursively create children createChildren(widgetElement, widget); + } else if ("groupbox" == value) { + UGroupBox * box = new UGroupBox(); + genericWidget(widgetElement, box); + if (TiXmlElement * caption = widgetElement->FirstChildElement("caption")) { + if (caption->Attribute("label")) { + box->setTitle(caption->Attribute("label")); + } + } + container->add(box); + // recursively create children + createChildren(widgetElement, box); + } else if ("deck" == value) { + UStackWidget * deck = new UStackWidget(1); + genericWidget(widgetElement, deck); + container->add(deck); + // recursively create children + createChildren(widgetElement, deck); + } else if ("stack" == value) { + UStackWidget * stack = new UStackWidget(0); + genericWidget(widgetElement, stack); + container->add(stack); + // recursively create children + createChildren(widgetElement, stack); } else if ("button" == value) { UButton * button = new UButton(); *************** *** 503,506 **** --- 567,574 ---- } else if ("radiogroup" == value) { createRadioGroup(widgetElement, container); + } else if ("tabbox" == value) { + UTabWidget * tabBox = createTabBox(widgetElement); + genericWidget(widgetElement, tabBox); + container->add(tabBox); } |