Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAgustin Zubiaga <aguz@sugarlabs.org>2012-09-07 00:56:40 (GMT)
committer Agustin Zubiaga <aguz@sugarlabs.org>2012-09-07 00:56:40 (GMT)
commit06713c22fd8c6e33b38a4a3488575cdf1cc6c417 (patch)
tree4e7577b19b6ec21b24acaa2611c02fc1e6143ee4
parent1d024edb1e5ead8e46b34633fa9922ffa51ed3a3 (diff)
Some code improvements for sharing
-rw-r--r--activity.py10
-rwxr-xr-xgame.py30
2 files changed, 29 insertions, 11 deletions
diff --git a/activity.py b/activity.py
index 0cef29d..fff8a66 100644
--- a/activity.py
+++ b/activity.py
@@ -50,6 +50,8 @@ class Activity(activity.Activity):
# Canvas
canvas = game.Canvas()
+ canvas.connect('cross-added', self.send_new_cross)
+ canvas.connect('circle-added', self.send_new_circle)
self.set_canvas(canvas)
# Toolbar
@@ -209,19 +211,19 @@ params=%r state=%d' % (id, initiator, type, service, params, state))
return
self._processing_methods[command][0](payload)
- def send_new_cross(self, square):
+ def send_new_cross(self, widget, square):
self.send_event('x|%s' % square)
- def send_new_circle(self, square):
+ def send_new_circle(self, widget, square):
self.send_event('o|%s' % square)
def _receive_new_cross(self, square):
square = int(square)
- _logger.debug('Receive a new cross %s' % square)
+ self.game.add_cross(square, emit_signal=False)
def _receive_new_circle(self, square):
square = int(square)
- _logger.debug('Receive a new circle %s' % square)
+ self.game.add_circle(square, emit_signal=False)
def send_event(self, entry):
""" Send event through the tube. """
diff --git a/game.py b/game.py
index 3c04213..fbf307b 100755
--- a/game.py
+++ b/game.py
@@ -20,6 +20,7 @@
import cairo
from gi.repository import Gtk
from gi.repository import Gdk
+from gi.repository import GObject
from sugar3.graphics import style
LINE_WIDTH = 12
@@ -37,6 +38,10 @@ BACKGROUND_COLOR = (0.352941, 0.349019, 0.709803)
class Canvas(Gtk.DrawingArea):
+ __gsignals__ = {'cross-added': (GObject.SignalFlags.RUN_FIRST, None, [int]),
+ 'circle-added': (GObject.SignalFlags.RUN_FIRST,
+ None, [int])}
+
def __init__(self):
Gtk.DrawingArea.__init__(self)
@@ -156,16 +161,27 @@ class Canvas(Gtk.DrawingArea):
self.cursor = self.get_pos(event.x, event.y)
self.queue_draw()
+ def add_cross(self, square, emit_signal=True):
+ self.crosses.append(
+ square if type(square) == tuple else self.squares[square])
+ if emit_signal:
+ self.emit('cross-added', self.squares.index(square))
+ self.queue_draw()
+
+ def add_circle(self, square, emit_signal=True):
+ self.circles.append(
+ square if type(square) == tuple else self.squares[square])
+ if emit_signal:
+ self.emit('circle-added', self.squares.index(square))
+ self.queue_draw()
+
def _click_cb(self, widget, event):
pos = self.get_pos(event.x, event.y)
- if self._mode == MODE_CIRCLE and pos:
- self.circles.append(pos)
-
- elif self._mode == MODE_CROSS and pos:
- self.crosses.append(pos)
-
- self.queue_draw()
+ if self._mode == MODE_CROSS and pos:
+ self.add_cross(pos)
+ elif self._mode == MODE_CIRCLE and pos:
+ self.add_circle(pos)
def get_pos(self, mx, my):
try: