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);
}
|