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')
-rw-r--r--activity.py119
1 files changed, 101 insertions, 18 deletions
diff --git a/activity.py b/activity.py
index 273a001..c6e551a 100644
--- a/activity.py
+++ b/activity.py
@@ -25,6 +25,17 @@ from sugar.activity import activity
from gettext import gettext as _
import gtk
+
+try:
+ # >= 0.86 toolbars
+ from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
+ from sugar.activity.widgets import ActivityToolbarButton
+ from sugar.activity.widgets import StopButton
+except ImportError:
+ # <= 0.84 toolbars
+ pass
+
+
class PhysicsActivity(olpcgames.PyGameActivity):
game_name = 'physics'
game_title = _('Physics')
@@ -47,17 +58,94 @@ class PhysicsActivity(olpcgames.PyGameActivity):
event.retire() # <- without this, title editing stops updating
# setup the toolbar
- def build_toolbar(self):
- # make a toolbox
- toolbox = activity.ActivityToolbox(self)
+ def build_toolbar(self):
+ try:
+ #Use new >= 0.86 toolbar
+ toolbar_box = ToolbarBox()
+ activity_button = ActivityToolbarButton(self)
+ toolbar_box.toolbar.insert(activity_button, 0)
+ activity_button.page.keep.props.accelerator = '<Ctrl><Shift>S'
+ activity_button.show()
+
+ create_toolbar = self._create_create_toolbar()
+ create_toolbar_button = ToolbarButton(
+ page=create_toolbar,
+ icon_name='toolbar-create')
+ create_toolbar.show()
+ toolbar_box.toolbar.insert(create_toolbar_button, -1)
+ create_toolbar_button.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ toolbar_box.toolbar.insert(separator, -1)
+ separator.show()
+
+ stop_button = StopButton(self)
+ stop_button.props.accelerator = '<Ctrl><Shift>Q'
+ toolbar_box.toolbar.insert(stop_button, -1)
+ stop_button.show()
+
+ self.set_toolbar_box(toolbar_box)
+ toolbar_box.show()
+ return toolbar_box
+
+
+ except NameError:
+ #Use old <= 0.84 toolbar design
+ # make a toolbox
+ toolbox = activity.ActivityToolbox(self)
- # modify the Activity tab
- activity_toolbar = toolbox.get_activity_toolbar()
- activity_toolbar.share.props.visible = False
- self.blocklist = []
- # make a 'create' toolbar
- create_toolbar = gtk.Toolbar()
+ # modify the Activity tab
+ activity_toolbar = toolbox.get_activity_toolbar()
+ activity_toolbar.share.props.visible = False
+ self.blocklist = []
+ # make a 'create' toolbar
+ create_toolbar = gtk.Toolbar()
+ # stop/play button
+ self.stop_play_state = True
+ self.stop_play = ToolButton('media-playback-stop')
+ self.stop_play.set_tooltip(_("Stop"))
+ self.stop_play.set_accelerator(_('<ctrl>space'))
+ self.stop_play.connect('clicked', self.stop_play_cb)
+ create_toolbar.insert(self.stop_play, 0)
+ self.stop_play.show()
+
+ separator = gtk.SeparatorToolItem()
+ create_toolbar.insert(separator, 1)
+ separator.show()
+
+ # make + add the component buttons
+ self.radioList = {}
+ firstButton = None
+ for c in tools.allTools:
+ button = RadioToolButton(named_icon=c.icon)
+ if firstButton:
+ button.set_group(firstButton)
+ else:
+ button.set_group(None)
+ firstButton = button
+ button.set_tooltip(c.toolTip)
+ button.set_accelerator(c.toolAccelerator)
+ button.connect('clicked',self.radioClicked)
+ create_toolbar.insert(button,-1)
+ button.show()
+ self.radioList[button] = c.name
+
+ # add the toolbars to the toolbox
+ toolbox.add_toolbar(_("Create"),create_toolbar)
+ create_toolbar.show()
+
+ toolbox.show()
+ self.set_toolbox(toolbox)
+ toolbox.set_current_toolbar(1)
+ return activity_toolbar
+
+
+ def _create_create_toolbar(self):
+ create_toolbar = gtk.Toolbar()
+
# stop/play button
self.stop_play_state = True
self.stop_play = ToolButton('media-playback-stop')
@@ -70,7 +158,7 @@ class PhysicsActivity(olpcgames.PyGameActivity):
separator = gtk.SeparatorToolItem()
create_toolbar.insert(separator, 1)
separator.show()
-
+
# make + add the component buttons
self.radioList = {}
firstButton = None
@@ -87,15 +175,8 @@ class PhysicsActivity(olpcgames.PyGameActivity):
create_toolbar.insert(button,-1)
button.show()
self.radioList[button] = c.name
+ return create_toolbar
- # add the toolbars to the toolbox
- toolbox.add_toolbar(_("Create"),create_toolbar)
- create_toolbar.show()
-
- toolbox.show()
- self.set_toolbox(toolbox)
- toolbox.set_current_toolbar(1)
- return activity_toolbar
def stop_play_cb(self, button):
pygame.event.post(olpcgames.eventwrap.Event(pygame.USEREVENT, action="stop_start_toggle"))
@@ -110,3 +191,5 @@ class PhysicsActivity(olpcgames.PyGameActivity):
def radioClicked(self,button):
pygame.event.post(olpcgames.eventwrap.Event(pygame.USEREVENT, action=self.radioList[button]))
+
+