From eff264857d005719f081eb9fea1e8b099670d395 Mon Sep 17 00:00:00 2001 From: Daniel Francis Date: Fri, 21 Dec 2012 13:42:22 +0000 Subject: Fix cursor bug, try to fix journal data Signed-off-by: Daniel Francis --- 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)) -- cgit v0.9.1