from touch_objects import OBJECT_NAMES class Event(object): """ Abstract base class for events triggered by an event driver. These events are delegated to gesture trackers, to be translated to gestures. To be able to check whether an event is located within a widget, a position is required. Therefore, the touch object that triggers the event is is linked to the event object. """ _type = NotImplemented def __init__(self, touch_object): self.touch_object = touch_object self.stopped = self.stopped_immidiate = False def __getattr__(self, name): if name in OBJECT_NAMES \ and type(self.touch_object) == OBJECT_NAMES[name]: return self.touch_object raise AttributeError("'%s' object has no attribute '%s'" % (self.__class__.__name__, name)) def get_type(self): return self._type def get_touch_object(self): return self.touch_object def get_position(self): return self.touch_object.get_position() def stop_propagation(self): self.stopped = True def is_propagation_stopped(self): return self.stopped def stop_immidiate_propagation(self): self.stop_propagation() self.stopped_immidiate = True def is_immediate_propagation_stopped(self): return self.stopped_immidiate