[gnome-games/sudoku-tube] Remove duplicate code of closing current game



commit 8c205f0e5ea71580ebf5ac60b3be5551ee532088
Author: Zhang Sen <zh jesse gmail com>
Date:   Wed May 27 15:31:40 2009 +0800

    Remove duplicate code of closing current game
---
 gnome-sudoku/src/lib/main.py |   50 +++++++++++++----------------------------
 1 files changed, 16 insertions(+), 34 deletions(-)

diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index 6687677..6eb8e4a 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -463,51 +463,33 @@ class UI (gconf_wrapper.GConfWrapper):
     @simple_debug
     @inactivate_new_game_etc
     def new_cb (self, *args):
-        if (self.gsd.grid and self.gsd.grid.is_changed() and not self.won):
-            try:
-                if dialog_extras.getBoolean(
-                    label = _("Save this game before starting new one?"),
-                    custom_yes = _("_Save game for later"),
-                    custom_no = _("_Abandon game"),
-                    ):
-                    self.save_game()
-                else:
-                    self.sudoku_tracker.abandon_game(self)
-            except dialog_extras.UserCancelledError:
-                # User cancelled new game
-                return
-        self.do_stop()
-        self.select_game()
+        if self._close_current_game():
+            self.select_game()
 
     @inactivate_new_game_etc
     def new_with_contact (self, *args):
+        if self._close_current_game():
+            self.select_game()
+
+    @simple_debug
+    def _close_current_game (self):
+        """Close current running game
+
+        Return True if game is closed, or else return False"""
         if (self.gsd.grid and self.gsd.grid.is_changed() and not self.won):
             try:
                 if dialog_extras.getBoolean(
-                    label = _("Save this game before starting new one?"),
-                    custom_yes = _("_Save game for later"),
-                    custom_no = _("_Abandon game"),
-                    ):
+                        label = _("Save current game?"),
+                        custom_yes = _("_Save"),
+                        custom_no = _("_Abandon")):
                     self.save_game()
                 else:
                     self.sudoku_tracker.abandon_game(self)
             except dialog_extras.UserCancelledError:
-                # User cancelled new game
-                return
+                # User cancelled; current game is not closed
+                return False
         self.do_stop()
-        self.select_game()
-
-    @simple_debug
-    def stop_game (self):
-        if (self.gsd.grid
-            and self.gsd.grid.is_changed()
-            and (not self.won)):
-            try:
-                if dialog_extras.getBoolean(label = _("Save game before closing?")):
-                    self.save_game(self)
-            except dialog_extras.UserCancelledError:
-                return
-            self.do_stop()
+        return True # also return True if game is not changed at all
 
     def do_stop (self):
         self.stop_dancer()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]