128 template<
typename Func>
131 connect_signal<event::NOTIFY_MODIFIED>([
this,
f](
widget&
w,
auto&&...) {
136 template<
typename Value,
typename Func>
139 return [&list, func](std::size_t
index) {
return func(list[
index]); };
142 template<
typename Sorter>
145 find_widget<gui2::listbox>(
"main_list").set_single_sorter(
id, sorter);
165 template<
typename Value>
168 return [
this, &list](std::string_view
id,
const auto&
generator,
const auto& sorter) {
172 if constexpr(std::is_invocable_v<decltype(sorter),
const Value&>) {
182 template<
typename Generator>
190 template<
typename Generator>
201 static std::unique_ptr<units_dialog>
build_create_dialog(
const std::vector<const unit_type*>& types_list);
241 void rename_unit(std::vector<unit_const_ptr>& unit_list);
Abstract base class for all modal dialogs.
bool show(const unsigned auto_close_time=0)
Shows the window.
static auto make_index_wrapper(const std::vector< Value > &list, const Func &func)
units_dialog & set_tooltip_generator(const Generator &generator)
Sets the generator function for the tooltips.
void show_list(listbox &list)
std::pair< std::string, sort_order::type > sort_order_
std::function< std::vector< std::string >std::size_t)> filter_gen_
std::map< const unit_type *, t_string > recruit_msgs_map
units_dialog & set_ok_label(const std::string &ok_label)
std::vector< std::vector< std::string > > filter_options_
auto make_column_builder(const std::vector< Value > &list)
Creates a generator function which registers secondary generator and sorter functions for the list co...
units_dialog & set_show_dismiss(bool show=true)
std::function< std::string(std::size_t)> tooltip_gen_
virtual void post_show() override
Actions to be taken after the window has been shown.
void set_sorter(std::string_view id, const Sorter &sorter)
void rename_unit(std::vector< unit_const_ptr > &unit_list)
std::string variation() const
Variation choice from the user.
units_dialog & set_help_topic(const std::string &topic_id)
units_dialog & set_show_variations(bool show=true)
units_dialog & set_cancel_label(const std::string &cancel_label)
sort_type
Controls the sort behavior for functions returned by make_column_builder.
units_dialog & set_sort_by(std::pair< std::string, sort_order::type > sort_order)
group< unit_race::GENDER > & get_toggle()
group< unit_race::GENDER > gender_toggle_
unit_race::GENDER gender_
void filter_text_changed(const std::string &text)
static std::unique_ptr< units_dialog > build_unit_list_dialog(std::vector< unit_const_ptr > &units_list)
units_dialog & set_show_rename(bool show=true)
units_dialog & set_row_num(const std::size_t row_num)
static std::unique_ptr< units_dialog > build_create_dialog(const std::vector< const unit_type * > &types_list)
void dismiss_unit(std::vector< unit_const_ptr > &unit_list, const team &team)
int get_selected_index() const
void on_modified(const Func &f)
Registers an function which will fired on NOTIFY_MODIFIED dialog events.
std::map< std::string_view, std::function< std::string(std::size_t)> > column_generators_
virtual const std::string & window_id() const override
The ID of the window to build.
units_dialog & set_filter_generator(const Generator &generator)
Sets the generator function for filter text.
virtual void pre_show() override
Actions to be taken before showing the window.
void list_item_clicked()
Callbacks.
unit_race::GENDER gender() const
Gender choice from the user.
std::string cancel_label_
static std::unique_ptr< units_dialog > build_recruit_dialog(const std::vector< const unit_type * > &recruit_list, recruit_msgs_map &err_msgs_map, const team &team)
units_dialog & set_title(const std::string &title)
static std::unique_ptr< units_dialog > build_recall_dialog(std::vector< unit_const_ptr > &recall_list, const team &team)
void update_gender(const unit_race::GENDER val)
Basic template class to generate new items.
This class stores all the data for a single 'side' (in game nomenclature).
std::size_t index(std::string_view str, const std::size_t index)
Codepoint index corresponding to the nth character in a UTF-8 string.
string_enums::enum_base< sort_order_defines > sort_order
The base template for associating string values with enum values.