The Battle for Wesnoth  1.19.2+dev
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
editor::context_manager Class Reference

#include <context_manager.hpp>

Inheritance diagram for editor::context_manager:

Public Member Functions

 context_manager (editor_display &gui, const game_config_view &game_config, const std::string &addon_id)
 
 ~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_fragmentget_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_contexts ()
 Save all open map_contexts to memory. More...
 
void save_all_maps ()
 Save all maps, show save dialogs for unsaved ones. More...
 
void save_map (bool show_confirmation=true)
 Save the map, open dialog if not named yet. More...
 
editor_displaygui ()
 
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_contextget_map_context ()
 Get the current map context object. More...
 
void set_addon_id (const std::string &id)
 
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...
 
void edit_pbl ()
 
void change_addon_id ()
 
virtual const display_contextget_disp_context () const override
 Inherited from filter_context. More...
 
virtual const tod_managerget_tod_man () const override
 Inherited from filter_context. More...
 
virtual const game_dataget_game_data () const override
 Inherited from filter_context. More...
 
virtual game_lua_kernelget_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...
 
- Public Member Functions inherited from filter_context
virtual ~filter_context ()
 

Public Attributes

class location_palettelocs_
 

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_contextget_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 (std::unique_ptr< map_context > &&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 (std::unique_ptr< map_context > &&mc)
 
void create_default_context ()
 Creates a default map context object, used to ensure there is always at least one. More...
 
void create_blank_context ()
 
void refresh_on_context_change ()
 Performs the necessary housekeeping necessary when switching contexts. More...
 
bool write_map (bool display_confirmation=true)
 Save the map under a given filename. More...
 
bool write_scenario (bool display_confirmation=true)
 
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_displaygui_
 
const game_config_viewgame_config_
 
std::string default_dir_
 Default directory for map load/save as dialogs. More...
 
std::string current_addon_
 The currently selected add-on. More...
 
std::vector< std::unique_ptr< map_generator > > map_generators_
 Available random map generators. More...
 
map_generatorlast_map_generator_
 
int current_context_index_
 
int auto_update_transitions_
 Flag to rebuild terrain on every terrain change. More...
 
std::vector< std::unique_ptr< map_context > > map_contexts_
 The currently opened map context object. More...
 
map_fragment clipboard_
 Clipboard map_fragment – used for copy-paste. More...
 

Detailed Description

Definition at line 29 of file context_manager.hpp.

Constructor & Destructor Documentation

◆ context_manager()

editor::context_manager::context_manager ( editor_display gui,
const game_config_view game_config,
const std::string &  addon_id 
)

◆ ~context_manager()

editor::context_manager::~context_manager ( )

Member Function Documentation

◆ add_map_context()

template<typename... T>
int editor::context_manager::add_map_context ( const T &...  args)
private

Add a map context.

The controller assumes ownership.

Returns
the index of the added map context in the map_contexts_ array

Definition at line 1039 of file context_manager.cpp.

◆ add_map_context_of()

int editor::context_manager::add_map_context_of ( std::unique_ptr< map_context > &&  mc)
private

Definition at line 1045 of file context_manager.cpp.

◆ apply_mask_dialog()

void editor::context_manager::apply_mask_dialog ( )

◆ change_addon_id()

void editor::context_manager::change_addon_id ( )

◆ check_open_map()

std::size_t editor::context_manager::check_open_map ( const std::string &  fn) const
private

Check if a map is already open.

Returns
index of the map context containing the given filename, or map_contexts_.size() if not found.

Definition at line 909 of file context_manager.cpp.

References i.

◆ check_switch_open_map()

bool editor::context_manager::check_switch_open_map ( const std::string &  fn)
private

Check if a map is already open.

If yes, switch to it and return true, return false otherwise.

Definition at line 919 of file context_manager.cpp.

References _(), i, and gui2::show_transient_message().

◆ clipboard_empty()

bool editor::context_manager::clipboard_empty ( )
inline

Definition at line 47 of file context_manager.hpp.

References clipboard_, and editor::map_fragment::empty().

◆ close_current_context()

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 1084 of file context_manager.cpp.

◆ confirm_discard()

bool editor::context_manager::confirm_discard ( )
private

Shows an are-you-sure dialog if the map was modified.

Returns
true if the user confirmed or the map was not modified, false otherwise

Definition at line 827 of file context_manager.cpp.

References _(), gui2::CANCEL, gui2::show_message(), and gui2::dialogs::message::yes_no_buttons.

◆ create_blank_context()

void editor::context_manager::create_blank_context ( )
private

◆ create_default_context()

void editor::context_manager::create_default_context ( )
private

Creates a default map context object, used to ensure there is always at least one.

When we have saved contexts, reopen them instead.

Definition at line 1063 of file context_manager.cpp.

Referenced by context_manager().

◆ create_mask_to_dialog()

void editor::context_manager::create_mask_to_dialog ( )

◆ current_context_index()

int editor::context_manager::current_context_index ( )
inline

Index into the map_contexts_ array.

Definition at line 61 of file context_manager.hpp.

References current_context_index_.

◆ edit_pbl()

void editor::context_manager::edit_pbl ( )

Definition at line 245 of file context_manager.cpp.

References current_addon_, and filesystem::get_current_editor_dir().

◆ edit_scenario_dialog()

void editor::context_manager::edit_scenario_dialog ( )

◆ edit_side_dialog()

void editor::context_manager::edit_side_dialog ( int  side_index)

Display a side edit dialog and process user input.

Definition at line 234 of file context_manager.cpp.

References get_map_context(), editor::map_context::set_side_setup(), t, and editor::map_context::teams().

◆ expand_areas_menu()

void editor::context_manager::expand_areas_menu ( std::vector< config > &  items,
int  i 
)

Menu expanding for the map's defined areas.

Definition at line 402 of file context_manager.cpp.

References _(), tod_manager::get_area_by_index(), tod_manager::get_area_ids(), i, and label.

◆ expand_load_mru_menu()

void editor::context_manager::expand_load_mru_menu ( std::vector< config > &  items,
int  i 
)

Menu expanding for most recent loaded list.

Definition at line 376 of file context_manager.cpp.

References _(), filesystem::base_name(), prefs::get(), i, game_config::path, and prefs::recent_files().

◆ expand_local_time_menu()

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 482 of file context_manager.cpp.

References i, and tod_manager::times().

◆ expand_open_maps_menu()

void editor::context_manager::expand_open_maps_menu ( std::vector< config > &  items,
int  i 
)

◆ expand_sides_menu()

void editor::context_manager::expand_sides_menu ( std::vector< config > &  items,
int  i 
)

Menu expanding for the map's player sides.

Definition at line 439 of file context_manager.cpp.

References _(), i, label, and t.

◆ expand_time_menu()

void editor::context_manager::expand_time_menu ( std::vector< config > &  items,
int  i 
)

Menu expanding for the map's defined areas.

Definition at line 463 of file context_manager.cpp.

References i, and tod_manager::times().

◆ fill_selection()

void editor::context_manager::fill_selection ( )

Fill the selection with the foreground terrain.

Definition at line 838 of file context_manager.cpp.

References editor::get_selected_bg_terrain().

◆ generate_map_dialog()

void editor::context_manager::generate_map_dialog ( )

◆ get_clipboard()

map_fragment& editor::context_manager::get_clipboard ( )
inline

Definition at line 52 of file context_manager.hpp.

References clipboard_.

Referenced by editor::editor_toolkit::init_mouse_actions().

◆ get_disp_context()

virtual const display_context& editor::context_manager::get_disp_context ( ) const
inlineoverridevirtual

Inherited from filter_context.

Implements filter_context.

Definition at line 182 of file context_manager.hpp.

References get_map_context().

◆ get_game_data()

virtual const game_data* editor::context_manager::get_game_data ( ) const
inlineoverridevirtual

Inherited from filter_context.

Implements filter_context.

Definition at line 194 of file context_manager.hpp.

◆ get_lua_kernel()

virtual game_lua_kernel* editor::context_manager::get_lua_kernel ( ) const
inlineoverridevirtual

Inherited from filter_context.

Implements filter_context.

Definition at line 200 of file context_manager.hpp.

◆ get_map_context() [1/2]

map_context& editor::context_manager::get_map_context ( )
inline

◆ get_map_context() [2/2]

const map_context& editor::context_manager::get_map_context ( ) const
inlineprivate

Get the current map context object - const version.

Definition at line 218 of file context_manager.hpp.

References current_context_index_, and map_contexts_.

◆ get_tod_man()

virtual const tod_manager& editor::context_manager::get_tod_man ( ) const
inlineoverridevirtual

Inherited from filter_context.

Implements filter_context.

Definition at line 188 of file context_manager.hpp.

References get_map_context(), and editor::map_context::get_time_manager().

◆ gui()

editor_display& editor::context_manager::gui ( )
inline

Definition at line 86 of file context_manager.hpp.

References gui_.

Referenced by refresh_on_context_change().

◆ init_map_generators()

void editor::context_manager::init_map_generators ( const game_config_view game_config)
private

init available random map generators

Definition at line 777 of file context_manager.cpp.

References create_map_generator(), ERR_ED, and i.

Referenced by context_manager().

◆ is_active_transitions_hotkey()

bool editor::context_manager::is_active_transitions_hotkey ( const std::string &  item)

◆ load_map()

void editor::context_manager::load_map ( const std::string &  filename,
bool  new_context 
)

◆ load_map_dialog()

void editor::context_manager::load_map_dialog ( bool  force_same_context = false)

◆ load_mru_item()

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 224 of file context_manager.cpp.

References prefs::get(), utf8::index(), load_map(), and prefs::recent_files().

◆ modified_maps()

std::size_t editor::context_manager::modified_maps ( std::string &  modified)

Definition at line 185 of file context_manager.cpp.

References map_contexts_, and font::unicode_bullet.

◆ new_map()

void editor::context_manager::new_map ( int  width,
int  height,
const t_translation::terrain_code fill,
bool  new_context 
)
private

Create a new map.

Definition at line 1002 of file context_manager.cpp.

References draw::fill(), and config::find_mandatory_child().

Referenced by new_map_dialog().

◆ new_map_dialog()

void editor::context_manager::new_map_dialog ( )

Display a new map dialog and process user input.

Definition at line 307 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().

◆ new_scenario()

void editor::context_manager::new_scenario ( int  width,
int  height,
const t_translation::terrain_code fill,
bool  new_context 
)
private

Create a new scenario.

Definition at line 1015 of file context_manager.cpp.

References draw::fill().

Referenced by new_scenario_dialog().

◆ new_scenario_dialog()

void editor::context_manager::new_scenario_dialog ( )

Display a new map dialog and process user input.

Definition at line 320 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().

◆ open_maps()

std::size_t editor::context_manager::open_maps ( void  )
inline

Definition at line 66 of file context_manager.hpp.

References map_contexts_.

◆ perform_refresh()

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 526 of file context_manager.cpp.

◆ refresh_after_action()

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 569 of file context_manager.cpp.

References pref_constants::TRANSITION_UPDATE_ON, and pref_constants::TRANSITION_UPDATE_PARTIAL.

◆ refresh_all()

void editor::context_manager::refresh_all ( )

◆ refresh_on_context_change()

void editor::context_manager::refresh_on_context_change ( )
private

◆ reload_map()

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 151 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().

◆ rename_area_dialog()

void editor::context_manager::rename_area_dialog ( )

Display an dialog to querry a new id for an [time_area].

Definition at line 532 of file context_manager.cpp.

References N_.

◆ replace_map_context()

template<typename... T>
void editor::context_manager::replace_map_context ( const T &...  args)
private

Replace the current map context and refresh accordingly.

Definition at line 1052 of file context_manager.cpp.

◆ replace_map_context_with()

void editor::context_manager::replace_map_context_with ( std::unique_ptr< map_context > &&  mc)
private

Definition at line 1057 of file context_manager.cpp.

◆ resize_map_dialog()

void editor::context_manager::resize_map_dialog ( )

◆ revert_map()

void editor::context_manager::revert_map ( )

Revert the map by reloading it from disk.

Definition at line 987 of file context_manager.cpp.

References ERR_ED.

◆ save_all_maps()

void editor::context_manager::save_all_maps ( )

Save all maps, show save dialogs for unsaved ones.

Definition at line 843 of file context_manager.cpp.

References i.

◆ save_contexts()

void editor::context_manager::save_contexts ( )

Save all open map_contexts to memory.

Definition at line 853 of file context_manager.cpp.

References swap().

◆ save_map()

void editor::context_manager::save_map ( bool  show_confirmation = true)

Save the map, open dialog if not named yet.

Definition at line 861 of file context_manager.cpp.

References filesystem::is_directory().

◆ save_map_as_dialog()

void editor::context_manager::save_map_as_dialog ( )

◆ save_scenario_as_dialog()

void editor::context_manager::save_scenario_as_dialog ( )

◆ set_addon_id()

void editor::context_manager::set_addon_id ( const std::string &  id)
inline

Definition at line 164 of file context_manager.hpp.

References current_addon_, id, and map_contexts_.

◆ set_default_dir()

void editor::context_manager::set_default_dir ( const std::string &  str)
inline

Set the default dir (where the filebrowser is pointing at when there is no map file opened)

Definition at line 173 of file context_manager.hpp.

References default_dir_.

◆ set_update_transitions_mode()

void editor::context_manager::set_update_transitions_mode ( int  mode)
inline

◆ set_window_title()

void editor::context_manager::set_window_title ( )
private

Displays the specified map name in the window titlebar.

Definition at line 1121 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().

◆ size()

std::size_t editor::context_manager::size ( )
inline

Definition at line 153 of file context_manager.hpp.

References map_contexts_.

Referenced by refresh_on_context_change().

◆ switch_context()

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 1101 of file context_manager.cpp.

References utf8::index(), and WRN_ED.

◆ toggle_update_transitions()

bool editor::context_manager::toggle_update_transitions ( )

◆ write_map()

bool editor::context_manager::write_map ( bool  display_confirmation = true)
private

Save the map under a given filename.

Displays an error message on failure.

Returns
true on success

Definition at line 894 of file context_manager.cpp.

References _(), e, and gui2::show_transient_message().

◆ write_scenario()

bool editor::context_manager::write_scenario ( bool  display_confirmation = true)
private

Definition at line 879 of file context_manager.cpp.

References _(), e, and gui2::show_transient_message().

Member Data Documentation

◆ auto_update_transitions_

int editor::context_manager::auto_update_transitions_
private

Flag to rebuild terrain on every terrain change.

Definition at line 335 of file context_manager.hpp.

Referenced by is_active_transitions_hotkey(), set_update_transitions_mode(), and toggle_update_transitions().

◆ clipboard_

map_fragment editor::context_manager::clipboard_
private

Clipboard map_fragment – used for copy-paste.

Definition at line 341 of file context_manager.hpp.

Referenced by clipboard_empty(), and get_clipboard().

◆ current_addon_

std::string editor::context_manager::current_addon_
private

The currently selected add-on.

Definition at line 326 of file context_manager.hpp.

Referenced by change_addon_id(), edit_pbl(), load_map_dialog(), and set_addon_id().

◆ current_context_index_

int editor::context_manager::current_context_index_
private

Definition at line 332 of file context_manager.hpp.

Referenced by current_context_index(), and get_map_context().

◆ default_dir_

std::string editor::context_manager::default_dir_
private

Default directory for map load/save as dialogs.

Definition at line 323 of file context_manager.hpp.

Referenced by set_default_dir().

◆ game_config_

const game_config_view& editor::context_manager::game_config_
private

Definition at line 320 of file context_manager.hpp.

◆ gui_

editor_display& editor::context_manager::gui_
private

Definition at line 318 of file context_manager.hpp.

Referenced by gui(), refresh_all(), and reload_map().

◆ last_map_generator_

map_generator* editor::context_manager::last_map_generator_
private

Definition at line 330 of file context_manager.hpp.

◆ locs_

class location_palette* editor::context_manager::locs_

Definition at line 206 of file context_manager.hpp.

Referenced by refresh_all().

◆ map_contexts_

std::vector<std::unique_ptr<map_context> > editor::context_manager::map_contexts_
private

The currently opened map context object.

Definition at line 338 of file context_manager.hpp.

Referenced by change_addon_id(), expand_open_maps_menu(), get_map_context(), modified_maps(), open_maps(), set_addon_id(), and size().

◆ map_generators_

std::vector<std::unique_ptr<map_generator> > editor::context_manager::map_generators_
private

Available random map generators.

Definition at line 329 of file context_manager.hpp.


The documentation for this class was generated from the following files: