diff --git a/src/gui/widgets/window_builder.cpp b/src/gui/widgets/window_builder.cpp index d212bb15e87..5fdef060060 100644 --- a/src/gui/widgets/window_builder.cpp +++ b/src/gui/widgets/window_builder.cpp @@ -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::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 diff --git a/src/gui/widgets/window_builder.hpp b/src/gui/widgets/window_builder.hpp index ee2cd79e203..efe7bbe8ce8 100644 --- a/src/gui/widgets/window_builder.hpp +++ b/src/gui/widgets/window_builder.hpp @@ -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_ptr; +typedef boost::intrusive_ptr 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_ptr; - typedef boost::intrusive_ptr const_tbuilder_widget_ptr; - std::vector widgets; };