Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity.py')
-rwxr-xr-xactivity.py168
1 files changed, 127 insertions, 41 deletions
diff --git a/activity.py b/activity.py
index 63b031a..033c694 100755
--- a/activity.py
+++ b/activity.py
@@ -1,6 +1,6 @@
-#This python module is part of the Jam2Jam XO Activity, March, 2010
+#This python module is part of the Jam2Jam XO Activity, March, 2012
#
-#Copyright (C) 2010 Thorin Kerr & Andrew Brown
+#Copyright (C) 2012 Thorin Kerr & Andrew Brown
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
@@ -16,36 +16,51 @@
#along with this program; if not, write to the Free Software
#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-import pygame
-import olpcgames
-from sugar.graphics.toolbutton import ToolButton
-import sugar.activity
-from sugar.activity.activity import Activity, ActivityToolbox
+
+import pygame, olpcgames
from olpcgames import activity
-from J2JToolbar import Jam2JamToolBar
+import sugar.activity
+from sugar.activity.activity import get_bundle_path
+ImagePath = get_bundle_path() + "/City/Images"
+
+
+import gtk.gdk
from gettext import gettext as _
import logging, os
log = logging.getLogger( 'City run' )
log.setLevel( logging.DEBUG )
-
log.info( """ LOG From activity.py!!""")
from olpcgames import mesh, util
+_NEW_TOOLBAR_SUPPORT = True
+
+try:
+ from sugar.graphics.toolbarbox import ToolbarBox #superfluous import here, but we need to detect sugar versions post 0.86
+ from J2JToolbars import J2J_Toolbar_Redirect
+ from J2JToolbars import Jam2JamActivityToolbar, Jam2JamParameterToolbar, Jam2JamSceneToolbar
+except:
+ _NEW_TOOLBAR_SUPPORT = False
+ from sugar.activity.activity import ActivityToolbox
+ from J2JToolbars import Jam2JamToolBar #NOW ONLY GETS IMPORTED WHEN OLD TOOLBARS ARE USED
+
+
class Activity(activity.PyGameActivity):
"""Your Sugar activity"""
game_name = 'run:main'
game_title = _('Jam2Jam')
game_size = None
- _ScenePath = (os.path.dirname(os.path.abspath(__file__)) + "/City/Scenes")
+ _ScenePath = (get_bundle_path() + "/City/Scenes")
def __init__(self, handle):
+ self.handle = handle
activity.PyGameActivity.__init__(self, handle)
self.snap_store = []
self.cameras_loaded = []
self.playArea = None
self.jamScene = None
+ self.play_pause_state = 'Playing'
def load_image(self, picpath):
picsurf = pygame.image.load(picpath)
@@ -53,52 +68,123 @@ class Activity(activity.PyGameActivity):
picsurfwidth = picsurf.get_width()
destwidth = self.playArea.width
scale = float(destwidth) / picsurfwidth
- newarea = (picsurfwidth * scale, picsurf.get_height() * scale)
+ newarea = (int(picsurfwidth * scale), int(picsurf.get_height() * scale))
picsurf = pygame.transform.scale(picsurf, newarea)
self.snap_store.append(picsurf)
-
def build_toolbar(self):
- log.info ("building toolbar")
+ if _NEW_TOOLBAR_SUPPORT:
+ log.info("building NEW toolbar\n")
+ return self.build_new_toolbar()
+ else:
+ log.info("buiding OLD toolbar \n")
+ return self.build_old_toolbar()
+ def build_old_toolbar(self):
toolbox = ActivityToolbox(self)
- #remove the 'keep' button. We've no need to save data at the moment.
activityToolbar = toolbox.get_activity_toolbar()
activityToolbar.keep.props.visible = False
self.J2JToolbar = Jam2JamToolBar(self)
+
toolbox.add_toolbar("Transform", self.J2JToolbar)
self.set_toolbox(toolbox)
self.J2JToolbar.show()
toolbox.show()
+
self.toolbox.set_current_toolbar(1)
- def shared_cb(*args, **kwargs):
- log.info( 'Shared CB: %s, %s', args, kwargs )
- try:
- mesh.activity_shared(self)
- except Exception, err:
- log.error( """Failure signaling activity sharing to mesh module: %s""", util.get_traceback(err) )
- else:
- log.info( 'mesh activity shared message sent, trying to grab focus' )
- try:
- self._pgc.grab_focus()
- except Exception, err:
- log.warn( 'Focus failed: %s', err )
- else:
- log.info( 'asserting focus' )
- assert self._pgc.is_focus(), """Did not successfully set pygame canvas focus"""
- sharermessage = "Shared:StartBeat"
- olpcgames.eventwrap.post(olpcgames.eventwrap.Event(pygame.USEREVENT, action=sharermessage))
- log.info( 'callback finished' )
- def joined_cb(*args, **kwargs):
- log.info( 'joined CB: %s, %s', args, kwargs )
- mesh.activity_joined(self)
- self._pgc.grab_focus()
- joinedmessage = "Joined:CeasePlayer"
- olpcgames.eventwrap.post(olpcgames.eventwrap.Event(pygame.USEREVENT, action=joinedmessage))
- self.connect("shared", shared_cb)
- self.connect("joined", joined_cb)
+
+ self.connect("shared", self.shared_cb)
+ self.connect("joined", self.joined_cb)
+
if self.get_shared():
- joined_cb()
+ self.joined_cb()
log.info ("FINISHED building toolbar")
return toolbox
+ def build_new_toolbar(self):
+ log.info ("building new toolbar")
+
+ activity_toolbar = Jam2JamActivityToolbar(self)
+ Horizontal_Toolbar = Jam2JamParameterToolbar(self)
+ Vertical_Toolbar = Jam2JamParameterToolbar(self)
+ Scene_Toolbar = Jam2JamSceneToolbar(self)
+ self.J2JToolbar = J2J_Toolbar_Redirect(activity_toolbar, Horizontal_Toolbar, Vertical_Toolbar, Scene_Toolbar) #the pygame interface
+
+
+ activity_toolbar.addToolBarButton("Horizontal", "horizontal5", Horizontal_Toolbar)
+
+ activity_toolbar.addToolBarButton("Vertical", "vertical5", Vertical_Toolbar)
+ activity_toolbar.addSeparator()
+ activity_toolbar.addToolBarButton("Music", "music2", Scene_Toolbar)
+ activity_toolbar.addSeparator()
+
+ activity_toolbar.addButton('Camera',
+ ImagePath + "/camera-external.svg",
+ ImagePath + "/camera-busy.svg",
+ "Take a picture", "processing, please wait",
+ activity_toolbar.camera_cb)
+
+ activity_toolbar.addButton('PlayPause',
+ ImagePath + "/media-playback-pause.svg",
+ ImagePath + "/media-playback-start.svg",
+ "Pause", "Play",
+ activity_toolbar.play_pause_cb)
+ activity_toolbar.addStopButton()
+ parameters = ['Pitch', 'Timbre', 'Density', 'Volume', 'Length']
+
+ for p in parameters:
+ h = Horizontal_Toolbar.addButton(p,
+ ImagePath + "/" + p.lower() + "1.svg",
+ ImagePath + "/" + p.lower() + "2.svg",
+ p, p + "-active",
+ Horizontal_Toolbar.set_horizontal_cb)
+ v = Vertical_Toolbar.addButton(p,
+ ImagePath + "/" + p.lower() + "1.svg",
+ ImagePath + "/" + p.lower() + "2.svg",
+ p, p + "-active",
+ Vertical_Toolbar.set_vertical_cb)
+ if p == 'Density': Horizontal_Toolbar.set_horizontal_cb(h)
+ if p == 'Pitch': Vertical_Toolbar.set_horizontal_cb(v)
+ Horizontal_Toolbar.show()
+ Vertical_Toolbar.show()
+
+ scenes = ['City', 'Country', 'Latin', 'Blues', 'Reggae']
+ for s in scenes:
+ bs = Scene_Toolbar.addButton(s, ImagePath + "/" + s.lower() + "1.svg",
+ ImagePath + "/" + s.lower() + "2.svg",
+ s, s + "-active",
+ Scene_Toolbar.scene_change_cb)
+ if s == 'City': Scene_Toolbar.scene_change_cb(bs)
+
+ self.connect("shared", self.shared_cb)
+ self.connect("joined", self.joined_cb)
+ if self.get_shared(): self.joined_cb()
+
+ self.set_toolbar_box(activity_toolbar.toolbar_box)
+ activity_toolbar.toolbar_box.show()
+ vpb = activity_toolbar.nameID['Horizontal']
+ vpb.set_expanded(True)
+ return activity_toolbar.toolbar_box
+
+ def shared_cb(self, *args, **kwargs):
+ log.info( 'Shared CB: %s, %s', args, kwargs )
+ try:
+ mesh.activity_shared(self)
+ except Exception, err:
+ log.error( """Failure signaling activity sharing to mesh module: %s""", util.get_traceback(err) )
+ else:
+ log.info( 'mesh activity shared message sent' )
+ try:
+ self._pgc.grab_focus()
+ except Exception, err:
+ log.warn( 'Focus failed: %s', err )
+ else:
+ assert self._pgc.is_focus(), """Did not successfully set pygame canvas focus"""
+ sharermessage = "Shared:StartBeat"
+ olpcgames.eventwrap.post(olpcgames.eventwrap.Event(pygame.USEREVENT, action=sharermessage))
+ def joined_cb(self, *args, **kwargs):
+ log.info( 'joined CB: %s, %s', args, kwargs )
+ mesh.activity_joined(self)
+ self._pgc.grab_focus()
+ joinedmessage = "Joined:CeasePlayer"
+ olpcgames.eventwrap.post(olpcgames.eventwrap.Event(pygame.USEREVENT, action=joinedmessage))