[gnome-games/sudoku-tube] Make clear-notes work



commit 4046fafbb0a7edbde8a62bb38d4f29d1e63769ef
Author: Zhang Sen <zh jesse gmail com>
Date:   Sat Jul 18 19:08:47 2009 +0800

    Make clear-notes work

 gnome-sudoku/src/lib/gsudoku.py |   12 ++++++++++++
 gnome-sudoku/src/lib/main.py    |    9 +--------
 2 files changed, 13 insertions(+), 8 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/gsudoku.py b/gnome-sudoku/src/lib/gsudoku.py
index c68c1f5..0961b58 100644
--- a/gnome-sudoku/src/lib/gsudoku.py
+++ b/gnome-sudoku/src/lib/gsudoku.py
@@ -391,6 +391,14 @@ class NotesModel:
             self.set_notes(x, y, bottom_note="X")
 
     def _clear_hints(self):
+        self._clear_bottom_note()
+
+    def _clear_top_note(self):
+        for x in range(self._group_size):
+            for y in range(self._group_size):
+                self.set_notes(x, y, top_note="")
+
+    def _clear_bottom_note(self):
         for x in range(self._group_size):
             for y in range(self._group_size):
                 self.set_notes(x, y, bottom_note="")
@@ -401,6 +409,10 @@ class NotesModel:
     def get_hints_count(self):
         return self._hints_count
 
+    def clear_notes(self):
+        self._clear_top_note()
+        self._clear_bottom_note()
+
 class SudokuModel:
 
     def __init__ (self, grid, group_size):
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index 60e3bea..167d7dc 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -453,14 +453,7 @@ class UI (gconf_wrapper.GConfWrapper):
         self._main_model.reset_grid()
 
     def clear_notes_cb (self, *args):
-        clearer = Undo.UndoableObject(
-            lambda *args: self.cleared_notes.append(self.gsd.clear_notes()), #action
-            # clear_notes returns a list of tuples indicating the cleared notes...
-            # (x,y,(top,bottom)) -- this is what we need for undoing
-            lambda *args: [self.gsd.__entries__[t[0], t[1]].set_notes(t[2]) for t in self.cleared_notes.pop()], #inverse
-            self.history
-            )
-        clearer.perform()
+        self._notes_model.clear_notes()
 
     def show_hint_cb (self, *args):
         current = self._main_grid_vew.get_focus()



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