teditor_generate_map polishing.

This commit is contained in:
Mark de Wever 2009-08-16 20:29:48 +00:00
parent 0fa0eca73d
commit f7a3c326ec
2 changed files with 52 additions and 23 deletions

View file

@ -25,9 +25,30 @@
namespace gui2 {
/*WIKI
* @page = GUIWindowDefinitionWML
* @order = 2_editor_generate_map
*
* == Editor generate map ==
*
* This shows the dialog in the editor to select which random generator
* should be used to generate a map.
*
* @start_table = container
* current_generator (label) The label displaying the name of the
* currently selected generator.
* settings (button) When clicked this button opens the
* generator settings dialog.
* next_generator (button) Selects the next generator in the
* list, this list wraps at the end.
* @end_table
*/
teditor_generate_map::teditor_generate_map()
: map_generators_(), current_map_generator_(0),
current_generator_label_(NULL), gui_(NULL)
: map_generators_()
, current_map_generator_(0)
, current_generator_label_(NULL)
, gui_(NULL)
{
}
@ -55,9 +76,11 @@ map_generator* teditor_generate_map::get_selected_map_generator()
void teditor_generate_map::update_current_generator_label(twindow& window)
{
std::stringstream ss;
ss << lexical_cast<std::string>(current_map_generator_ + 1);
ss << "/" << lexical_cast<std::string>(map_generators_.size());
ss << ": " << get_selected_map_generator()->name() << ", " << get_selected_map_generator()->config_name();
ss << lexical_cast<std::string>(current_map_generator_ + 1)
<< "/" << lexical_cast<std::string>(map_generators_.size())
<< ": " << get_selected_map_generator()->name()
<< ", " << get_selected_map_generator()->config_name();
current_generator_label_->set_label(ss.str());
window.invalidate_layout();
@ -72,18 +95,24 @@ void teditor_generate_map::pre_show(CVideo& /*video*/, twindow& window)
{
assert(!map_generators_.empty());
assert(gui_);
current_generator_label_ = &window.get_widget<tlabel>("current_generator", false);
tbutton& settings_button = window.get_widget<tbutton>("settings", false);
current_generator_label_ =
&NEW_find_widget<tlabel>(&window, "current_generator", false);
tbutton& settings_button =
NEW_find_widget<tbutton>(&window, "settings", false);
settings_button.set_callback_mouse_left_click(
dialog_callback<teditor_generate_map, &teditor_generate_map::do_settings>);
tbutton& next_generator_button = window.get_widget<tbutton>("next_generator", false);
dialog_callback<teditor_generate_map
, &teditor_generate_map::do_settings>);
tbutton& next_generator_button =
NEW_find_widget<tbutton>(&window, "next_generator", false);
next_generator_button.set_callback_mouse_left_click(
dialog_callback<teditor_generate_map, &teditor_generate_map::do_next_generator>);
dialog_callback<teditor_generate_map
, &teditor_generate_map::do_next_generator>);
update_current_generator_label(window);
}
void teditor_generate_map::post_show(twindow& /*window*/)
{
}
} // namespace gui2

View file

@ -17,17 +17,16 @@
#include "gui/dialogs/dialog.hpp"
#include <vector>
class map_generator;
class display;
namespace gui2 {
class tlabel;
class teditor_generate_map : public tdialog
/** The dialog for selecting which random generator to use in the editor. */
class teditor_generate_map
: public tdialog
{
public:
teditor_generate_map();
@ -38,7 +37,11 @@ public:
/** Callback for the next generator button */
void do_next_generator(twindow& window);
void set_map_generators(std::vector<map_generator*> mg) { map_generators_ = mg; }
void set_map_generators(std::vector<map_generator*> mg)
{
map_generators_ = mg;
}
std::vector<map_generator*> get_map_generators() { return map_generators_; }
map_generator* get_selected_map_generator();
@ -55,9 +58,6 @@ private:
/** Inherited from tdialog. */
void pre_show(CVideo& video, twindow& window);
/** Inherited from tdialog. */
void post_show(twindow& window);
/** Available map generators */
std::vector<map_generator*> map_generators_;
@ -67,7 +67,6 @@ private:
/** Label for the current map generator */
tlabel* current_generator_label_;
/** Needed for the old-style map generator settings dialog */
display* gui_;
};
@ -75,3 +74,4 @@ private:
} // namespace gui2
#endif