Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Francis <francis@sugarlabs.org>2012-12-21 13:42:22 (GMT)
committer Daniel Francis <francis@sugarlabs.org>2012-12-21 13:42:22 (GMT)
commiteff264857d005719f081eb9fea1e8b099670d395 (patch)
treea72e25a9f519ab3f910fcbd9dc1bb0f3514c720c
parent1587e845fc046bb63c81a0babc155186bcaf2fe7 (diff)
Fix cursor bug, try to fix journal data
Signed-off-by: Daniel Francis <francis@sugarlabs.org>
-rw-r--r--activity.py18
-rw-r--r--olpcgamesutil.py3
-rw-r--r--physics.py11
-rw-r--r--tools.py16
4 files changed, 41 insertions, 7 deletions
diff --git a/activity.py b/activity.py
index b61d732..764470b 100644
--- a/activity.py
+++ b/activity.py
@@ -37,6 +37,8 @@ except ImportError:
# <= 0.84 toolbars
pass
+import olpcgamesutil
+
class PhysicsActivity(activity.Activity):
def __init__(self, handle):
@@ -56,7 +58,20 @@ class PhysicsActivity(activity.Activity):
# Start the game running.
self._canvas.run_pygame(self.game.run)
-
+
+ def read_file(self, file_path):
+ event = pygame.event.Event(pygame.USEREVENT)
+ event.code = olpcgamesutil.FILE_READ_REQUEST
+ event.filename = file_path
+ event.metadata = self.metadata
+ self._canvas.translator._post(event)
+
+ def write_file(self, file_path):
+ event = pygame.event.Event(pygame.USEREVENT,
+ code = olpcgamesutil.FILE_WRITE_REQUEST,
+ filename = file_path,
+ metadata = self.metadata)
+ self.canvas.translator._post(event)
def get_preview(self):
"""Custom preview code to get image from pygame.
@@ -181,6 +196,7 @@ class PhysicsActivity(activity.Activity):
pygame.event.post(pygame.event.Event(pygame.USEREVENT,
action="focus_out"))
else:
+ self.game.show_fake_cursor = True
pygame.event.post(pygame.event.Event(pygame.USEREVENT,
action="focus_in"))
diff --git a/olpcgamesutil.py b/olpcgamesutil.py
new file mode 100644
index 0000000..54f9526
--- /dev/null
+++ b/olpcgamesutil.py
@@ -0,0 +1,3 @@
+# This is part of olpcgames
+
+(FILE_READ_REQUEST, FILE_WRITE_REQUEST) = range(2**16, 2**16+2)
diff --git a/physics.py b/physics.py
index dec7eef..18aa7eb 100644
--- a/physics.py
+++ b/physics.py
@@ -34,8 +34,8 @@ import sugargame
sys.path.append("lib/")
import pkg_resources
# If your architecture is different, comment these lines and install the modules in your system.
-#sys.path.append("lib/Elements-0.13-py2.5.egg")
-#sys.path.append("lib/Box2D-2.0.2b1-py2.5-linux-i686.egg")
+sys.path.append("lib/Elements-0.13-py2.5.egg")
+sys.path.append("lib/Box2D-2.0.2b1-py2.5-linux-i686.egg")
import Box2D as box2d
import elements
import tools
@@ -72,7 +72,7 @@ class PhysicsGame:
self.world.add.ground()
# Fake a Sugar cursor for the pyGame canvas area
- self.show_fake_cursor = False
+ self.show_fake_cursor = True
pygame.mouse.set_cursor((8, 8), (0, 0), (0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0))
self.cursor_picture = pygame.image.load('standardcursor.png')
@@ -90,6 +90,9 @@ class PhysicsGame:
for event in pygame.event.get():
self.currentTool.handleEvents(event)
+ if event.type == MOUSEBUTTONUP:
+ if event.button == 1:
+ self.show_fake_cursor = True
if self.in_focus:
# Drive motors
@@ -115,7 +118,7 @@ class PhysicsGame:
# Show Sugar like cursor for UI consistancy
if self.show_fake_cursor:
self.screen.blit(self.cursor_picture,
- pygame.mouse.get_pos())
+ pygame.mouse.get_pos())
# Flip Display
pygame.display.flip()
diff --git a/tools.py b/tools.py
index c03130f..adb08ff 100644
--- a/tools.py
+++ b/tools.py
@@ -23,6 +23,7 @@
#==================================================================
import pygame
import sugargame
+import olpcgamesutil
from pygame.locals import *
from helpers import *
from inspect import getmro
@@ -56,11 +57,11 @@ class Tool(object):
elif self.game.toolList.has_key(event.action):
self.game.setTool(event.action)
elif hasattr(event, "code"):
- if event.code == sugargame.FILE_WRITE_REQUEST:
+ if event.code == olpcgamesutil.FILE_WRITE_REQUEST:
#Saving to journal
self.game.world.add.remove_mouseJoint()
self.game.world.json_save(event.filename)
- elif event.code == sugargame.FILE_READ_REQUEST:
+ elif event.code == olpcgamesutil.FILE_READ_REQUEST:
#Loading from journal
self.game.world.json_load(event.filename)
elif event.type == MOUSEBUTTONDOWN and event.button == 1:
@@ -99,6 +100,7 @@ class CircleTool(Tool):
self.radius = 40
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
self.pt1 = tuple_to_int(event.pos)
@@ -140,6 +142,7 @@ class BoxTool(Tool):
self.height = 80
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
self.pt1 = tuple_to_int(event.pos)
@@ -190,6 +193,7 @@ class TriangleTool(Tool):
self.line_delta = [0, -80]
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
self.pt1 = tuple_to_int(event.pos)
@@ -258,6 +262,7 @@ class PolygonTool(Tool):
self.safe = False
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if hasattr(event, 'button') and event.button == 1:
if event.type == MOUSEBUTTONDOWN and self.vertices is None:
self.vertices = [tuple_to_int(event.pos)]
@@ -332,6 +337,7 @@ class MagicPenTool(Tool):
self.safe = False
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN and event.button == 1:
self.vertices = [tuple_to_int(event.pos)]
self.safe = False
@@ -385,6 +391,7 @@ class GrabTool(Tool):
self._current_body = None
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
# We handle two types of "grab" depending on simulation running or not
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
@@ -434,6 +441,7 @@ class JointTool(Tool):
self.jb1 = self.jb2 = self.jb1pos = self.jb2pos = None
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
if event.button >= 1:
# Grab the first body
@@ -480,6 +488,7 @@ class PinTool(Tool):
self.jb1 = self.jb1pos = None
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
self.jb1pos = tuple_to_int(event.pos)
self.jb1 = self.game.world.get_bodies_at_pos(
@@ -504,6 +513,7 @@ class MotorTool(Tool):
self.jb1 = self.jb1pos = None
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
if event.button >= 1:
# Grab the first body
@@ -529,6 +539,7 @@ class RollTool(Tool):
self.jb1 = self.jb1pos = None
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
self.jb1pos = tuple_to_int(event.pos)
@@ -555,6 +566,7 @@ class DestroyTool(Tool):
self.vertices = None
def handleToolEvent(self, event):
+ Tool.handleToolEvent(self, event)
if pygame.mouse.get_pressed()[0]:
if not self.vertices: self.vertices = []
self.vertices.append(tuple_to_int(event.pos))