Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/tutorius/filters.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sugar/tutorius/filters.py')
-rw-r--r--src/sugar/tutorius/filters.py58
1 files changed, 11 insertions, 47 deletions
diff --git a/src/sugar/tutorius/filters.py b/src/sugar/tutorius/filters.py
index 594ad6a..aa8c997 100644
--- a/src/sugar/tutorius/filters.py
+++ b/src/sugar/tutorius/filters.py
@@ -22,35 +22,39 @@ logger = logging.getLogger("filters")
from sugar.tutorius.gtkutils import find_widget
from sugar.tutorius.services import ObjectStore
+from sugar.tutorius import properties
-class EventFilter(object):
+class EventFilter(properties.TPropContainer):
"""
Base class for an event filter
"""
- def __init__(self, next_state):
+
+ next_state = properties.TStringProperty("None")
+
+ def __init__(self, next_state=None):
"""
Constructor.
@param next_state name of the next state
"""
- self._next_state = next_state
+ super(EventFilter, self).__init__()
+ if next_state:
+ self.next_state = next_state
self._callback = None
def get_next_state(self):
"""
Getter for the next state
"""
- return self._next_state
+ return self.next_state
def set_next_state(self, new_next_name):
"""
Setter for the next state. Should only be used during construction of
the event_fitler, not while the tutorial is running.
"""
- self._next_state = new_next_name
+ self.next_state = new_next_name
- next_state = property(fget=get_next_state, fset=set_next_state)
-
def install_handlers(self, callback, **kwargs):
"""
install_handlers is called for eventfilters to setup all
@@ -133,46 +137,6 @@ class TimerEvent(EventFilter):
self.do_callback()
return False #Stops timeout
-class GtkWidgetEventFilter(EventFilter):
- """
- Basic Event filter for Gtk widget events
- """
- def __init__(self, next_state, object_id, event_name):
- """Constructor
- @param next_state default EventFilter param, passed on to EventFilter
- @param object_id object fqdn-style identifier
- @param event_name event to attach to
- """
- super(GtkWidgetEventFilter,self).__init__(next_state)
- self._callback = None
- self._object_id = object_id
- self._event_name = event_name
- self._widget = None
- self._handler_id = None
-
- def install_handlers(self, callback, **kwargs):
- """install handlers
- @param callback default EventFilter callback arg
- @param activity keyword argument activity must be present to install
- the event handler into the activity's widget hierarchy
- """
- super(GtkWidgetEventFilter, self).install_handlers(callback, **kwargs)
- if not "activity" in kwargs:
- raise TypeError("activity argument is Mandatory")
-
- #find the widget and connect to its event
- self._widget = find_widget(kwargs["activity"], self._object_id)
- self._handler_id = self._widget.connect( \
- self._event_name, self.do_callback )
-
- def remove_handlers(self):
- """remove handlers"""
- super(GtkWidgetEventFilter, self).remove_handlers()
- #if an event was connected, disconnect it
- if self._handler_id:
- self._widget.handler_disconnect(self._handler_id)
- self._handler_id=None
-
class GtkWidgetTypeFilter(EventFilter):
"""
Event Filter that listens for keystrokes on a widget