|
@@ -59,6 +59,9 @@ class DragGesture(Gesture, Positionable):
|
|
|
return '<DragGesture at (%s, %s) translation=(%s, %s)>' \
|
|
return '<DragGesture at (%s, %s) translation=(%s, %s)>' \
|
|
|
% (self.get_position() + self.translation.get_position())
|
|
% (self.get_position() + self.translation.get_position())
|
|
|
|
|
|
|
|
|
|
+ def get_translation(self):
|
|
|
|
|
+ return self.translation
|
|
|
|
|
+
|
|
|
|
|
|
|
|
class TransformationTracker(GestureTracker):
|
|
class TransformationTracker(GestureTracker):
|
|
|
"""
|
|
"""
|
|
@@ -67,7 +70,7 @@ class TransformationTracker(GestureTracker):
|
|
|
"""
|
|
"""
|
|
|
supported_gestures = [RotationGesture, PinchGesture, DragGesture]
|
|
supported_gestures = [RotationGesture, PinchGesture, DragGesture]
|
|
|
|
|
|
|
|
- def __init__(self, widget=None):
|
|
|
|
|
|
|
+ def __init__(self, widget):
|
|
|
super(TransformationTracker, self).__init__(widget)
|
|
super(TransformationTracker, self).__init__(widget)
|
|
|
|
|
|
|
|
# All touch points performing the transformation
|
|
# All touch points performing the transformation
|
|
@@ -116,13 +119,17 @@ class TransformationTracker(GestureTracker):
|
|
|
scale = dist / prev
|
|
scale = dist / prev
|
|
|
self.trigger(PinchGesture(event, self.centroid, scale))
|
|
self.trigger(PinchGesture(event, self.centroid, scale))
|
|
|
|
|
|
|
|
|
|
+ # Movement using multiple touch points
|
|
|
|
|
+ self.trigger(DragGesture(event, self.centroid,
|
|
|
|
|
+ self.centroid.translation()))
|
|
|
|
|
+ else:
|
|
|
|
|
+ # Movement using one touch point
|
|
|
|
|
+ self.trigger(DragGesture(event, event.point,
|
|
|
|
|
+ event.point.translation()))
|
|
|
|
|
+
|
|
|
# Update centroid before movement can be detected
|
|
# Update centroid before movement can be detected
|
|
|
self.update_centroid()
|
|
self.update_centroid()
|
|
|
|
|
|
|
|
- # Movement
|
|
|
|
|
- self.trigger(DragGesture(event, self.centroid,
|
|
|
|
|
- self.centroid.translation()))
|
|
|
|
|
-
|
|
|
|
|
def on_point_up(self, event):
|
|
def on_point_up(self, event):
|
|
|
self.points.remove(event.point)
|
|
self.points.remove(event.point)
|
|
|
self.update_centroid()
|
|
self.update_centroid()
|