]> git.tdb.fi Git - libs/gltk.git/commitdiff
Loader improvements
authorMikko Rasa <tdb@tdb.fi>
Thu, 3 Feb 2011 12:33:23 +0000 (12:33 +0000)
committerMikko Rasa <tdb@tdb.fi>
Thu, 3 Feb 2011 12:33:23 +0000 (12:33 +0000)
14 files changed:
source/button.cpp
source/dropdown.cpp
source/geometry.cpp
source/geometry.h
source/label.cpp
source/list.cpp
source/part.cpp
source/part.h
source/root.h
source/slider.cpp
source/table.cpp
source/toggle.cpp
source/widget.cpp
source/widget.h

index e81fe02c20a5ffdc609aa74106adf4b4bc879855..3c71499bde19cdc32794478687ef689e18f4e90b 100644 (file)
@@ -104,7 +104,7 @@ Button::Loader::Loader(Button &btn):
 
 void Button::Loader::text(const std::string &t)
 {
-       static_cast<Button &>(wdg).text = t;
+       static_cast<Button &>(obj).text = t;
 }
 
 } // namespace GLtk
index e9634f5e676f781675c646c9e0d4f3a65a9841c5..b00438e54c40ef7bc21dfb887ecd1945229a72bb 100644 (file)
@@ -138,7 +138,7 @@ Dropdown::Loader::Loader(Dropdown &d):
 
 void Dropdown::Loader::item(const string &str)
 {
-       dynamic_cast<Dropdown &>(wdg).append(str);
+       dynamic_cast<Dropdown &>(obj).append(str);
 }
 
 } // namespace GLtk
index 8163022ccdc981220280c938864427afb66c4630..5c304d389a631eab7c63c905b28425bcaaa7c5da 100644 (file)
@@ -30,7 +30,7 @@ Sides::Sides():
 
 
 Sides::Loader::Loader(Sides &s):
