GUI2: move multi_page and stacked_widget init to their constructors
Makes it consistent with the listbox handling in 10b640c0f2
This commit is contained in:
parent
ebf9a2949a
commit
028e16d39b
4 changed files with 38 additions and 74 deletions
|
@ -36,8 +36,23 @@ REGISTER_WIDGET(multi_page)
|
|||
multi_page::multi_page(const implementation::builder_multi_page& builder)
|
||||
: container_base(builder, type())
|
||||
, generator_(nullptr)
|
||||
, page_builders_()
|
||||
, page_builders_(builder.builders)
|
||||
{
|
||||
const auto conf = cast_config_to<multi_page_definition>();
|
||||
assert(conf);
|
||||
|
||||
init_grid(*conf->grid);
|
||||
|
||||
auto generator = generator_base::build(true, true, generator_base::independent, false);
|
||||
|
||||
// Save our *non-owning* pointer before this gets moved into the grid.
|
||||
generator_ = generator.get();
|
||||
assert(generator_);
|
||||
|
||||
generator->create_items(-1, *page_builders_.begin()->second, builder.data, nullptr);
|
||||
|
||||
// TODO: can we use the replacements system here?
|
||||
swap_grid(nullptr, &get_grid(), std::move(generator), "_content_grid");
|
||||
}
|
||||
|
||||
grid& multi_page::add_page(const widget_item& item)
|
||||
|
@ -138,16 +153,6 @@ unsigned multi_page::get_state() const
|
|||
return 0;
|
||||
}
|
||||
|
||||
void multi_page::finalize(std::unique_ptr<generator_base> generator, const std::vector<widget_item>& page_data)
|
||||
{
|
||||
// Save our *non-owning* pointer before this gets moved into the grid.
|
||||
generator_ = generator.get();
|
||||
assert(generator_);
|
||||
|
||||
generator->create_items(-1, *page_builders_.begin()->second, page_data, nullptr);
|
||||
swap_grid(nullptr, &get_grid(), std::move(generator), "_content_grid");
|
||||
}
|
||||
|
||||
bool multi_page::impl_draw_background()
|
||||
{
|
||||
/* DO NOTHING */
|
||||
|
@ -224,20 +229,7 @@ builder_multi_page::builder_multi_page(const config& cfg)
|
|||
std::unique_ptr<widget> builder_multi_page::build() const
|
||||
{
|
||||
auto widget = std::make_unique<multi_page>(*this);
|
||||
|
||||
widget->set_page_builders(builders);
|
||||
|
||||
DBG_GUI_G << "Window builder: placed multi_page '" << id
|
||||
<< "' with definition '" << definition << "'.";
|
||||
|
||||
const auto conf = widget->cast_config_to<multi_page_definition>();
|
||||
assert(conf);
|
||||
|
||||
widget->init_grid(*conf->grid);
|
||||
|
||||
auto generator = generator_base::build(true, true, generator_base::independent, false);
|
||||
widget->finalize(std::move(generator), data);
|
||||
|
||||
DBG_GUI_G << "Window builder: placed multi_page '" << id << "' with definition '" << definition << "'.";
|
||||
return widget;
|
||||
}
|
||||
|
||||
|
|
|
@ -177,20 +177,6 @@ public:
|
|||
private:
|
||||
/***** ***** ***** setters / getters for members ***** ****** *****/
|
||||
|
||||
void set_page_builders(const builder_grid_map& page_builders)
|
||||
{
|
||||
assert(!page_builders.empty());
|
||||
page_builders_ = page_builders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finishes the building initialization of the widget.
|
||||
*
|
||||
* @param generator Generator for the list
|
||||
* @param page_data The initial data to fill the widget with.
|
||||
*/
|
||||
void finalize(std::unique_ptr<generator_base> generator, const std::vector<widget_item>& page_data);
|
||||
|
||||
/**
|
||||
* Contains a pointer to the generator.
|
||||
*
|
||||
|
|
|
@ -64,6 +64,26 @@ stacked_widget::stacked_widget(const implementation::builder_stacked_widget& bui
|
|||
, selected_layer_(-1)
|
||||
, find_in_all_layers_(false)
|
||||
{
|
||||
const auto conf = cast_config_to<stacked_widget_definition>();
|
||||
assert(conf);
|
||||
|
||||
init_grid(*conf->grid);
|
||||
|
||||
auto generator = generator_base::build(false, false, generator_base::independent, false);
|
||||
|
||||
// Save our *non-owning* pointer before this gets moved into the grid.
|
||||
generator_ = generator.get();
|
||||
assert(generator_);
|
||||
|
||||
const widget_item empty_data;
|
||||
for(const auto& layer_builder : builder.stack) {
|
||||
generator->create_item(-1, layer_builder, empty_data, nullptr);
|
||||
}
|
||||
|
||||
// TODO: can we use the replacements system here?
|
||||
swap_grid(nullptr, &get_grid(), std::move(generator), "_content_grid");
|
||||
|
||||
select_layer(-1);
|
||||
}
|
||||
|
||||
bool stacked_widget::get_active() const
|
||||
|
@ -84,21 +104,6 @@ void stacked_widget::layout_children()
|
|||
}
|
||||
}
|
||||
|
||||
void stacked_widget::finalize(std::unique_ptr<generator_base> generator, const std::vector<builder_grid>& widget_builders)
|
||||
{
|
||||
// Save our *non-owning* pointer before this gets moved into the grid.
|
||||
generator_ = generator.get();
|
||||
assert(generator_);
|
||||
|
||||
widget_item empty_data;
|
||||
for(const auto & builder : widget_builders) {
|
||||
generator->create_item(-1, builder, empty_data, nullptr);
|
||||
}
|
||||
swap_grid(nullptr, &get_grid(), std::move(generator), "_content_grid");
|
||||
|
||||
select_layer(-1);
|
||||
}
|
||||
|
||||
void stacked_widget::set_self_active(const bool /*active*/)
|
||||
{
|
||||
/* DO NOTHING */
|
||||
|
@ -249,18 +254,7 @@ builder_stacked_widget::builder_stacked_widget(const config& real_cfg)
|
|||
std::unique_ptr<widget> builder_stacked_widget::build() const
|
||||
{
|
||||
auto widget = std::make_unique<stacked_widget>(*this);
|
||||
|
||||
DBG_GUI_G << "Window builder: placed stacked widget '" << id
|
||||
<< "' with definition '" << definition << "'.";
|
||||
|
||||
const auto conf = widget->cast_config_to<stacked_widget_definition>();
|
||||
assert(conf);
|
||||
|
||||
widget->init_grid(*conf->grid);
|
||||
|
||||
auto generator = generator_base::build(false, false, generator_base::independent, false);
|
||||
widget->finalize(std::move(generator), stack);
|
||||
|
||||
DBG_GUI_G << "Window builder: placed stacked widget '" << id << "' with definition '" << definition << "'.";
|
||||
return widget;
|
||||
}
|
||||
|
||||
|
|
|
@ -118,14 +118,6 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* Finishes the building initialization of the widget.
|
||||
*
|
||||
* @param generator Generator for the list
|
||||
* @param widget_builders The builder to build the contents of the widget.
|
||||
*/
|
||||
void finalize(std::unique_ptr<generator_base> generator, const std::vector<builder_grid>& widget_builders);
|
||||
|
||||
/**
|
||||
* Contains a pointer to the generator.
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue