import Musicpainter from sugar.presence import presenceservice from sugar.activity.activity import ActivityToolbox from sugar.activity import activity class MusicpainterActivity(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle) self.connect('destroy', self._cleanup_cb) #load the sugar toolbar toolbox = activity.ActivityToolbox(self) self.set_toolbox(toolbox) activity_toolbar = toolbox.get_activity_toolbar() activity_toolbar.remove(activity_toolbar.share) activity_toolbar.share = None activity_toolbar.keep.connect('clicked', self._keep_cb) #activity_toolbar.remove(activity_toolbar.keep) #activity_toolbar.keep = None activity_toolbar.stop.can_focus = True activity_toolbar.keep.can_focus = True #activity_toolbar.keep.grab_focus() toolbox.show() activity_toolbar.keep.grab_focus() self.gamename = 'Musicpainter' self.set_title("Music Painter") # connect to the in/out events self.connect('notify::active', self.onActive) self.connect('focus_in_event', self._focus_in) self.connect('focus_out_event', self._focus_out) self.musicpainter = Musicpainter.Musicpainter() # self.musicpainter.grab_focus() # musicpainter.init_csoundpath(activity.get_bundle_path()) presenceService = presenceservice.get_instance() xoOwner = presenceService.get_owner() # get my name # self.grab_focus() self.musicpainter.initSugar(self, xoOwner.props.nick) try: print "To load: " + self.to_read self.musicpainter.canvas.canvas_load_journal(self.to_read) print "complete!" except: return # self.activity_toolbar.share.hide() def _keep_cb(self, data=None): print "to keep()" self.musicpainter.canvas.save_file() return def _cleanup_cb(self, data=None): return def _focus_in(self, event, data=None): return def _focus_out(self, event, data=None): return def onActive(self, widget = None, event = None): if widget.props.active == False: print "MusicpainterActivity.onActive: to disconnect" self.musicpainter.deactivate() else: print "MusicpainterActivity.onActive: to re-connect" self.musicpainter.reactivate() def read_file(self, file_path): '''Read file from Sugar Journal.''' print "read file: " + file_path + " pending" self.to_read = file_path #self.musicpainter.canvas.canvas_load_journal(file_path) def write_file(self, file_path): '''Save file on Sugar Journal. ''' print "write file: " + file_path self.musicpainter.score.write_journal(file_path) self.metadata['activity'] = self.get_bundle_id() self.metadata['mime_type'] = 'application/x-musicpainter'