| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from copy import copy
- from geometry import Positionable
- from touch_objects import OBJECT_NAMES
- class Event(Positionable):
- """
- 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 area, 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):
- super(Event, self).__init__(*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 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
- def clone(self):
- return copy(self)
|