diff options
Diffstat (limited to 'src/sugar/tutorius/core.py')
-rw-r--r-- | src/sugar/tutorius/core.py | 49 |
1 files changed, 6 insertions, 43 deletions
diff --git a/src/sugar/tutorius/core.py b/src/sugar/tutorius/core.py index 85929db..14bb751 100644 --- a/src/sugar/tutorius/core.py +++ b/src/sugar/tutorius/core.py @@ -26,6 +26,7 @@ import logging from sugar.tutorius.dialog import TutoriusDialog from sugar.tutorius.gtkutils import find_widget +from sugar.tutorius.services import ObjectStore logger = logging.getLogger("tutorius") @@ -60,19 +61,17 @@ class Tutorial (object): if self.activity: self.detach() self.activity = activity + ObjectStore().activity = activity + ObjectStore().tutorial = self self.state_machine.set_state("INIT") def detach(self): """ Detach from the current activity """ - #Remove handlers - for eventfilter in self.state_machine.get(self.state,{}).get("EventFilters",()): - eventfilter.remove_handlers() - - #Undo actions - for act in self.state_machine.get(self.state,{}).get("Actions",()): - act.undo() + + # Uninstall the whole FSM + self.state_machine.teardown() #FIXME There should be some amount of resetting done here... self.activity = None @@ -82,31 +81,10 @@ class Tutorial (object): """ Switch to a new state """ -## if not self.state_machine.has_key(name): -## return logger.debug("====NEW STATE: %s====" % name) -## #Remove handlers -## for eventfilter in self.state_machine.get(self.state,{}).get("EventFilters",()): -## eventfilter.remove_handlers() - -## #Undo actions -## for act in self.state_machine.get(self.state,{}).get("Actions",()): -## act.undo() self.state_machine.set_state(name) - -## #Switch to new state -## self.state = name -## newstate = self.state_machine.get(name) -## #Register handlers for eventfilters -## for eventfilter in newstate["EventFilters"]: -## eventfilter.install_handlers(self._eventfilter_state_done, -## activity=self.activity) - -## #Do actions -## for act in newstate.get("Actions",()): -## act.do() # Currently unused -- equivalent function is in each state def _eventfilter_state_done(self, eventfilter): @@ -119,21 +97,6 @@ class Tutorial (object): #Swith to the next state pointed by the eventfilter self.set_state(eventfilter.get_next_state()) -# def register_signal(self, handler, obj_fqdn, signal_name): -# """Register a signal handler onto a specific widget -# @param handler function to attach as a handler -# @param obj_fqdn fqdn-style object name -# @param signal_name signal name to connect to -# -# Side effects: -# the object found and the handler id obtained by connect() are -# appended in self.handlers -# """ -# obj = find_widget(self.activity, obj_fqdn) -# self.handlers.append( \ -# (obj, obj.connect(signal_name, handler, (signal_name, obj_fqdn) ))\ -# ) - class State: """ This is a step in a tutorial. The state represents a collection of actions |