From cf40c1951f4f0f26090226fb4969ca147341a031 Mon Sep 17 00:00:00 2001 From: mike Date: Fri, 02 Oct 2009 22:24:56 +0000 Subject: LP 439980 : Refactored the XMLSerializer to support complex components; Corrected specs for the addons properties and constructor parameters names; Moved all existing actions and events to components (except a few left in code for testing purposes) --- (limited to 'tutorius/filters.py') diff --git a/tutorius/filters.py b/tutorius/filters.py index aa8c997..fc58562 100644 --- a/tutorius/filters.py +++ b/tutorius/filters.py @@ -94,111 +94,111 @@ class EventFilter(properties.TPropContainer): if self._callback: self._callback(self) -class TimerEvent(EventFilter): - """ - TimerEvent is a special EventFilter that uses gobject - timeouts to trigger a state change after a specified amount - of time. It must be used inside a gobject main loop to work. - """ - def __init__(self,next_state,timeout_s): - """Constructor. - - @param next_state default EventFilter param, passed on to EventFilter - @param timeout_s timeout in seconds - """ - super(TimerEvent,self).__init__(next_state) - self._timeout = timeout_s - self._handler_id = None - - def install_handlers(self, callback, **kwargs): - """install_handlers creates the timer and starts it""" - super(TimerEvent,self).install_handlers(callback, **kwargs) - #Create the timer - self._handler_id = gobject.timeout_add_seconds(self._timeout, self._timeout_cb) - - def remove_handlers(self): - """remove handler removes the timer""" - super(TimerEvent,self).remove_handlers() - if self._handler_id: - try: - #XXX What happens if this was already triggered? - #remove the timer - gobject.source_remove(self._handler_id) - except: - pass - - def _timeout_cb(self): - """ - _timeout_cb triggers the eventfilter callback. - - It is necessary because gobject timers only stop if the callback they - trigger returns False - """ - self.do_callback() - return False #Stops timeout - -class GtkWidgetTypeFilter(EventFilter): - """ - Event Filter that listens for keystrokes on a widget - """ - def __init__(self, next_state, object_id, text=None, strokes=None): - """Constructor - @param next_state default EventFilter param, passed on to EventFilter - @param object_id object tree-ish identifier - @param text resulting text expected - @param strokes list of strokes expected - - At least one of text or strokes must be supplied - """ - super(GtkWidgetTypeFilter, self).__init__(next_state) - self._object_id = object_id - self._text = text - self._captext = "" - self._strokes = strokes - self._capstrokes = [] - self._widget = None - self._handler_id = None - - def install_handlers(self, callback, **kwargs): - """install handlers - @param callback default EventFilter callback arg - """ - super(GtkWidgetTypeFilter, self).install_handlers(callback, **kwargs) - logger.debug("~~~GtkWidgetTypeFilter install") - activity = ObjectStore().activity - if activity is None: - logger.error("No activity") - raise RuntimeWarning("no activity in the objectstore") - - self._widget = find_widget(activity, self._object_id) - if self._widget: - self._handler_id= self._widget.connect("key-press-event",self.__keypress_cb) - logger.debug("~~~Connected handler %d on %s" % (self._handler_id,self._object_id) ) - - def remove_handlers(self): - """remove handlers""" - super(GtkWidgetTypeFilter, 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 - - def __keypress_cb(self, widget, event, *args): - """keypress callback""" - logger.debug("~~~keypressed!") - key = event.keyval - keystr = event.string - logger.debug("~~~Got key: " + str(key) + ":"+ keystr) - self._capstrokes += [key] - #TODO Treat other stuff, such as arrows - if key == gtk.keysyms.BackSpace: - self._captext = self._captext[:-1] - else: - self._captext = self._captext + keystr - - logger.debug("~~~Current state: " + str(self._capstrokes) + ":" + str(self._captext)) - if not self._strokes is None and self._strokes in self._capstrokes: - self.do_callback() - if not self._text is None and self._text in self._captext: - self.do_callback() +##class TimerEvent(EventFilter): +## """ +## TimerEvent is a special EventFilter that uses gobject +## timeouts to trigger a state change after a specified amount +## of time. It must be used inside a gobject main loop to work. +## """ +## def __init__(self,next_state,timeout_s): +## """Constructor. +## +## @param next_state default EventFilter param, passed on to EventFilter +## @param timeout_s timeout in seconds +## """ +## super(TimerEvent,self).__init__(next_state) +## self._timeout = timeout_s +## self._handler_id = None +## +## def install_handlers(self, callback, **kwargs): +## """install_handlers creates the timer and starts it""" +## super(TimerEvent,self).install_handlers(callback, **kwargs) +## #Create the timer +## self._handler_id = gobject.timeout_add_seconds(self._timeout, self._timeout_cb) +## +## def remove_handlers(self): +## """remove handler removes the timer""" +## super(TimerEvent,self).remove_handlers() +## if self._handler_id: +## try: +## #XXX What happens if this was already triggered? +## #remove the timer +## gobject.source_remove(self._handler_id) +## except: +## pass +## +## def _timeout_cb(self): +## """ +## _timeout_cb triggers the eventfilter callback. +## +## It is necessary because gobject timers only stop if the callback they +## trigger returns False +## """ +## self.do_callback() +## return False #Stops timeout +## +##class GtkWidgetTypeFilter(EventFilter): +## """ +## Event Filter that listens for keystrokes on a widget +## """ +## def __init__(self, next_state, object_id, text=None, strokes=None): +## """Constructor +## @param next_state default EventFilter param, passed on to EventFilter +## @param object_id object tree-ish identifier +## @param text resulting text expected +## @param strokes list of strokes expected +## +## At least one of text or strokes must be supplied +## """ +## super(GtkWidgetTypeFilter, self).__init__(next_state) +## self._object_id = object_id +## self._text = text +## self._captext = "" +## self._strokes = strokes +## self._capstrokes = [] +## self._widget = None +## self._handler_id = None +## +## def install_handlers(self, callback, **kwargs): +## """install handlers +## @param callback default EventFilter callback arg +## """ +## super(GtkWidgetTypeFilter, self).install_handlers(callback, **kwargs) +## logger.debug("~~~GtkWidgetTypeFilter install") +## activity = ObjectStore().activity +## if activity is None: +## logger.error("No activity") +## raise RuntimeWarning("no activity in the objectstore") +## +## self._widget = find_widget(activity, self._object_id) +## if self._widget: +## self._handler_id= self._widget.connect("key-press-event",self.__keypress_cb) +## logger.debug("~~~Connected handler %d on %s" % (self._handler_id,self._object_id) ) +## +## def remove_handlers(self): +## """remove handlers""" +## super(GtkWidgetTypeFilter, 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 +## +## def __keypress_cb(self, widget, event, *args): +## """keypress callback""" +## logger.debug("~~~keypressed!") +## key = event.keyval +## keystr = event.string +## logger.debug("~~~Got key: " + str(key) + ":"+ keystr) +## self._capstrokes += [key] +## #TODO Treat other stuff, such as arrows +## if key == gtk.keysyms.BackSpace: +## self._captext = self._captext[:-1] +## else: +## self._captext = self._captext + keystr +## +## logger.debug("~~~Current state: " + str(self._capstrokes) + ":" + str(self._captext)) +## if not self._strokes is None and self._strokes in self._capstrokes: +## self.do_callback() +## if not self._text is None and self._text in self._captext: +## self.do_callback() -- cgit v0.9.1