# python import import logging from gettext import gettext as _ # gtk import import gtk # sugar import from sugar.graphics.toolbutton import ToolButton # atoidepoc import from atoidepoc.storage import utils from atoidepoc.ui import screens # get application logger logger = logging.getLogger('atoidepoc') def _cb_add(widget, toolbar): # browser screen factory if toolbar.name == 'graphic': _cls = screens.ScreenBrowserGraphics elif toolbar.name == 'sound': _cls = screens.ScreenBrowserSounds # ?? else: # DEBUG return logger.debug('[toolbar] _cb_add - unknown: %s' % toolbar.name) # do switch _cls(toolbar) def _cb_open(widget, toolbar): # DEBUG logger.debug('[toolbar] _cb_open - name: %s' % toolbar.name) def _cb_play(widget, toolbar): # DEBUG logger.debug('[toolbar] _cb_play - name: %s' % toolbar.name) BUTTONS = { 'add' : ['list-add', _cb_add], 'open' : ['media', _cb_open], 'play' : ['player_play', _cb_play], } TOOLBARS = { 'graphic' : ['add'], 'sound' : ['add'], 'story' : ['open', 'play', ], } TITLES = { 'graphic' : { 'toolbar': _('Graphic'), 'buttons': { 'add': _('Add Graphic'), } }, 'sound' : { 'toolbar': _('Sound'), 'buttons': { 'add': _('Add Sound'), } }, 'story' : { 'toolbar': _('Story'), 'buttons': { 'open': _('Open Story'), 'play': _('Play Story'), } }, } class Toolbar(gtk.Toolbar): def __init__(self, activity, name='player'): # init parent gtk.Toolbar.__init__(self) # keep activity self.activity = activity # keep the name self.set_name(name) # add buttons for _b in TOOLBARS[self.name]: self._add_button(_b) # add to parent _toolbox = self.activity.get_toolbox() _toolbox.add_toolbar(TITLES[self.name]['toolbar'], self) # show self.show() def _add_button(self, button_id): # little check if button_id in BUTTONS: # get button icon and cb _icon, _cb = BUTTONS[button_id] # get tooltip _tooltip = TITLES[self.name]['buttons'][button_id] # set icon _buton = ToolButton(_icon) # set tooltip _buton.set_tooltip(_tooltip) # do connect _buton.connect('clicked', _cb, self) # add to the toolbar self.insert(_buton, -1) # show it _buton.show() # ?? else: # DEBUG logger.debug('[toolbar] _add_button - unknown: %s' % button_id)