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

Reply via email to