GUI2: passed builder_grid references directly to generator create functions

This commit is contained in:
Charles Dang 2020-12-03 19:14:32 +11:00
parent cb4979ac0c
commit 4ada05a2cf
5 changed files with 19 additions and 22 deletions

View file

@ -22,9 +22,7 @@
namespace gui2
{
struct builder_grid;
typedef std::shared_ptr<const builder_grid> builder_grid_const_ptr;
class grid;
@ -176,7 +174,7 @@ public:
* @returns A reference to the newly created grid.
*/
virtual grid& create_item(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const string_map& item_data,
const std::function<void(widget&)>& callback)
= 0;
@ -200,7 +198,7 @@ public:
*/
virtual grid&
create_item(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::map<std::string /* widget id */, string_map>& data,
const std::function<void(widget&)>& callback) = 0;
@ -220,7 +218,7 @@ public:
* in the grid is (de)selected.
*/
virtual void create_items(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::vector<string_map>& data,
const std::function<void(widget&)>& callback)
= 0;
@ -242,7 +240,7 @@ public:
*/
virtual void create_items(
const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::vector<std::map<std::string /*widget id*/, string_map>>&
data,
const std::function<void(widget&)>& callback) = 0;

View file

@ -714,7 +714,7 @@ public:
/** Inherited from generator_base. */
grid& create_item(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const string_map& item_data,
const std::function<void(widget&)>& callback) override
{
@ -726,15 +726,14 @@ public:
/** Inherited from generator_base. */
grid& create_item(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::map<std::string /* widget id */, string_map>& item_data,
const std::function<void(widget&)>& callback) override
{
assert(list_builder);
assert(index == -1 || static_cast<unsigned>(index) <= items_.size());
child* item = new child;
list_builder->build(&item->child_grid);
list_builder.build(&item->child_grid);
init(&item->child_grid, item_data, callback);
@ -757,7 +756,7 @@ public:
/** Inherited from generator_base. */
virtual void create_items(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::vector<std::map<std::string /*widget id*/, string_map>>& data,
const std::function<void(widget&)>& callback) override
{
@ -766,7 +765,7 @@ public:
/** Inherited from generator_base. */
virtual void create_items(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::vector<string_map>& data,
const std::function<void(widget&)>& callback) override
{
@ -1072,7 +1071,7 @@ private:
*/
template<class T>
void impl_create_items(const int index,
builder_grid_const_ptr list_builder,
const builder_grid& list_builder,
const std::vector<T>& data,
const std::function<void(widget&)>& callback)
{

View file

@ -67,7 +67,7 @@ listbox::listbox(const implementation::builder_styled_widget& builder,
grid& listbox::add_row(const string_map& item, const int index)
{
assert(generator_);
grid& row = generator_->create_item(index, list_builder_, item, std::bind(&listbox::list_item_clicked, this, _1));
grid& row = generator_->create_item(index, *list_builder_, item, std::bind(&listbox::list_item_clicked, this, _1));
resize_content(row);
@ -77,7 +77,7 @@ grid& listbox::add_row(const string_map& item, const int index)
grid& listbox::add_row(const std::map<std::string /* widget id */, string_map>& data, const int index)
{
assert(generator_);
grid& row = generator_->create_item(index, list_builder_, data, std::bind(&listbox::list_item_clicked, this, _1));
grid& row = generator_->create_item(index, *list_builder_, data, std::bind(&listbox::list_item_clicked, this, _1));
resize_content(row);
@ -582,7 +582,7 @@ void listbox::finalize(builder_grid_const_ptr header,
swap_grid(&get_grid(), content_grid(), footer->build(), "_footer_grid");
}
generator_->create_items(-1, list_builder_, list_data, std::bind(&listbox::list_item_clicked, this, _1));
generator_->create_items(-1, *list_builder_, list_data, std::bind(&listbox::list_item_clicked, this, _1));
swap_grid(nullptr, content_grid(), generator_, "_list_grid");
}

View file

@ -43,7 +43,7 @@ multi_page::multi_page(const implementation::builder_multi_page& builder)
grid& multi_page::add_page(const string_map& item)
{
assert(generator_);
grid& page = generator_->create_item(-1, page_builders_.begin()->second, item, nullptr);
grid& page = generator_->create_item(-1, *page_builders_.begin()->second, item, nullptr);
return page;
}
@ -53,14 +53,14 @@ grid& multi_page::add_page(const std::string& type, int insert_pos, const string
assert(generator_);
auto it_builder = page_builders_.find(type);
VALIDATE(it_builder != page_builders_.end(), "invalid page type '" + type + "'");
return generator_->create_item(insert_pos, it_builder->second, item, nullptr);
return generator_->create_item(insert_pos, *it_builder->second, item, nullptr);
}
grid& multi_page::add_page(
const std::map<std::string /* widget id */, string_map>& data)
{
assert(generator_);
grid& page = generator_->create_item(-1, page_builders_.begin()->second, data, nullptr);
grid& page = generator_->create_item(-1, *page_builders_.begin()->second, data, nullptr);
return page;
}
@ -71,7 +71,7 @@ grid& multi_page::add_page(
assert(generator_);
auto it_builder = page_builders_.find(type);
VALIDATE(it_builder != page_builders_.end(), "invalid page type '" + type + "'");
return generator_->create_item(insert_pos, it_builder->second, data, nullptr);
return generator_->create_item(insert_pos, *it_builder->second, data, nullptr);
}
void multi_page::remove_page(const unsigned page, unsigned count)
@ -143,7 +143,7 @@ unsigned multi_page::get_state() const
void multi_page::finalize(const std::vector<string_map>& page_data)
{
assert(generator_);
generator_->create_items(-1, page_builders_.begin()->second, page_data, nullptr);
generator_->create_items(-1, *page_builders_.begin()->second, page_data, nullptr);
swap_grid(nullptr, &get_grid(), generator_, "_content_grid");
}

View file

@ -89,7 +89,7 @@ stacked_widget::finalize(std::vector<builder_grid_const_ptr> widget_builder)
string_map empty_data;
for(const auto & builder : widget_builder)
{
generator_->create_item(-1, builder, empty_data, nullptr);
generator_->create_item(-1, *builder, empty_data, nullptr);
}
swap_grid(nullptr, &get_grid(), generator_, "_content_grid");