blob: e77a018501bf2f5c5bfc5bfab5ad0c4e18cafe05 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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")
|