From 9449c68c0a50f9440991a684fa1c3a8ea8e70709 Mon Sep 17 00:00:00 2001 From: akashg1611 Date: Thu, 24 Jun 2010 20:05:15 +0000 Subject: Added the new toolbar The new toolbar is added such that the activity falls back to older toolbar in case of older sugar version, hence maintaing backward compatibility. --- 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 = '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 = '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(_('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])) + + diff --git a/icons/toolbar-create.svg b/icons/toolbar-create.svg new file mode 100644 index 0000000..ea7c0ce --- /dev/null +++ b/icons/toolbar-create.svg @@ -0,0 +1,44 @@ + + +]> + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v0.9.1