gui/dialogs/editor_generate_map.cpp

Go to the documentation of this file.
00001 /* $Id: editor_generate_map.cpp 52533 2012-01-07 02:35:17Z shadowmaster $ */
00002 /*
00003    Copyright (C) 2008 - 2012 by Mark de Wever <koraq@xs4all.nl>
00004    Part of the Battle for Wesnoth Project http://www.wesnoth.org/
00005 
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2 of the License, or
00009    (at your option) any later version.
00010    This program is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY.
00012 
00013    See the COPYING file for more details.
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 /*WIKI
00033  * @page = GUIWindowDefinitionWML
00034  * @order = 2_editor_generate_map
00035  *
00036  * == Editor generate map ==
00037  *
00038  * This shows the dialog in the editor to select which random generator
00039  * should be used to generate a map.
00040  *
00041  * @begin{table}{dialog_widgets}
00042  * current_generator & & label & m &
00043  *         The label displaying the name of the currently selected generator. $
00044  *
00045  * settings & & button & m &
00046  *         When clicked this button opens the generator settings dialog. $
00047  *
00048  * next_generator & & button & m &
00049  *         Selects the next generator in the list, this list wraps at the
00050  *         end. $
00051  *
00052  * @end{table}
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& /*window*/)
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& /*video*/, 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 } // namespace gui2
00125 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated by doxygen 1.7.1 on Thu May 24 2012 01:02:42 for The Battle for Wesnoth
Gna! | Forum | Wiki | CIA | devdocs