[gnome-games/applygsoc2009: 39/76] XXX: Extract methods to make set_value shorter
- From: Pablo Castellano <pablog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games/applygsoc2009: 39/76] XXX: Extract methods to make set_value shorter
- Date: Mon, 6 Sep 2010 02:50:30 +0000 (UTC)
commit c48c9c81bb5448028e28d1f24693319da9f8735a
Author: Pablo Castellano <pablog src gnome org>
Date: Thu Aug 26 15:56:09 2010 +0200
XXX: Extract methods to make set_value shorter
gnome-sudoku/src/lib/gsudoku.py | 54 +++++++++++++++++++++++++-------------
1 files changed, 35 insertions(+), 19 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/gsudoku.py b/gnome-sudoku/src/lib/gsudoku.py
index 6aa04ee..252397e 100644
--- a/gnome-sudoku/src/lib/gsudoku.py
+++ b/gnome-sudoku/src/lib/gsudoku.py
@@ -526,32 +526,47 @@ class SudokuModel:
def set_value(self, x, y, value):
result = []
- # first remove conflicts; grid.add should return conflicts together
- # with ConflictError
- old_conflicts = self._remove_related_conflicts(x, y)
+ old_conflicts = self._remove_old_conficts (x, y)
new_conflicts = []
- for entry in old_conflicts:
- change = NumberBoxModel(x=entry[0], y=entry[1], conflict=False)
- result.append(change)
- if not value: # should use unified way to update the grid
- self.grid.remove(x, y)
+ # Some value won't go into the grid, e.g. conflicts values?
+ # This makes things complicated.
+ if not value:
+ if self.grid._get_(x, y):
+ self.grid.remove(x, y)
else:
try:
- self.grid.add(x, y, value) # force=True???
+ self.grid.add(x, y, value, force=True)
except sudoku.ConflictError, err:
- new_conflicts = self.grid.find_conflicts(x, y, value)
- has_conflict = True if new_conflicts else False
- result.append(NumberBoxModel(x, y, value, conflict=has_conflict))
+ new_conflicts = self._find_new_conflicts(x, y, value)
+
+ flag = True if new_conflicts else False
+ result.append(NumberBoxModel(x, y, value, conflict=flag))
+ result.extend(old_conflicts)
+ result.extend(new_conflicts)
+
+ print self.grid
+ self._signal_observers(result)
+ self._check_for_completeness()
+
+ def _remove_old_conficts(self, x, y):
+ result = []
+ old_conflicts = self._remove_related_conflicts(x, y)
+ for entry in old_conflicts:
+ change = NumberBoxModel(x=entry[0], y=entry[1], conflict=False)
+ result.append(change)
+ return result
+
+ def _find_new_conflicts(self, x, y, value):
+ result = []
+ new_conflicts = self.grid.find_conflicts(x, y, value)
+ print new_conflicts
if new_conflicts:
- self._record_conflicts(x, y, new_conflicts)
+ self.__error_pairs__[(x, y)] = new_conflicts
for entry in new_conflicts:
change = NumberBoxModel(x=entry[0], y=entry[1], conflict=True)
result.append(change)
- self._signal_observers(result)
-
- if self.grid.check_for_completeness():
- self._signal_completeness()
+ return result
def _remove_related_conflicts(self, x, y):
result = []
@@ -564,8 +579,9 @@ class SudokuModel:
result.append(coord)
return result
- def _record_conflicts(self, x, y, new_conflicts):
- self.__error_pairs__[(x, y)] = new_conflicts
+ def _check_for_completeness(self):
+ if self.grid.check_for_completeness():
+ self._signal_completeness()
def remove (self, x, y, *args):
"""Remove x, y from our visible grid.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]