mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-09 00:56:39 +00:00
Move a deeply nested structure out of its parent.
This also allows data not interesting for the outside to be defined in the .cpp instead of the .hpp.
This commit is contained in:
parent
0dff223ddd
commit
302536a937
@ -48,6 +48,31 @@
|
||||
|
||||
namespace gui2 {
|
||||
|
||||
struct tbuilder_button : public tbuilder_widget
|
||||
{
|
||||
|
||||
private:
|
||||
tbuilder_button();
|
||||
public:
|
||||
tbuilder_button(const config& cfg) : tbuilder_widget(cfg) {}
|
||||
|
||||
twidget* build () const;
|
||||
|
||||
};
|
||||
|
||||
struct tbuilder_text_box : public tbuilder_widget
|
||||
{
|
||||
|
||||
private:
|
||||
tbuilder_text_box();
|
||||
public:
|
||||
tbuilder_text_box(const config& cfg) : tbuilder_widget(cfg) {}
|
||||
|
||||
twidget* build () const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
twindow build(CVideo& video, const std::string& type)
|
||||
{
|
||||
std::vector<twindow_builder::tresolution>::const_iterator
|
||||
@ -190,7 +215,7 @@ twindow_builder::tresolution::tgrid::tgrid(const config* cfg) :
|
||||
<< rows << " rows and " << cols << " columns.\n";
|
||||
}
|
||||
|
||||
twindow_builder::tresolution::tgrid::tbuilder_widget::tbuilder_widget(const config& cfg) :
|
||||
tbuilder_widget::tbuilder_widget(const config& cfg) :
|
||||
id(cfg["id"]),
|
||||
definition(cfg["button_definition"]),
|
||||
label(cfg["label"])
|
||||
@ -205,7 +230,7 @@ twindow_builder::tresolution::tgrid::tbuilder_widget::tbuilder_widget(const conf
|
||||
|
||||
}
|
||||
|
||||
twidget* twindow_builder::tresolution::tgrid::tbuilder_button::build() const
|
||||
twidget* tbuilder_button::build() const
|
||||
{
|
||||
tbutton *button = new tbutton();
|
||||
|
||||
@ -219,7 +244,7 @@ twidget* twindow_builder::tresolution::tgrid::tbuilder_button::build() const
|
||||
return button;
|
||||
}
|
||||
|
||||
twidget* twindow_builder::tresolution::tgrid::tbuilder_text_box::build() const
|
||||
twidget* tbuilder_text_box::build() const
|
||||
{
|
||||
ttext_box *text_box = new ttext_box();
|
||||
|
||||
@ -233,6 +258,5 @@ twidget* twindow_builder::tresolution::tgrid::tbuilder_text_box::build() const
|
||||
return text_box;
|
||||
}
|
||||
|
||||
|
||||
} // namespace gui2
|
||||
|
||||
|
@ -31,6 +31,27 @@ class twindow;
|
||||
|
||||
twindow build(CVideo& video, const std::string& type);
|
||||
|
||||
|
||||
//! Contains the info needed to instantiate a widget.
|
||||
struct tbuilder_widget : public reference_counted_object
|
||||
{
|
||||
private:
|
||||
tbuilder_widget();
|
||||
|
||||
public:
|
||||
tbuilder_widget(const config& cfg);
|
||||
|
||||
std::string id;
|
||||
std::string definition;
|
||||
t_string label;
|
||||
|
||||
virtual twidget* build() const = 0;
|
||||
virtual ~tbuilder_widget() {}
|
||||
};
|
||||
|
||||
typedef boost::intrusive_ptr<tbuilder_widget> tbuilder_widget_ptr;
|
||||
typedef boost::intrusive_ptr<const tbuilder_widget> const_tbuilder_widget_ptr;
|
||||
|
||||
class twindow_builder
|
||||
{
|
||||
public:
|
||||
@ -65,50 +86,6 @@ public:
|
||||
unsigned rows;
|
||||
unsigned cols;
|
||||
|
||||
struct tbuilder_widget : public reference_counted_object
|
||||
{
|
||||
// NOTE a widget is always a button atm.
|
||||
private:
|
||||
tbuilder_widget();
|
||||
|
||||
public:
|
||||
tbuilder_widget(const config& cfg);
|
||||
|
||||
std::string id;
|
||||
std::string definition;
|
||||
t_string label;
|
||||
|
||||
virtual twidget* build() const = 0;
|
||||
virtual ~tbuilder_widget() {}
|
||||
};
|
||||
|
||||
struct tbuilder_button : public tbuilder_widget
|
||||
{
|
||||
|
||||
private:
|
||||
tbuilder_button();
|
||||
public:
|
||||
tbuilder_button(const config& cfg) : tbuilder_widget(cfg) {}
|
||||
|
||||
twidget* build () const;
|
||||
|
||||
};
|
||||
|
||||
struct tbuilder_text_box : public tbuilder_widget
|
||||
{
|
||||
|
||||
private:
|
||||
tbuilder_text_box();
|
||||
public:
|
||||
tbuilder_text_box(const config& cfg) : tbuilder_widget(cfg) {}
|
||||
|
||||
twidget* build () const;
|
||||
|
||||
};
|
||||
|
||||
typedef boost::intrusive_ptr<tbuilder_widget> tbuilder_widget_ptr;
|
||||
typedef boost::intrusive_ptr<const tbuilder_widget> const_tbuilder_widget_ptr;
|
||||
|
||||
std::vector<tbuilder_widget_ptr> widgets;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user