From 6aea5006c4c4cdcd6cb353239356c5b8cbcfa895 Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sun, 11 Oct 2009 10:49:05 +0100 Subject: [PATCH] Add widget trees --- include/gui2/Widget.hpp | 2 +- src/gui2/Layout.cpp | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/include/gui2/Widget.hpp b/include/gui2/Widget.hpp index d383cd1..1585fdc 100644 --- a/include/gui2/Widget.hpp +++ b/include/gui2/Widget.hpp @@ -37,7 +37,7 @@ namespace gui { const string& name() const { return name_; } - protected: + protected: template void const_property(const string& key, T& value, const T& def = T()) diff --git a/src/gui2/Layout.cpp b/src/gui2/Layout.cpp index e56759f..175c291 100644 --- a/src/gui2/Layout.cpp +++ b/src/gui2/Layout.cpp @@ -46,10 +46,27 @@ private: private: vector path_comps; }; + + // Tree of widgets + struct WidgetTree { + WidgetTree(IWidgetPtr w, WidgetTree* p) + : widget(w), parent(p) {} + + IWidgetPtr widget; + WidgetTree* parent; + vector children; + + typedef vector::iterator Iterator; + }; + + WidgetTree* rootWidget; }; Layout::Layout(const string& file_name) { + // Make a dummy root widget + rootWidget = new WidgetTree(IWidgetPtr(), NULL); + IXMLParserPtr parser = makeXMLParser("schemas/layout.xsd"); parser->parse(file_name, *this); } @@ -57,7 +74,8 @@ Layout::Layout(const string& file_name) void Layout::startElement(const string& local_name, const AttributeSet &attrs) { - + if (local_name == "window") + ; } void Layout::render() const -- 2.39.2