Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/tutorius/core.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sugar/tutorius/core.py')
-rw-r--r--src/sugar/tutorius/core.py49
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