GUI2: a modal_dialog is now a window
As it always should have been. There may be some bugs with semi-persistent windows, i haven't thoroughly checked whether they should explicitly hide.
This commit is contained in:
parent
465e5c1a4d
commit
af81bba53b
97 changed files with 307 additions and 293 deletions
|
@ -29,7 +29,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(addon_auth)
|
||||
|
||||
addon_auth::addon_auth(config& cfg)
|
||||
: cfg_(cfg)
|
||||
: modal_dialog(window_id())
|
||||
, cfg_(cfg)
|
||||
{
|
||||
register_bool("remember_password", false,
|
||||
&preferences::remember_password,
|
||||
|
|
|
@ -31,9 +31,9 @@ namespace gui2::dialogs
|
|||
|
||||
REGISTER_DIALOG(addon_connect)
|
||||
|
||||
addon_connect::addon_connect(std::string& host_name,
|
||||
const bool allow_remove)
|
||||
: allow_remove_(allow_remove)
|
||||
addon_connect::addon_connect(std::string& host_name, bool allow_remove)
|
||||
: modal_dialog(window_id())
|
||||
, allow_remove_(allow_remove)
|
||||
{
|
||||
register_text("host_name", false, host_name, true);
|
||||
}
|
||||
|
|
|
@ -43,8 +43,7 @@ public:
|
|||
* undefined otherwise.
|
||||
* @param allow_remove Sets @ref allow_remove_.
|
||||
*/
|
||||
addon_connect(std::string& host_name,
|
||||
const bool allow_remove);
|
||||
addon_connect(std::string& host_name, bool allow_remove);
|
||||
|
||||
private:
|
||||
/** Enable the addon remove button? */
|
||||
|
|
|
@ -26,7 +26,7 @@ class install_dependencies : public modal_dialog
|
|||
{
|
||||
public:
|
||||
explicit install_dependencies(const addons_list& addons)
|
||||
: addons_(addons)
|
||||
: modal_dialog(window_id()), addons_(addons)
|
||||
{}
|
||||
|
||||
DEFINE_SIMPLE_EXECUTE_WRAPPER(install_dependencies)
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(addon_license_prompt)
|
||||
|
||||
addon_license_prompt::addon_license_prompt(const std::string& license_terms)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_label("terms", true, license_terms, true);
|
||||
}
|
||||
|
|
|
@ -242,7 +242,8 @@ const std::vector<addon_tag> tag_filter_types_{
|
|||
};
|
||||
|
||||
addon_manager::addon_manager(addons_client& client)
|
||||
: orders_()
|
||||
: modal_dialog(window_id())
|
||||
, orders_()
|
||||
, cfg_()
|
||||
, client_(client)
|
||||
, addons_()
|
||||
|
|
|
@ -44,7 +44,8 @@ public:
|
|||
*/
|
||||
explicit addon_uninstall_list(
|
||||
const std::map<std::string, std::string>& addon_titles_map)
|
||||
: titles_map_(addon_titles_map), ids_(), selections_()
|
||||
: modal_dialog(window_id())
|
||||
, titles_map_(addon_titles_map), ids_(), selections_()
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,8 @@ const unsigned int attack_predictions::graph_height = 170;
|
|||
const unsigned int attack_predictions::graph_max_rows = 10;
|
||||
|
||||
attack_predictions::attack_predictions(battle_context& bc, unit_const_ptr attacker, unit_const_ptr defender)
|
||||
: attacker_data_(attacker, bc.get_attacker_combatant(), bc.get_attacker_stats())
|
||||
: modal_dialog(window_id())
|
||||
, attacker_data_(attacker, bc.get_attacker_combatant(), bc.get_attacker_stats())
|
||||
, defender_data_(defender, bc.get_defender_combatant(), bc.get_defender_stats())
|
||||
{
|
||||
}
|
||||
|
|
|
@ -56,7 +56,8 @@ config generate_difficulty_config(const config& source)
|
|||
}
|
||||
|
||||
campaign_difficulty::campaign_difficulty(const config& campaign)
|
||||
: difficulties_(generate_difficulty_config(campaign))
|
||||
: modal_dialog(window_id())
|
||||
, difficulties_(generate_difficulty_config(campaign))
|
||||
, campaign_id_(campaign["id"])
|
||||
, selected_difficulty_("CANCEL")
|
||||
{
|
||||
|
|
|
@ -46,7 +46,7 @@ REGISTER_DIALOG(campaign_selection)
|
|||
|
||||
void campaign_selection::campaign_selected()
|
||||
{
|
||||
tree_view& tree = find_widget<tree_view>(get_window(), "campaign_tree", false);
|
||||
tree_view& tree = find_widget<tree_view>(this, "campaign_tree", false);
|
||||
if(tree.empty()) {
|
||||
return;
|
||||
}
|
||||
|
@ -61,18 +61,18 @@ void campaign_selection::campaign_selected()
|
|||
return;
|
||||
}
|
||||
|
||||
multi_page& pages = find_widget<multi_page>(get_window(), "campaign_details", false);
|
||||
multi_page& pages = find_widget<multi_page>(this, "campaign_details", false);
|
||||
pages.select_page(choice);
|
||||
|
||||
engine_.set_current_level(choice);
|
||||
|
||||
styled_widget& background = find_widget<styled_widget>(get_window(), "campaign_background", false);
|
||||
styled_widget& background = find_widget<styled_widget>(this, "campaign_background", false);
|
||||
background.set_label(engine_.current_level().data()["background"].str());
|
||||
|
||||
// Rebuild difficulty menu
|
||||
difficulties_.clear();
|
||||
|
||||
auto& diff_menu = find_widget<menu_button>(get_window(), "difficulty_menu", false);
|
||||
auto& diff_menu = find_widget<menu_button>(this, "difficulty_menu", false);
|
||||
|
||||
const auto& diff_config = generate_difficulty_config(engine_.current_level().data());
|
||||
diff_menu.set_active(diff_config.child_count("difficulty") > 1);
|
||||
|
@ -141,7 +141,7 @@ void campaign_selection::campaign_selected()
|
|||
|
||||
void campaign_selection::difficulty_selected()
|
||||
{
|
||||
const std::size_t selection = find_widget<menu_button>(get_window(), "difficulty_menu", false).get_value();
|
||||
const std::size_t selection = find_widget<menu_button>(this, "difficulty_menu", false).get_value();
|
||||
current_difficulty_ = difficulties_.at(std::min(difficulties_.size() - 1, selection));
|
||||
}
|
||||
|
||||
|
@ -189,7 +189,7 @@ void campaign_selection::sort_campaigns(campaign_selection::CAMPAIGN_ORDER order
|
|||
break;
|
||||
}
|
||||
|
||||
tree_view& tree = find_widget<tree_view>(get_window(), "campaign_tree", false);
|
||||
tree_view& tree = find_widget<tree_view>(this, "campaign_tree", false);
|
||||
|
||||
// Remember which campaign was selected...
|
||||
std::string was_selected;
|
||||
|
@ -233,7 +233,7 @@ void campaign_selection::sort_campaigns(campaign_selection::CAMPAIGN_ORDER order
|
|||
}
|
||||
|
||||
if(!was_selected.empty() && exists_in_filtered_result) {
|
||||
find_widget<tree_view_node>(get_window(), was_selected, false).select_node();
|
||||
find_widget<tree_view_node>(this, was_selected, false).select_node();
|
||||
} else {
|
||||
campaign_selected();
|
||||
}
|
||||
|
@ -263,9 +263,9 @@ void campaign_selection::toggle_sorting_selection(CAMPAIGN_ORDER order)
|
|||
force = true;
|
||||
|
||||
if(order == NAME) {
|
||||
find_widget<toggle_button>(get_window(), "sort_time", false).set_value(0);
|
||||
find_widget<toggle_button>(this, "sort_time", false).set_value(0);
|
||||
} else if(order == DATE) {
|
||||
find_widget<toggle_button>(get_window(), "sort_name", false).set_value(0);
|
||||
find_widget<toggle_button>(this, "sort_name", false).set_value(0);
|
||||
}
|
||||
|
||||
force = false;
|
||||
|
@ -368,7 +368,7 @@ void campaign_selection::pre_show(window& window)
|
|||
//
|
||||
// Set up Difficulty dropdown
|
||||
//
|
||||
menu_button& diff_menu = find_widget<menu_button>(get_window(), "difficulty_menu", false);
|
||||
menu_button& diff_menu = find_widget<menu_button>(this, "difficulty_menu", false);
|
||||
|
||||
diff_menu.set_use_markup(true);
|
||||
connect_signal_notify_modified(diff_menu, std::bind(&campaign_selection::difficulty_selected, this));
|
||||
|
@ -376,9 +376,9 @@ void campaign_selection::pre_show(window& window)
|
|||
campaign_selected();
|
||||
}
|
||||
|
||||
void campaign_selection::add_campaign_to_tree(const config& campaign) const
|
||||
void campaign_selection::add_campaign_to_tree(const config& campaign)
|
||||
{
|
||||
tree_view& tree = find_widget<tree_view>(get_window(), "campaign_tree", false);
|
||||
tree_view& tree = find_widget<tree_view>(this, "campaign_tree", false);
|
||||
widget_data data;
|
||||
widget_item item;
|
||||
|
||||
|
@ -448,7 +448,7 @@ void campaign_selection::post_show(window& window)
|
|||
void campaign_selection::mod_toggled()
|
||||
{
|
||||
boost::dynamic_bitset<> new_mod_states =
|
||||
find_widget<multimenu_button>(get_window(), "mods_menu", false).get_toggle_states();
|
||||
find_widget<multimenu_button>(this, "mods_menu", false).get_toggle_states();
|
||||
|
||||
// Get a mask of any mods that were toggled, regardless of new state
|
||||
mod_states_ = mod_states_ ^ new_mod_states;
|
||||
|
|
|
@ -57,7 +57,8 @@ public:
|
|||
};
|
||||
|
||||
explicit campaign_selection(ng::create_engine& eng)
|
||||
: engine_(eng)
|
||||
: modal_dialog(window_id())
|
||||
, engine_(eng)
|
||||
, choice_(-1)
|
||||
, rng_mode_(RNG_DEFAULT)
|
||||
, mod_states_()
|
||||
|
@ -101,7 +102,7 @@ private:
|
|||
|
||||
void sort_campaigns(CAMPAIGN_ORDER order, bool ascending);
|
||||
|
||||
void add_campaign_to_tree(const config& campaign) const;
|
||||
void add_campaign_to_tree(const config& campaign);
|
||||
|
||||
void toggle_sorting_selection(CAMPAIGN_ORDER order);
|
||||
|
||||
|
|
|
@ -409,7 +409,9 @@ private:
|
|||
};
|
||||
|
||||
|
||||
chat_log::chat_log(const vconfig& cfg, const replay& r) : view_()
|
||||
chat_log::chat_log(const vconfig& cfg, const replay& r)
|
||||
: modal_dialog(window_id())
|
||||
, view_()
|
||||
{
|
||||
LOG_CHAT_LOG << "Entering chat_log::chat_log";
|
||||
view_ = std::make_shared<view>(cfg, r);
|
||||
|
|
|
@ -32,14 +32,14 @@ namespace gui2::dialogs
|
|||
|
||||
REGISTER_DIALOG(core_selection)
|
||||
|
||||
void core_selection::core_selected() const
|
||||
void core_selection::core_selected()
|
||||
{
|
||||
const int selected_row
|
||||
= find_widget<listbox>(get_window(), "core_list", false)
|
||||
= find_widget<listbox>(this, "core_list", false)
|
||||
.get_selected_row();
|
||||
|
||||
multi_page& pages
|
||||
= find_widget<multi_page>(get_window(), "core_details", false);
|
||||
= find_widget<multi_page>(this, "core_details", false);
|
||||
|
||||
pages.select_page(selected_row);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,8 @@ class core_selection : public modal_dialog
|
|||
{
|
||||
public:
|
||||
explicit core_selection(const std::vector<config>& cores, int choice)
|
||||
: cores_(cores), choice_(choice)
|
||||
: modal_dialog(window_id())
|
||||
, cores_(cores), choice_(choice)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -52,7 +53,7 @@ public:
|
|||
|
||||
private:
|
||||
/** Called when another core is selected. */
|
||||
void core_selected() const;
|
||||
void core_selected();
|
||||
|
||||
virtual const std::string& window_id() const override;
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ depcheck_confirm_change::depcheck_confirm_change(
|
|||
bool action,
|
||||
const std::vector<std::string>& mods,
|
||||
const std::string& requester)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
utils::string_map symbols;
|
||||
symbols["requester"] = requester;
|
||||
|
|
|
@ -31,9 +31,10 @@ REGISTER_DIALOG(depcheck_select_new)
|
|||
depcheck_select_new::depcheck_select_new(
|
||||
ng::depcheck::component_type name,
|
||||
const std::vector<std::string>& items)
|
||||
: items_(items), result_(-1)
|
||||
: modal_dialog(window_id())
|
||||
, items_(items)
|
||||
, result_(-1)
|
||||
{
|
||||
|
||||
std::string message;
|
||||
|
||||
switch(name) {
|
||||
|
|
|
@ -83,7 +83,8 @@ namespace
|
|||
}
|
||||
|
||||
drop_down_menu::drop_down_menu(styled_widget* parent, const std::vector<config>& items, int selected_item, bool keep_open)
|
||||
: parent_(parent)
|
||||
: modal_dialog(window_id())
|
||||
, parent_(parent)
|
||||
, items_(items.begin(), items.end())
|
||||
, button_pos_(parent->get_rectangle())
|
||||
, selected_item_(selected_item)
|
||||
|
@ -94,7 +95,8 @@ drop_down_menu::drop_down_menu(styled_widget* parent, const std::vector<config>&
|
|||
}
|
||||
|
||||
drop_down_menu::drop_down_menu(SDL_Rect button_pos, const std::vector<config>& items, int selected_item, bool use_markup, bool keep_open)
|
||||
: parent_(nullptr)
|
||||
: modal_dialog(window_id())
|
||||
, parent_(nullptr)
|
||||
, items_(items.begin(), items.end())
|
||||
, button_pos_(button_pos)
|
||||
, selected_item_(selected_item)
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(edit_label)
|
||||
|
||||
edit_label::edit_label(std::string& label, bool& team_only)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_text("label", true, label, true);
|
||||
register_bool("team_only_toggle", true, team_only);
|
||||
|
|
|
@ -33,7 +33,8 @@ edit_text::edit_text(const std::string& title,
|
|||
const std::string& label,
|
||||
std::string& text,
|
||||
bool disallow_empty)
|
||||
: disallow_empty_(disallow_empty)
|
||||
: modal_dialog(window_id())
|
||||
, disallow_empty_(disallow_empty)
|
||||
{
|
||||
register_label("title", true, title, true);
|
||||
register_label("label", true, label, true);
|
||||
|
|
|
@ -57,7 +57,8 @@ static custom_tod::string_pair tod_getter_sound(const time_of_day& tod)
|
|||
REGISTER_DIALOG(custom_tod)
|
||||
|
||||
custom_tod::custom_tod(const std::vector<time_of_day>& times, int current_time)
|
||||
: times_(times)
|
||||
: modal_dialog(window_id())
|
||||
, times_(times)
|
||||
, current_tod_(current_time)
|
||||
, color_field_r_(register_integer("tod_red", true))
|
||||
, color_field_g_(register_integer("tod_green", true))
|
||||
|
|
|
@ -35,7 +35,8 @@ editor_edit_label::editor_edit_label(std::string& text,
|
|||
bool& visible_shroud,
|
||||
color_t& color,
|
||||
std::string& category)
|
||||
: color_store(color)
|
||||
: modal_dialog(window_id())
|
||||
, color_store(color)
|
||||
{
|
||||
register_text("label", true, text, true);
|
||||
register_text("category", true, category, false);
|
||||
|
|
|
@ -35,6 +35,7 @@ editor_edit_scenario::editor_edit_scenario(
|
|||
int& experience_modifier,
|
||||
bool& victory_when_enemies_defeated,
|
||||
bool& random_start_time)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_text("id", true, id, true);
|
||||
register_text("name", true, name, false);
|
||||
|
|
|
@ -29,7 +29,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(editor_edit_side)
|
||||
|
||||
editor_edit_side::editor_edit_side(editor::editor_team_info& info)
|
||||
: controller_(info.controller)
|
||||
: modal_dialog(window_id())
|
||||
, controller_(info.controller)
|
||||
, share_vision_(info.share_vision)
|
||||
{
|
||||
register_label("side_number", true, std::to_string(info.side), true);
|
||||
|
|
|
@ -38,7 +38,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(editor_generate_map)
|
||||
|
||||
editor_generate_map::editor_generate_map(std::vector<std::unique_ptr<map_generator>>& mg)
|
||||
: map_generators_(mg)
|
||||
: modal_dialog(window_id())
|
||||
, map_generators_(mg)
|
||||
, last_map_generator_(nullptr)
|
||||
, current_map_generator_(0)
|
||||
, random_seed_()
|
||||
|
|
|
@ -35,7 +35,8 @@ static int min_size = 20;
|
|||
REGISTER_DIALOG(generator_settings)
|
||||
|
||||
generator_settings::generator_settings(generator_data& data)
|
||||
: players_(register_integer("players", true, data.nplayers))
|
||||
: modal_dialog(window_id())
|
||||
, players_(register_integer("players", true, data.nplayers))
|
||||
, width_(register_integer("width", true, data.width))
|
||||
, height_(register_integer("height", true, data.height))
|
||||
, update_width_label_()
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(editor_new_map)
|
||||
|
||||
editor_new_map::editor_new_map(const t_string& title, int& width, int& height)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_label("title", true, title);
|
||||
|
||||
|
|
|
@ -33,7 +33,8 @@ editor_resize_map::editor_resize_map(int& width,
|
|||
int& height,
|
||||
EXPAND_DIRECTION& expand_direction,
|
||||
bool& copy_edge_terrain)
|
||||
: width_(register_integer("width", true, width))
|
||||
: modal_dialog(window_id())
|
||||
, width_(register_integer("width", true, width))
|
||||
, height_(register_integer("height", true, height))
|
||||
, old_width_(width)
|
||||
, old_height_(height)
|
||||
|
|
|
@ -38,7 +38,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(end_credits)
|
||||
|
||||
end_credits::end_credits(const std::string& campaign)
|
||||
: focus_on_(campaign)
|
||||
: modal_dialog(window_id())
|
||||
, focus_on_(campaign)
|
||||
, backgrounds_()
|
||||
, text_widget_(nullptr)
|
||||
, scroll_speed_(100)
|
||||
|
|
|
@ -103,7 +103,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(file_dialog)
|
||||
|
||||
file_dialog::file_dialog()
|
||||
: title_(_("Find File"))
|
||||
: modal_dialog(window_id())
|
||||
, title_(_("Find File"))
|
||||
, msg_()
|
||||
, ok_label_()
|
||||
, extension_()
|
||||
|
|
|
@ -29,7 +29,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(folder_create)
|
||||
|
||||
folder_create::folder_create(std::string& folder_name)
|
||||
: bookmark_mode_(false)
|
||||
: modal_dialog(window_id())
|
||||
, bookmark_mode_(false)
|
||||
{
|
||||
register_text("name", true, folder_name, true);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,8 @@ namespace gui2::dialogs
|
|||
class formula_debugger : public modal_dialog
|
||||
{
|
||||
public:
|
||||
explicit formula_debugger(wfl::formula_debugger& fdb) : fdb_(fdb)
|
||||
explicit formula_debugger(wfl::formula_debugger& fdb)
|
||||
: modal_dialog(window_id()) , fdb_(fdb)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(game_cache_options)
|
||||
|
||||
game_cache_options::game_cache_options()
|
||||
: cache_path_(filesystem::get_cache_dir())
|
||||
: modal_dialog(window_id())
|
||||
, cache_path_(filesystem::get_cache_dir())
|
||||
, clean_button_(nullptr)
|
||||
, purge_button_(nullptr)
|
||||
, size_label_(nullptr)
|
||||
|
|
|
@ -44,6 +44,7 @@ static void set_dont_ask_again(const bool ask_again)
|
|||
}
|
||||
|
||||
game_delete::game_delete()
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_bool(
|
||||
"dont_ask_again", true, &get_dont_ask_again, &set_dont_ask_again);
|
||||
|
|
|
@ -81,7 +81,8 @@ bool game_load::execute(const game_config_view& cache_config, savegame::load_gam
|
|||
}
|
||||
|
||||
game_load::game_load(const game_config_view& cache_config, savegame::load_game_metadata& data)
|
||||
: filename_(data.filename)
|
||||
: modal_dialog(window_id())
|
||||
, filename_(data.filename)
|
||||
, save_index_manager_(data.manager)
|
||||
, change_difficulty_(register_bool("change_difficulty", true, data.select_difficulty))
|
||||
, show_replay_(register_bool("show_replay", true, data.show_replay))
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(game_save)
|
||||
|
||||
game_save::game_save(std::string& filename, const std::string& title)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_text("txtFilename", false, filename, true);
|
||||
register_label("lblTitle", true, title);
|
||||
|
@ -39,6 +40,7 @@ REGISTER_DIALOG(game_save_message)
|
|||
game_save_message::game_save_message(std::string& filename,
|
||||
const std::string& title,
|
||||
const std::string& message)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_label("lblTitle", true, title);
|
||||
register_text("txtFilename", false, filename, true);
|
||||
|
@ -51,6 +53,7 @@ game_save_oos::game_save_oos(bool& ignore_all,
|
|||
std::string& filename,
|
||||
const std::string& title,
|
||||
const std::string& message)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_label("lblTitle", true, title);
|
||||
register_text("txtFilename", false, filename, true);
|
||||
|
|
|
@ -48,7 +48,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(game_stats)
|
||||
|
||||
game_stats::game_stats(const display_context& board, const int viewing_team, int& selected_side_number)
|
||||
: board_(board)
|
||||
: modal_dialog(window_id())
|
||||
, board_(board)
|
||||
, viewing_team_(board_.teams()[viewing_team])
|
||||
, selected_side_number_(selected_side_number)
|
||||
{
|
||||
|
|
|
@ -53,7 +53,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(game_version)
|
||||
|
||||
game_version::game_version()
|
||||
: path_wid_stem_("path_")
|
||||
: modal_dialog(window_id())
|
||||
, path_wid_stem_("path_")
|
||||
, copy_wid_stem_("copy_")
|
||||
, browse_wid_stem_("browse_")
|
||||
, path_map_()
|
||||
|
|
|
@ -907,7 +907,8 @@ void team_mode_controller::show_array(tree_view_node& node, int side)
|
|||
REGISTER_DIALOG(gamestate_inspector)
|
||||
|
||||
gamestate_inspector::gamestate_inspector(const config& vars, const game_events::manager& events, const display_context& dc, const std::string& title)
|
||||
: title_(title)
|
||||
: modal_dialog(window_id())
|
||||
, title_(title)
|
||||
, vars_(vars)
|
||||
, events_(events)
|
||||
, dc_(dc)
|
||||
|
|
|
@ -44,7 +44,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(help_browser)
|
||||
|
||||
help_browser::help_browser()
|
||||
: initial_topic_("introduction")
|
||||
: modal_dialog(window_id())
|
||||
, initial_topic_("introduction")
|
||||
, help_cfg_(game_config_manager::get()->game_config().child("help"))
|
||||
{
|
||||
}
|
||||
|
|
|
@ -27,7 +27,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(hotkey_bind)
|
||||
|
||||
hotkey_bind::hotkey_bind(const std::string& hotkey_id)
|
||||
: hotkey_id_(hotkey_id)
|
||||
: modal_dialog(window_id())
|
||||
, hotkey_id_(hotkey_id)
|
||||
, new_binding_()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -38,7 +38,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(label_settings)
|
||||
|
||||
label_settings::label_settings(display_context& dc)
|
||||
: viewer_(dc)
|
||||
: modal_dialog(window_id())
|
||||
, viewer_(dc)
|
||||
{
|
||||
const std::vector<std::string>& all_categories = display::get_singleton()->labels().all_categories();
|
||||
const std::vector<std::string>& hidden_categories = viewer_.hidden_label_categories();
|
||||
|
|
|
@ -34,6 +34,7 @@ class language_selection : public modal_dialog
|
|||
{
|
||||
public:
|
||||
language_selection()
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,8 @@ REGISTER_DIALOG(loading_screen)
|
|||
loading_screen* loading_screen::singleton_ = nullptr;
|
||||
|
||||
loading_screen::loading_screen(std::function<void()> f)
|
||||
: load_funcs_{f}
|
||||
: modal_dialog(window_id())
|
||||
, load_funcs_{f}
|
||||
, worker_result_()
|
||||
, cursor_setter_()
|
||||
, progress_stage_label_(nullptr)
|
||||
|
@ -173,13 +174,15 @@ void loading_screen::process(events::pump_info&)
|
|||
|
||||
// If there's nothing more to do, close.
|
||||
if (load_funcs_.empty()) {
|
||||
draw_manager::invalidate_region(get_window()->get_rectangle());
|
||||
get_window()->close();
|
||||
queue_redraw();
|
||||
window::close();
|
||||
}
|
||||
}
|
||||
|
||||
void loading_screen::layout()
|
||||
{
|
||||
modal_dialog::layout();
|
||||
|
||||
DBG_DP << "loading_screen::layout";
|
||||
|
||||
loading_stage stage = current_stage_.load(std::memory_order_acquire);
|
||||
|
@ -207,17 +210,6 @@ void loading_screen::layout()
|
|||
animation_->queue_redraw();
|
||||
}
|
||||
|
||||
bool loading_screen::expose(const rect& region)
|
||||
{
|
||||
DBG_DP << "loading_screen::expose " << region;
|
||||
return get_window()->expose(region);
|
||||
}
|
||||
|
||||
rect loading_screen::screen_location()
|
||||
{
|
||||
return get_window()->screen_location();
|
||||
}
|
||||
|
||||
loading_screen::~loading_screen()
|
||||
{
|
||||
LOG_LS << "Loading screen destroyed.";
|
||||
|
|
|
@ -73,7 +73,7 @@ class window;
|
|||
|
||||
namespace dialogs
|
||||
{
|
||||
class loading_screen : public modal_dialog, public events::pump_monitor, public gui2::top_level_drawable
|
||||
class loading_screen : public modal_dialog, public events::pump_monitor
|
||||
{
|
||||
public:
|
||||
loading_screen(std::function<void()> f);
|
||||
|
@ -130,16 +130,6 @@ private:
|
|||
/** Called by draw_manager to assign concrete layout. */
|
||||
virtual void layout() override;
|
||||
|
||||
/**
|
||||
* Called by draw_manager when it believes a redraw is necessary.
|
||||
*
|
||||
* Currently this is every frame, as pre_show() registers as an animator.
|
||||
*/
|
||||
virtual bool expose(const rect& region) override;
|
||||
|
||||
/** The current draw location of the window, on the screen. */
|
||||
virtual rect screen_location() override;
|
||||
|
||||
static loading_screen* singleton_;
|
||||
|
||||
std::vector<std::function<void()>> load_funcs_;
|
||||
|
|
|
@ -33,7 +33,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(log_settings)
|
||||
|
||||
log_settings::log_settings()
|
||||
: last_words_()
|
||||
: modal_dialog(window_id())
|
||||
, last_words_()
|
||||
{
|
||||
//list of names must match those in logging.cfg
|
||||
widget_id_.push_back("none");
|
||||
|
|
|
@ -709,7 +709,8 @@ void lua_interpreter::pre_show(window& window)
|
|||
}
|
||||
|
||||
lua_interpreter::lua_interpreter(lua_kernel_base & lk)
|
||||
: controller_(new lua_interpreter::controller(lk))
|
||||
: modal_dialog(window_id())
|
||||
, controller_(new lua_interpreter::controller(lk))
|
||||
{
|
||||
LOG_LUA << "entering lua_interpreter ctor...";
|
||||
LOG_LUA << "finished lua_interpreter ctor...";
|
||||
|
|
|
@ -42,7 +42,8 @@ public:
|
|||
const bool auto_close,
|
||||
const bool message_use_markup,
|
||||
const bool title_use_markup)
|
||||
: title_(title)
|
||||
: modal_dialog(window_id())
|
||||
, title_(title)
|
||||
, image_()
|
||||
, message_(message)
|
||||
, auto_close_(auto_close)
|
||||
|
|
|
@ -48,6 +48,7 @@ void migrate_version_selection::execute()
|
|||
}
|
||||
|
||||
migrate_version_selection::migrate_version_selection()
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
version_info current_version = game_config::wesnoth_version;
|
||||
std::string current_version_str = filesystem::get_version_path_suffix();
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "cursor.hpp"
|
||||
#include "events.hpp"
|
||||
#include "gui/auxiliary/field.hpp"
|
||||
#include "gui/core/gui_definition.hpp" // get_window_builder
|
||||
#include "gui/widgets/integer_selector.hpp"
|
||||
#include "scripting/plugins/context.hpp"
|
||||
#include "scripting/plugins/manager.hpp"
|
||||
|
@ -31,8 +32,9 @@ static lg::log_domain log_display("display");
|
|||
|
||||
namespace gui2::dialogs
|
||||
{
|
||||
modal_dialog::modal_dialog()
|
||||
: window_(nullptr)
|
||||
|
||||
modal_dialog::modal_dialog(const std::string& window_id)
|
||||
: window(get_window_builder(window_id))
|
||||
, retval_(retval::NONE)
|
||||
, always_save_fields_(false)
|
||||
, fields_()
|
||||
|
@ -40,6 +42,8 @@ modal_dialog::modal_dialog()
|
|||
, allow_plugin_skip_(true)
|
||||
, show_even_without_video_(false)
|
||||
{
|
||||
window::finish_build(get_window_builder(window_id));
|
||||
widget::set_id(window_id);
|
||||
}
|
||||
|
||||
modal_dialog::~modal_dialog()
|
||||
|
@ -48,13 +52,13 @@ modal_dialog::~modal_dialog()
|
|||
|
||||
namespace {
|
||||
struct window_stack_handler {
|
||||
window_stack_handler(std::unique_ptr<window>& win) : local_window(win) {
|
||||
open_window_stack.push_back(local_window.get());
|
||||
window_stack_handler(window* win) : local_window(win) {
|
||||
open_window_stack.push_back(local_window);
|
||||
}
|
||||
~window_stack_handler() {
|
||||
remove_from_window_stack(local_window.get());
|
||||
remove_from_window_stack(local_window);
|
||||
}
|
||||
std::unique_ptr<window>& local_window;
|
||||
window* local_window;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -78,21 +82,14 @@ bool modal_dialog::show(const unsigned auto_close_time)
|
|||
return false;
|
||||
}
|
||||
|
||||
window_ = build_window();
|
||||
assert(window_.get());
|
||||
init_fields(*this);
|
||||
|
||||
post_build(*window_);
|
||||
|
||||
window_->set_owner(this);
|
||||
|
||||
init_fields(*window_);
|
||||
|
||||
pre_show(*window_);
|
||||
pre_show(*this);
|
||||
|
||||
{ // Scope the window stack
|
||||
cursor::setter cur{cursor::NORMAL};
|
||||
window_stack_handler push_window_stack(window_);
|
||||
retval_ = window_->show(auto_close_time);
|
||||
window_stack_handler push_window_stack(this);
|
||||
retval_ = window::show(auto_close_time);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -111,24 +108,14 @@ bool modal_dialog::show(const unsigned auto_close_time)
|
|||
|
||||
finalize_fields((retval_ == retval::OK || always_save_fields_));
|
||||
|
||||
post_show(*window_);
|
||||
post_show(*this);
|
||||
|
||||
// post_show may have updated the window retval. Update it here.
|
||||
retval_ = window_->get_retval();
|
||||
|
||||
// Reset window object.
|
||||
window_.reset(nullptr);
|
||||
retval_ = window::get_retval();
|
||||
|
||||
return retval_ == retval::OK;
|
||||
}
|
||||
|
||||
void modal_dialog::set_retval(int retval)
|
||||
{
|
||||
if(window_) {
|
||||
window_->set_retval(retval);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T, typename... Args>
|
||||
T* modal_dialog::register_field(Args&&... args)
|
||||
{
|
||||
|
@ -239,16 +226,6 @@ field_label* modal_dialog::register_label(const std::string& id,
|
|||
return field;
|
||||
}
|
||||
|
||||
std::unique_ptr<window> modal_dialog::build_window() const
|
||||
{
|
||||
return build(window_id());
|
||||
}
|
||||
|
||||
void modal_dialog::post_build(window& /*window*/)
|
||||
{
|
||||
/* DO NOTHING */
|
||||
}
|
||||
|
||||
void modal_dialog::pre_show(window& /*window*/)
|
||||
{
|
||||
/* DO NOTHING */
|
||||
|
|
|
@ -17,8 +17,9 @@
|
|||
|
||||
#include "gui/auxiliary/field-fwd.hpp"
|
||||
#include "gui/core/static_registry.hpp"
|
||||
#include <functional>
|
||||
#include "gui/widgets/window.hpp"
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
@ -141,7 +142,7 @@ namespace gui2::dialogs
|
|||
* was pressed to close the dialog. See editor_new_map::execute for an
|
||||
* example.
|
||||
*/
|
||||
class modal_dialog
|
||||
class modal_dialog : public window
|
||||
{
|
||||
/**
|
||||
* Special helper function to get the id of the window.
|
||||
|
@ -152,7 +153,7 @@ class modal_dialog
|
|||
friend std::string unit_test_mark_as_tested(const modal_dialog& dialog);
|
||||
|
||||
public:
|
||||
modal_dialog();
|
||||
explicit modal_dialog(const std::string& window_id);
|
||||
|
||||
virtual ~modal_dialog();
|
||||
|
||||
|
@ -171,10 +172,15 @@ public:
|
|||
|
||||
/***** ***** ***** setters / getters for members ***** ****** *****/
|
||||
|
||||
// TODO: this is now completely redundant, as a modal dialog is a window
|
||||
/** Returns a pointer to the dialog's window. Will be null if it hasn't been built yet. */
|
||||
window* get_window() const
|
||||
window* get_window()
|
||||
{
|
||||
return window_.get();
|
||||
return this;
|
||||
}
|
||||
const window* get_window() const
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Returns the cached window exit code. */
|
||||
|
@ -183,9 +189,6 @@ public:
|
|||
return retval_;
|
||||
}
|
||||
|
||||
/** Convenience wrapper to set the window's exit code. */
|
||||
void set_retval(int retval);
|
||||
|
||||
void set_always_save_fields(const bool always_save_fields)
|
||||
{
|
||||
always_save_fields_ = always_save_fields;
|
||||
|
@ -335,10 +338,6 @@ protected:
|
|||
return register_label(id, mandatory, filename);
|
||||
}
|
||||
|
||||
protected:
|
||||
/** The window object build for this dialog. */
|
||||
std::unique_ptr<window> window_;
|
||||
|
||||
private:
|
||||
/**
|
||||
* The window's exit code (return value).
|
||||
|
@ -391,28 +390,9 @@ private:
|
|||
*/
|
||||
bool show_even_without_video_;
|
||||
|
||||
/** The id of the window to build. */
|
||||
/** The ID of the window to build. Usually set by REGISTER_DIALOG. */
|
||||
virtual const std::string& window_id() const = 0;
|
||||
|
||||
/**
|
||||
* Builds the window.
|
||||
*
|
||||
* Every dialog shows it's own kind of window, this function should return
|
||||
* the window to show.
|
||||
*
|
||||
* @returns The window to show.
|
||||
*/
|
||||
std::unique_ptr<window> build_window() const;
|
||||
|
||||
/**
|
||||
* Actions to be taken directly after the window is build.
|
||||
*
|
||||
* At this point the registered fields are not yet registered.
|
||||
*
|
||||
* @param window The window just created.
|
||||
*/
|
||||
virtual void post_build(window& window);
|
||||
|
||||
/**
|
||||
* Actions to be taken before showing the window.
|
||||
*
|
||||
|
@ -422,6 +402,7 @@ private:
|
|||
* @param window The window to be shown.
|
||||
*/
|
||||
virtual void pre_show(window& window);
|
||||
// TODO: this window parameter is now redundant
|
||||
|
||||
/**
|
||||
* Actions to be taken after the window has been shown.
|
||||
|
@ -432,6 +413,7 @@ private:
|
|||
* @param window The window which has been shown.
|
||||
*/
|
||||
virtual void post_show(window& window);
|
||||
// TODO: this window parameter is now redundant
|
||||
|
||||
/**
|
||||
* Initializes all fields in the dialog and set the keyboard focus.
|
||||
|
@ -439,6 +421,7 @@ private:
|
|||
* @param window The window which has been shown.
|
||||
*/
|
||||
virtual void init_fields(window& window);
|
||||
// TODO: this window parameter is now redundant
|
||||
|
||||
/**
|
||||
* When the dialog is closed with the OK status saves all fields.
|
||||
|
|
|
@ -41,7 +41,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(faction_select)
|
||||
|
||||
faction_select::faction_select(ng::flg_manager& flg_manager, const std::string& color, const int side)
|
||||
: flg_manager_(flg_manager)
|
||||
: modal_dialog(window_id())
|
||||
, flg_manager_(flg_manager)
|
||||
, tc_color_(color)
|
||||
, side_(side)
|
||||
, last_faction_(flg_manager.current_faction_index())
|
||||
|
|
|
@ -69,7 +69,8 @@ bool mp_lobby::logout_prompt()
|
|||
}
|
||||
|
||||
mp_lobby::mp_lobby(mp::lobby_info& info, wesnothd_connection& connection, int& joined_game)
|
||||
: quit_confirmation(&mp_lobby::logout_prompt)
|
||||
: modal_dialog(window_id())
|
||||
, quit_confirmation(&mp_lobby::logout_prompt)
|
||||
, gamelistbox_(nullptr)
|
||||
, lobby_info_(info)
|
||||
, chatbox_(nullptr)
|
||||
|
@ -107,10 +108,16 @@ mp_lobby::mp_lobby(mp::lobby_info& info, wesnothd_connection& connection, int& j
|
|||
, delay_gamelist_update_(false)
|
||||
, joined_game_id_(joined_game)
|
||||
{
|
||||
// Need to set this in the constructor, pre_show() is too late
|
||||
set_show_even_without_video(true);
|
||||
set_allow_plugin_skip(false);
|
||||
set_always_save_fields(true);
|
||||
|
||||
/*** Local hotkeys. ***/
|
||||
window::register_hotkey(hotkey::HOTKEY_HELP,
|
||||
std::bind(&mp_lobby::show_help_callback, this));
|
||||
|
||||
window::register_hotkey(hotkey::HOTKEY_PREFERENCES,
|
||||
std::bind(&mp_lobby::show_preferences_button_callback, this));
|
||||
}
|
||||
|
||||
struct lobby_delay_gamelist_update_guard
|
||||
|
@ -133,16 +140,6 @@ mp_lobby::~mp_lobby()
|
|||
}
|
||||
}
|
||||
|
||||
void mp_lobby::post_build(window& win)
|
||||
{
|
||||
/*** Local hotkeys. ***/
|
||||
win.register_hotkey(hotkey::HOTKEY_HELP,
|
||||
std::bind(&mp_lobby::show_help_callback, this));
|
||||
|
||||
win.register_hotkey(hotkey::HOTKEY_PREFERENCES,
|
||||
std::bind(&mp_lobby::show_preferences_button_callback, this));
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
void modify_grid_with_data(grid* grid, const widget_data& map)
|
||||
|
|
|
@ -129,8 +129,6 @@ private:
|
|||
|
||||
virtual const std::string& window_id() const override;
|
||||
|
||||
virtual void post_build(window& window) override;
|
||||
|
||||
virtual void pre_show(window& window) override;
|
||||
|
||||
virtual void post_show(window& window) override;
|
||||
|
|
|
@ -25,7 +25,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(mp_match_history)
|
||||
|
||||
mp_match_history::mp_match_history(mp::user_info& info, wesnothd_connection& connection)
|
||||
: info_(info)
|
||||
: modal_dialog(window_id())
|
||||
, info_(info)
|
||||
, connection_(connection)
|
||||
{
|
||||
register_label("title", true, VGETTEXT("Match History — $player", {{"player", info_.name}}));
|
||||
|
|
|
@ -91,6 +91,7 @@ static void revert_to_default_pref_values(window & window)
|
|||
REGISTER_DIALOG(mp_alerts_options)
|
||||
|
||||
mp_alerts_options::mp_alerts_options()
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(mp_change_control)
|
||||
|
||||
mp_change_control::mp_change_control(events::menu_handler& mh)
|
||||
: menu_handler_(mh)
|
||||
: modal_dialog(window_id())
|
||||
, menu_handler_(mh)
|
||||
, selected_side_(0)
|
||||
, selected_nick_(0)
|
||||
, sides_()
|
||||
|
|
|
@ -63,7 +63,8 @@ namespace dialogs
|
|||
REGISTER_DIALOG(mp_connect)
|
||||
|
||||
mp_connect::mp_connect()
|
||||
: host_name_(register_text("host_name",
|
||||
: modal_dialog(window_id())
|
||||
, host_name_(register_text("host_name",
|
||||
true,
|
||||
preferences::network_host,
|
||||
preferences::set_network_host,
|
||||
|
|
|
@ -66,7 +66,8 @@ namespace prefs = preferences;
|
|||
REGISTER_DIALOG(mp_create_game)
|
||||
|
||||
mp_create_game::mp_create_game(saved_game& state, bool local_mode)
|
||||
: create_engine_(state)
|
||||
: modal_dialog(window_id())
|
||||
, create_engine_(state)
|
||||
, config_engine_()
|
||||
, options_manager_()
|
||||
, selected_game_index_(-1)
|
||||
|
|
|
@ -41,6 +41,7 @@ static void set_do_not_show_again(const bool do_not_show_again)
|
|||
}
|
||||
|
||||
mp_host_game_prompt::mp_host_game_prompt()
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_bool("do_not_show_again",
|
||||
true,
|
||||
|
|
|
@ -61,7 +61,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(mp_join_game)
|
||||
|
||||
mp_join_game::mp_join_game(saved_game& state, wesnothd_connection& connection, const bool first_scenario, const bool observe_game)
|
||||
: level_()
|
||||
: modal_dialog(window_id())
|
||||
, level_()
|
||||
, state_(state)
|
||||
, network_connection_(connection)
|
||||
, update_timer_(0)
|
||||
|
|
|
@ -24,6 +24,7 @@ REGISTER_DIALOG(mp_join_game_password_prompt)
|
|||
|
||||
mp_join_game_password_prompt::mp_join_game_password_prompt(
|
||||
std::string& password)
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
register_text("password", true, password, true);
|
||||
}
|
||||
|
|
|
@ -33,7 +33,9 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(mp_login)
|
||||
|
||||
mp_login::mp_login(const std::string& host, const std::string& label, const bool focus_password)
|
||||
: host_(host), focus_password_(focus_password)
|
||||
: modal_dialog(window_id())
|
||||
, host_(host)
|
||||
, focus_password_(focus_password)
|
||||
{
|
||||
register_label("login_label", false, label);
|
||||
username_ = register_text("user_name", true,
|
||||
|
@ -46,15 +48,15 @@ mp_login::mp_login(const std::string& host, const std::string& label, const bool
|
|||
&preferences::set_remember_password);
|
||||
}
|
||||
|
||||
void mp_login::load_password() const
|
||||
void mp_login::load_password()
|
||||
{
|
||||
text_box& pwd = find_widget<text_box>(get_window(), "password", false);
|
||||
text_box& pwd = find_widget<text_box>(this, "password", false);
|
||||
pwd.set_value(preferences::password(host_, username_->get_widget_value()));
|
||||
}
|
||||
|
||||
void mp_login::save_password() const
|
||||
void mp_login::save_password()
|
||||
{
|
||||
password_box& pwd = find_widget<password_box>(get_window(), "password", false);
|
||||
password_box& pwd = find_widget<password_box>(this, "password", false);
|
||||
preferences::set_password(host_, username_->get_widget_value(), pwd.get_real_value());
|
||||
}
|
||||
|
||||
|
|
|
@ -49,8 +49,8 @@ private:
|
|||
|
||||
virtual void post_show(window& window) override;
|
||||
|
||||
void load_password() const;
|
||||
void save_password() const;
|
||||
void load_password();
|
||||
void save_password();
|
||||
|
||||
const std::string host_;
|
||||
field_text* username_;
|
||||
|
|
|
@ -35,7 +35,8 @@ public:
|
|||
/** Corresponds to each connection option. */
|
||||
enum class choice { JOIN = 0, CONNECT, HOST, LOCAL };
|
||||
|
||||
mp_method_selection() : user_name_(), choice_()
|
||||
mp_method_selection()
|
||||
: modal_dialog(window_id()) , user_name_(), choice_()
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(mp_staging)
|
||||
|
||||
mp_staging::mp_staging(ng::connect_engine& connect_engine, wesnothd_connection* connection)
|
||||
: connect_engine_(connect_engine)
|
||||
: modal_dialog(window_id())
|
||||
, connect_engine_(connect_engine)
|
||||
, ai_algorithms_(ai::configuration::get_available_ais())
|
||||
, network_connection_(connection)
|
||||
, update_timer_(0)
|
||||
|
|
|
@ -37,7 +37,8 @@ REGISTER_DIALOG(lobby_player_info)
|
|||
lobby_player_info::lobby_player_info(events::chat_handler& chat,
|
||||
const mp::user_info& info,
|
||||
const mp::lobby_info& li)
|
||||
: chat_(chat)
|
||||
: modal_dialog(window_id())
|
||||
, chat_(chat)
|
||||
, info_(info)
|
||||
, reason_(nullptr)
|
||||
, time_(nullptr)
|
||||
|
|
|
@ -35,7 +35,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(synched_choice_wait)
|
||||
|
||||
synched_choice_wait::synched_choice_wait(user_choice_manager& mgr)
|
||||
: mgr_(mgr)
|
||||
: modal_dialog(window_id())
|
||||
, mgr_(mgr)
|
||||
, message_()
|
||||
{
|
||||
mgr_.changed_event_.attach_handler(this);
|
||||
|
|
|
@ -63,7 +63,8 @@ network_transmission::network_transmission(
|
|||
connection_data& connection,
|
||||
const std::string& title,
|
||||
const std::string& subtitle)
|
||||
: connection_(&connection)
|
||||
: modal_dialog(window_id())
|
||||
, connection_(&connection)
|
||||
, pump_monitor_(connection_)
|
||||
, subtitle_(subtitle)
|
||||
{
|
||||
|
|
|
@ -33,7 +33,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(outro)
|
||||
|
||||
outro::outro(const game_classification& info)
|
||||
: text_()
|
||||
: modal_dialog(window_id())
|
||||
, text_()
|
||||
, current_text_()
|
||||
, duration_(info.end_text_duration)
|
||||
, fade_step_(0)
|
||||
|
|
|
@ -111,7 +111,8 @@ using avp = preferences::advanced_manager::option;
|
|||
REGISTER_DIALOG(preferences_dialog)
|
||||
|
||||
preferences_dialog::preferences_dialog(const PREFERENCE_VIEW initial_view)
|
||||
: adv_preferences_(preferences::get_advanced_preferences())
|
||||
: modal_dialog(window_id())
|
||||
, adv_preferences_(preferences::get_advanced_preferences())
|
||||
, resolutions_() // should be populated by set_resolution_list before use
|
||||
, last_selected_item_(0)
|
||||
, accl_speeds_({0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 3, 4, 8, 16})
|
||||
|
@ -119,6 +120,7 @@ preferences_dialog::preferences_dialog(const PREFERENCE_VIEW initial_view)
|
|||
, visible_categories_()
|
||||
, initial_index_(pef_view_map[initial_view])
|
||||
{
|
||||
initialize_callbacks();
|
||||
}
|
||||
|
||||
// Helper function to refresh resolution list
|
||||
|
@ -203,9 +205,9 @@ void preferences_dialog::update_friends_list_controls(listbox& list)
|
|||
list.select_row(std::min(static_cast<int>(list.get_item_count()) - 1, list.get_selected_row()));
|
||||
}
|
||||
|
||||
find_widget<button>(get_window(), "remove", false).set_active(!list_empty);
|
||||
find_widget<button>(this, "remove", false).set_active(!list_empty);
|
||||
|
||||
find_widget<label>(get_window(), "no_friends_notice", false).set_visible(
|
||||
find_widget<label>(this, "no_friends_notice", false).set_visible(
|
||||
list_empty ? widget::visibility::visible : widget::visibility::invisible);
|
||||
}
|
||||
|
||||
|
@ -234,7 +236,7 @@ void preferences_dialog::add_friend_list_entry(const bool is_friend, text_box& t
|
|||
|
||||
textbox.clear();
|
||||
|
||||
listbox& list = find_widget<listbox>(get_window(), "friends_list", false);
|
||||
listbox& list = find_widget<listbox>(this, "friends_list", false);
|
||||
|
||||
//
|
||||
// If this is a new entry, just add a new row. If it's not, we find the relevant
|
||||
|
@ -281,7 +283,7 @@ void preferences_dialog::remove_friend_list_entry(listbox& friends_list, text_bo
|
|||
|
||||
textbox.clear();
|
||||
|
||||
listbox& list = find_widget<listbox>(get_window(), "friends_list", false);
|
||||
listbox& list = find_widget<listbox>(this, "friends_list", false);
|
||||
list.remove_row(selected_row);
|
||||
|
||||
update_friends_list_controls(list);
|
||||
|
@ -293,15 +295,13 @@ void preferences_dialog::initialize_sound_option_group(const std::string& id_suf
|
|||
const std::string toggle_widget_id = "sound_toggle_" + id_suffix;
|
||||
const std::string volume_widget_id = "sound_volume_" + id_suffix;
|
||||
|
||||
window& window = *get_window();
|
||||
|
||||
// Set up the toggle. We utilize field_bool's callback-on-changed mechanism instead
|
||||
// of manually registering the callback. Since we want the effects to apply immediately,
|
||||
// the callback the setter callback is duplicated in the on-change callback. The field
|
||||
// class could possibly use some reworking to make this less redundant, but for now it
|
||||
// works well enough.
|
||||
register_bool(toggle_widget_id, true, toggle_getter, std::bind(toggle_setter, std::placeholders::_1),
|
||||
std::bind(sound_toggle_on_change<toggle_setter>, std::ref(window), volume_widget_id, std::placeholders::_1), true);
|
||||
std::bind(sound_toggle_on_change<toggle_setter>, std::ref(*this), volume_widget_id, std::placeholders::_1), true);
|
||||
|
||||
// Set up the volume slider. integer_field doesn't have a callback-on-changed mechanism.
|
||||
// To add one would either mean adding it to the base field class or make it a proper
|
||||
|
@ -309,19 +309,19 @@ void preferences_dialog::initialize_sound_option_group(const std::string& id_suf
|
|||
register_integer(volume_widget_id, true, vol_getter, vol_setter);
|
||||
|
||||
// Callback to actually immediately apply the volume effect.
|
||||
connect_signal_notify_modified(find_widget<slider>(&window, volume_widget_id, false),
|
||||
connect_signal_notify_modified(find_widget<slider>(this, volume_widget_id, false),
|
||||
std::bind(volume_setter_on_change<vol_setter>, std::placeholders::_1));
|
||||
}
|
||||
|
||||
void preferences_dialog::apply_pixel_scale()
|
||||
{
|
||||
// Update pixel scale preference.
|
||||
slider& ps_slider = find_widget<slider>(get_window(), "pixel_scale_slider", false);
|
||||
slider& ps_slider = find_widget<slider>(this, "pixel_scale_slider", false);
|
||||
set_pixel_scale(ps_slider.get_value());
|
||||
|
||||
// Update auto pixel scale preference.
|
||||
toggle_button& auto_ps_toggle =
|
||||
find_widget<toggle_button>(get_window(), "auto_pixel_scale", false);
|
||||
find_widget<toggle_button>(this, "auto_pixel_scale", false);
|
||||
set_auto_pixel_scale(auto_ps_toggle.get_value_bool());
|
||||
|
||||
// Update draw buffers, taking these into account.
|
||||
|
@ -340,7 +340,7 @@ void preferences_dialog::apply_pixel_scale()
|
|||
/**
|
||||
* Sets up states and callbacks for each of the widgets
|
||||
*/
|
||||
void preferences_dialog::post_build(window& window)
|
||||
void preferences_dialog::initialize_callbacks()
|
||||
{
|
||||
//
|
||||
// GENERAL PANEL
|
||||
|
@ -365,7 +365,7 @@ void preferences_dialog::post_build(window& window)
|
|||
accl_load, accl_save);
|
||||
|
||||
// Set the value label transform function.
|
||||
find_widget<slider>(&window, "turbo_slider", false).set_value_labels(
|
||||
find_widget<slider>(this, "turbo_slider", false).set_value_labels(
|
||||
[this](int pos, int /*max*/)->t_string { return lexical_cast<std::string>(accl_speeds_[pos]); }
|
||||
);
|
||||
|
||||
|
@ -406,7 +406,7 @@ void preferences_dialog::post_build(window& window)
|
|||
autosavemax, set_autosavemax);
|
||||
|
||||
/* CACHE MANAGE */
|
||||
connect_signal_mouse_left_click(find_widget<button>(&window, "cachemg", false),
|
||||
connect_signal_mouse_left_click(find_widget<button>(this, "cachemg", false),
|
||||
std::bind(&gui2::dialogs::game_cache_options::display<>));
|
||||
|
||||
//
|
||||
|
@ -415,7 +415,7 @@ void preferences_dialog::post_build(window& window)
|
|||
|
||||
/* FULLSCREEN TOGGLE */
|
||||
toggle_button& toggle_fullscreen =
|
||||
find_widget<toggle_button>(&window, "fullscreen", false);
|
||||
find_widget<toggle_button>(this, "fullscreen", false);
|
||||
|
||||
toggle_fullscreen.set_value(fullscreen());
|
||||
|
||||
|
@ -424,7 +424,7 @@ void preferences_dialog::post_build(window& window)
|
|||
&preferences_dialog::fullscreen_toggle_callback, this));
|
||||
|
||||
/* SET RESOLUTION */
|
||||
menu_button& res_list = find_widget<menu_button>(&window, "resolution_set", false);
|
||||
menu_button& res_list = find_widget<menu_button>(this, "resolution_set", false);
|
||||
|
||||
res_list.set_use_markup(true);
|
||||
res_list.set_active(!fullscreen());
|
||||
|
@ -439,17 +439,17 @@ void preferences_dialog::post_build(window& window)
|
|||
pixel_scale, set_pixel_scale);
|
||||
|
||||
slider& ps_slider =
|
||||
find_widget<slider>(&window, "pixel_scale_slider", false);
|
||||
find_widget<slider>(this, "pixel_scale_slider", false);
|
||||
connect_signal_mouse_left_release(ps_slider,
|
||||
std::bind(&preferences_dialog::apply_pixel_scale, this));
|
||||
|
||||
/* AUTOMATIC PIXEL SCALE */
|
||||
register_bool("auto_pixel_scale", true,
|
||||
auto_pixel_scale, set_auto_pixel_scale,
|
||||
[&](widget& w) { disable_widget_on_toggle_inverted<slider>(window, w, "pixel_scale_slider"); }, true);
|
||||
[&](widget& w) { disable_widget_on_toggle_inverted<slider>(*this, w, "pixel_scale_slider"); }, true);
|
||||
|
||||
toggle_button& auto_ps_toggle =
|
||||
find_widget<toggle_button>(get_window(), "auto_pixel_scale", false);
|
||||
find_widget<toggle_button>(this, "auto_pixel_scale", false);
|
||||
connect_signal_mouse_left_click(auto_ps_toggle,
|
||||
std::bind(&preferences_dialog::apply_pixel_scale, this));
|
||||
|
||||
|
@ -467,7 +467,7 @@ void preferences_dialog::post_build(window& window)
|
|||
|
||||
/* ANIMATE MAP */
|
||||
register_bool("animate_terrains", true, animate_map, set_animate_map,
|
||||
[&](widget& w) { disable_widget_on_toggle<toggle_button>(window, w, "animate_water"); }, true);
|
||||
[&](widget& w) { disable_widget_on_toggle<toggle_button>(*this, w, "animate_water"); }, true);
|
||||
|
||||
/* ANIMATE WATER */
|
||||
register_bool("animate_water", true,
|
||||
|
@ -479,7 +479,7 @@ void preferences_dialog::post_build(window& window)
|
|||
|
||||
/* SHOW UNIT IDLE ANIMS */
|
||||
register_bool("animate_units_idle", true, idle_anim, set_idle_anim,
|
||||
[&](widget& w) { disable_widget_on_toggle<slider>(window, w, "idle_anim_frequency"); });
|
||||
[&](widget& w) { disable_widget_on_toggle<slider>(*this, w, "idle_anim_frequency"); });
|
||||
|
||||
register_integer("idle_anim_frequency", true,
|
||||
idle_anim_rate, set_idle_anim_rate);
|
||||
|
@ -497,7 +497,7 @@ void preferences_dialog::post_build(window& window)
|
|||
|
||||
/* SELECT THEME */
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "choose_theme", false),
|
||||
find_widget<button>(this, "choose_theme", false),
|
||||
std::bind(&show_theme_dialog));
|
||||
|
||||
//
|
||||
|
@ -540,9 +540,9 @@ void preferences_dialog::post_build(window& window)
|
|||
whisper_friends_only, set_whisper_friends_only);
|
||||
|
||||
/* LOBBY JOIN NOTIFICATIONS */
|
||||
lobby_joins_group.add_member(find_widget<toggle_button>(&window, "lobby_joins_none", false, true), lobby_joins::show_none);
|
||||
lobby_joins_group.add_member(find_widget<toggle_button>(&window, "lobby_joins_friends", false, true), lobby_joins::show_friends);
|
||||
lobby_joins_group.add_member(find_widget<toggle_button>(&window, "lobby_joins_all", false, true), lobby_joins::show_all);
|
||||
lobby_joins_group.add_member(find_widget<toggle_button>(this, "lobby_joins_none", false, true), lobby_joins::show_none);
|
||||
lobby_joins_group.add_member(find_widget<toggle_button>(this, "lobby_joins_friends", false, true), lobby_joins::show_friends);
|
||||
lobby_joins_group.add_member(find_widget<toggle_button>(this, "lobby_joins_all", false, true), lobby_joins::show_all);
|
||||
|
||||
lobby_joins_group.set_member_states(get_lobby_joins());
|
||||
|
||||
|
@ -551,7 +551,7 @@ void preferences_dialog::post_build(window& window)
|
|||
});
|
||||
|
||||
/* FRIENDS LIST */
|
||||
listbox& friends_list = find_widget<listbox>(&window, "friends_list", false);
|
||||
listbox& friends_list = find_widget<listbox>(this, "friends_list", false);
|
||||
|
||||
friends_list.clear();
|
||||
|
||||
|
@ -561,22 +561,22 @@ void preferences_dialog::post_build(window& window)
|
|||
|
||||
update_friends_list_controls(friends_list);
|
||||
|
||||
text_box& textbox = find_widget<text_box>(&window, "friend_name_box", false);
|
||||
text_box& textbox = find_widget<text_box>(this, "friend_name_box", false);
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "add_friend", false), std::bind(
|
||||
find_widget<button>(this, "add_friend", false), std::bind(
|
||||
&preferences_dialog::add_friend_list_entry,
|
||||
this, true,
|
||||
std::ref(textbox)));
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "add_ignored", false), std::bind(
|
||||
find_widget<button>(this, "add_ignored", false), std::bind(
|
||||
&preferences_dialog::add_friend_list_entry,
|
||||
this, false,
|
||||
std::ref(textbox)));
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "remove", false), std::bind(
|
||||
find_widget<button>(this, "remove", false), std::bind(
|
||||
&preferences_dialog::remove_friend_list_entry,
|
||||
this,
|
||||
std::ref(friends_list),
|
||||
|
@ -590,12 +590,12 @@ void preferences_dialog::post_build(window& window)
|
|||
|
||||
/* ALERTS */
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "mp_alerts", false),
|
||||
find_widget<button>(this, "mp_alerts", false),
|
||||
std::bind(&gui2::dialogs::mp_alerts_options::display<>));
|
||||
|
||||
/* SET WESNOTHD PATH */
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "mp_wesnothd", false), std::bind(
|
||||
find_widget<button>(this, "mp_wesnothd", false), std::bind(
|
||||
&show_wesnothd_server_search));
|
||||
|
||||
|
||||
|
@ -603,7 +603,7 @@ void preferences_dialog::post_build(window& window)
|
|||
// ADVANCED PANEL
|
||||
//
|
||||
|
||||
listbox& advanced = find_widget<listbox>(&window, "advanced_prefs", false);
|
||||
listbox& advanced = find_widget<listbox>(this, "advanced_prefs", false);
|
||||
|
||||
widget_data row_data;
|
||||
|
||||
|
@ -735,13 +735,13 @@ void preferences_dialog::post_build(window& window)
|
|||
// HOTKEYS PANEL
|
||||
//
|
||||
|
||||
multimenu_button& hotkey_menu = find_widget<multimenu_button>(&window, "hotkey_category_menu", false);
|
||||
multimenu_button& hotkey_menu = find_widget<multimenu_button>(this, "hotkey_category_menu", false);
|
||||
connect_signal_notify_modified(hotkey_menu,
|
||||
std::bind(&preferences_dialog::hotkey_filter_callback, this));
|
||||
|
||||
listbox& hotkey_list = setup_hotkey_list();
|
||||
|
||||
text_box& filter = find_widget<text_box>(&window, "filter", false);
|
||||
text_box& filter = find_widget<text_box>(this, "filter", false);
|
||||
filter.set_text_changed_callback(std::bind(&preferences_dialog::hotkey_filter_callback, this));
|
||||
|
||||
// Action column
|
||||
|
@ -758,19 +758,19 @@ void preferences_dialog::post_build(window& window)
|
|||
hotkey_list.set_active_sorting_option({0, sort_order::type::ascending}, true);
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "btn_add_hotkey", false), std::bind(
|
||||
find_widget<button>(this, "btn_add_hotkey", false), std::bind(
|
||||
&preferences_dialog::add_hotkey_callback,
|
||||
this,
|
||||
std::ref(hotkey_list)));
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "btn_clear_hotkey", false), std::bind(
|
||||
find_widget<button>(this, "btn_clear_hotkey", false), std::bind(
|
||||
&preferences_dialog::remove_hotkey_callback,
|
||||
this,
|
||||
std::ref(hotkey_list)));
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "btn_reset_hotkeys", false), std::bind(
|
||||
find_widget<button>(this, "btn_reset_hotkeys", false), std::bind(
|
||||
&preferences_dialog::default_hotkey_callback,
|
||||
this));
|
||||
}
|
||||
|
@ -787,7 +787,7 @@ listbox& preferences_dialog::setup_hotkey_list()
|
|||
t_string& row_is_e = row_data["lbl_is_editor"]["label"];
|
||||
t_string& row_is_m = row_data["lbl_is_mainmenu"]["label"];
|
||||
|
||||
listbox& hotkey_list = find_widget<listbox>(get_window(), "list_hotkeys", false);
|
||||
listbox& hotkey_list = find_widget<listbox>(this, "list_hotkeys", false);
|
||||
|
||||
hotkey_list.clear();
|
||||
visible_hotkeys_.clear();
|
||||
|
@ -837,7 +837,7 @@ listbox& preferences_dialog::setup_hotkey_list()
|
|||
filter_ops.emplace_back("label", t_string{cat_names.at(cat), "wesnoth-lib"}, "checkbox", false);
|
||||
}
|
||||
|
||||
find_widget<multimenu_button>(get_window(), "hotkey_category_menu", false).set_values(filter_ops);
|
||||
find_widget<multimenu_button>(this, "hotkey_category_menu", false).set_values(filter_ops);
|
||||
|
||||
return hotkey_list;
|
||||
}
|
||||
|
@ -919,10 +919,10 @@ void preferences_dialog::remove_hotkey_callback(listbox& hotkeys)
|
|||
find_widget<label>(hotkeys.get_row_grid(row_number), "lbl_hotkey", false).set_label(hotkey::get_names(hotkey_item.id));
|
||||
}
|
||||
|
||||
void preferences_dialog::hotkey_filter_callback() const
|
||||
void preferences_dialog::hotkey_filter_callback()
|
||||
{
|
||||
const multimenu_button& hotkey_menu = find_widget<const multimenu_button>(get_window(), "hotkey_category_menu", false);
|
||||
const text_box& name_filter = find_widget<const text_box>(get_window(), "filter", false);
|
||||
const multimenu_button& hotkey_menu = find_widget<const multimenu_button>(this, "hotkey_category_menu", false);
|
||||
const text_box& name_filter = find_widget<const text_box>(this, "filter", false);
|
||||
|
||||
boost::dynamic_bitset<> toggle_states = hotkey_menu.get_toggle_states();
|
||||
boost::dynamic_bitset<> res(visible_hotkeys_.size());
|
||||
|
@ -969,7 +969,7 @@ void preferences_dialog::hotkey_filter_callback() const
|
|||
}
|
||||
}
|
||||
|
||||
find_widget<listbox>(get_window(), "list_hotkeys", false).set_row_shown(res);
|
||||
find_widget<listbox>(this, "list_hotkeys", false).set_row_shown(res);
|
||||
}
|
||||
|
||||
void preferences_dialog::on_advanced_prefs_list_select(listbox& list)
|
||||
|
@ -1078,16 +1078,16 @@ void preferences_dialog::pre_show(window& window)
|
|||
|
||||
void preferences_dialog::set_visible_page(unsigned int page, const std::string& pager_id)
|
||||
{
|
||||
find_widget<stacked_widget>(get_window(), pager_id, false).select_layer(page);
|
||||
find_widget<stacked_widget>(this, pager_id, false).select_layer(page);
|
||||
}
|
||||
|
||||
// Special fullsceen callback
|
||||
void preferences_dialog::fullscreen_toggle_callback()
|
||||
{
|
||||
const bool ison = find_widget<toggle_button>(get_window(), "fullscreen", false).get_value_bool();
|
||||
const bool ison = find_widget<toggle_button>(this, "fullscreen", false).get_value_bool();
|
||||
video::set_fullscreen(ison);
|
||||
|
||||
menu_button& res_list = find_widget<menu_button>(get_window(), "resolution_set", false);
|
||||
menu_button& res_list = find_widget<menu_button>(this, "resolution_set", false);
|
||||
|
||||
set_resolution_list(res_list);
|
||||
res_list.set_active(!ison);
|
||||
|
@ -1095,7 +1095,7 @@ void preferences_dialog::fullscreen_toggle_callback()
|
|||
|
||||
void preferences_dialog::handle_res_select()
|
||||
{
|
||||
menu_button& res_list = find_widget<menu_button>(get_window(), "resolution_set", false);
|
||||
menu_button& res_list = find_widget<menu_button>(this, "resolution_set", false);
|
||||
|
||||
if(video::set_resolution(resolutions_[res_list.get_value()])) {
|
||||
set_resolution_list(res_list);
|
||||
|
@ -1105,14 +1105,14 @@ void preferences_dialog::handle_res_select()
|
|||
void preferences_dialog::on_page_select()
|
||||
{
|
||||
const int selected_row =
|
||||
std::max(0, find_widget<listbox>(get_window(), "selector", false).get_selected_row());
|
||||
std::max(0, find_widget<listbox>(this, "selector", false).get_selected_row());
|
||||
set_visible_page(static_cast<unsigned int>(selected_row), "pager");
|
||||
}
|
||||
|
||||
void preferences_dialog::on_tab_select()
|
||||
{
|
||||
const int selected_row =
|
||||
std::max(0, find_widget<listbox>(get_window(), "tab_selector", false).get_selected_row());
|
||||
std::max(0, find_widget<listbox>(this, "tab_selector", false).get_selected_row());
|
||||
set_visible_page(static_cast<unsigned int>(selected_row), "tab_pager");
|
||||
}
|
||||
|
||||
|
|
|
@ -77,11 +77,11 @@ public:
|
|||
private:
|
||||
virtual const std::string& window_id() const override;
|
||||
|
||||
virtual void post_build(window& window) override;
|
||||
virtual void pre_show(window& window) override;
|
||||
virtual void post_show(window& /*window*/) override;
|
||||
|
||||
/** Initializers */
|
||||
void initialize_callbacks();
|
||||
void initialize_tabs(listbox& selector);
|
||||
void set_resolution_list(menu_button& res_list);
|
||||
listbox& setup_hotkey_list();
|
||||
|
@ -112,7 +112,7 @@ private:
|
|||
void add_hotkey_callback(listbox& hotkeys);
|
||||
void remove_hotkey_callback(listbox& hotkeys);
|
||||
void default_hotkey_callback();
|
||||
void hotkey_filter_callback() const;
|
||||
void hotkey_filter_callback();
|
||||
|
||||
group<preferences::lobby_joins> lobby_joins_group;
|
||||
|
||||
|
|
|
@ -41,7 +41,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(screenshot_notification)
|
||||
|
||||
screenshot_notification::screenshot_notification(const std::string& path, surface screenshot)
|
||||
: path_(path)
|
||||
: modal_dialog(window_id())
|
||||
, path_(path)
|
||||
, screenshots_dir_path_(filesystem::get_screenshot_dir())
|
||||
, screenshot_(screenshot)
|
||||
{
|
||||
|
|
|
@ -43,7 +43,8 @@ std::string get_orb_widget_prefix(const std::string& base_id)
|
|||
REGISTER_DIALOG(select_orb_colors)
|
||||
|
||||
select_orb_colors::select_orb_colors()
|
||||
: show_unmoved_(preferences::show_unmoved_orb())
|
||||
: modal_dialog(window_id())
|
||||
, show_unmoved_(preferences::show_unmoved_orb())
|
||||
, show_partial_(preferences::show_partial_orb())
|
||||
, show_disengaged_(preferences::show_disengaged_orb())
|
||||
, show_moved_(preferences::show_moved_orb())
|
||||
|
|
|
@ -28,10 +28,10 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(server_info)
|
||||
|
||||
server_info::server_info(const std::string& info, const std::string& announcements)
|
||||
: server_information_(info)
|
||||
, announcements_(announcements)
|
||||
: modal_dialog(window_id())
|
||||
, server_information_(info)
|
||||
, announcements_(announcements)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void server_info::pre_show(window& window)
|
||||
|
|
|
@ -34,7 +34,8 @@ simple_item_selector::simple_item_selector(const std::string& title,
|
|||
const list_type& items,
|
||||
bool title_uses_markup,
|
||||
bool message_uses_markup)
|
||||
: index_(-1)
|
||||
: modal_dialog(window_id())
|
||||
, index_(-1)
|
||||
, single_button_(false)
|
||||
, items_(items)
|
||||
, ok_label_()
|
||||
|
|
|
@ -24,7 +24,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(sp_options_configure)
|
||||
|
||||
sp_options_configure::sp_options_configure(ng::create_engine& create_engine, ng::configure_engine& config_engine)
|
||||
: create_engine_(create_engine)
|
||||
: modal_dialog(window_id())
|
||||
, create_engine_(create_engine)
|
||||
, config_engine_(config_engine)
|
||||
, options_manager_()
|
||||
{
|
||||
|
|
|
@ -54,7 +54,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(statistics_dialog)
|
||||
|
||||
statistics_dialog::statistics_dialog(const team& current_team)
|
||||
: current_team_(current_team)
|
||||
: modal_dialog(window_id())
|
||||
, current_team_(current_team)
|
||||
, campaign_(statistics::calculate_stats(current_team.save_id_or_number()))
|
||||
, scenarios_(statistics::level_stats(current_team.save_id_or_number()))
|
||||
, selection_index_(scenarios_.size()) // The extra All Scenarios menu entry makes size() a valid initial index.
|
||||
|
|
|
@ -55,7 +55,8 @@ static const unsigned int LAYER_TEXT = 2;
|
|||
REGISTER_DIALOG(story_viewer)
|
||||
|
||||
story_viewer::story_viewer(const std::string& scenario_name, const config& cfg_parsed)
|
||||
: controller_(vconfig(cfg_parsed, true), scenario_name)
|
||||
: modal_dialog(window_id())
|
||||
, controller_(vconfig(cfg_parsed, true), scenario_name)
|
||||
, part_index_(0)
|
||||
, current_part_(nullptr)
|
||||
, timer_id_(0)
|
||||
|
@ -459,8 +460,10 @@ void story_viewer::halt_fade_draw()
|
|||
fade_state_ = NOT_FADING;
|
||||
}
|
||||
|
||||
void story_viewer::layout()
|
||||
void story_viewer::update()
|
||||
{
|
||||
modal_dialog::update();
|
||||
|
||||
if(next_draw_ && SDL_GetTicks() < next_draw_) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace gui2::dialogs
|
|||
{
|
||||
|
||||
/** Dialog to view the storyscreen. */
|
||||
class story_viewer : public modal_dialog, public top_level_drawable
|
||||
class story_viewer : public modal_dialog
|
||||
{
|
||||
public:
|
||||
story_viewer(const std::string& scenario_name, const config& cfg_parsed);
|
||||
|
@ -42,13 +42,8 @@ public:
|
|||
} catch(const std::out_of_range&) {}
|
||||
}
|
||||
|
||||
// top_level_drawable overrides
|
||||
// used to animate the view
|
||||
// TODO: draw_manager - better animation step / hook
|
||||
// TODO: draw_manager - i still am horrified that a modal_dialog is not a window
|
||||
virtual void layout() override;
|
||||
virtual bool expose(const rect&) override { return false; }
|
||||
virtual rect screen_location() override { return {0,0,0,0}; }
|
||||
/** top_level_drawable hook to animate the view */
|
||||
virtual void update() override;
|
||||
|
||||
private:
|
||||
virtual const std::string& window_id() const override;
|
||||
|
|
|
@ -24,6 +24,7 @@ REGISTER_DIALOG(surrender_quit)
|
|||
|
||||
|
||||
surrender_quit::surrender_quit()
|
||||
: modal_dialog(window_id())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(terrain_layers)
|
||||
|
||||
terrain_layers::terrain_layers(display_t& disp, const map_location& loc)
|
||||
: tile_(nullptr)
|
||||
: modal_dialog(window_id())
|
||||
, tile_(nullptr)
|
||||
, tile_logs_()
|
||||
{
|
||||
terrain_builder& builder = disp.get_builder();
|
||||
|
|
|
@ -27,7 +27,9 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(theme_list)
|
||||
|
||||
theme_list::theme_list(const std::vector<theme_info>& themes, int selection)
|
||||
: index_(selection), themes_(themes)
|
||||
: modal_dialog(window_id())
|
||||
, index_(selection)
|
||||
, themes_(themes)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -73,10 +73,10 @@ REGISTER_DIALOG(title_screen)
|
|||
bool show_debug_clock_button = false;
|
||||
|
||||
title_screen::title_screen(game_launcher& game)
|
||||
: debug_clock_()
|
||||
: modal_dialog(window_id())
|
||||
, debug_clock_()
|
||||
, game_(game)
|
||||
{
|
||||
// Need to set this in the constructor, pre_show() / post_build() is too late
|
||||
set_allow_plugin_skip(false);
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,9 @@ transient_message::transient_message(const std::string& title,
|
|||
const std::string& message,
|
||||
const bool message_use_markup,
|
||||
const std::string& image)
|
||||
: hide_title_(title.empty()), hide_image_(image.empty())
|
||||
: modal_dialog(window_id())
|
||||
, hide_title_(title.empty())
|
||||
, hide_image_(image.empty())
|
||||
{
|
||||
register_label("title", true, title, title_use_markup);
|
||||
register_label("message", true, message, message_use_markup);
|
||||
|
|
|
@ -36,7 +36,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(unit_advance)
|
||||
|
||||
unit_advance::unit_advance(const std::vector<unit_const_ptr>& samples, std::size_t real)
|
||||
: previews_(samples)
|
||||
: modal_dialog(window_id())
|
||||
, previews_(samples)
|
||||
, selected_index_(0)
|
||||
, last_real_advancement_(real)
|
||||
{
|
||||
|
|
|
@ -46,7 +46,8 @@ unit_attack::unit_attack(const unit_map::iterator& attacker_itor,
|
|||
const unit_map::iterator& defender_itor,
|
||||
std::vector<battle_context>&& weapons,
|
||||
const int best_weapon)
|
||||
: selected_weapon_(-1)
|
||||
: modal_dialog(window_id())
|
||||
, selected_weapon_(-1)
|
||||
, attacker_itor_(attacker_itor)
|
||||
, defender_itor_(defender_itor)
|
||||
, weapons_(std::move(weapons))
|
||||
|
|
|
@ -48,7 +48,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(unit_create)
|
||||
|
||||
unit_create::unit_create()
|
||||
: gender_(last_gender)
|
||||
: modal_dialog(window_id())
|
||||
, gender_(last_gender)
|
||||
, choice_(last_chosen_type_id)
|
||||
, variation_(last_variation)
|
||||
, last_words_()
|
||||
|
@ -155,12 +156,10 @@ void unit_create::post_show(window& window)
|
|||
last_variation = variation_;
|
||||
}
|
||||
|
||||
void unit_create::update_displayed_type() const
|
||||
void unit_create::update_displayed_type()
|
||||
{
|
||||
window* w = get_window();
|
||||
|
||||
const int selected_row
|
||||
= find_widget<listbox>(w, "unit_type_list", false).get_selected_row();
|
||||
= find_widget<listbox>(this, "unit_type_list", false).get_selected_row();
|
||||
|
||||
if(selected_row == -1) {
|
||||
return;
|
||||
|
@ -174,13 +173,13 @@ void unit_create::update_displayed_type() const
|
|||
ut = &ut->get_variation(variation_);
|
||||
}
|
||||
|
||||
find_widget<unit_preview_pane>(w, "unit_details", false).set_displayed_type(*ut);
|
||||
find_widget<unit_preview_pane>(this, "unit_details", false).set_displayed_type(*ut);
|
||||
}
|
||||
|
||||
void unit_create::list_item_clicked()
|
||||
{
|
||||
const int selected_row
|
||||
= find_widget<listbox>(get_window(), "unit_type_list", false).get_selected_row();
|
||||
= find_widget<listbox>(this, "unit_type_list", false).get_selected_row();
|
||||
|
||||
if(selected_row == -1) {
|
||||
return;
|
||||
|
@ -192,7 +191,7 @@ void unit_create::list_item_clicked()
|
|||
return units_[selected_row]->has_gender_variation(gender);
|
||||
});
|
||||
|
||||
menu_button& var_box = find_widget<menu_button>(get_window(), "variation_box", false);
|
||||
menu_button& var_box = find_widget<menu_button>(this, "variation_box", false);
|
||||
std::vector<config> var_box_values;
|
||||
var_box_values.emplace_back("label", _("unit_variation^Default Variation"), "variation_id", "");
|
||||
|
||||
|
@ -236,7 +235,7 @@ void unit_create::list_item_clicked()
|
|||
|
||||
void unit_create::filter_text_changed(const std::string& text)
|
||||
{
|
||||
listbox& list = find_widget<listbox>(get_window(), "unit_type_list", false);
|
||||
listbox& list = find_widget<listbox>(this, "unit_type_list", false);
|
||||
|
||||
const std::vector<std::string> words = utils::split(text, ' ');
|
||||
|
||||
|
@ -289,8 +288,7 @@ void unit_create::gender_toggle_callback(const unit_race::GENDER val)
|
|||
|
||||
void unit_create::variation_menu_callback()
|
||||
{
|
||||
window& window = *this->get_window();
|
||||
menu_button& var_box = find_widget<menu_button>(&window, "variation_box", false);
|
||||
menu_button& var_box = find_widget<menu_button>(this, "variation_box", false);
|
||||
variation_ = var_box.get_value_config()["variation_id"].str();
|
||||
|
||||
update_displayed_type();
|
||||
|
|
|
@ -98,7 +98,7 @@ private:
|
|||
void gender_toggle_callback(const unit_race::GENDER val);
|
||||
void variation_menu_callback();
|
||||
|
||||
void update_displayed_type() const;
|
||||
void update_displayed_type();
|
||||
|
||||
group<unit_race::GENDER> gender_toggle;
|
||||
};
|
||||
|
|
|
@ -45,7 +45,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(unit_list)
|
||||
|
||||
unit_list::unit_list(std::vector<unit_const_ptr>& unit_list, map_location& scroll_to)
|
||||
: unit_list_(unit_list)
|
||||
: modal_dialog(window_id())
|
||||
, unit_list_(unit_list)
|
||||
, scroll_to_(scroll_to)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -59,7 +59,8 @@ static listbox::order_pair sort_default { 2, sort_order::type::descending};
|
|||
REGISTER_DIALOG(unit_recall)
|
||||
|
||||
unit_recall::unit_recall(std::vector<unit_const_ptr>& recall_list, team& team)
|
||||
: recall_list_(recall_list)
|
||||
: modal_dialog(window_id())
|
||||
, recall_list_(recall_list)
|
||||
, team_(team)
|
||||
, selected_index_()
|
||||
, filter_options_()
|
||||
|
|
|
@ -42,7 +42,8 @@ namespace gui2::dialogs
|
|||
REGISTER_DIALOG(unit_recruit)
|
||||
|
||||
unit_recruit::unit_recruit(std::map<const unit_type*, t_string>& recruit_map, team& team)
|
||||
: recruit_list_()
|
||||
: modal_dialog(window_id())
|
||||
, recruit_list_()
|
||||
, recruit_map_(recruit_map)
|
||||
, team_(team)
|
||||
, selected_index_(0)
|
||||
|
|
|
@ -139,7 +139,8 @@ wml_error::wml_error(const std::string& summary,
|
|||
const std::string& post_summary,
|
||||
const std::vector<std::string>& files,
|
||||
const std::string& details)
|
||||
: have_files_(!files.empty())
|
||||
: modal_dialog(window_id())
|
||||
, have_files_(!files.empty())
|
||||
, have_post_summary_(!post_summary.empty())
|
||||
, report_()
|
||||
{
|
||||
|
|
|
@ -45,11 +45,14 @@ private:
|
|||
class wml_message_base : public modal_dialog
|
||||
{
|
||||
public:
|
||||
wml_message_base(const std::string& title,
|
||||
const std::string& message,
|
||||
const std::string& portrait,
|
||||
const bool mirror)
|
||||
: title_(title)
|
||||
wml_message_base(
|
||||
const std::string& window_id,
|
||||
const std::string& title,
|
||||
const std::string& message,
|
||||
const std::string& portrait,
|
||||
const bool mirror)
|
||||
: modal_dialog(window_id)
|
||||
, title_(title)
|
||||
, image_("")
|
||||
, message_(message)
|
||||
, portrait_(portrait)
|
||||
|
@ -137,7 +140,7 @@ public:
|
|||
const std::string& message,
|
||||
const std::string& portrait,
|
||||
const bool mirror)
|
||||
: wml_message_base(title, message, portrait, mirror)
|
||||
: wml_message_base(window_id(), title, message, portrait, mirror)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -153,7 +156,7 @@ public:
|
|||
const std::string& message,
|
||||
const std::string& portrait,
|
||||
const bool mirror)
|
||||
: wml_message_base(title, message, portrait, mirror)
|
||||
: wml_message_base(window_id(), title, message, portrait, mirror)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -275,7 +275,7 @@ point container_base::border_space() const
|
|||
|
||||
void container_base::inject_linked_groups()
|
||||
{
|
||||
for(const auto& lg : config()->linked_groups) {
|
||||
for(const auto& lg : get_config()->linked_groups) {
|
||||
if(!get_window()->has_linked_size_group(lg.id)) {
|
||||
get_window()->init_linked_size_group(lg.id, lg.fixed_width, lg.fixed_height);
|
||||
}
|
||||
|
|
|
@ -297,12 +297,12 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
resolution_definition_ptr config()
|
||||
resolution_definition_ptr get_config()
|
||||
{
|
||||
return config_;
|
||||
}
|
||||
|
||||
resolution_definition_const_ptr config() const
|
||||
resolution_definition_const_ptr get_config() const
|
||||
{
|
||||
return config_;
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ protected:
|
|||
"Given type's resolution object does not derive from resolution_definition."
|
||||
);
|
||||
|
||||
return std::static_pointer_cast<const typename T::resolution>(config());
|
||||
return std::static_pointer_cast<const typename T::resolution>(get_config());
|
||||
}
|
||||
|
||||
void set_config(resolution_definition_ptr config)
|
||||
|
|
|
@ -59,7 +59,7 @@ toggle_button::toggle_button(const implementation::builder_toggle_button& builde
|
|||
|
||||
unsigned toggle_button::num_states() const
|
||||
{
|
||||
std::div_t res = std::div(this->config()->state.size(), COUNT);
|
||||
std::div_t res = std::div(this->get_config()->state.size(), COUNT);
|
||||
assert(res.rem == 0);
|
||||
assert(res.quot > 0);
|
||||
return res.quot;
|
||||
|
|
|
@ -80,7 +80,7 @@ toggle_panel::toggle_panel(const implementation::builder_toggle_panel& builder)
|
|||
|
||||
unsigned toggle_panel::num_states() const
|
||||
{
|
||||
std::div_t res = std::div(this->config()->state.size(), COUNT);
|
||||
std::div_t res = std::div(this->get_config()->state.size(), COUNT);
|
||||
assert(res.rem == 0);
|
||||
assert(res.quot > 0);
|
||||
return res.quot;
|
||||
|
|
Loading…
Add table
Reference in a new issue