2 #include <msp/core/refptr.h>
31 void Panel::set_layout(Layout *l)
33 l->set_container(*this);
38 void Panel::autosize()
44 void Panel::render_special(const Part &part, GL::Renderer &renderer) const
46 if(part.get_name()=="children")
48 for(list<Container::Child *>::const_iterator i=children.begin(); i!=children.end(); ++i)
49 if((*i)->widget->is_visible())
50 (*i)->widget->render(renderer);
54 void Panel::on_geometry_change()
60 void Panel::on_child_added(Widget &wdg)
64 layout->add_widget(wdg);
65 signal_autosize_changed.emit();
69 void Panel::on_child_removed(Widget &wdg)
73 layout->remove_widget(wdg);
74 signal_autosize_changed.emit();
79 Panel::Loader::Loader(Panel &p, map<string, Widget *> &m):
80 DataFile::DerivedObjectLoader<Panel, Widget::Loader>(p),
83 add("button", &Loader::child<Button>);
84 add("dropdown", &Loader::child<Dropdown>);
85 add("entry", &Loader::child<Entry>);
86 add("hslider", &Loader::child<HSlider>);
87 add("indicator", &Loader::child<Indicator>);
88 add("label", &Loader::child<Label>);
89 add("list", &Loader::child<List>);
90 add("panel", &Loader::panel);
91 add("toggle", &Loader::child<Toggle>);
92 add("vslider", &Loader::child<VSlider>);
96 void Panel::Loader::child(const string &n)
98 RefPtr<T> chl = new T();
101 wdg_map[n] = chl.release();
104 void Panel::Loader::panel(const string &n)
106 RefPtr<Panel> p = new Panel();
107 load_sub(*p, wdg_map);
109 wdg_map[n] = p.release();