-       sides(s)
+       DataFile::ObjectLoader<Sides>(s)
 {
        add("top",    &Sides::top);
        add("right",  &Sides::right);
index 08d660eeb05a4b9507968a6f8845924e524f70e1..4fe6a75ae33dab5a89fa2f907a177a6ee644fcc9 100644 (file)
@@ -8,7 +8,7 @@ Distributed under the LGPL
 #ifndef MSP_GLTK_GEOMETRY_H_
 #define MSP_GLTK_GEOMETRY_H_
 
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 
 namespace Msp {
 namespace GLtk {
@@ -33,13 +33,10 @@ Specifies margins on the sides of an element.
 */
 struct Sides
 {
-       class Loader: public DataFile::Loader
+       class Loader: public DataFile::ObjectLoader<Sides>
        {
        public:
                Loader(Sides &);
-               Sides &get_object() { return sides; }
-       private:
-               Sides &sides;
        };
 
        unsigned top;
index 6db6aa37820b593fa693cce70de22b65da469b2f..e3a46234519757df692a81d23ce4fb96f940af58 100644 (file)
@@ -60,7 +60,7 @@ Label::Loader::Loader(Label &l):
 
 void Label::Loader::text(const string &t)
 {
-       static_cast<Label &>(wdg).text = t;
+       static_cast<Label &>(obj).text = t;
 }
 
 } // namespace GLtk
index ac8b48cb77432dfb5069bf038c1a705510cd2684..65d2d6309d24cb612bb3b108fcd67533d20e8d25 100644 (file)
@@ -259,7 +259,7 @@ List::Loader::Loader(List &l):
 
 void List::Loader::item(const string &v)
 {
-       dynamic_cast<List &>(wdg).append(v);
+       dynamic_cast<List &>(obj).append(v);
 }
 
 } // namespace GLtk
index b75e98ff7491cddca368cfc0061cf0ee8774fe2a..f2797f9058ad66fe8633256c286eb3b794fe8cab 100644 (file)
@@ -43,8 +43,7 @@ void Part::render(const Geometry &parent, State state) const
 
 
 Part::Loader::Loader(Part &p, Resources &r):
-       part(p),
-       res(r)
+       DataFile::CollectionObjectLoader<Part>(p, &r)
 {
        add("graphic", &Loader::graphic);
        add("align",   &Loader::align);
@@ -56,43 +55,44 @@ Part::Loader::Loader(Part &p, Resources &r):
 Part::Loader::~Loader()
 {
        for(unsigned i=0; i<N_STATES_; ++i)
-               if(part.graphic[i])
+               if(obj.graphic[i])
                {
-                       const Sides &shadow = part.graphic[i]->get_shadow();
-                       part.geom.w = max(part.geom.w, part.graphic[i]->get_width()-shadow.left-shadow.right);
-                       part.geom.h = max(part.geom.h, part.graphic[i]->get_height()-shadow.bottom-shadow.top);
+                       const Graphic &grph = *obj.graphic[i];
+                       const Sides &shadow = grph.get_shadow();
+                       obj.geom.w = max(obj.geom.w, grph.get_width()-shadow.left-shadow.right);
+                       obj.geom.h = max(obj.geom.h, grph.get_height()-shadow.bottom-shadow.top);
                }
 }
 
 void Part::Loader::graphic(State s, const string &n)
 {
-       Graphic *grph = res.get<Graphic>(n);
+       Graphic *grph = get_collection().get<Graphic>(n);
        for(int i=0; i<N_STATES_; ++i)
                if((i&s)==s)
-                       part.graphic[i] = grph;
+                       obj.graphic[i] = grph;
 }
 
 void Part::Loader::align(float x, float y)
 {
-       part.align.x = x;
-       part.align.y = y;
+       obj.align.x = x;
+       obj.align.y = y;
 }
 
 void Part::Loader::fill(float w, float h)
 {
-       part.align.w = w;
-       part.align.h = h;
+       obj.align.w = w;
+       obj.align.h = h;
 }
 
 void Part::Loader::margin()
 {
-       load_sub(part.margin);
+       load_sub(obj.margin);
 }
 
 void Part::Loader::size(unsigned w, unsigned h)
 {
-       part.geom.w = w;
-       part.geom.h = h;
+       obj.geom.w = w;
+       obj.geom.h = h;
 }
 
 } // namespace GLtk
index a3c0dcf4a109eb045c162a4f007c5b937d911d81..5fe07a4f07d17aa96e121c4eeec1cbabb76b035d 100644 (file)
@@ -9,7 +9,7 @@ Distributed under the LGPL
 #define MSP_GLTK_PART_H_
 
 #include <string>
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 #include "geometry.h"
 #include "state.h"
 
@@ -25,12 +25,8 @@ Defines a single graphical element of a widget style.
 class Part
 {
 public:
-       class Loader: public DataFile::Loader
+       class Loader: public DataFile::CollectionObjectLoader<Part>
        {
-       private:
-               Part &part;
-               Resources &res;
-
        public:
                Loader(Part &, Resources &);
                ~Loader();
index cfe2af344d31c9e2a6902f590e5781f28eccd345..61c1a2efae2b70489a6712b8b76ab5d744b35d7a 100644 (file)
@@ -35,7 +35,7 @@ private:
        Label *lbl_tooltip;
        int pointer_x;
        int pointer_y;
-       Msp::Time::TimeStamp tooltip_timeout;
+       Time::TimeStamp tooltip_timeout;
        Widget *tooltip_target;
 
 public:
index 3392ac4a1e83ce1f84b6e047abebf9d33a6e0c4e..4565675916433920d47e3699fe8155a7cd16e652 100644 (file)
@@ -81,7 +81,7 @@ Slider::Loader::Loader(Slider &s):
 
 Slider &Slider::Loader::get_object() const
 {
-       return static_cast<Slider &>(wdg);
+       return static_cast<Slider &>(obj);
 }
 
 } // namespace GLtk
index c0c823822c425e70fb709d721f53853965dce884..f3016723e3566078a8ca204d1b5d60d4e0d765ed 100644 (file)
@@ -122,22 +122,22 @@ Table::Loader::Loader(Table &t):
 
 void Table::Loader::cell_text(unsigned r, unsigned c, const string &t)
 {
-       static_cast<Table &>(wdg).set_cell_text(r, c, t);
+       static_cast<Table &>(obj).set_cell_text(r, c, t);
 }
 
 void Table::Loader::column_width(unsigned c, unsigned w)
 {
-       static_cast<Table &>(wdg).set_column_width(c, w);
+       static_cast<Table &>(obj).set_column_width(c, w);
 }
 
 void Table::Loader::columns(unsigned c)
 {
-       static_cast<Table &>(wdg).set_columns(c);
+       static_cast<Table &>(obj).set_columns(c);
 }
 
 void Table::Loader::rows(unsigned r)
 {
-       static_cast<Table &>(wdg).set_rows(r);
+       static_cast<Table &>(obj).set_rows(r);
 }
 
 } // namespace GLtk
index 7edbbb08823c5018aac2a6e4b217309b66fbf8d9..43acaa3125b021161a489f91ab9603a044a7ec95 100644 (file)
@@ -99,12 +99,12 @@ Toggle::Loader::Loader(Toggle &t):
 
 Toggle &Toggle::Loader::get_object() const
 {
-       return static_cast<Toggle &>(wdg);
+       return static_cast<Toggle &>(obj);
 }
 
 void Toggle::Loader::finish()
 {
-       Toggle &tgl = static_cast<Toggle &>(wdg);
+       Toggle &tgl = get_object();
        if(tgl.value)
                tgl.state |= ACTIVE;
        else
@@ -113,7 +113,7 @@ void Toggle::Loader::finish()
 
 void Toggle::Loader::text(const string &t)
 {
-       static_cast<Toggle &>(wdg).text = t;
+       get_object().text = t;
 }
 
 } // namespace GLtk
index c146d235c80602e061a02dd8d7a6ef832f507102..1442151262121406319c9bdf737f5f2f54a34d56 100644 (file)
@@ -164,7 +164,7 @@ void Widget::focus_out()
 
 
 Widget::Loader::Loader(Widget &w):
-       wdg(w)
+       DataFile::ObjectLoader<Widget>(w)
 {
        add("position", &Loader::position);
        add("size",     &Loader::size);
@@ -174,17 +174,17 @@ Widget::Loader::Loader(Widget &w):
 
 void Widget::Loader::position(int x, int y)
 {
-       wdg.set_position(x, y);
+       obj.set_position(x, y);
 }
 
 void Widget::Loader::size(unsigned w, unsigned h)
 {
-       wdg.set_size(w, h);
+       obj.set_size(w, h);
 }
 
 void Widget::Loader::style(const string &s)
 {
-       wdg.set_style(s);
+       obj.set_style(s);
 }
 
 } // namespace GLtk
index bc9b90a69696a8e944af0d88042ad318ab481ec1..64db74e85a15d4b7f4a06fe5577a29140048966d 100644 (file)
@@ -9,6 +9,7 @@ Distributed under the LGPL
 #define MSP_GLTK_WIDGET_H_
 
 #include <string>
+#include <msp/datafile/objectloader.h>
 #include "geometry.h"
 #include "state.h"
 
@@ -29,14 +30,10 @@ class Widget
        friend class Container;
 
 public:
-       class Loader: public Msp::DataFile::Loader
+       class Loader: public DataFile::ObjectLoader<Widget>
        {
-       protected:
-               Widget &wdg;
-
        public:
                Loader(Widget &);
-               Widget &get_object() const { return wdg; }
        private:
                void position(int, int);
                void size(unsigned, unsigned);