]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/panel.h
Allow loading generic layout properties from datafiles
[libs/gltk.git] / source / panel.h
index aa94ff317f1402ed6c42a1d360dc1a2e2adbf2af..79e8bd455a3b36cbd76f9f113641cb81baa79731 100644 (file)
@@ -2,12 +2,11 @@
 #define MSP_GLTK_PANEL_H_
 
 #include "container.h"
+#include "layout.h"
 
 namespace Msp {
 namespace GLtk {
 
-class Layout;
-
 /**
 Panels are containers for other widgets.  Panel styles should have a special
 part "children" to render the child widgets.  All properties of this part are
@@ -21,17 +20,38 @@ public:
        public:
                typedef std::map<std::string, Widget *> WidgetMap;
 
-       private:
+       protected:
                WidgetMap &wdg_map;
+               Widget *last_widget;
        
        public:
                Loader(Panel &, WidgetMap &);
        private:
+               Layout &get_layout();
+               Widget &get_last_widget();
+               template<typename T>
+               void arrangement();
                template<typename T>
                void child(const std::string &);
+               void constraint(Layout::ConstraintType, const std::string &);
+               void expand(bool, bool);
+               void gravity(int, int);
+               void grid(unsigned);
+               void layout();
                void panel(const std::string &);
        };
 
+private:
+       template<typename T>
+       class ArrangedLoader: public DataFile::Loader
+       {
+       private:
+               typename T::Loader arr_loader;
+
+       public:
+               ArrangedLoader(Loader &, T &);
+       };
+
 protected:
        Layout *layout;