From 06713c22fd8c6e33b38a4a3488575cdf1cc6c417 Mon Sep 17 00:00:00 2001 From: Agustin Zubiaga Date: Fri, 07 Sep 2012 00:56:40 +0000 Subject: Some code improvements for sharing --- 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: -- cgit v0.9.1