]> git.tdb.fi Git - libs/gltk.git/commitdiff
Use DerivedObjectLoader for widget loaders
authorMikko Rasa <tdb@tdb.fi>
Fri, 14 Jun 2013 17:11:18 +0000 (20:11 +0300)
committerMikko Rasa <tdb@tdb.fi>
Fri, 14 Jun 2013 17:11:18 +0000 (20:11 +0300)
16 files changed:
source/button.cpp
source/button.h
source/dropdown.cpp
source/dropdown.h
source/entry.cpp
source/entry.h
source/label.cpp
source/label.h
source/list.cpp
source/list.h
source/panel.cpp
source/panel.h
source/slider.cpp
source/slider.h
source/toggle.cpp
source/toggle.h

index 939d02646249b8d2aec450299edba5f422ea37dc..b881b3f97fd8b52394b2e6bf9be1bd9869621598 100644 (file)
@@ -127,14 +127,14 @@ void Button::on_style_change()
 
 
 Button::Loader::Loader(Button &btn):
-       Widget::Loader(btn)
+       DataFile::DerivedObjectLoader<Button, Widget::Loader>(btn)
 {
        add("text", &Loader::text);
 }
 
 void Button::Loader::text(const std::string &t)
 {
-       static_cast<Button &>(obj).text = t;
+       obj.text = t;
 }
 
 } // namespace GLtk
index e99f16b2503ac568d589928d2ae1729c517d2aee..11d8bc7b3abf435a46fceb1444ac142d88312fda 100644 (file)
@@ -16,7 +16,7 @@ in a spacial part "text".
 class Button: public Widget
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<Button, Widget::Loader>
        {
        public:
                Loader(Button &);
index fcf35babdf132234476f9989eeac7c37a83a583e..ee8ec55b7d1e8d46874e42deb82c947fa4d02ca4 100644 (file)
@@ -162,14 +162,14 @@ void Dropdown::list_item_selected(unsigned index)
 
 
 Dropdown::Loader::Loader(Dropdown &d):
-       Widget::Loader(d)
+       DataFile::DerivedObjectLoader<Dropdown, Widget::Loader>(d)
 {
        add("item", &Loader::item);
 }
 
 void Dropdown::Loader::item(const string &v)
 {
-       dynamic_cast<BasicListData<string> &>(dynamic_cast<Dropdown &>(obj).list.get_data()).append(v);
+       dynamic_cast<BasicListData<string> &>(obj.list.get_data()).append(v);
 }
 
 } // namespace GLtk
index fd98f11ddfa2d4e1b8940dfb37f1a639f6790d00..7a0f04d3f1feb2afed2a5a313bd3c149b1ed4d06 100644 (file)
@@ -13,7 +13,7 @@ class List;
 class Dropdown: virtual public Widget, private Container
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<Dropdown, Widget::Loader>
        {
        public:
                Loader(Dropdown &);
index da127022a84b93b3e26ebd22a2dbc04c689b100a..1f778420e0b44eda8b86b5765320f926048cdd27 100644 (file)
@@ -301,10 +301,5 @@ void Entry::slider_value_changed(double value)
                first_row = text.get_n_lines()-visible_rows-static_cast<unsigned>(value);
 }
 
-
-Entry::Loader::Loader(Entry &ent):
-       Widget::Loader(ent)
-{ }
-
 } // namespace GLtk
 } // namespace Msp
index cd7d9bc4690636b8d9164c0c63d452ee037cfb91..0bba6f0fbe0e26cd74018b81610d4a4a12b27aec 100644 (file)
@@ -22,12 +22,6 @@ Special parts:
 class Entry: virtual public Widget, private Container
 {
 public:
-       class Loader: public Widget::Loader
-       {
-       public:
-               Loader(Entry &);
-       };
-
        sigc::signal<void> signal_enter;
 
 private:
index f9274b47e2f665ff85ad13d6cf488be49bcec321..21974be7b5844f42275181ce47c26f1794dc2299 100644 (file)
@@ -50,14 +50,14 @@ void Label::on_style_change()
 
 
 Label::Loader::Loader(Label &l):
-       Widget::Loader(l)
+       DataFile::DerivedObjectLoader<Label, Widget::Loader>(l)
 {
        add("text", &Loader::text);
 }
 
 void Label::Loader::text(const string &t)
 {
-       static_cast<Label &>(obj).text = t;
+       obj.text = t;
 }
 
 } // namespace GLtk
index 9a0d1f2e57fa53be157546c49be1a9bec133e261..6cd9bcb6e1d5a4188d265d6dd8e56f82ecc1af92 100644 (file)
@@ -13,7 +13,7 @@ Labels display static text.  There is one special part: "text".
 class Label: public Widget
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<Label, Widget::Loader>
        {
        public:
                Loader(Label &);
index 378bf707c1a7d702f2192d50b0da8cd2ea70d9bc..4ce35e266f4418accb2b9b2716480dc1451f20ad 100644 (file)
@@ -310,13 +310,6 @@ void List::DataObserver::refresh_strings()
 }
 
 
-List::Loader::Loader(List &l):
-       Widget::Loader(l)
-{
-       add("item", &Loader::item);
-}
-
-
 void List::Item::autosize()
 {
        Widget::autosize();
@@ -368,9 +361,15 @@ void List::BasicItem::on_style_change()
 }
 
 
+List::Loader::Loader(List &l):
+       DataFile::DerivedObjectLoader<List, Widget::Loader>(l)
+{
+       add("item", &Loader::item);
+}
+
 void List::Loader::item(const string &v)
 {
-       dynamic_cast<BasicListData<string> &>(*dynamic_cast<List &>(obj).data).append(v);
+       dynamic_cast<BasicListData<string> &>(*obj.data).append(v);
 }
 
 } // namespace GLtk
index caf403a84a0f1b5ddaf39f8f0ce9e70a5ce71401..561e388c77a25cd114abc8a4f3471ba79674b8ff 100644 (file)
@@ -17,7 +17,7 @@ to allow scrolling through a long list.
 class List: virtual public Widget, private Container
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<List, Widget::Loader>
        {
        public:
                Loader(List &);
index 389e3d9be729485fc4c16db0ee4dca3237a5f3ed..9bc752413c84b3952feb43f76dc13758d4dd1118 100644 (file)
@@ -77,8 +77,7 @@ void Panel::on_child_removed(Widget &wdg)
 
 
 Panel::Loader::Loader(Panel &p, map<string, Widget *> &m):
-       Widget::Loader(p),
-       pnl(p),
+       DataFile::DerivedObjectLoader<Panel, Widget::Loader>(p),
        wdg_map(m)
 {
        add("button",    &Loader::child<Button>);
@@ -98,7 +97,7 @@ void Panel::Loader::child(const string &n)
 {
        RefPtr<T> chl = new T();
        load_sub(*chl);
-       pnl.add(*chl.get());
+       obj.add(*chl.get());
        wdg_map[n] = chl.release();
 }
 
@@ -106,7 +105,7 @@ void Panel::Loader::panel(const string &n)
 {
        RefPtr<Panel> p = new Panel();
        load_sub(*p, wdg_map);
-       pnl.add(*p.get());
+       obj.add(*p.get());
        wdg_map[n] = p.release();
 }
 
index c50725b9b940cb255ed635ad665cc82c55bddfe7..aa94ff317f1402ed6c42a1d360dc1a2e2adbf2af 100644 (file)
@@ -16,13 +16,12 @@ ignored.
 class Panel: public Container
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<Panel, Widget::Loader>
        {
        public:
                typedef std::map<std::string, Widget *> WidgetMap;
 
        private:
-               Panel &pnl;
                WidgetMap &wdg_map;
        
        public:
index dc8a28a6ff0c0ca718000cb3923c5e03c1050633..32e221e36dba39d56776570e0b99209c4ce873d9 100644 (file)
@@ -68,17 +68,12 @@ void Slider::end_drag()
 
 
 Slider::Loader::Loader(Slider &s):
-       Widget::Loader(s)
+       DataFile::DerivedObjectLoader<Slider, Widget::Loader>(s)
 {
        add("range", &Slider::min, &Slider::max);
        add("step",  &Slider::step);
        add("value", &Slider::value);
 }
 
-Slider &Slider::Loader::get_object() const
-{
-       return static_cast<Slider &>(obj);
-}
-
 } // namespace GLtk
 } // namespace Msp
index e2d810994c51387dab238b0d38fc78d9fb59a6f0..6612c619aaaea80ae2445cd548edd9d38fcd742e 100644 (file)
@@ -15,11 +15,10 @@ variations.
 class Slider: public Widget
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<Slider, Widget::Loader>
        {
        public:
                Loader(Slider &);
-               Slider &get_object() const;
        };
 
        sigc::signal<void, double> signal_value_changed;
index 789ae37ecfec59fdd5987b9739fa0818dc98f8d9..e34b43ae38cc743ef721216e5b3d41b1b662ce26 100644 (file)
@@ -103,27 +103,21 @@ void Toggle::on_style_change()
 
 
 Toggle::Loader::Loader(Toggle &t):
-       Widget::Loader(t)
+       DataFile::DerivedObjectLoader<Toggle, Widget::Loader>(t)
 {
        add("exclusive", &Toggle::exclusive);
        add("text",      &Loader::text);
        add("value",     &Toggle::value);
 }
 
-Toggle &Toggle::Loader::get_object() const
-{
-       return static_cast<Toggle &>(obj);
-}
-
 void Toggle::Loader::finish()
 {
-       Toggle &tgl = get_object();
-       tgl.set_state(ACTIVE, (tgl.value ? ACTIVE : NORMAL));
+       obj.set_state(ACTIVE, (obj.value ? ACTIVE : NORMAL));
 }
 
 void Toggle::Loader::text(const string &t)
 {
-       get_object().text = t;
+       obj.text = t;
 }
 
 } // namespace GLtk
index fd7e762734ab295ad25be775ba5568f4970a5b75..0a8a89378afc937f35bc8eb049d5e14e99ae2852 100644 (file)
@@ -14,11 +14,10 @@ Allows toggling a value between two states.
 class Toggle: public Widget
 {
 public:
-       class Loader: public Widget::Loader
+       class Loader: public DataFile::DerivedObjectLoader<Toggle, Widget::Loader>
        {
        public:
                Loader(Toggle &);
-               Toggle &get_object() const;
        private:
                virtual void finish();
                void text(const std::string &);