[gnome-games/sudoku-tube: 81/82] Misc. updates
- From: Zhang Sen <zhangsen src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-games/sudoku-tube: 81/82] Misc. updates
- Date: Sat, 14 Nov 2009 02:49:26 +0000 (UTC)
commit 094915a86f96e4d6c39124881a8ac846220730b5
Author: Zhang Sen <zh jesse gmail com>
Date: Sat Nov 14 10:38:33 2009 +0800
Misc. updates
Make some code more readable
gnome-sudoku/src/lib/networking.py | 19 ++++++++------
gnome-sudoku/src/lib/tube_handler.py | 2 +-
gnome-sudoku/src/lib/view.py | 45 +++++++++++++++++++---------------
3 files changed, 37 insertions(+), 29 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/networking.py b/gnome-sudoku/src/lib/networking.py
index 330c048..e77dc35 100644
--- a/gnome-sudoku/src/lib/networking.py
+++ b/gnome-sudoku/src/lib/networking.py
@@ -32,31 +32,34 @@ class SideViewProxy(dbus.service.Object):
"""A dbus object, which exports a sudoku game's side-view on dbus
"""
+ _COLLABORATE_BG = (0, 1, 0)
+ _COMPETITIVE_BG = (0, 0, 0)
+
def __init__(self, bus, obj_path, mode, sudoku_view):
dbus.service.Object.__init__(self, bus, obj_path)
- self._view = sudoku_view
+ self._side_view = sudoku_view
self._is_collaborate = mode
@dbus.service.method(dbus_interface=view_interface,
in_signature="iii", out_signature="")
def set_value(self, x, y, value):
if self._is_collaborate:
- self._view.set_value(x, y, value)
- # else is competitive mode
- elif value:
- self._view.set_invisible(x, y)
+ self._side_view.set_value_with_bg(x, y, value, self._COLLABORATE_BG)
else:
- self._view.set_empty(x, y)
+ self._side_view.set_value_with_bg(x, y, value, self._COMPETITIVE_BG)
@dbus.service.method(dbus_interface=view_interface,
in_signature="ii", out_signature="")
def set_focus(self, x, y):
- self._view.set_focus(x, y)
+ self._side_view.set_focus(x, y)
class RemoteViewHandler:
"""A handler which has identical interface with SudokuView and will relay
- commands to a remote SideViewProxy
+ commands to a remote SideViewProxy.
+
+ Commands go along such a route:
+ main_model->RemoteViewHandler->SideViewProxy->SudokuSideView
"""
def __init__(self, remote_proxy):
diff --git a/gnome-sudoku/src/lib/tube_handler.py b/gnome-sudoku/src/lib/tube_handler.py
index 1737914..831e3a9 100644
--- a/gnome-sudoku/src/lib/tube_handler.py
+++ b/gnome-sudoku/src/lib/tube_handler.py
@@ -58,7 +58,7 @@ class TubeHandler(dbus.service.Object):
bus = dbus.SessionBus()
# this bus_name has to be retained, so make it a instance attribute
- self.busname = dbus.service.BusName(bus_name, bus)
+ self.name_ownership = dbus.service.BusName(bus_name, bus)
super(TubeHandler, self).__init__(bus, obj_path)
@dbus.service.method(dbus_interface="org.gnome.Empathy.TubeHandler",
diff --git a/gnome-sudoku/src/lib/view.py b/gnome-sudoku/src/lib/view.py
index e4b9387..65bc078 100644
--- a/gnome-sudoku/src/lib/view.py
+++ b/gnome-sudoku/src/lib/view.py
@@ -453,9 +453,12 @@ class SudokuView(SudokuNumberGrid):
return self._tracker.get_trackers_tracking()
class SudokuSideView(SudokuNumberGrid):
+
+ _FOCUSED_BACKGROUND = (0, 1, 0)
+
def __init__(self, group_size):
- self._focus = None
- self._focus_bg = None
+ self._cursor = None
+ self._cursor_bg = None # original bg color overridden by a cursor
SudokuNumberGrid.__init__(self, group_size)
for x in range(self.group_size):
@@ -467,26 +470,28 @@ class SudokuSideView(SudokuNumberGrid):
for y in range(self.group_size):
self.set_value(x, y, 0)
self.set_background_color(x, y, None)
- self._focus = None
- self._focus_bg = None
-
- def set_invisible(self, x, y):
- self.set_background_color(x, y, (0, 0, 0))
- if self._focus and (x, y) == (self._focus.x, self._focus.y):
- self._focus_bg = (0, 0, 0)
+ self._cursor = None
+ self._cursor_bg = None
- def set_empty(self, x, y):
- self.set_value(x, y, 0)
- self.set_background_color(x, y, None)
+ def set_value_with_bg(self, x, y, value, color):
+ self.set_value(x, y, value)
+ if not value: # zero means clearing
+ color = None
+ self.set_background_color(x, y, color)
+ if self._cursor and (x, y) == (self._cursor.x, self._cursor.y):
+ self._cursor_bg = color
def set_focus(self, x, y):
# restore previously focused entry
- if self._focus:
- self.set_background_color(self._focus.x, self._focus.y,
- self._focus_bg)
- # highlight new focused entry
- self._focus = self.__entries__[(x, y)]
- self._focus_bg = self._focus.get_background_color()
- self.set_background_color(x, y, (0, 1, 0))
- # this _focus/_focus_bg is not at all elegant, but for now it does what
+ if self._cursor:
+ self.set_background_color(self._cursor.x, self._cursor.y,
+ self._cursor_bg)
+ # Focusing an entry will override its original background;
+ # so save its coordinates and background, and restore it later when the
+ # cursor changes, as shown above.
+ self._cursor = self.__entries__[(x, y)]
+ self._cursor_bg = self._cursor.get_background_color()
+ self.set_background_color(x, y, self._FOCUSED_BACKGROUND)
+
+ # this _cursor/_cursor_bg is not at all elegant, but for now it does what
# I need, should come up with a better solution
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]