From 6a390f667cca2b78ede0db7ca4877201462b886e Mon Sep 17 00:00:00 2001 From: mike Date: Thu, 19 Nov 2009 14:38:39 +0000 Subject: LP 448319 : Addition of resource properties, insertion of BubbleMessageWImg from Dave, modification of Engine to get action_addresses --- (limited to 'tutorius/engine.py') diff --git a/tutorius/engine.py b/tutorius/engine.py index c945e49..10c8d14 100644 --- a/tutorius/engine.py +++ b/tutorius/engine.py @@ -7,7 +7,9 @@ from .vault import Vault from .TProbe import ProbeManager from .dbustools import save_args from .tutorial import Tutorial, AutomaticTransitionEvent +from .translator import ResourceTranslator +LOGGER = logging.getLogger("sugar.tutorius.engine") class TutorialRunner(object): """ @@ -27,6 +29,7 @@ class TutorialRunner(object): #Cached objects self._actions = {} + self._installed_actions = {} #Temp FIX until event/actions have an activity id self._activity_id = None @@ -55,15 +58,21 @@ class TutorialRunner(object): return #Clear the current actions - for action in self._actions.values(): - self._pM.uninstall(action) + for (action_name, action_address) in self._installed_actions.items(): + LOGGER.debug("TutorialRunner :: Uninstalling action %s with address %s"%(action_name, action_address)) + self._pM.uninstall(action_address) self._actions = {} + self._installed_actions = {} #Clear the EventFilters for event in self._sEvents: self._pM.unsubscribe(event) self._sEvents.clear() + def __action_installed(self, action_name, address): + LOGGER.debug("TutorialRunner :: Action %s received address %s"%(action_name, address)) + self._installed_actions[action_name] = address + def _setupState(self): if self._state is None: raise RuntimeError("Attempting to setupState without a state") @@ -77,13 +86,15 @@ class TutorialRunner(object): for (event, next_state) in transitions.values(): if isinstance(event, AutomaticTransitionEvent): state_name = next_state - break + return state_name + + for (action_name, action) in self._actions.items(): + self._pM.install(action, save_args(self.__action_installed, action_name), True) + LOGGER.debug("TutorialRunner :: Installed action %s"%(action_name)) + for (event, next_state) in transitions.values(): self._sEvents.add(self._pM.subscribe(event, save_args(self._handleEvent, next_state))) - for action in self._actions.values(): - self._pM.install(action) - return state_name def enterState(self, state_name): @@ -112,9 +123,6 @@ class TutorialRunner(object): # transition in the state definition self.enterState(self._setupState()) - - - class Engine: """ Driver for the execution of tutorials @@ -137,7 +145,8 @@ class Engine: if self._tutorial: self.stop() - self._tutorial = TutorialRunner(Vault.loadTutorial(tutorialID), self._probeManager) + translator_decorator = ResourceTranslator(self._probeManager, tutorialID) + self._tutorial = TutorialRunner(Vault.loadTutorial(tutorialID), translator_decorator) #Get the active activity from the shell activity = self._shell.get_active_activity() -- cgit v0.9.1