diff options
author | Agustin Zubiaga <aguz@sugarlabs.org> | 2012-09-07 00:56:40 (GMT) |
---|---|---|
committer | Agustin Zubiaga <aguz@sugarlabs.org> | 2012-09-07 00:56:40 (GMT) |
commit | 06713c22fd8c6e33b38a4a3488575cdf1cc6c417 (patch) | |
tree | 4e7577b19b6ec21b24acaa2611c02fc1e6143ee4 | |
parent | 1d024edb1e5ead8e46b34633fa9922ffa51ed3a3 (diff) |
Some code improvements for sharing
-rw-r--r-- | activity.py | 10 | ||||
-rwxr-xr-x | game.py | 30 |
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. """ @@ -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: |