Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #define GETTEXT_DOMAIN "wesnoth-editor"
00016
00017 #include "gui/dialogs/editor_generate_map.hpp"
00018
00019 #include "gui/dialogs/helper.hpp"
00020
00021 #include "gui/widgets/button.hpp"
00022 #include "gui/widgets/label.hpp"
00023 #include "gui/widgets/settings.hpp"
00024 #include "mapgen.hpp"
00025
00026 #include <boost/bind.hpp>
00027
00028 #define ERR_ED LOG_STREAM_INDENT(err, editor)
00029
00030 namespace gui2 {
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 REGISTER_DIALOG(editor_generate_map)
00056
00057 teditor_generate_map::teditor_generate_map()
00058 : map_generators_()
00059 , current_map_generator_(0)
00060 , current_generator_label_(NULL)
00061 , gui_(NULL)
00062 {
00063 }
00064
00065 void teditor_generate_map::do_settings(twindow& )
00066 {
00067 map_generator* mg = get_selected_map_generator();
00068 if (mg->allow_user_config()) {
00069 mg->user_config(*gui_);
00070 }
00071 }
00072
00073 void teditor_generate_map::do_next_generator(twindow& window)
00074 {
00075 current_map_generator_++;
00076 current_map_generator_ %= map_generators_.size();
00077 update_current_generator_label(window);
00078 }
00079
00080 map_generator* teditor_generate_map::get_selected_map_generator()
00081 {
00082 assert(static_cast<size_t>(current_map_generator_) < map_generators_.size());
00083 return map_generators_[current_map_generator_];
00084 }
00085
00086 void teditor_generate_map::update_current_generator_label(twindow& window)
00087 {
00088 std::stringstream ss;
00089 ss << lexical_cast<std::string>(current_map_generator_ + 1)
00090 << "/" << lexical_cast<std::string>(map_generators_.size())
00091 << ": " << get_selected_map_generator()->name()
00092 << ", " << get_selected_map_generator()->config_name();
00093
00094 current_generator_label_->set_label(ss.str());
00095
00096 window.invalidate_layout();
00097 }
00098
00099 void teditor_generate_map::pre_show(CVideo& , twindow& window)
00100 {
00101 assert(!map_generators_.empty());
00102 assert(gui_);
00103
00104 current_generator_label_ =
00105 &find_widget<tlabel>(&window, "current_generator", false);
00106
00107 tbutton& settings_button =
00108 find_widget<tbutton>(&window, "settings", false);
00109 connect_signal_mouse_left_click(settings_button, boost::bind(
00110 &teditor_generate_map::do_settings
00111 , this
00112 , boost::ref(window)));
00113
00114 tbutton& next_generator_button =
00115 find_widget<tbutton>(&window, "next_generator", false);
00116 connect_signal_mouse_left_click(next_generator_button, boost::bind(
00117 &teditor_generate_map::do_next_generator
00118 , this
00119 , boost::ref(window)));
00120
00121 update_current_generator_label(window);
00122 }
00123
00124 }
00125