editor: Remember last map gen choice during same editor session (bug #23431)

This commit is contained in:
Ignacio R. Morelle 2015-04-23 05:44:49 -03:00
parent a96e0a3659
commit 39c1811235
5 changed files with 24 additions and 1 deletions

View file

@ -1,4 +1,7 @@
Version 1.13.0+dev:
* Editor:
* Redesigned Generate Map dialog to use a real listbox and remember the
last choice during the same editor session.
* Graphics:
* New generic portrait for the Walking Corpse and Soulless
* Language and i18n:

View file

@ -140,6 +140,7 @@ context_manager::context_manager(editor_display& gui, const config& game_config)
, game_config_(game_config)
, default_dir_(preferences::editor::default_dir())
, map_generators_()
, last_map_generator_(NULL)
, current_context_index_(0)
, auto_update_transitions_(preferences::editor::auto_update_transitions())
, map_contexts_()
@ -649,12 +650,14 @@ void context_manager::generate_map_dialog()
}
gui2::teditor_generate_map dialog;
dialog.set_map_generators(map_generators_);
dialog.select_map_generator(last_map_generator_);
dialog.set_gui(&gui_);
dialog.show(gui_.video());
if (dialog.get_retval() == gui2::twindow::OK) {
std::string map_string;
map_generator* const map_generator = dialog.get_selected_map_generator();
try {
map_string = dialog.get_selected_map_generator()->create_map(dialog.get_seed());
map_string = map_generator->create_map(dialog.get_seed());
} catch (mapgen_exception& e) {
gui2::show_transient_message(gui_.video(), _("Map creation failed."), e.what());
return;
@ -666,6 +669,7 @@ void context_manager::generate_map_dialog()
editor_action_whole_map a(new_map);
perform_refresh(a);
}
last_map_generator_ = map_generator;
}
}

View file

@ -284,6 +284,7 @@ private:
/** Available random map generators */
std::vector<map_generator*> map_generators_;
map_generator* last_map_generator_;
int current_context_index_;

View file

@ -64,6 +64,7 @@ REGISTER_DIALOG(editor_generate_map)
teditor_generate_map::teditor_generate_map()
: map_generators_()
, last_map_generator_(NULL)
, current_map_generator_(0)
, random_seed_()
, gui_(NULL)
@ -97,6 +98,11 @@ map_generator* teditor_generate_map::get_selected_map_generator()
return map_generators_[current_map_generator_];
}
void teditor_generate_map::select_map_generator(map_generator* mg)
{
last_map_generator_ = mg;
}
void teditor_generate_map::pre_show(CVideo& /*video*/, twindow& window)
{
assert(!map_generators_.empty());
@ -115,6 +121,10 @@ void teditor_generate_map::pre_show(CVideo& /*video*/, twindow& window)
// lrow["generator_id"]["label"] = gen->name();
list.add_row(lrow);
if(gen == last_map_generator_) {
list.select_row(list.get_item_count() - 1);
}
}
list.set_callback_item_change(

View file

@ -46,6 +46,8 @@ public:
map_generator* get_selected_map_generator();
void select_map_generator(map_generator* mg);
void set_gui(display* d)
{
gui_ = d;
@ -72,6 +74,9 @@ private:
/** Available map generators */
std::vector<map_generator*> map_generators_;
/** Last used map generator, must be in map_generators_ */
map_generator* last_map_generator_;
/** Current map generator index */
int current_map_generator_;