builder_listbox::builder_listbox(const config& cfg) : builder_styled_widget(cfg) , vertical_scrollbar_mode(get_scrollbar_mode(cfg["vertical_scrollbar_mode"])) , horizontal_scrollbar_mode(get_scrollbar_mode(cfg["horizontal_scrollbar_mode"])) , header(nullptr) , footer(nullptr) , list_builder(nullptr) , list_data() , has_minimum_(cfg["has_minimum"].to_bool(true)) , has_maximum_(cfg["has_maximum"].to_bool(true)) { if(const config& h = cfg.child("header")) { header = std::make_shared<builder_grid>(h); } if(const config& f = cfg.child("footer")) { footer = std::make_shared<builder_grid>(f); } const config& l = cfg.child("list_definition"); VALIDATE(l, _("No list defined.")); list_builder = std::make_shared<builder_grid>(l); assert(list_builder); VALIDATE(list_builder->rows == 1, _("A 'list_definition' should contain one row.")); if(cfg.has_child("list_data")) { list_data = parse_list_data(cfg.child("list_data"), list_builder->cols); } }
tbuilder_horizontal_listbox::tbuilder_horizontal_listbox(const config& cfg) : tbuilder_control(cfg) , vertical_scrollbar_mode( get_scrollbar_mode(cfg["vertical_scrollbar_mode"])) , horizontal_scrollbar_mode( get_scrollbar_mode(cfg["horizontal_scrollbar_mode"])) , list_builder(nullptr) , list_data() , has_minimum_(cfg["has_minimum"].to_bool(true)) , has_maximum_(cfg["has_maximum"].to_bool(true)) { const config& l = cfg.child("list_definition"); VALIDATE(l, _("No list defined.")); list_builder = std::make_shared<tbuilder_grid>(l); assert(list_builder); VALIDATE(list_builder->rows == 1, _("A 'list_definition' should contain one row.")); if(cfg.has_child("list_data")) { list_data = parse_list_data(cfg.child("list_data"), list_builder->cols); } }