[gnome-games/sudoku-tube] Make clear-grid work
- From: Zhang Sen <zhangsen src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-games/sudoku-tube] Make clear-grid work
- Date: Sat, 18 Jul 2009 11:48:14 +0000 (UTC)
commit 7ab502f708b2493a0e4171c9d6709b072bc5e6e1
Author: Zhang Sen <zh jesse gmail com>
Date: Sat Jul 18 19:03:51 2009 +0800
Make clear-grid work
gnome-sudoku/src/lib/gsudoku.py | 13 +++++--------
gnome-sudoku/src/lib/main.py | 27 +++++++++------------------
2 files changed, 14 insertions(+), 26 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/gsudoku.py b/gnome-sudoku/src/lib/gsudoku.py
index 95646c1..c68c1f5 100644
--- a/gnome-sudoku/src/lib/gsudoku.py
+++ b/gnome-sudoku/src/lib/gsudoku.py
@@ -409,6 +409,7 @@ class SudokuModel:
self.impossible_hints = 0
self.impossibilities = []
self.__trackers_tracking__ = {}
+ self.group_size = group_size
self._setup_grid(grid, group_size)
self._observers = []
@@ -426,18 +427,14 @@ class SudokuModel:
def reset_grid (self):
"""Reset grid to its original setup.
+ """
- Return a list of items we removed so that callers can handle
- e.g. Undo properly"""
- removed = []
for x in range(self.group_size):
for y in range(self.group_size):
if not self.grid.virgin._get_(x, y):
- val = self.__entries__[(x, y)].get_value() # get the value from the user-visible grid,
- if val:
- removed.append((x, y, val, self._trackers_for_point(x, y, val)))
- self.remove(x, y, do_removal = True)
- return removed
+ # conflicting values are not being tracked, so we have to
+ # set_value on all the entries, instead of only filled ones
+ self.set_value(x, y, 0)
def _blank_grid(self):
for x in range(self.group_size):
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index 82d6fd8..60e3bea 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -252,6 +252,14 @@ class UI (gconf_wrapper.GConfWrapper):
action = self.builder.get_object(action_name)
action.connect("activate", callback)
+ edit_actions = [
+ ("Clear", self.clear_cb),
+ ("ClearNotes", self.clear_notes_cb),
+ ]
+ for action_name, callback in edit_actions:
+ action = self.builder.get_object(action_name)
+ action.connect("activate", callback)
+
def setup_undo (self):
# TODO
return
@@ -442,24 +450,7 @@ class UI (gconf_wrapper.GConfWrapper):
self.is_fullscreen = True
def clear_cb (self, *args):
- clearer = Undo.UndoableObject(
- self.do_clear, #action
- self.undo_clear, #inverse
- self.history #history
- )
- clearer.perform()
-
- # add a check to stop the dancer if she is dancing
- def do_clear (self, *args):
- self.cleared.append(self.gsd.reset_grid())
- self.stop_dancer()
-
- # add a check for finish in the undo to clear
- def undo_clear (self, *args):
- for entry in self.cleared.pop():
- self.gsd.add_value(*entry)
- if self.gsd.grid.check_for_completeness():
- self.gsd.emit('puzzle-finished')
+ self._main_model.reset_grid()
def clear_notes_cb (self, *args):
clearer = Undo.UndoableObject(
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]