From 5e6f0e12ac6f4ad1c7679fca4d1fcad8aa47448e Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Tue, 12 Jan 2016 20:42:47 +1100 Subject: [PATCH] Pass CVideo arguments directly preferences-related functions This isn't perfect, and it still calls display::get_singleton in some unsafe areas Additionally, fullscreen toggling seems to break - maximized state isn't remembered --- src/editor/controller/editor_controller.cpp | 2 +- src/editor/map/context_manager.cpp | 10 +- src/filechooser.cpp | 22 +- src/filechooser.hpp | 6 +- src/game_initialization/multiplayer.cpp | 2 +- src/game_launcher.cpp | 4 +- src/game_preferences_display.cpp | 222 ++++++++++---------- src/gui/dialogs/editor/custom_tod.cpp | 3 +- src/hotkey/hotkey_preferences_display.cpp | 72 +++---- src/menu_events.cpp | 6 +- src/preferences_display.cpp | 16 +- src/preferences_display.hpp | 16 +- 12 files changed, 190 insertions(+), 191 deletions(-) diff --git a/src/editor/controller/editor_controller.cpp b/src/editor/controller/editor_controller.cpp index 7dac79c291d4..20372bd74e51 100644 --- a/src/editor/controller/editor_controller.cpp +++ b/src/editor/controller/editor_controller.cpp @@ -1072,7 +1072,7 @@ void editor_controller::show_menu(const std::vector& items_arg, int void editor_controller::preferences() { gui_->video().clear_all_help_strings(); - preferences::show_preferences_dialog(*gui_, game_config_); + preferences::show_preferences_dialog(gui_->video(), game_config_); gui_->redraw_everything(); } diff --git a/src/editor/map/context_manager.cpp b/src/editor/map/context_manager.cpp index c12fd014c41f..337ddca70580 100644 --- a/src/editor/map/context_manager.cpp +++ b/src/editor/map/context_manager.cpp @@ -190,7 +190,7 @@ void context_manager::load_map_dialog(bool force_same_context /* = false */) if (fn.empty()) { fn = default_dir_; } - int res = dialogs::show_file_chooser_dialog(gui_, fn, _("Choose a File to Open")); + int res = dialogs::show_file_chooser_dialog(gui_.video(), fn, _("Choose a File to Open")); if (res == 0) { load_map(fn, !force_same_context); } @@ -464,7 +464,7 @@ void context_manager::apply_mask_dialog() if (fn.empty()) { fn = default_dir_; } - int res = dialogs::show_file_chooser_dialog(gui_, fn, _("Choose a Mask to Apply")); + int res = dialogs::show_file_chooser_dialog(gui_.video(), fn, _("Choose a Mask to Apply")); if (res == 0) { try { map_context mask(game_config_, fn, gui_); @@ -501,7 +501,7 @@ void context_manager::create_mask_to_dialog() if (fn.empty()) { fn = default_dir_; } - int res = dialogs::show_file_chooser_dialog(gui_, fn, _("Choose Target Map")); + int res = dialogs::show_file_chooser_dialog(gui_.video(), fn, _("Choose Target Map")); if (res == 0) { try { map_context map(game_config_, fn, gui_); @@ -625,7 +625,7 @@ void context_manager::save_map_as_dialog() int overwrite_res = 1; do { input_name = old_input_name; - int res = dialogs::show_file_chooser_dialog_save(gui_, input_name, _("Save the Map As"), ".map"); + int res = dialogs::show_file_chooser_dialog_save(gui_.video(), input_name, _("Save the Map As"), ".map"); if (res == 0) { if (filesystem::file_exists(input_name)) { res = gui2::show_message(gui_.video(), "", @@ -653,7 +653,7 @@ void context_manager::save_scenario_as_dialog() int overwrite_res = 1; do { input_name = old_input_name; - int res = dialogs::show_file_chooser_dialog_save(gui_, input_name, _("Save the Scenario As"), ".cfg"); + int res = dialogs::show_file_chooser_dialog_save(gui_.video(), input_name, _("Save the Scenario As"), ".cfg"); if (res == 0) { if (filesystem::file_exists(input_name)) { res = gui2::show_message(gui_.video(), "", diff --git a/src/filechooser.cpp b/src/filechooser.cpp index 312b7ed6ec43..65d62c8a86af 100644 --- a/src/filechooser.cpp +++ b/src/filechooser.cpp @@ -27,12 +27,12 @@ namespace dialogs { -int show_file_chooser_dialog(display &disp, std::string &filename, +int show_file_chooser_dialog(CVideo& video, std::string &filename, std::string const &title, bool show_directory_buttons, const std::string& type_a_head, int xloc, int yloc) { - file_dialog d(disp, filename, title, "", show_directory_buttons); + file_dialog d(video, filename, title, "", show_directory_buttons); if (!type_a_head.empty()) d.select_file(type_a_head); if(d.show(xloc, yloc) >= 0) { @@ -41,14 +41,14 @@ int show_file_chooser_dialog(display &disp, std::string &filename, return d.result(); } -int show_file_chooser_dialog_save(display &disp, std::string &filename, +int show_file_chooser_dialog_save(CVideo& video, std::string &filename, std::string const &title, const std::string& default_file_name, bool show_directory_buttons, const std::string& type_a_head, int xloc, int yloc) { - file_dialog d(disp, filename, title, default_file_name, show_directory_buttons); + file_dialog d(video, filename, title, default_file_name, show_directory_buttons); d.set_autocomplete(false); if (!type_a_head.empty()) d.select_file(type_a_head); @@ -58,10 +58,10 @@ int show_file_chooser_dialog_save(display &disp, std::string &filename, return d.result(); } -file_dialog::file_dialog(display &disp, const std::string& file_path, +file_dialog::file_dialog(CVideo& video, const std::string& file_path, const std::string& title, const std::string& default_file_name, bool show_directory_buttons) : - gui::dialog(disp.video(), title, file_path, gui::OK_CANCEL), + gui::dialog(video, title, file_path, gui::OK_CANCEL), show_directory_buttons_(show_directory_buttons), files_list_(NULL), last_selection_(-1), @@ -69,9 +69,9 @@ file_dialog::file_dialog(display &disp, const std::string& file_path, chosen_file_(".."), autocomplete_(true) { - files_list_ = new gui::file_menu(disp.video(), file_path); - const unsigned file_list_height = (disp.h() / 2); - const unsigned file_list_width = std::min(files_list_->width(), (disp.w() / 4)); + files_list_ = new gui::file_menu(video, file_path); + const unsigned file_list_height = (display::get_singleton()->h() / 2); + const unsigned file_list_width = std::min(files_list_->width(), (display::get_singleton()->w() / 4)); files_list_->set_measurements(file_list_width, file_list_height); files_list_->set_max_height(file_list_height); set_menu(files_list_); @@ -80,9 +80,9 @@ file_dialog::file_dialog(display &disp, const std::string& file_path, set_textbox(_("File: "), format_filename(file_path), 100); if (show_directory_buttons_) { - add_button( new gui::dialog_button(disp.video(), _("Delete File"), + add_button( new gui::dialog_button(video, _("Delete File"), gui::button::TYPE_PRESS, gui::DELETE_ITEM), dialog::BUTTON_EXTRA); - add_button( new gui::dialog_button(disp.video(), _("New Folder"), + add_button( new gui::dialog_button(video, _("New Folder"), gui::button::TYPE_PRESS, gui::CREATE_ITEM), dialog::BUTTON_EXTRA_LEFT); } } diff --git a/src/filechooser.hpp b/src/filechooser.hpp index bc839d374fa1..871ecc3348b3 100644 --- a/src/filechooser.hpp +++ b/src/filechooser.hpp @@ -29,7 +29,7 @@ namespace dialogs class file_dialog : public gui::dialog { public: - file_dialog(display &disp, const std::string& file_path, const std::string& title, const std::string& default_file_name, bool show_directory_buttons); + file_dialog(CVideo& video, const std::string& file_path, const std::string& title, const std::string& default_file_name, bool show_directory_buttons); virtual gui::dialog::dimension_measurements layout(int xloc=-1, int yloc=-1); @@ -62,14 +62,14 @@ class file_dialog : public gui::dialog { /// contains the chosen file when the function returns. Return the /// index of the button pressed, or -1 if the dialog was canceled /// through keypress. -int show_file_chooser_dialog(display &displ, std::string &filename, +int show_file_chooser_dialog(CVideo& videol, std::string &filename, std::string const &title, bool show_directory_buttons = true, const std::string& file_to_search = "", int xloc = -1, int yloc = -1); /// Show a filechooser dialog in a "save" mode, that is, without relying /// on autocomplete to allow saving under any filename -int show_file_chooser_dialog_save(display &displ, std::string &filename, +int show_file_chooser_dialog_save(CVideo& video, std::string &filename, std::string const &title, const std::string& default_file_name = "", bool show_directory_buttons = true, diff --git a/src/game_initialization/multiplayer.cpp b/src/game_initialization/multiplayer.cpp index 73e02dbde8ad..91451a8df3fb 100644 --- a/src/game_initialization/multiplayer.cpp +++ b/src/game_initialization/multiplayer.cpp @@ -641,7 +641,7 @@ static void do_preferences_dialog(game_display& disp, const config& game_config) { DBG_MP << "displaying preferences dialog" << std::endl; const preferences::display_manager disp_manager(&disp); - preferences::show_preferences_dialog(disp,game_config); + preferences::show_preferences_dialog(disp.video(),game_config); /** * The screen size might have changed force an update of the size. diff --git a/src/game_launcher.cpp b/src/game_launcher.cpp index b05b1271ec8f..2f7a90eacfdd 100644 --- a/src/game_launcher.cpp +++ b/src/game_launcher.cpp @@ -956,7 +956,7 @@ bool game_launcher::play_multiplayer() start_wesnothd(); } catch(game::mp_server_error&) { - std::string path = preferences::show_wesnothd_server_search(disp()); + std::string path = preferences::show_wesnothd_server_search(disp().video()); if (!path.empty()) { @@ -1076,7 +1076,7 @@ bool game_launcher::change_language() void game_launcher::show_preferences() { const preferences::display_manager disp_manager(&disp()); - preferences::show_preferences_dialog(disp(), + preferences::show_preferences_dialog(disp().video(), game_config_manager::get()->game_config()); disp().redraw_everything(); diff --git a/src/game_preferences_display.cpp b/src/game_preferences_display.cpp index 8c91eae7a6f8..c42c07da1b3c 100644 --- a/src/game_preferences_display.cpp +++ b/src/game_preferences_display.cpp @@ -67,7 +67,7 @@ struct advanced_preferences_sorter class preferences_parent_dialog : public gui::dialog { public: - preferences_parent_dialog(display &disp) : dialog(disp.video(), _("Preferences"),"",gui::CLOSE_ONLY), + preferences_parent_dialog(CVideo &video) : dialog(video, _("Preferences"),"",gui::CLOSE_ONLY), clear_buttons_(false) {} ~preferences_parent_dialog() {write_preferences();} void action(gui::dialog_process_info &info) @@ -85,7 +85,7 @@ class preferences_parent_dialog : public gui::dialog class preferences_dialog : public gui::preview_pane { public: - preferences_dialog(display& disp, const config& game_cfg); + preferences_dialog(CVideo& video, const config& game_cfg); virtual sdl_handler_vector handler_members(); private: @@ -167,7 +167,7 @@ class preferences_dialog : public gui::preview_pane /*extra tab*/ COLOR_TAB, ADVANCED_SOUND_TAB, FRIENDS_TAB}; TAB tab_; - display &disp_; + CVideo& video_; const config& game_cfg_; std::vector adv_preferences_cfg_; public: @@ -175,76 +175,76 @@ class preferences_dialog : public gui::preview_pane }; //change -preferences_dialog::preferences_dialog(display& disp, const config& game_cfg) - : gui::preview_pane(disp.video()), +preferences_dialog::preferences_dialog(CVideo& video, const config& game_cfg) + : gui::preview_pane(video), friends_names_(), color_ids_(), - music_slider_(disp.video()), sound_slider_(disp.video()), - UI_sound_slider_(disp.video()), bell_slider_(disp.video()), - scroll_slider_(disp.video()), - chat_lines_slider_(disp.video()), buffer_size_slider_(disp.video()), - idle_anim_slider_(disp.video()), autosavemax_slider_(disp.video()), - advanced_slider_(disp.video()), - turbo_slider_(disp.video()), - - - fullscreen_button_(disp.video(), _("Full screen"), gui::button::TYPE_CHECK), - turbo_button_(disp.video(), _("Accelerated speed"), gui::button::TYPE_CHECK), - show_ai_moves_button_(disp.video(), _("Skip AI moves"), gui::button::TYPE_CHECK), - interrupt_when_ally_sighted_button_(disp.video(), _("Interrupt move when an ally is sighted"), gui::button::TYPE_CHECK), - show_grid_button_(disp.video(), _("Show grid"), gui::button::TYPE_CHECK), - save_replays_button_(disp.video(), _("Save replays at the end of scenarios"), gui::button::TYPE_CHECK), - delete_saves_button_(disp.video(), _("Delete auto-saves at the end of scenarios"), gui::button::TYPE_CHECK), - show_lobby_joins_button1_(disp.video(), _("Do not show lobby joins"), gui::button::TYPE_RADIO), - show_lobby_joins_button2_(disp.video(), _("Show lobby joins of friends only"), gui::button::TYPE_RADIO), - show_lobby_joins_button3_(disp.video(), _("Show all lobby joins"), gui::button::TYPE_RADIO), - sort_list_by_group_button_(disp.video(), _("Sort lobby list"), gui::button::TYPE_CHECK), - iconize_list_button_(disp.video(), _("Iconize lobby list"), gui::button::TYPE_CHECK), - remember_pw_button_(disp.video(), _("Save password to preferences (plain text)"), gui::button::TYPE_CHECK), - mp_server_search_button_(disp.video(), _("Set Path to wesnothd")), - friends_list_button_(disp.video(), _("Friends List")), - friends_back_button_(disp.video(), _("Multiplayer Options")), - friends_add_friend_button_(disp.video(), _("Add As Friend")), - friends_add_ignore_button_(disp.video(), _("Add As Ignore")), - friends_remove_button_(disp.video(), _("Remove")), - show_floating_labels_button_(disp.video(), _("Show floating labels"), gui::button::TYPE_CHECK), - turn_dialog_button_(disp.video(), _("Turn dialog"), gui::button::TYPE_CHECK), - whiteboard_on_start_button_(disp.video(), _("Enable planning mode on start"), gui::button::TYPE_CHECK), - hide_whiteboard_button_(disp.video(), _("Hide allies’ plans by default"), gui::button::TYPE_CHECK), - turn_bell_button_(disp.video(), _("Turn bell"), gui::button::TYPE_CHECK), - show_team_colors_button_(disp.video(), _("Show team colors"), gui::button::TYPE_CHECK), - show_haloing_button_(disp.video(), _("Show haloing effects"), gui::button::TYPE_CHECK), - video_mode_button_(disp.video(), _("Change Resolution")), - theme_button_(disp.video(), _("Theme")), - hotkeys_button_(disp.video(), _("Hotkeys")), - colors_button_(disp.video(), _("Colors")), - cache_button_(disp.video(), _("Cache")), - advanced_button_(disp.video(), "", gui::button::TYPE_CHECK), - sound_button_(disp.video(), _("Sound effects"), gui::button::TYPE_CHECK), - music_button_(disp.video(), _("Music"), gui::button::TYPE_CHECK), - chat_timestamp_button_(disp.video(), _("Chat timestamping"), gui::button::TYPE_CHECK), - advanced_sound_button_(disp.video(), _("sound^Advanced Options")), - normal_sound_button_(disp.video(), _("sound^Standard Options")), - display_button_(disp.video(), _("colors^Display")), - UI_sound_button_(disp.video(), _("User interface sounds"), gui::button::TYPE_CHECK), - sample_rate_button1_(disp.video(), "22050", gui::button::TYPE_RADIO), - sample_rate_button2_(disp.video(), "44100", gui::button::TYPE_RADIO), - sample_rate_button3_(disp.video(), _("Custom"), gui::button::TYPE_RADIO), - confirm_sound_button_(disp.video(), _("Apply")), - idle_anim_button_(disp.video(), _("Show unit idle animations"), gui::button::TYPE_CHECK), - standing_anim_button_(disp.video(), _("Show unit standing animations"), gui::button::TYPE_CHECK), - animate_map_button_(disp.video(), _("Animate map"), gui::button::TYPE_CHECK), - disable_auto_move_button_(disp.video(), _("Disable automatic moves"), gui::button::TYPE_CHECK), - mp_alerts_options_button_(disp.video(), _("Alerts")), - advanced_graphics_options_button_(disp.video(), _("Advanced")), + music_slider_(video), sound_slider_(video), + UI_sound_slider_(video), bell_slider_(video), + scroll_slider_(video), + chat_lines_slider_(video), buffer_size_slider_(video), + idle_anim_slider_(video), autosavemax_slider_(video), + advanced_slider_(video), + turbo_slider_(video), + + + fullscreen_button_(video, _("Full screen"), gui::button::TYPE_CHECK), + turbo_button_(video, _("Accelerated speed"), gui::button::TYPE_CHECK), + show_ai_moves_button_(video, _("Skip AI moves"), gui::button::TYPE_CHECK), + interrupt_when_ally_sighted_button_(video, _("Interrupt move when an ally is sighted"), gui::button::TYPE_CHECK), + show_grid_button_(video, _("Show grid"), gui::button::TYPE_CHECK), + save_replays_button_(video, _("Save replays at the end of scenarios"), gui::button::TYPE_CHECK), + delete_saves_button_(video, _("Delete auto-saves at the end of scenarios"), gui::button::TYPE_CHECK), + show_lobby_joins_button1_(video, _("Do not show lobby joins"), gui::button::TYPE_RADIO), + show_lobby_joins_button2_(video, _("Show lobby joins of friends only"), gui::button::TYPE_RADIO), + show_lobby_joins_button3_(video, _("Show all lobby joins"), gui::button::TYPE_RADIO), + sort_list_by_group_button_(video, _("Sort lobby list"), gui::button::TYPE_CHECK), + iconize_list_button_(video, _("Iconize lobby list"), gui::button::TYPE_CHECK), + remember_pw_button_(video, _("Save password to preferences (plain text)"), gui::button::TYPE_CHECK), + mp_server_search_button_(video, _("Set Path to wesnothd")), + friends_list_button_(video, _("Friends List")), + friends_back_button_(video, _("Multiplayer Options")), + friends_add_friend_button_(video, _("Add As Friend")), + friends_add_ignore_button_(video, _("Add As Ignore")), + friends_remove_button_(video, _("Remove")), + show_floating_labels_button_(video, _("Show floating labels"), gui::button::TYPE_CHECK), + turn_dialog_button_(video, _("Turn dialog"), gui::button::TYPE_CHECK), + whiteboard_on_start_button_(video, _("Enable planning mode on start"), gui::button::TYPE_CHECK), + hide_whiteboard_button_(video, _("Hide allies’ plans by default"), gui::button::TYPE_CHECK), + turn_bell_button_(video, _("Turn bell"), gui::button::TYPE_CHECK), + show_team_colors_button_(video, _("Show team colors"), gui::button::TYPE_CHECK), + show_haloing_button_(video, _("Show haloing effects"), gui::button::TYPE_CHECK), + video_mode_button_(video, _("Change Resolution")), + theme_button_(video, _("Theme")), + hotkeys_button_(video, _("Hotkeys")), + colors_button_(video, _("Colors")), + cache_button_(video, _("Cache")), + advanced_button_(video, "", gui::button::TYPE_CHECK), + sound_button_(video, _("Sound effects"), gui::button::TYPE_CHECK), + music_button_(video, _("Music"), gui::button::TYPE_CHECK), + chat_timestamp_button_(video, _("Chat timestamping"), gui::button::TYPE_CHECK), + advanced_sound_button_(video, _("sound^Advanced Options")), + normal_sound_button_(video, _("sound^Standard Options")), + display_button_(video, _("colors^Display")), + UI_sound_button_(video, _("User interface sounds"), gui::button::TYPE_CHECK), + sample_rate_button1_(video, "22050", gui::button::TYPE_RADIO), + sample_rate_button2_(video, "44100", gui::button::TYPE_RADIO), + sample_rate_button3_(video, _("Custom"), gui::button::TYPE_RADIO), + confirm_sound_button_(video, _("Apply")), + idle_anim_button_(video, _("Show unit idle animations"), gui::button::TYPE_CHECK), + standing_anim_button_(video, _("Show unit standing animations"), gui::button::TYPE_CHECK), + animate_map_button_(video, _("Animate map"), gui::button::TYPE_CHECK), + disable_auto_move_button_(video, _("Disable automatic moves"), gui::button::TYPE_CHECK), + mp_alerts_options_button_(video, _("Alerts")), + advanced_graphics_options_button_(video, _("Advanced")), // Colors tab buttons - orb_colors_defaults_(disp.video(), _("Defaults")), - orb_colors_enemy_toggle_(disp.video(), _("Show enemy orb"), gui::button::TYPE_CHECK), - orb_colors_ally_toggle_(disp.video(), _("Show ally orb"), gui::button::TYPE_CHECK), - orb_colors_unmoved_toggle_(disp.video(), _("Show unmoved orb"), gui::button::TYPE_CHECK), - orb_colors_partial_toggle_(disp.video(), _("Show partial moved orb"), gui::button::TYPE_CHECK), - orb_colors_moved_toggle_(disp.video(), _("Show moved orb"), gui::button::TYPE_CHECK), + orb_colors_defaults_(video, _("Defaults")), + orb_colors_enemy_toggle_(video, _("Show enemy orb"), gui::button::TYPE_CHECK), + orb_colors_ally_toggle_(video, _("Show ally orb"), gui::button::TYPE_CHECK), + orb_colors_unmoved_toggle_(video, _("Show unmoved orb"), gui::button::TYPE_CHECK), + orb_colors_partial_toggle_(video, _("Show partial moved orb"), gui::button::TYPE_CHECK), + orb_colors_moved_toggle_(video, _("Show moved orb"), gui::button::TYPE_CHECK), //colors tab buttons orb_colors_ally_buttons_(), @@ -254,32 +254,32 @@ preferences_dialog::preferences_dialog(display& disp, const config& game_cfg) orb_colors_unmoved_buttons_(), // Sound tab labels - music_label_(disp.video(), _("Volume:"), font::SIZE_SMALL), - sound_label_(disp.video(), _("Volume:"), font::SIZE_SMALL), - UI_sound_label_(disp.video(), _("Volume:"), font::SIZE_SMALL), - bell_label_(disp.video(), _("Volume:"), font::SIZE_SMALL), + music_label_(video, _("Volume:"), font::SIZE_SMALL), + sound_label_(video, _("Volume:"), font::SIZE_SMALL), + UI_sound_label_(video, _("Volume:"), font::SIZE_SMALL), + bell_label_(video, _("Volume:"), font::SIZE_SMALL), - scroll_label_(disp.video(), _("Scroll speed:")), - chat_lines_label_(disp.video(), ""), - turbo_slider_label_(disp.video(), "", font::SIZE_SMALL ), - sample_rate_label_(disp.video(), _("Sample rate (Hz):")), buffer_size_label_(disp.video(), ""), - idle_anim_slider_label_(disp.video(), _("Frequency:"), font::SIZE_SMALL ), - autosavemax_slider_label_(disp.video(), "", font::SIZE_SMALL), - advanced_option_label_(disp.video(), "", font::SIZE_SMALL), + scroll_label_(video, _("Scroll speed:")), + chat_lines_label_(video, ""), + turbo_slider_label_(video, "", font::SIZE_SMALL ), + sample_rate_label_(video, _("Sample rate (Hz):")), buffer_size_label_(video, ""), + idle_anim_slider_label_(video, _("Frequency:"), font::SIZE_SMALL ), + autosavemax_slider_label_(video, "", font::SIZE_SMALL), + advanced_option_label_(video, "", font::SIZE_SMALL), - sample_rate_input_(disp.video(), 70), - friends_input_(disp.video(), 170), + sample_rate_input_(video, 70), + friends_input_(video, 170), - advanced_combo_(disp, std::vector()), + advanced_combo_(*display::get_singleton(), std::vector()), slider_label_width_(0), - advanced_(disp.video(),std::vector(),false,-1,-1,NULL,&gui::menu::bluebg_style), - friends_(disp.video(),std::vector(),false,-1,-1,NULL,&gui::menu::bluebg_style), + advanced_(video,std::vector(),false,-1,-1,NULL,&gui::menu::bluebg_style), + friends_(video,std::vector(),false,-1,-1,NULL,&gui::menu::bluebg_style), advanced_selection_(-1), friends_selection_(-1), - tab_(GENERAL_TAB), disp_(disp), game_cfg_(game_cfg), adv_preferences_cfg_(), parent(NULL) + tab_(GENERAL_TAB), video_(video), game_cfg_(game_cfg), adv_preferences_cfg_(), parent(NULL) { sort_advanced_preferences(); @@ -321,7 +321,7 @@ preferences_dialog::preferences_dialog(display& disp, const config& game_cfg) std::string image_path = "misc/orb"; //game_config::images::orb; std::string image_path_suffix = "~RC(magenta>" + color_id + ")"; - gui::button color_radio_button(disp.video(), "", gui::button::TYPE_IMAGE, image_path, gui::button::MINIMUM_SPACE); + gui::button color_radio_button(video, "", gui::button::TYPE_IMAGE, image_path, gui::button::MINIMUM_SPACE); color_radio_button.set_tooltip_string(color_name); color_radio_button.set_help_string(color_name); color_radio_button.set_image_path_suffix(image_path_suffix); @@ -925,11 +925,11 @@ void preferences_dialog::process_event() if (hide_whiteboard_button_.pressed()) set_hide_whiteboard(hide_whiteboard_button_.checked()); if (hotkeys_button_.pressed()) { - show_hotkeys_preferences_dialog(disp_); + show_hotkeys_preferences_dialog(video_); parent->clear_buttons(); } if (cache_button_.pressed()) { - gui2::tgame_cache_options::display(disp_.video()); + gui2::tgame_cache_options::display(video_); parent->clear_buttons(); } @@ -955,13 +955,13 @@ void preferences_dialog::process_event() if (show_floating_labels_button_.pressed()) set_show_floating_labels(show_floating_labels_button_.checked()); if (video_mode_button_.pressed()) - show_video_mode_dialog(disp_); + show_video_mode_dialog(video_); if (theme_button_.pressed()) { - show_theme_dialog(disp_); + show_theme_dialog(video_); parent->clear_buttons(); } if (fullscreen_button_.pressed()) - disp_.video().set_fullscreen(fullscreen_button_.checked()); + video_.set_fullscreen(fullscreen_button_.checked()); if (show_haloing_button_.pressed()) set_show_haloes(show_haloing_button_.checked()); if (show_team_colors_button_.pressed()) @@ -987,7 +987,7 @@ void preferences_dialog::process_event() set_selection(COLOR_TAB); if (advanced_graphics_options_button_.pressed()) - show_advanced_graphics_dialog(disp_); + show_advanced_graphics_dialog(video_); return; } @@ -1192,7 +1192,7 @@ void preferences_dialog::process_event() if (mp_server_search_button_.pressed()) { - std::string path = show_wesnothd_server_search(disp_); + std::string path = show_wesnothd_server_search(video_); if (!path.empty()) { preferences::set_mp_server_program_name(path); @@ -1201,7 +1201,7 @@ void preferences_dialog::process_event() } if (mp_alerts_options_button_.pressed()) { - show_mp_alerts_dialog(disp_); + show_mp_alerts_dialog(video_); } set_chat_lines(chat_lines_slider_.value()); @@ -1239,7 +1239,7 @@ void preferences_dialog::process_event() friends_input_.clear(); set_friends_menu(); } else { - gui2::show_transient_error_message(disp_.video(), _("Invalid username")); + gui2::show_transient_error_message(video_, _("Invalid username")); } } if (friends_add_ignore_button_.pressed()) { @@ -1256,7 +1256,7 @@ void preferences_dialog::process_event() friends_input_.clear(); set_friends_menu(); } else { - gui2::show_transient_error_message(disp_.video(), _("Invalid username")); + gui2::show_transient_error_message(video_, _("Invalid username")); } } if (friends_remove_button_.pressed()) { @@ -1386,7 +1386,7 @@ void preferences_dialog::process_event() } if(pref["field"] == "disable_notifications" && !advanced_button_check && !desktop::notifications::available()) { - gui2::show_transient_message(disp_.video(), + gui2::show_transient_message(video_, _("Desktop Notifications Unavailable"), _("This build of Wesnoth does not include support for desktop notifications. Check with the packager for your platform, or if compiling yourself, make sure that you have the appropriate dependencies installed.")); } @@ -1682,7 +1682,7 @@ void preferences_dialog::set_selection(int index) } //end anonymous namespace -void show_preferences_dialog(display& disp, const config& game_cfg) +void show_preferences_dialog(CVideo& video, const config& game_cfg) { std::vector items; @@ -1698,16 +1698,16 @@ void show_preferences_dialog(display& disp, const config& game_cfg) items[1] = "*" + items[1]; } - preferences_dialog dialog(disp,game_cfg); - dialog.parent.assign(new preferences_parent_dialog(disp)); + preferences_dialog dialog(video,game_cfg); + dialog.parent.assign(new preferences_parent_dialog(video)); dialog.parent->set_menu(items); dialog.parent->add_pane(&dialog); dialog.parent->show(); } -bool show_theme_dialog(display& disp) +bool show_theme_dialog(CVideo& video) { - std::vector themes = disp.get_theme().get_known_themes(); + std::vector themes = display::get_singleton()->get_theme().get_known_themes(); if(!themes.empty()){ gui2::ttheme_list dlg(themes); @@ -1718,7 +1718,7 @@ bool show_theme_dialog(display& disp) } } - dlg.show(disp.video()); + dlg.show(video); const int action = dlg.selected_index(); if(action >= 0){ @@ -1728,23 +1728,23 @@ bool show_theme_dialog(display& disp) return 1; } } else { - gui2::show_transient_message(disp.video(),"",_("No known themes. Try changing from within an existing game.")); + gui2::show_transient_message(video,"",_("No known themes. Try changing from within an existing game.")); } return 0; } -void show_mp_alerts_dialog(display & disp) +void show_mp_alerts_dialog(CVideo& video) { - gui2::tmp_alerts_options::display(disp.video()); + gui2::tmp_alerts_options::display(video); } -void show_advanced_graphics_dialog(display & disp) +void show_advanced_graphics_dialog(CVideo& video) { - gui2::tadvanced_graphics_options::display(disp.video()); + gui2::tadvanced_graphics_options::display(video); } -std::string show_wesnothd_server_search(display& disp) +std::string show_wesnothd_server_search(CVideo& video) { // Showing file_chooser so user can search the wesnothd std::string old_path = preferences::get_mp_server_program_name(); @@ -1785,7 +1785,7 @@ std::string show_wesnothd_server_search(display& disp) _("Find $filename server binary to host networked games") , &symbols); - int res = dialogs::show_file_chooser_dialog(disp, path, title, false, filename); + int res = dialogs::show_file_chooser_dialog(video, path, title, false, filename); if (res == 0) return path; else diff --git a/src/gui/dialogs/editor/custom_tod.cpp b/src/gui/dialogs/editor/custom_tod.cpp index fb45e6325dba..eaf6372fa2d2 100644 --- a/src/gui/dialogs/editor/custom_tod.cpp +++ b/src/gui/dialogs/editor/custom_tod.cpp @@ -125,8 +125,7 @@ void tcustom_tod::select_file(const std::string& filename, dn = dir; } - int res = dialogs::show_file_chooser_dialog( - *display_, dn, _("Choose File")); + int res = dialogs::show_file_chooser_dialog(display_->video(), dn, _("Choose File")); if(res == 0) { if(va == "image") { tods_[current_tod_].image = dn; diff --git a/src/hotkey/hotkey_preferences_display.cpp b/src/hotkey/hotkey_preferences_display.cpp index cb08170dbdb9..56c6ebb63088 100644 --- a/src/hotkey/hotkey_preferences_display.cpp +++ b/src/hotkey/hotkey_preferences_display.cpp @@ -52,7 +52,7 @@ private : static const int truncate_at = 25; public: - hotkey_preferences_dialog(display& disp); + hotkey_preferences_dialog(CVideo& video); /** * Populates, sorts and redraws the hotkey menu specified by tab_. @@ -120,7 +120,7 @@ private : gui::menu general_hotkeys_, game_hotkeys_, editor_hotkeys_, title_screen_hotkeys_; /** The display, for usage by child dialogs */ - display &disp_; + CVideo& video_; public: /** @@ -138,8 +138,8 @@ const char* hotkey_preferences_dialog::clear_button_text = class hotkey_resetter : public gui::dialog_button_action { public: - hotkey_resetter(display& disp, hotkey_preferences_dialog& dialog) : - disp_(disp), + hotkey_resetter(CVideo& video, hotkey_preferences_dialog& dialog) : + video_(video), dialog_(dialog) {} @@ -147,14 +147,14 @@ class hotkey_resetter : public gui::dialog_button_action RESULT button_pressed(int /*selection*/) { clear_hotkeys(); - gui2::show_transient_message(disp_.video(), _("Hotkeys Reset"), + gui2::show_transient_message(video_, _("Hotkeys Reset"), _("All hotkeys have been reset to their default values.")); dialog_.set_hotkey_menu(true); return gui::CONTINUE_DIALOG; } private: - display& disp_; + CVideo& video_; hotkey_preferences_dialog& dialog_; }; @@ -162,13 +162,13 @@ class hotkey_preferences_parent_dialog: public gui::dialog { public: - hotkey_preferences_parent_dialog(display &disp, + hotkey_preferences_parent_dialog(CVideo& video, hotkey_preferences_dialog& hotkey_preferences_dialog) : - dialog(disp.video(), _("Hotkey Settings"), "", gui::OK_CANCEL), + dialog(video, _("Hotkey Settings"), "", gui::OK_CANCEL), clear_buttons_(false), hotkey_cfg_(), - resetter_(disp, hotkey_preferences_dialog) { - gui::dialog_button* reset_button = new gui::dialog_button(disp.video(), + resetter_(video, hotkey_preferences_dialog) { + gui::dialog_button* reset_button = new gui::dialog_button(video, _("Defaults"), gui::button::TYPE_PRESS, gui::CONTINUE_DIALOG, &resetter_); reset_button->set_help_string( @@ -206,7 +206,7 @@ class hotkey_preferences_parent_dialog: public gui::dialog { }; -void show_hotkeys_preferences_dialog(display& disp) { +void show_hotkeys_preferences_dialog(CVideo& video) { std::vector items; const std::string pre = IMAGE_PREFIX + std::string("icons/icon-"); @@ -232,8 +232,8 @@ void show_hotkeys_preferences_dialog(display& disp) { // The restorer will change the scope back to where we came from // when it runs out of the function's scope hotkey::scope_changer scope_restorer; - hotkey_preferences_dialog dialog(disp); - dialog.parent.assign(new hotkey_preferences_parent_dialog(disp, dialog)); + hotkey_preferences_dialog dialog(video); + dialog.parent.assign(new hotkey_preferences_parent_dialog(video, dialog)); dialog.parent->set_menu(items); dialog.parent->add_pane(&dialog); // select the tab corresponding to the current scope. @@ -245,10 +245,10 @@ void show_hotkeys_preferences_dialog(display& disp) { /* hotkey_preferences_dialog members ************************/ -hotkey_preferences_dialog::hotkey_preferences_dialog(display& disp) : - gui::preview_pane(disp.video()), - add_button_(disp.video(), _("Add Hotkey")), - clear_button_(disp.video(), _("Clear Hotkey")), +hotkey_preferences_dialog::hotkey_preferences_dialog(CVideo& video) : + gui::preview_pane(video), + add_button_(video, _("Add Hotkey")), + clear_button_(video, _("Clear Hotkey")), tab_(hotkey::SCOPE_COUNT), //SCOPE_COUNT means "hotkey with more than one scope" in this case general_commands_(), game_commands_(), @@ -263,15 +263,15 @@ hotkey_preferences_dialog::hotkey_preferences_dialog(display& disp) : title_screen_sorter_(), // Note: If you don't instantiate the menus with heading_, // the header can't be enabled later, seems to be a bug in gui::menu - general_hotkeys_(disp.video(), boost::assign::list_of(heading_), + general_hotkeys_(video, boost::assign::list_of(heading_), false, -1, -1, &general_sorter_, &gui::menu::bluebg_style), - game_hotkeys_(disp.video(), boost::assign::list_of(heading_), + game_hotkeys_(video, boost::assign::list_of(heading_), false, -1, -1, &game_sorter_, &gui::menu::bluebg_style), - editor_hotkeys_(disp.video(), boost::assign::list_of(heading_), + editor_hotkeys_(video, boost::assign::list_of(heading_), false, -1, -1, &editor_sorter_, &gui::menu::bluebg_style), - title_screen_hotkeys_(disp.video(), boost::assign::list_of(heading_), + title_screen_hotkeys_(video, boost::assign::list_of(heading_), false, -1, -1, &title_screen_sorter_, &gui::menu::bluebg_style), - disp_(disp), + video_(video), parent(NULL) { @@ -311,7 +311,7 @@ hotkey_preferences_dialog::hotkey_preferences_dialog(display& disp) : } /// @todo move to the caller? - disp_.video().clear_all_help_strings(); + video_.clear_all_help_strings(); // Initialize sorters. general_sorter_.set_alpha_sort(1).set_alpha_sort(2); @@ -559,35 +559,35 @@ void hotkey_preferences_dialog::update_location(SDL_Rect const &rect) { #pragma warning (push) #pragma warning (disable:4701) #endif -void hotkey_preferences_dialog::show_binding_dialog( - const std::string& id) { - +void hotkey_preferences_dialog::show_binding_dialog(const std::string& id) +{ // Lets bind a hotkey... + display& disp = *display::get_singleton(); const std::string text = _("Press desired hotkey (Esc cancels)"); - SDL_Rect clip_rect = sdl::create_rect(0, 0, disp_.w(), disp_.h()); + SDL_Rect clip_rect = sdl::create_rect(0, 0, disp.w(), disp.h()); SDL_Rect text_size = font::draw_text(NULL, clip_rect, font::SIZE_LARGE, font::NORMAL_COLOR, text, 0, 0); - const int centerx = disp_.w() / 2; - const int centery = disp_.h() / 2; + const int centerx = disp.w() / 2; + const int centery = disp.h() / 2; SDL_Rect dlgr = sdl::create_rect(centerx - text_size.w / 2 - 30, centery - text_size.h / 2 - 16, text_size.w + 60, text_size.h + 32); - surface_restorer restorer(&disp_.video(), dlgr); - gui::dialog_frame mini_frame(disp_.video()); + surface_restorer restorer(&video_, dlgr); + gui::dialog_frame mini_frame(video_); mini_frame.layout(centerx - text_size.w / 2 - 20, centery - text_size.h / 2 - 6, text_size.w + 40, text_size.h + 12); mini_frame.draw_background(); mini_frame.draw_border(); - font::draw_text(&disp_.video(), clip_rect, font::SIZE_LARGE, + font::draw_text(&video_, clip_rect, font::SIZE_LARGE, font::NORMAL_COLOR, text, centerx - text_size.w / 2, centery - text_size.h / 2); - disp_.update_display(); + disp.update_display(); SDL_Event event; event.type = 0; int keycode = -1, mod = -1; @@ -616,14 +616,14 @@ void hotkey_preferences_dialog::show_binding_dialog( #if SDL_VERSION_ATLEAST(2,0,0) events::peek_for_resize(); #endif - disp_.flip(); + disp.flip(); CVideo::delay(10); } while (event.type != SDL_KEYUP && event.type != SDL_JOYBUTTONUP && event.type != SDL_JOYHATMOTION && event.type != SDL_MOUSEBUTTONUP); restorer.restore(); - disp_.update_display(); + disp.update_display(); // only if not cancelled. if (!(keycode == SDLK_ESCAPE && (mod & any_mod) == 0)) { @@ -662,7 +662,7 @@ Control, Alt or Meta modifiers to avoid problems.")); */ \"$old_hotkey_action|\". Do you wish to reassign it to \"$new_hotkey_action|\"?" , symbols); - const int res = gui2::show_message(disp_.video(), + const int res = gui2::show_message(video_, _("Reassign Hotkey"), text, gui2::tmessage::yes_no_buttons); if (res == gui2::twindow::OK) { diff --git a/src/menu_events.cpp b/src/menu_events.cpp index 413ef5f9cd87..d9ad6919126a 100644 --- a/src/menu_events.cpp +++ b/src/menu_events.cpp @@ -437,7 +437,7 @@ void menu_handler::save_map() int res = 0; int overwrite = 1; do { - res = dialogs::show_file_chooser_dialog_save(*gui_, input_name, _("Save the Map As"), ".map"); + res = dialogs::show_file_chooser_dialog_save(gui_->video(), input_name, _("Save the Map As"), ".map"); if (res == 0) { if (filesystem::file_exists(input_name)) { @@ -465,7 +465,7 @@ void menu_handler::save_map() void menu_handler::preferences() { - preferences::show_preferences_dialog(*gui_, game_config_); + preferences::show_preferences_dialog(gui_->video(), game_config_); // Needed after changing fullscreen/windowed mode or display resolution gui_->redraw_everything(); } @@ -2624,7 +2624,7 @@ void console_handler::do_idle() { } void console_handler::do_theme() { - preferences::show_theme_dialog(*menu_handler_.gui_); + preferences::show_theme_dialog(menu_handler_.gui_->video()); } struct save_id_matches diff --git a/src/preferences_display.cpp b/src/preferences_display.cpp index c78563a8dd8b..33705d26d9ff 100644 --- a/src/preferences_display.cpp +++ b/src/preferences_display.cpp @@ -116,17 +116,17 @@ void set_idle_anim_rate(int rate) { } -bool show_video_mode_dialog(display& disp) +bool show_video_mode_dialog(CVideo& video) { const resize_lock prevent_resizing; const events::event_context dialog_events_context; std::vector > resolutions - = disp.video().get_available_resolutions(); + = video.get_available_resolutions(); if(resolutions.empty()) { gui2::show_transient_message( - disp.video() + video , "" , _("There are no alternative video modes available")); @@ -139,7 +139,7 @@ bool show_video_mode_dialog(display& disp) for(size_t k = 0; k < resolutions.size(); ++k) { std::pair const& res = resolutions[k]; - if (res == disp.video().current_resolution()) + if (res == disp->video().current_resolution()) current_choice = static_cast(k); std::ostringstream option; @@ -153,16 +153,16 @@ bool show_video_mode_dialog(display& disp) gui2::tsimple_item_selector dlg(_("Choose Resolution"), "", options); dlg.set_selected_index(current_choice); - dlg.show(disp.video()); + dlg.show(video); int choice = dlg.selected_index(); - if(choice == -1 || resolutions[static_cast(choice)] == disp.video().current_resolution()) { + if(choice == -1 || resolutions[static_cast(choice)] == video.current_resolution()) { return false; } - if (disp.get_singleton()) { - disp.get_singleton()->video().set_resolution(resolutions[static_cast(choice)]); + if (display::get_singleton()) { + display::get_singleton()->video().set_resolution(resolutions[static_cast(choice)]); } return true; diff --git a/src/preferences_display.hpp b/src/preferences_display.hpp index 245870eee450..174d820ce7db 100644 --- a/src/preferences_display.hpp +++ b/src/preferences_display.hpp @@ -18,6 +18,7 @@ class config; class display; +#include "video.hpp" #include namespace preferences { @@ -44,17 +45,16 @@ namespace preferences { void set_idle_anim(bool ison); void set_idle_anim_rate(int rate); - std::string show_wesnothd_server_search(display&); - void show_preferences_dialog(display& disp, const config& game_cfg); - bool show_video_mode_dialog(display& disp); - bool show_theme_dialog(display& disp); - void show_paths_dialog(display& disp); - void show_mp_alerts_dialog(display& disp); - void show_advanced_graphics_dialog(display & disp); + std::string show_wesnothd_server_search(CVideo& video); + void show_preferences_dialog(CVideo& video, const config& game_cfg); + bool show_video_mode_dialog(CVideo& video); + bool show_theme_dialog(CVideo& video); + void show_mp_alerts_dialog(CVideo& video); + void show_advanced_graphics_dialog(CVideo& video); // If prefs is non-null, save the hotkeys in that config // instead of the default. - void show_hotkeys_preferences_dialog(display & disp); + void show_hotkeys_preferences_dialog(CVideo& video); } // end namespace preferences #endif