Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/game.py
diff options
context:
space:
mode:
Diffstat (limited to 'game.py')
-rwxr-xr-xgame.py30
1 files changed, 23 insertions, 7 deletions
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: