Author: mordante
Date: Sun Mar 20 19:26:16 2011
New Revision: 48960
URL: http://svn.gna.org/viewcvs/wesnoth?rev=48960&view=rev
Log:
Polish teditor_settings.
- Use register functions.
- Remove use_mdi from caller in favour of the preferences.
Modified:
trunk/src/editor/editor_controller.cpp
trunk/src/editor/editor_controller.hpp
trunk/src/gui/dialogs/editor_settings.cpp
trunk/src/gui/dialogs/editor_settings.hpp
trunk/src/tests/gui/test_gui2.cpp
Modified: trunk/src/editor/editor_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/editor/editor_controller.cpp?rev=48960&r1=48959&r2=48960&view=diff
==============================================================================
--- trunk/src/editor/editor_controller.cpp (original)
+++ trunk/src/editor/editor_controller.cpp Sun Mar 20 19:26:16 2011
@@ -103,7 +103,6 @@
, background_terrain_(t_translation::GRASS_LAND)
, clipboard_()
,
auto_update_transitions_(preferences::editor::auto_update_transitions())
- , use_mdi_(preferences::editor::use_mdi())
, default_dir_(preferences::editor::default_dir())
{
create_default_context();
@@ -385,23 +384,8 @@
return;
}
- gui2::teditor_settings dialog;
- dialog.set_tods(tods_);
- dialog.set_current_adjustment(preferences::editor::tod_r(),
preferences::editor::tod_g(), preferences::editor::tod_b());
-
dialog.set_redraw_callback(boost::bind(&editor_controller::editor_settings_dialog_redraw_callback,
this, _1, _2, _3));
image::color_adjustment_resetter adjust_resetter;
- dialog.set_use_mdi(use_mdi_);
- dialog.show(gui().video());
-
- int res = dialog.get_retval();
- if(res == gui2::twindow::OK) {
- image::set_color_adjustment(dialog.get_red(),
dialog.get_green(), dialog.get_blue());
- preferences::editor::set_tod_r(dialog.get_red());
- preferences::editor::set_tod_g(dialog.get_green());
- preferences::editor::set_tod_b(dialog.get_blue());
- use_mdi_ = dialog.get_use_mdi();
- preferences::editor::set_use_mdi(use_mdi_);
- } else {
+ if(!gui2::teditor_settings::execute(&(gui()), tods_, gui().video())) {
adjust_resetter.reset();
}
refresh_all();
@@ -431,20 +415,25 @@
void editor_controller::load_map_dialog(bool force_same_context /* = false */)
{
- if (!use_mdi_ && !confirm_discard()) return;
+ if (!preferences::editor::use_mdi() && !confirm_discard()) {
+ return;
+ }
+
std::string fn = directory_name(get_map_context().get_filename());
if (fn.empty()) {
fn = default_dir_;
}
int res = dialogs::show_file_chooser_dialog(gui(), fn, _("Choose a Map
to Open"));
if (res == 0) {
- load_map(fn, force_same_context ? false : use_mdi_);
+ load_map(fn, force_same_context
+ ? false
+ : preferences::editor::use_mdi());
}
}
void editor_controller::new_map_dialog()
{
- if (!use_mdi_ && !confirm_discard()) {
+ if (!preferences::editor::use_mdi() && !confirm_discard()) {
return;
}
@@ -452,7 +441,7 @@
int h = get_map().h();
if(gui2::teditor_new_map::execute(w, h, gui().video())) {
const t_translation::t_terrain fill = t_translation::GRASS_LAND;
- new_map(w, h, fill, use_mdi_);
+ new_map(w, h, fill, preferences::editor::use_mdi());
}
}
Modified: trunk/src/editor/editor_controller.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/editor/editor_controller.hpp?rev=48960&r1=48959&r2=48960&view=diff
==============================================================================
--- trunk/src/editor/editor_controller.hpp (original)
+++ trunk/src/editor/editor_controller.hpp Sun Mar 20 19:26:16 2011
@@ -439,8 +439,6 @@
/** Flag to rebuild terrain on every terrain change */
int auto_update_transitions_;
- bool use_mdi_;
-
/** Default directory for map load/save as dialogs */
std::string default_dir_;
};
Modified: trunk/src/gui/dialogs/editor_settings.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/dialogs/editor_settings.cpp?rev=48960&r1=48959&r2=48960&view=diff
==============================================================================
--- trunk/src/gui/dialogs/editor_settings.cpp (original)
+++ trunk/src/gui/dialogs/editor_settings.cpp Sun Mar 20 19:26:16 2011
@@ -17,19 +17,19 @@
#include "gui/dialogs/editor_settings.hpp"
+#include "editor/editor_preferences.hpp"
+#include "editor/editor_display.hpp"
#include "gui/dialogs/field.hpp"
#include "gui/dialogs/helper.hpp"
-
#include "gui/widgets/button.hpp"
#include "gui/widgets/label.hpp"
#include "gui/widgets/slider.hpp"
#include "gui/widgets/settings.hpp"
#include "gui/widgets/toggle_button.hpp"
#include "gettext.hpp"
+#include "image.hpp"
#include <boost/bind.hpp>
-
-#define ERR_ED LOG_STREAM_INDENT(err, editor)
namespace gui2 {
@@ -76,23 +76,33 @@
REGISTER_DIALOG(editor_settings)
-teditor_settings::teditor_settings()
- : redraw_callback_()
- , tods_()
+teditor_settings::teditor_settings(editor::editor_display* display
+ , const std::vector<time_of_day>& tods)
+ : tods_(tods)
, current_tod_(0)
, current_tod_label_(NULL)
, current_tod_image_(NULL)
, custom_tod_toggle_(NULL)
, custom_tod_auto_refresh_(NULL)
, custom_tod_toggle_field_(register_bool("custom_tod_toggle", false))
- , custom_tod_red_(NULL)
- , custom_tod_green_(NULL)
- , custom_tod_blue_(NULL)
- , custom_tod_red_field_(register_integer("custom_tod_red", false))
- , custom_tod_green_field_(register_integer("custom_tod_green", false))
- , custom_tod_blue_field_(register_integer("custom_tod_blue", false))
- , use_mdi_field_(register_bool("use_mdi"))
-{
+ , custom_tod_red_field_(register_integer("custom_tod_red"
+ , false
+ , &preferences::editor::tod_r
+ , &preferences::editor::set_tod_r))
+ , custom_tod_green_field_(register_integer("custom_tod_green"
+ , false
+ , &preferences::editor::tod_g
+ , &preferences::editor::set_tod_g))
+ , custom_tod_blue_field_(register_integer("custom_tod_blue"
+ , false
+ , &preferences::editor::tod_b
+ , &preferences::editor::set_tod_b))
+ , display_(display)
+{
+ register_bool("use_mdi"
+ , false
+ , &preferences::editor::use_mdi
+ , &preferences::editor::set_use_mdi);
}
void teditor_settings::do_next_tod(twindow& window)
@@ -109,34 +119,17 @@
return tods_[current_tod_];
}
-int teditor_settings::get_red() const
-{
- return custom_tod_red_field_->get_cache_value();
-}
-int teditor_settings::get_green() const
-{
- return custom_tod_green_field_->get_cache_value();
-}
-int teditor_settings::get_blue() const
-{
- return custom_tod_blue_field_->get_cache_value();
-}
-
-void teditor_settings::set_use_mdi(bool value)
-{
- use_mdi_field_->set_cache_value(value);
-}
-
-bool teditor_settings::get_use_mdi() const
-{
- return use_mdi_field_->get_cache_value();
-}
-
void teditor_settings::update_tod_display(twindow& window)
{
- redraw_callback_(custom_tod_red_->get_value(),
- custom_tod_green_->get_value(),
- custom_tod_blue_->get_value());
+ image::set_color_adjustment(
+ custom_tod_red_field_->get_widget_value(window)
+ , custom_tod_green_field_->get_widget_value(window)
+ , custom_tod_blue_field_->get_widget_value(window));
+
+ if(display_) {
+ display_->redraw_everything();
+ }
+
window.set_dirty(true);
}
@@ -145,23 +138,6 @@
if (custom_tod_auto_refresh_->get_value()) {
update_tod_display(window);
}
-}
-
-void teditor_settings::set_current_adjustment(int r, int g, int b)
-{
- for (size_t i = 0; i < tods_.size(); ++i) {
- time_of_day& tod = tods_[i];
- if (tod.red == r && tod.green == g && tod.blue == b) {
- current_tod_ = i;
- custom_tod_toggle_field_->set_cache_value(false);
- return;
- }
- }
- /* custom tod */
- custom_tod_red_field_->set_cache_value(r);
- custom_tod_green_field_->set_cache_value(g);
- custom_tod_blue_field_->set_cache_value(b);
- custom_tod_toggle_field_->set_cache_value(true);
}
void teditor_settings::update_selected_tod_info(twindow& window)
@@ -182,16 +158,19 @@
* image widget.
*/
//current_tod_image_->set_icon_name(get_selected_tod().image);
- custom_tod_red_->set_value(get_selected_tod().red);
- custom_tod_green_->set_value(get_selected_tod().green);
- custom_tod_blue_->set_value(get_selected_tod().blue);
- custom_tod_red_field_->set_cache_value(get_selected_tod().red);
-
custom_tod_green_field_->set_cache_value(get_selected_tod().green);
-
custom_tod_blue_field_->set_cache_value(get_selected_tod().blue);
- }
- custom_tod_red_->set_active(custom);
- custom_tod_green_->set_active(custom);
- custom_tod_blue_->set_active(custom);
+ custom_tod_red_field_->set_widget_value(
+ window
+ , get_selected_tod().red);
+ custom_tod_green_field_->set_widget_value(
+ window
+ , get_selected_tod().green);
+ custom_tod_blue_field_->set_widget_value(
+ window
+ , get_selected_tod().blue);
+ }
+ custom_tod_red_field_->widget()->set_active(custom);
+ custom_tod_green_field_->widget()->set_active(custom);
+ custom_tod_blue_field_->widget()->set_active(custom);
current_tod_label_->set_active(!custom);
update_tod_display(window);
window.invalidate_layout();
@@ -208,12 +187,6 @@
&window, "custom_tod_toggle", false, true);
custom_tod_auto_refresh_ = find_widget<ttoggle_button>(
&window, "custom_tod_auto_refresh", false, true);
- custom_tod_red_ = find_widget<tslider>(
- &window, "custom_tod_red", false, true);
- custom_tod_green_ = find_widget<tslider>(
- &window, "custom_tod_green", false, true);
- custom_tod_blue_ = find_widget<tslider>(
- &window, "custom_tod_blue", false, true);
tbutton& next_tod_button = find_widget<tbutton>(
&window, "next_tod", false);
@@ -234,24 +207,40 @@
dialog_callback<teditor_settings
, &teditor_settings::update_selected_tod_info>);
- connect_signal_notify_modified(*custom_tod_red_
+ connect_signal_notify_modified(*(custom_tod_red_field_->widget())
, boost::bind(
&teditor_settings::slider_update_callback
, this
, boost::ref(window)));
- connect_signal_notify_modified(*custom_tod_green_
+ connect_signal_notify_modified(*(custom_tod_green_field_->widget())
, boost::bind(
&teditor_settings::slider_update_callback
, this
, boost::ref(window)));
- connect_signal_notify_modified(*custom_tod_blue_
+ connect_signal_notify_modified(*(custom_tod_blue_field_->widget())
, boost::bind(
&teditor_settings::slider_update_callback
, this
, boost::ref(window)));
+ for (size_t i = 0; i < tods_.size(); ++i) {
+
+ time_of_day& tod = tods_[i];
+ const int r = custom_tod_red_field_->get_widget_value(window);
+ const int g = custom_tod_green_field_->get_widget_value(window);
+ const int b = custom_tod_blue_field_->get_widget_value(window);
+ if (tod.red == r && tod.green == g && tod.blue == b) {
+ current_tod_ = i;
+ custom_tod_toggle_->set_value(false);
+ return;
+ }
+ }
+
+ /* custom tod */
+ custom_tod_toggle_->set_value(true);
+
update_selected_tod_info(window);
}
Modified: trunk/src/gui/dialogs/editor_settings.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/dialogs/editor_settings.hpp?rev=48960&r1=48959&r2=48960&view=diff
==============================================================================
--- trunk/src/gui/dialogs/editor_settings.hpp (original)
+++ trunk/src/gui/dialogs/editor_settings.hpp Sun Mar 20 19:26:16 2011
@@ -17,24 +17,35 @@
#define GUI_DIALOGS_EDITOR_SETTINGS_HPP_INCLUDED
#include "time_of_day.hpp"
-#include "gui/auxiliary/notifiee.hpp"
#include "gui/dialogs/dialog.hpp"
#include <vector>
-#include <boost/function.hpp>
+
+namespace editor {
+
+class editor_display;
+
+} // namespace editor
namespace gui2 {
class tlabel;
class ttoggle_button;
-class tslider;
class teditor_settings : public tdialog
{
public:
- teditor_settings();
+ teditor_settings(editor::editor_display* display
+ , const std::vector<time_of_day>& tods);
- void set_redraw_callback(boost::function<void (int, int, int)>
callback) { redraw_callback_ = callback; }
+ static bool execute(editor::editor_display* display
+ , const std::vector<time_of_day>& tods
+ , CVideo& video)
+ {
+ return teditor_settings(display, tods).show(video);
+ }
+
+private:
/** Callback for the next tod button */
void do_next_tod(twindow& window);
@@ -43,22 +54,10 @@
void slider_update_callback(twindow& window);
- void set_tods(const std::vector<time_of_day>& tods) { tods_ = tods; }
- const std::vector<time_of_day>& get_tods() const { return tods_; }
-
- void set_current_adjustment(int r, int g, int b);
-
void set_selected_tod(time_of_day tod);
const time_of_day& get_selected_tod() const;
- int get_red() const;
- int get_green() const;
- int get_blue() const;
-
void update_selected_tod_info(twindow& window);
-
- bool get_use_mdi() const;
- void set_use_mdi(bool value);
private:
/** Inherited from tdialog, implemented by REGISTER_DIALOG. */
@@ -66,8 +65,6 @@
/** Inherited from tdialog. */
void pre_show(CVideo& video, twindow& window);
-
- boost::function<void (int, int, int)> redraw_callback_;
/** Available time_of_days */
std::vector<time_of_day> tods_;
@@ -86,15 +83,17 @@
tfield_bool* custom_tod_toggle_field_;
- tslider* custom_tod_red_;
- tslider* custom_tod_green_;
- tslider* custom_tod_blue_;
-
tfield_integer* custom_tod_red_field_;
tfield_integer* custom_tod_green_field_;
tfield_integer* custom_tod_blue_field_;
- tfield_bool* use_mdi_field_;
+ /**
+ * The display to update when the ToD changes.
+ *
+ * The pointer may be NULL, in the unit tests, but normally it should
be a
+ * pointer to a valid object.
+ */
+ editor::editor_display* display_;
};
} // namespace gui2
Modified: trunk/src/tests/gui/test_gui2.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/tests/gui/test_gui2.cpp?rev=48960&r1=48959&r2=48960&view=diff
==============================================================================
--- trunk/src/tests/gui/test_gui2.cpp (original)
+++ trunk/src/tests/gui/test_gui2.cpp Sun Mar 20 19:26:16 2011
@@ -665,13 +665,8 @@
template<>
struct twrapper<gui2::teditor_settings>
{
- static void dummy_callback(int, int, int) {}
-
static gui2::teditor_settings* create()
{
- gui2::teditor_settings* result = new gui2::teditor_settings();
- BOOST_REQUIRE_MESSAGE(result, "Failed to create a dialog.");
-
const config &cfg = main_config.child("editor_times");
BOOST_REQUIRE_MESSAGE(cfg, "No editor time-of-day defined");
@@ -679,11 +674,7 @@
foreach (const config &i, cfg.child_range("time")) {
tods.push_back(time_of_day(i));
}
- result->set_tods(tods);
-
- result->set_redraw_callback(boost::bind(dummy_callback, _1, _2,
_3));
-
- return result;
+ return new gui2::teditor_settings(NULL, tods);
}
};
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits