Author: jhinrichs
Date: Tue Apr 28 21:03:51 2009
New Revision: 35305

URL: http://svn.gna.org/viewcvs/wesnoth?rev=35305&view=rev
Log:
Refactoring save_game_interactive in savegame.cpp.

Modified:
    trunk/src/savegame.cpp
    trunk/src/savegame.hpp

Modified: trunk/src/savegame.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/savegame.cpp?rev=35305&r1=35304&r2=35305&view=diff
==============================================================================
--- trunk/src/savegame.cpp (original)
+++ trunk/src/savegame.cpp Tue Apr 28 21:03:51 2009
@@ -21,6 +21,7 @@
 #include "game_events.hpp"
 #include "gettext.hpp"
 #include "gui/dialogs/game_save.hpp"
+#include "gui/dialogs/message.hpp"
 #include "gui/widgets/window.hpp"
 #include "log.hpp"
 #include "map.hpp"
@@ -475,41 +476,13 @@
        show_confirmation_ = ask_for_filename;
        create_filename();
 
-
-       int res = 0;
+       int res = gui2::twindow::OK;
        bool exit = true;
-       static bool ignore_all = false;
 
        do{ 
                try{
-                       if (ask_for_filename){
-                               std::string filename = filename_;
-
-                               if (has_exit_button){
-                                       gui2::tgame_save_oos dlg(title_, 
filename, message);
-                                       dlg.show(gui.video());
-                                       filename = dlg.filename();
-                                       ignore_all = dlg.ignore_all();
-                                       res = dlg.get_retval();
-                               }
-                               else{
-                                       if (dialog_type == gui::OK_CANCEL){
-                                               gui2::tgame_save dlg(title_, 
filename);
-                                               dlg.show(gui.video());
-                                               filename = dlg.filename();
-                                               res = dlg.get_retval();
-                                       }
-                                       else if (dialog_type == gui::YES_NO){
-                                               gui2::tgame_save_message 
dlg(title_, filename, message);
-                                               dlg.show(gui.video());
-                                               filename = dlg.filename();
-                                               res = dlg.get_retval();
-                                       }
-                               }
-
-                               check_filename(filename, gui);
-                               set_filename(filename);
-                       }
+                       if (ask_for_filename)
+                               res = show_save_dialog(gui.video(), 
has_exit_button, message, dialog_type);
 
                        if (res == gui2::twindow::OK)
                                exit = check_overwrite(gui);
@@ -527,6 +500,75 @@
                return false;
 
        return save_game(&gui);
+}
+
+int savegame::show_save_dialog(CVideo& video, bool is_oos, const std::string& 
message, const gui::DIALOG_TYPE dialog_type)
+{
+       static bool ignore_all = false;
+       int res = 0;
+
+       std::string filename = filename_;
+
+       if (is_oos && (!ignore_all)){
+               gui2::tgame_save_oos dlg(title_, filename, message);
+               dlg.show(video);
+               filename = dlg.filename();
+               ignore_all = dlg.ignore_all();
+               res = dlg.get_retval();
+       }
+       else{
+               if (dialog_type == gui::OK_CANCEL){
+                       gui2::tgame_save dlg(title_, filename);
+                       dlg.show(video);
+                       filename = dlg.filename();
+                       res = dlg.get_retval();
+               }
+               else if (dialog_type == gui::YES_NO){
+                       gui2::tgame_save_message dlg(title_, filename, message);
+                       dlg.show(video);
+                       filename = dlg.filename();
+                       res = dlg.get_retval();
+               }
+       }
+
+       check_filename(filename, video);
+       set_filename(filename);
+
+       return res;
+}
+
+bool savegame::check_overwrite(display& gui)
+{
+       std::string filename = filename_;
+       if (savegame_manager::save_game_exists(filename, compress_saves_)) {
+               std::stringstream s;
+               s << _("Save already exists. Do you want to overwrite it?")
+                 << std::endl << _("Name: ") << filename;
+               int overwrite = gui::dialog(gui,_("Overwrite?"),
+                       s.str(), gui::YES_NO).show();
+               return overwrite == 0;
+       } else {
+               return true;
+       }
+}
+
+void savegame::check_filename(const std::string& filename, CVideo& video)
+{
+       if (is_gzip_file(filename)) {
+               gui2::show_message(video, _("Error"), _("Save names should not 
end on '.gz'. "
+                       "Please choose a different name."));
+               //gui::message_dialog(gui, _("Error"), 
+               //      _("Save names should not end on '.gz'. "
+               //      "Please choose a different name.")).show();
+               throw illegal_filename_exception();
+       }
+}
+
+void savegame::set_filename(std::string filename)
+{
+       filename.erase(std::remove_if(filename.begin(), filename.end(),
+                   dialogs::is_illegal_file_char), filename.end());
+       filename_ = filename;
 }
 
 void savegame::before_save()
@@ -753,38 +795,6 @@
        }
 }
 
-bool savegame::check_overwrite(display& gui)
-{
-       std::string filename = filename_;
-       if (savegame_manager::save_game_exists(filename, compress_saves_)) {
-               std::stringstream s;
-               s << _("Save already exists. Do you want to overwrite it?")
-                 << std::endl << _("Name: ") << filename;
-               int overwrite = gui::dialog(gui,_("Overwrite?"),
-                       s.str(), gui::YES_NO).show();
-               return overwrite == 0;
-       } else {
-               return true;
-       }
-}
-
-void savegame::check_filename(const std::string& filename, display& gui)
-{
-       if (is_gzip_file(filename)) {
-               gui::message_dialog(gui, _("Error"),
-                       _("Save names should not end on '.gz'. "
-                       "Please choose a different name.")).show();
-               throw illegal_filename_exception();
-       }
-}
-
-void savegame::set_filename(std::string filename)
-{
-       filename.erase(std::remove_if(filename.begin(), filename.end(),
-                   dialogs::is_illegal_file_char), filename.end());
-       filename_ = filename;
-}
-
 scenariostart_savegame::scenariostart_savegame(game_state &gamestate, const 
bool compress_saves)
        : savegame(gamestate, compress_saves)
 {

Modified: trunk/src/savegame.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/savegame.hpp?rev=35305&r1=35304&r2=35305&view=diff
==============================================================================
--- trunk/src/savegame.hpp (original)
+++ trunk/src/savegame.hpp Tue Apr 28 21:03:51 2009
@@ -173,7 +173,9 @@
                override this to take effect. */
        virtual void create_filename() {}
        /** Check, if the filename contains illegal constructs like ".gz". */
-       void check_filename(const std::string& filename, display& gui);
+       void check_filename(const std::string& filename, CVideo& video);
+       /** Display the save game dialog. */
+       int show_save_dialog(CVideo& video, bool is_oos, const std::string& 
message, const gui::DIALOG_TYPE dialog_type);
        /** Ask the user if an existing file should be overwritten. */
        bool check_overwrite(display& gui);
 


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to