import logging import dbus.mainloop.glib from jarabe.model import shell from sugar.bundle.activitybundle import ActivityBundle from .vault import Vault class Engine: """ Driver for the execution of tutorials """ def __init__(self): # FIXME Probe management should be in the probe manager dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) #FIXME shell.get_model() will only be useful in the shell process self._shell = shell.get_model() self._tutorial = None def launch(self, tutorialID): """ Launch a tutorial @param tutorialID unique tutorial identifier used to retrieve it from the disk """ if self._tutorial: self._tutorial.detach() self._tutorial = None #Get the active activity from the shell activity = self._shell.get_active_activity() self._tutorial = Vault.loadTutorial(tutorialID) #TProbes automatically use the bundle id, available from the ActivityBundle bundle = ActivityBundle(activity.get_bundle_path()) self._tutorial.attach(bundle.get_bundle_id()) def stop(self): """ Stop the current tutorial """ self._tutorial.detach() self._tutorial = None def pause(self): """ Interrupt the current tutorial and save its state in the journal """ raise NotImplementedError("Unable to store tutorial state")