#include <context_manager.hpp>
Public Types | |
using | context_ptr = std::unique_ptr< map_context > |
Public Member Functions | |
context_manager (editor_display &gui, const game_config_view &game_config) | |
~context_manager () | |
bool | is_active_transitions_hotkey (const std::string &item) |
std::size_t | modified_maps (std::string &modified) |
void | set_update_transitions_mode (int mode) |
bool | toggle_update_transitions () |
bool | clipboard_empty () |
map_fragment & | get_clipboard () |
void | fill_selection () |
Fill the selection with the foreground terrain. More... | |
int | current_context_index () |
Index into the map_contexts_ array. More... | |
std::size_t | open_maps (void) |
void | perform_refresh (const editor_action &action, bool drag_part=false) |
Perform an action on the current map_context, then refresh the display. More... | |
void | save_all_maps (bool auto_save_windows=false) |
Save all maps, open dialog if not named yet, except when using auto_save_windows which will name unnamed maps "windows_N". More... | |
void | save_map () |
Save the map, open dialog if not named yet. More... | |
editor_display & | gui () |
void | refresh_all () |
Refresh everything, i.e. More... | |
void | apply_mask_dialog () |
Display an apply mask dialog and process user input. More... | |
void | create_mask_to_dialog () |
Display an apply mask dialog and process user input. More... | |
void | rename_area_dialog () |
Display an dialog to querry a new id for an [time_area]. More... | |
void | expand_open_maps_menu (std::vector< config > &items, int i) |
Menu expanding for open maps list. More... | |
void | expand_load_mru_menu (std::vector< config > &items, int i) |
Menu expanding for most recent loaded list. More... | |
void | expand_sides_menu (std::vector< config > &items, int i) |
Menu expanding for the map's player sides. More... | |
void | expand_areas_menu (std::vector< config > &items, int i) |
Menu expanding for the map's defined areas. More... | |
void | expand_time_menu (std::vector< config > &items, int i) |
Menu expanding for the map's defined areas. More... | |
void | expand_local_time_menu (std::vector< config > &items, int i) |
Menu expanding for the map's defined areas. More... | |
void | load_map_dialog (bool force_same_context=false) |
Display a load map dialog and process user input. More... | |
void | load_mru_item (unsigned index, bool force_same_context=false) |
Open the specified entry from the recent files list. More... | |
void | edit_scenario_dialog () |
Display a scenario edit dialog and process user input. More... | |
void | edit_side_dialog (int side_index) |
Display a side edit dialog and process user input. More... | |
void | new_map_dialog () |
Display a new map dialog and process user input. More... | |
void | new_scenario_dialog () |
Display a new map dialog and process user input. More... | |
void | save_map_as_dialog () |
Display a save map as dialog and process user input. More... | |
void | save_scenario_as_dialog () |
Display a save map as dialog and process user input. More... | |
void | generate_map_dialog () |
Display a generate random map dialog and process user input. More... | |
void | resize_map_dialog () |
Display a load map dialog and process user input. More... | |
std::size_t | size () |
map_context & | get_map_context () |
Get the current map context object. More... | |
void | set_default_dir (const std::string &str) |
Set the default dir (where the filebrowser is pointing at when there is no map file opened) More... | |
virtual const display_context & | get_disp_context () const override |
Inherited from filter_context. More... | |
virtual const tod_manager & | get_tod_man () const override |
Inherited from filter_context. More... | |
virtual const game_data * | get_game_data () const override |
Inherited from filter_context. More... | |
virtual game_lua_kernel * | get_lua_kernel () const override |
Inherited from filter_context. More... | |
void | refresh_after_action (bool drag_part=false) |
Refresh the display after an action has been performed. More... | |
void | close_current_context () |
Closes the active map context. More... | |
void | switch_context (const int index, const bool force=false) |
Switches the context to the one under the specified index. More... | |
void | load_map (const std::string &filename, bool new_context) |
Load a map given the filename. More... | |
void | revert_map () |
Revert the map by reloading it from disk. More... | |
void | reload_map () |
Reload the map after it has significantly changed (when e.g. More... | |
![]() | |
virtual | ~filter_context () |
Public Attributes | |
class location_palette * | locs_ |
Private Member Functions | |
void | init_map_generators (const game_config_view &game_config) |
init available random map generators More... | |
bool | confirm_discard () |
Shows an are-you-sure dialog if the map was modified. More... | |
const map_context & | get_map_context () const |
Get the current map context object - const version. More... | |
template<typename... T> | |
int | add_map_context (const T &... args) |
Add a map context. More... | |
int | add_map_context_of (context_ptr &&mc) |
template<typename... T> | |
void | replace_map_context (const T &... args) |
Replace the current map context and refresh accordingly. More... | |
void | replace_map_context_with (context_ptr &&mc) |
void | create_default_context () |
Creates a default map context object, used to ensure there is always at least one. More... | |
void | refresh_on_context_change () |
Performs the necessary housekeeping necessary when switching contexts. More... | |
bool | save_map_as (const std::string &filename) |
Save the map under a given filename. More... | |
bool | save_scenario_as (const std::string &filename) |
bool | write_map (bool display_confirmation=false) |
Save the map under a given filename. More... | |
bool | write_scenario (bool display_confirmation=false) |
void | new_map (int width, int height, const t_translation::terrain_code &fill, bool new_context) |
Create a new map. More... | |
void | new_scenario (int width, int height, const t_translation::terrain_code &fill, bool new_context) |
Create a new scenario. More... | |
std::size_t | check_open_map (const std::string &fn) const |
Check if a map is already open. More... | |
bool | check_switch_open_map (const std::string &fn) |
Check if a map is already open. More... | |
void | set_window_title () |
Displays the specified map name in the window titlebar. More... | |
Private Attributes | |
editor_display & | gui_ |
const game_config_view & | game_config_ |
std::string | default_dir_ |
Default directory for map load/save as dialogs. More... | |
std::vector< std::unique_ptr< map_generator > > | map_generators_ |
Available random map generators. More... | |
map_generator * | last_map_generator_ |
int | current_context_index_ |
int | auto_update_transitions_ |
Flag to rebuild terrain on every terrain change. More... | |
std::vector< context_ptr > | map_contexts_ |
The currently opened map context object. More... | |
map_fragment | clipboard_ |
Clipboard map_fragment – used for copy-paste. More... | |
Definition at line 29 of file context_manager.hpp.
using editor::context_manager::context_ptr = std::unique_ptr<map_context> |
Definition at line 32 of file context_manager.hpp.
editor::context_manager::context_manager | ( | editor_display & | gui, |
const game_config_view & | game_config | ||
) |
Definition at line 70 of file context_manager.cpp.
References create_default_context(), default_dir_, resources::filter_con, filesystem::get_dir(), filesystem::get_user_data_dir(), and init_map_generators().
editor::context_manager::~context_manager | ( | ) |
Definition at line 92 of file context_manager.cpp.
References resources::filter_con, game_config::get_default_title_string(), and video::set_window_title().
|
private |
Add a map context.
The controller assumes ownership.
Definition at line 991 of file context_manager.cpp.
|
private |
Definition at line 997 of file context_manager.cpp.
void editor::context_manager::apply_mask_dialog | ( | ) |
Display an apply mask dialog and process user input.
Definition at line 464 of file context_manager.cpp.
References _(), a, e, editor::map_context::map(), gui2::dialogs::file_dialog::path(), gui2::dialogs::file_dialog::set_path(), gui2::dialogs::file_dialog::set_title(), gui2::dialogs::modal_dialog::show(), gui2::show_error_message(), and gui2::show_transient_message().
|
private |
Check if a map is already open.
Definition at line 866 of file context_manager.cpp.
References i.
|
private |
Check if a map is already open.
If yes, switch to it and return true, return false otherwise.
Definition at line 876 of file context_manager.cpp.
References _(), i, and gui2::show_transient_message().
|
inline |
Definition at line 49 of file context_manager.hpp.
References clipboard_, and editor::map_fragment::empty().
void editor::context_manager::close_current_context | ( | ) |
Closes the active map context.
Switches to a valid context afterward or creates a dummy one.
Definition at line 1033 of file context_manager.cpp.
|
private |
Shows an are-you-sure dialog if the map was modified.
Definition at line 734 of file context_manager.cpp.
References _(), gui2::CANCEL, gui2::show_message(), and gui2::dialogs::message::yes_no_buttons.
|
private |
Creates a default map context object, used to ensure there is always at least one.
Except when we saved windows, in which case reopen them
Definition at line 1016 of file context_manager.cpp.
References game_config::default_terrain, config::find_mandatory_child(), t_translation::read_terrain_code(), and editor::saved_windows_.
Referenced by context_manager().
void editor::context_manager::create_mask_to_dialog | ( | ) |
Display an apply mask dialog and process user input.
Definition at line 507 of file context_manager.cpp.
References _(), a, e, editor::map_context::map(), gui2::dialogs::file_dialog::path(), gui2::dialogs::file_dialog::set_path(), gui2::dialogs::file_dialog::set_title(), gui2::dialogs::modal_dialog::show(), gui2::show_error_message(), and gui2::show_transient_message().
|
inline |
Index into the map_contexts_ array.
Definition at line 63 of file context_manager.hpp.
References current_context_index_.
void editor::context_manager::edit_scenario_dialog | ( | ) |
Display a scenario edit dialog and process user input.
Definition at line 240 of file context_manager.cpp.
References editor::map_context::get_description(), editor::map_context::get_id(), get_map_context(), editor::map_context::get_name(), editor::map_context::get_time_manager(), editor::map_context::get_xp_mod(), tod_manager::number_of_turns(), editor::map_context::random_start_time(), editor::map_context::set_scenario_setup(), set_window_title(), preferences::turns(), and editor::map_context::victory_defeated().
void editor::context_manager::edit_side_dialog | ( | int | side_index | ) |
Display a side edit dialog and process user input.
Definition at line 229 of file context_manager.cpp.
References get_map_context(), editor::map_context::set_side_setup(), t, and editor::map_context::teams().
void editor::context_manager::expand_areas_menu | ( | std::vector< config > & | items, |
int | i | ||
) |
Menu expanding for the map's defined areas.
Definition at line 367 of file context_manager.cpp.
References _(), tod_manager::get_area_by_index(), tod_manager::get_area_ids(), editor::get_menu_marker(), i, mp::ui_alerts::items, and label.
void editor::context_manager::expand_load_mru_menu | ( | std::vector< config > & | items, |
int | i | ||
) |
Menu expanding for most recent loaded list.
Definition at line 341 of file context_manager.cpp.
References _(), filesystem::base_name(), i, mp::ui_alerts::items, game_config::path, and preferences::editor::recent_files().
void editor::context_manager::expand_local_time_menu | ( | std::vector< config > & | items, |
int | i | ||
) |
Menu expanding for the map's defined areas.
Definition at line 447 of file context_manager.cpp.
References i, mp::ui_alerts::items, and tod_manager::times().
void editor::context_manager::expand_open_maps_menu | ( | std::vector< config > & | items, |
int | i | ||
) |
Menu expanding for open maps list.
Definition at line 298 of file context_manager.cpp.
References filesystem::base_name(), editor::map_context::get_default_context_name(), editor::map_context::get_filename(), editor::get_menu_marker(), editor::map_context::get_name(), i, editor::map_context::is_embedded(), editor::map_context::is_pure_map(), mp::ui_alerts::items, label, map_contexts_, and editor::map_context::modified().
void editor::context_manager::expand_sides_menu | ( | std::vector< config > & | items, |
int | i | ||
) |
Menu expanding for the map's player sides.
Definition at line 404 of file context_manager.cpp.
References _(), i, mp::ui_alerts::items, label, and t.
void editor::context_manager::expand_time_menu | ( | std::vector< config > & | items, |
int | i | ||
) |
Menu expanding for the map's defined areas.
Definition at line 428 of file context_manager.cpp.
References i, mp::ui_alerts::items, and tod_manager::times().
void editor::context_manager::fill_selection | ( | ) |
Fill the selection with the foreground terrain.
Definition at line 745 of file context_manager.cpp.
References editor::get_selected_bg_terrain().
void editor::context_manager::generate_map_dialog | ( | ) |
Display a generate random map dialog and process user input.
Definition at line 701 of file context_manager.cpp.
References _(), a, map_generator::create_map(), e, gui2::dialogs::editor_generate_map::get_seed(), gui2::dialogs::editor_generate_map::get_selected_map_generator(), gui2::dialogs::editor_generate_map::select_map_generator(), gui2::dialogs::modal_dialog::show(), gui2::show_error_message(), and gui2::show_transient_message().
|
inline |
Definition at line 54 of file context_manager.hpp.
References clipboard_.
Referenced by editor::editor_toolkit::init_mouse_actions().
|
inlineoverridevirtual |
Inherited from filter_context.
Implements filter_context.
Definition at line 173 of file context_manager.hpp.
References get_map_context().
|
inlineoverridevirtual |
Inherited from filter_context.
Implements filter_context.
Definition at line 185 of file context_manager.hpp.
|
inlineoverridevirtual |
Inherited from filter_context.
Implements filter_context.
Definition at line 191 of file context_manager.hpp.
|
inline |
Get the current map context object.
Definition at line 161 of file context_manager.hpp.
References current_context_index_, and map_contexts_.
Referenced by edit_scenario_dialog(), edit_side_dialog(), get_disp_context(), get_tod_man(), load_map_dialog(), new_map_dialog(), new_scenario_dialog(), refresh_all(), refresh_on_context_change(), and reload_map().
|
inlineprivate |
Get the current map context object - const version.
Definition at line 209 of file context_manager.hpp.
References current_context_index_, and map_contexts_.
|
inlineoverridevirtual |
Inherited from filter_context.
Implements filter_context.
Definition at line 179 of file context_manager.hpp.
References get_map_context(), and editor::map_context::get_time_manager().
|
inline |
Definition at line 88 of file context_manager.hpp.
References gui_.
Referenced by refresh_on_context_change().
|
private |
init available random map generators
Definition at line 684 of file context_manager.cpp.
References create_map_generator(), ERR_ED, and i.
Referenced by context_manager().
bool editor::context_manager::is_active_transitions_hotkey | ( | const std::string & | item | ) |
Definition at line 154 of file context_manager.cpp.
References auto_update_transitions_, preferences::editor::TRANSITION_UPDATE_OFF, preferences::editor::TRANSITION_UPDATE_ON, and preferences::editor::TRANSITION_UPDATE_PARTIAL.
void editor::context_manager::load_map | ( | const std::string & | filename, |
bool | new_context | ||
) |
Load a map given the filename.
Definition at line 888 of file context_manager.cpp.
References _(), e, ERR_ED, get_filename(), LOG_ED, wfl::msg(), gui2::show_transient_message(), and VGETTEXT.
Referenced by load_map_dialog(), and load_mru_item().
void editor::context_manager::load_map_dialog | ( | bool | force_same_context = false | ) |
Display a load map dialog and process user input.
Definition at line 202 of file context_manager.cpp.
References _(), default_dir_, filesystem::directory_name(), get_filename(), get_map_context(), load_map(), gui2::dialogs::file_dialog::path(), gui2::dialogs::file_dialog::set_path(), gui2::dialogs::file_dialog::set_title(), and gui2::dialogs::modal_dialog::show().
void editor::context_manager::load_mru_item | ( | unsigned | index, |
bool | force_same_context = false |
||
) |
Open the specified entry from the recent files list.
Definition at line 219 of file context_manager.cpp.
References utf8::index(), load_map(), and preferences::editor::recent_files().
std::size_t editor::context_manager::modified_maps | ( | std::string & | modified | ) |
Definition at line 180 of file context_manager.cpp.
References map_contexts_, and font::unicode_bullet.
|
private |
Create a new map.
Definition at line 954 of file context_manager.cpp.
References draw::fill(), and config::find_mandatory_child().
Referenced by new_map_dialog().
void editor::context_manager::new_map_dialog | ( | ) |
Display a new map dialog and process user input.
Definition at line 272 of file context_manager.cpp.
References _(), draw::fill(), get_map_context(), editor::get_selected_bg_terrain(), gamemap_base::h(), h, editor::map_context::map(), new_map(), w, and gamemap_base::w().
|
private |
Create a new scenario.
Definition at line 967 of file context_manager.cpp.
References draw::fill().
Referenced by new_scenario_dialog().
void editor::context_manager::new_scenario_dialog | ( | ) |
Display a new map dialog and process user input.
Definition at line 285 of file context_manager.cpp.
References _(), draw::fill(), get_map_context(), editor::get_selected_bg_terrain(), gamemap_base::h(), h, editor::map_context::map(), new_scenario(), w, and gamemap_base::w().
|
inline |
Definition at line 68 of file context_manager.hpp.
References map_contexts_.
void editor::context_manager::perform_refresh | ( | const editor_action & | action, |
bool | drag_part = false |
||
) |
Perform an action on the current map_context, then refresh the display.
Definition at line 491 of file context_manager.cpp.
void editor::context_manager::refresh_after_action | ( | bool | drag_part = false | ) |
Refresh the display after an action has been performed.
The map context contains details of what needs to be refreshed.
Definition at line 534 of file context_manager.cpp.
References preferences::editor::TRANSITION_UPDATE_ON, and preferences::editor::TRANSITION_UPDATE_PARTIAL.
void editor::context_manager::refresh_all | ( | ) |
Refresh everything, i.e.
invalidate all hexes and redraw them. Does not reload the map.
Definition at line 123 of file context_manager.cpp.
References editor::location_palette::add_item(), editor::map_context::clear_changed_locations(), display::create_buttons(), get_map_context(), gui_, i, display::invalidate_all(), locs_, display::rebuild_all(), display::recalculate_minimap(), editor::map_context::set_needs_terrain_rebuild(), and editor::map_context::teams().
Referenced by reload_map().
|
private |
Performs the necessary housekeeping necessary when switching contexts.
Definition at line 100 of file context_manager.cpp.
References display::change_display_context(), resources::classification, map_labels::enable(), editor::map_context::get_classification(), editor::map_context::get_labels(), get_map_context(), editor::map_context::get_time_manager(), gui(), display::init_flags(), reload_map(), display::set_playing_team(), display::set_team(), set_window_title(), size(), and resources::tod_manager.
void editor::context_manager::reload_map | ( | ) |
Reload the map after it has significantly changed (when e.g.
the dimensions changed). This is necessary to avoid issues with parts of the map being cached in the display class.
Definition at line 146 of file context_manager.cpp.
References get_map_context(), gui_, refresh_all(), display::reload_map(), editor::map_context::reset_starting_position_labels(), and editor::map_context::set_needs_reload().
Referenced by refresh_on_context_change().
void editor::context_manager::rename_area_dialog | ( | ) |
Display an dialog to querry a new id for an [time_area].
Definition at line 497 of file context_manager.cpp.
References N_.
|
private |
Replace the current map context and refresh accordingly.
Definition at line 1004 of file context_manager.cpp.
|
private |
Definition at line 1010 of file context_manager.cpp.
void editor::context_manager::resize_map_dialog | ( | ) |
Display a load map dialog and process user input.
Definition at line 573 of file context_manager.cpp.
References a, gui2::dialogs::editor_resize_map::EXPAND_BOTTOM, gui2::dialogs::editor_resize_map::EXPAND_BOTTOM_LEFT, gui2::dialogs::editor_resize_map::EXPAND_BOTTOM_RIGHT, gui2::dialogs::editor_resize_map::EXPAND_CENTER, gui2::dialogs::editor_resize_map::EXPAND_LEFT, gui2::dialogs::editor_resize_map::EXPAND_RIGHT, gui2::dialogs::editor_resize_map::EXPAND_TOP, gui2::dialogs::editor_resize_map::EXPAND_TOP_LEFT, gui2::dialogs::editor_resize_map::EXPAND_TOP_RIGHT, draw::fill(), editor::get_selected_bg_terrain(), gamemap_base::h(), h, t_translation::NONE_TERRAIN, w, gamemap_base::w(), and WRN_ED.
void editor::context_manager::revert_map | ( | ) |
Revert the map by reloading it from disk.
Definition at line 939 of file context_manager.cpp.
References ERR_ED.
void editor::context_manager::save_all_maps | ( | bool | auto_save_windows = false | ) |
Save all maps, open dialog if not named yet, except when using auto_save_windows which will name unnamed maps "windows_N".
Also record all filenames for future reopening.
Definition at line 750 of file context_manager.cpp.
References i, filesystem::is_directory(), s, and editor::saved_windows_.
void editor::context_manager::save_map | ( | ) |
Save the map, open dialog if not named yet.
Definition at line 772 of file context_manager.cpp.
References filesystem::is_directory().
|
private |
Save the map under a given filename.
Definition at line 813 of file context_manager.cpp.
References _(), and gui2::show_transient_message().
void editor::context_manager::save_map_as_dialog | ( | ) |
Display a save map as dialog and process user input.
Definition at line 642 of file context_manager.cpp.
References _(), filesystem::get_dir(), gui2::dialogs::file_dialog::path(), gui2::dialogs::file_dialog::set_extension(), gui2::dialogs::file_dialog::set_path(), gui2::dialogs::file_dialog::set_save_mode(), gui2::dialogs::file_dialog::set_title(), and gui2::dialogs::modal_dialog::show().
|
private |
Definition at line 790 of file context_manager.cpp.
References _(), and gui2::show_transient_message().
void editor::context_manager::save_scenario_as_dialog | ( | ) |
Display a save map as dialog and process user input.
Definition at line 663 of file context_manager.cpp.
References _(), filesystem::get_dir(), gui2::dialogs::file_dialog::path(), gui2::dialogs::file_dialog::set_extension(), gui2::dialogs::file_dialog::set_path(), gui2::dialogs::file_dialog::set_save_mode(), gui2::dialogs::file_dialog::set_title(), and gui2::dialogs::modal_dialog::show().
|
inline |
Set the default dir (where the filebrowser is pointing at when there is no map file opened)
Definition at line 167 of file context_manager.hpp.
References default_dir_.
|
inline |
Definition at line 41 of file context_manager.hpp.
References auto_update_transitions_, and preferences::editor::set_auto_update_transitions().
|
private |
Displays the specified map name in the window titlebar.
Definition at line 1070 of file context_manager.cpp.
References filesystem::base_name(), game_config::get_default_title_string(), get_filename(), and video::set_window_title().
Referenced by edit_scenario_dialog(), and refresh_on_context_change().
|
inline |
Definition at line 155 of file context_manager.hpp.
References map_contexts_.
Referenced by refresh_on_context_change().
void editor::context_manager::switch_context | ( | const int | index, |
const bool | force = false |
||
) |
Switches the context to the one under the specified index.
Definition at line 1050 of file context_manager.cpp.
References utf8::index(), and WRN_ED.
bool editor::context_manager::toggle_update_transitions | ( | ) |
Definition at line 168 of file context_manager.cpp.
References auto_update_transitions_, preferences::editor::set_auto_update_transitions(), preferences::editor::TRANSITION_UPDATE_COUNT, and preferences::editor::TRANSITION_UPDATE_ON.
|
private |
Save the map under a given filename.
Displays an error message on failure.
Definition at line 851 of file context_manager.cpp.
References _(), e, and gui2::show_transient_message().
|
private |
Definition at line 836 of file context_manager.cpp.
References _(), e, and gui2::show_transient_message().
|
private |
Flag to rebuild terrain on every terrain change.
Definition at line 329 of file context_manager.hpp.
Referenced by is_active_transitions_hotkey(), set_update_transitions_mode(), and toggle_update_transitions().
|
private |
Clipboard map_fragment – used for copy-paste.
Definition at line 335 of file context_manager.hpp.
Referenced by clipboard_empty(), and get_clipboard().
|
private |
Definition at line 326 of file context_manager.hpp.
Referenced by current_context_index(), and get_map_context().
|
private |
Default directory for map load/save as dialogs.
Definition at line 320 of file context_manager.hpp.
Referenced by context_manager(), load_map_dialog(), and set_default_dir().
|
private |
Definition at line 317 of file context_manager.hpp.
|
private |
Definition at line 315 of file context_manager.hpp.
Referenced by gui(), refresh_all(), and reload_map().
|
private |
Definition at line 324 of file context_manager.hpp.
class location_palette* editor::context_manager::locs_ |
Definition at line 197 of file context_manager.hpp.
Referenced by refresh_all().
|
private |
The currently opened map context object.
Definition at line 332 of file context_manager.hpp.
Referenced by expand_open_maps_menu(), get_map_context(), modified_maps(), open_maps(), and size().
|
private |
Available random map generators.
Definition at line 323 of file context_manager.hpp.