From 320fde8bf80f92c772eec5a7f836236d490b8872 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= <manuq@laptop.org>
Date: Mon, 28 May 2012 23:27:03 -0300
Subject: [PATCH Sugargame 1/2] Run pygi-convert.sh script for GTK+3 port
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Mail-Followup-To: <sugar-devel@lists.sugarlabs.org>
Signed-off-by: Manuel Quiñones <manuq@laptop.org>
---
sugargame/canvas.py | 14 +++++++-------
sugargame/event.py | 38 +++++++++++++++++++-------------------
test/TestActivity.py | 4 ++--
test/TestGame.py | 6 +++---
4 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/sugargame/canvas.py b/sugargame/canvas.py
index 980cb73..d070a96 100644
a
|
b
|
|
1 | 1 | import os |
2 | | import gtk |
3 | | import gobject |
| 2 | from gi.repository import Gtk |
| 3 | from gi.repository import GObject |
4 | 4 | import pygame |
5 | 5 | import event |
6 | 6 | |
7 | 7 | CANVAS = None |
8 | 8 | |
9 | | class PygameCanvas(gtk.EventBox): |
| 9 | class PygameCanvas(Gtk.EventBox): |
10 | 10 | |
11 | 11 | """ |
12 | 12 | mainwindow is the activity intself. |
13 | 13 | """ |
14 | 14 | def __init__(self, mainwindow, pointer_hint = True): |
15 | | gtk.EventBox.__init__(self) |
| 15 | GObject.GObject.__init__(self) |
16 | 16 | |
17 | 17 | global CANVAS |
18 | 18 | assert CANVAS == None, "Only one PygameCanvas can be created, ever." |
… |
… |
class PygameCanvas(gtk.EventBox): |
23 | 23 | |
24 | 24 | self._mainwindow = mainwindow |
25 | 25 | |
26 | | self.set_flags(gtk.CAN_FOCUS) |
| 26 | self.set_flags(Gtk.CAN_FOCUS) |
27 | 27 | |
28 | | self._socket = gtk.Socket() |
| 28 | self._socket = Gtk.Socket() |
29 | 29 | self.add(self._socket) |
30 | 30 | self.show_all() |
31 | 31 | |
… |
… |
class PygameCanvas(gtk.EventBox): |
34 | 34 | # Sugar activity is not properly created until after its constructor returns. |
35 | 35 | # If the Pygame main loop is called from the activity constructor, the |
36 | 36 | # constructor never returns and the activity freezes. |
37 | | gobject.idle_add(self._run_pygame_cb, main_fn) |
| 37 | GObject.idle_add(self._run_pygame_cb, main_fn) |
38 | 38 | |
39 | 39 | def _run_pygame_cb(self, main_fn): |
40 | 40 | assert pygame.display.get_surface() is None, "PygameCanvas.run_pygame can only be called once." |
diff --git a/sugargame/event.py b/sugargame/event.py
index 4cc3be8..0aeee50 100644
a
|
b
|
|
1 | | import gtk |
2 | | import gobject |
| 1 | from gi.repository import Gtk |
| 2 | from gi.repository import GObject |
3 | 3 | import pygame |
4 | 4 | import pygame.event |
5 | 5 | import logging |
… |
… |
class Translator(object): |
46 | 46 | # Enable events |
47 | 47 | # (add instead of set here because the main window is already realized) |
48 | 48 | self._mainwindow.add_events( |
49 | | gtk.gdk.KEY_PRESS_MASK | \ |
50 | | gtk.gdk.KEY_RELEASE_MASK \ |
| 49 | Gdk.EventMask.KEY_PRESS_MASK | \ |
| 50 | Gdk.EventMask.KEY_RELEASE_MASK \ |
51 | 51 | ) |
52 | 52 | |
53 | 53 | self._inner_evb.set_events( |
54 | | gtk.gdk.POINTER_MOTION_MASK | \ |
55 | | gtk.gdk.POINTER_MOTION_HINT_MASK | \ |
56 | | gtk.gdk.BUTTON_MOTION_MASK | \ |
57 | | gtk.gdk.BUTTON_PRESS_MASK | \ |
58 | | gtk.gdk.BUTTON_RELEASE_MASK |
| 54 | Gdk.EventMask.POINTER_MOTION_MASK | \ |
| 55 | Gdk.EventMask.POINTER_MOTION_HINT_MASK | \ |
| 56 | Gdk.EventMask.BUTTON_MOTION_MASK | \ |
| 57 | Gdk.EventMask.BUTTON_PRESS_MASK | \ |
| 58 | Gdk.EventMask.BUTTON_RELEASE_MASK |
59 | 59 | ) |
60 | 60 | |
61 | | self._mainwindow.set_flags(gtk.CAN_FOCUS) |
62 | | self._inner_evb.set_flags(gtk.CAN_FOCUS) |
| 61 | self._mainwindow.set_flags(Gtk.CAN_FOCUS) |
| 62 | self._inner_evb.set_flags(Gtk.CAN_FOCUS) |
63 | 63 | |
64 | 64 | # Callback functions to link the event systems |
65 | 65 | self._mainwindow.connect('unrealize', self._quit_cb) |
… |
… |
class Translator(object): |
133 | 133 | return mod |
134 | 134 | |
135 | 135 | def _keyevent(self, widget, event, type): |
136 | | key = gtk.gdk.keyval_name(event.keyval) |
| 136 | key = Gdk.keyval_name(event.keyval) |
137 | 137 | if key is None: |
138 | 138 | # No idea what this key is. |
139 | 139 | return False |
… |
… |
class Translator(object): |
157 | 157 | self.__keystate[keycode] = type == pygame.KEYDOWN |
158 | 158 | if type == pygame.KEYUP: |
159 | 159 | mod = self._keymods() |
160 | | ukey = unichr(gtk.gdk.keyval_to_unicode(event.keyval)) |
| 160 | ukey = unichr(Gdk.keyval_to_unicode(event.keyval)) |
161 | 161 | if ukey == '\000': |
162 | 162 | ukey = '' |
163 | 163 | evt = pygame.event.Event(type, key=keycode, unicode=ukey, mod=mod) |
… |
… |
class Translator(object): |
193 | 193 | else: |
194 | 194 | x = event.x |
195 | 195 | y = event.y |
196 | | state = event.state |
| 196 | state = event.get_state() |
197 | 197 | |
198 | 198 | rel = (x - self.__mouse_pos[0], y - self.__mouse_pos[1]) |
199 | 199 | self.__mouse_pos = (x, y) |
200 | 200 | |
201 | 201 | self.__button_state = [ |
202 | | state & gtk.gdk.BUTTON1_MASK and 1 or 0, |
203 | | state & gtk.gdk.BUTTON2_MASK and 1 or 0, |
204 | | state & gtk.gdk.BUTTON3_MASK and 1 or 0, |
| 202 | state & Gdk.ModifierType.BUTTON1_MASK and 1 or 0, |
| 203 | state & Gdk.ModifierType.BUTTON2_MASK and 1 or 0, |
| 204 | state & Gdk.ModifierType.BUTTON3_MASK and 1 or 0, |
205 | 205 | ] |
206 | 206 | |
207 | 207 | evt = pygame.event.Event(pygame.MOUSEMOTION, |
… |
… |
class Translator(object): |
224 | 224 | |
225 | 225 | def _set_repeat(self, delay=None, interval=None): |
226 | 226 | if delay is not None and self.__repeat[0] is None: |
227 | | self.__tick_id = gobject.timeout_add(10, self._tick_cb) |
| 227 | self.__tick_id = GObject.timeout_add(10, self._tick_cb) |
228 | 228 | elif delay is None and self.__repeat[0] is not None: |
229 | | gobject.source_remove(self.__tick_id) |
| 229 | GObject.source_remove(self.__tick_id) |
230 | 230 | self.__repeat = (delay, interval) |
231 | 231 | |
232 | 232 | def _get_mouse_pos(self): |
diff --git a/test/TestActivity.py b/test/TestActivity.py
index 9569659..a3981c4 100644
a
|
b
|
|
1 | 1 | from gettext import gettext as _ |
2 | 2 | |
3 | 3 | import sys |
4 | | import gtk |
| 4 | from gi.repository import Gtk |
5 | 5 | import pygame |
6 | 6 | |
7 | 7 | import sugar.activity.activity |
… |
… |
class TestActivity(sugar.activity.activity.Activity): |
62 | 62 | |
63 | 63 | # Blank space (separator) and Stop button at the end: |
64 | 64 | |
65 | | separator = gtk.SeparatorToolItem() |
| 65 | separator = Gtk.SeparatorToolItem() |
66 | 66 | separator.props.draw = False |
67 | 67 | separator.set_expand(True) |
68 | 68 | toolbar_box.toolbar.insert(separator, -1) |
diff --git a/test/TestGame.py b/test/TestGame.py
index 590b921..848e220 100755
a
|
b
|
|
1 | 1 | #!/usr/bin/python |
2 | 2 | import pygame |
3 | | import gtk |
| 3 | from gi.repository import Gtk |
4 | 4 | |
5 | 5 | |
6 | 6 | class TestGame: |
… |
… |
class TestGame: |
36 | 36 | |
37 | 37 | while self.running: |
38 | 38 | # Pump GTK messages. |
39 | | while gtk.events_pending(): |
40 | | gtk.main_iteration() |
| 39 | while Gtk.events_pending(): |
| 40 | Gtk.main_iteration() |
41 | 41 | |
42 | 42 | # Pump PyGame messages. |
43 | 43 | for event in pygame.event.get(): |