Forráskód Böngészése

Added tracker for 'basic' events.

Taddeus Kroes 13 éve
szülő
commit
27d097aa4c
3 módosított fájl, 80 hozzáadás és 2 törlés
  1. 1 2
      src/tracker.py
  2. 32 0
      src/trackers/basic.py
  3. 47 0
      tests/basic.py

+ 1 - 2
src/tracker.py

@@ -26,8 +26,7 @@ class GestureTracker(Logger):
         passed to the handler along with a Gesture object can be specified.
         """
         if gesture_type not in self.__gesture_types__:
-            raise AttributeError('Unsupported gesture type "%s".' \
-                                 % gesture_type)
+            raise ValueError('Unsupported gesture type "%s".' % gesture_type)
 
         h = handler, args, kwargs
 

+ 32 - 0
src/trackers/basic.py

@@ -0,0 +1,32 @@
+from ..tracker import GestureTracker, Gesture
+from ..geometry import Positionable
+from utils import PointGesture
+
+
+class BasicTracker(GestureTracker):
+    """
+    The main goal of this class is to provide a triggering mechanism for the
+    low-level point-down, point-move and point-up events.
+    """
+    __gesture_types__ = ['down', 'move', 'up']
+
+    def on_point_down(self, point):
+        self.trigger(DownGesture(point))
+
+    def on_point_move(self, point):
+        self.trigger(MoveGesture(point))
+
+    def on_point_up(self, point):
+        self.trigger(UpGesture(point))
+
+
+class DownGesture(PointGesture):
+    __type__ = 'down'
+
+
+class MoveGesture(PointGesture):
+    __type__ = 'move'
+
+
+class UpGesture(PointGesture):
+    __type__ = 'up'

+ 47 - 0
tests/basic.py

@@ -0,0 +1,47 @@
+import argparse
+import logging
+
+from src.server import GestureServer
+from src.window import FullscreenWindow
+from src.trackers.basic import BasicTracker
+from src.logger import Logger
+
+
+# Parse arguments
+parser = argparse.ArgumentParser(description='Basic test program for usage '
+                                             'of multi-touch API.')
+parser.add_argument('--log', metavar='LOG_LEVEL', default='INFO',
+                    choices=['DEBUG', 'INFO', 'WARNING'],
+                    help='set log level (defaults to INFO)')
+parser.add_argument('--logfile', metavar='FILENAME',
+                    help='filename for the log file (the log is printed to '
+                         'stdout by default)')
+args = parser.parse_args()
+
+
+# Configure logger
+log_config = {'level': getattr(logging, args.log)}
+
+if args.logfile:
+    log_config['filename'] = args.logfile
+
+Logger.configure(**log_config)
+
+
+# Create server
+server = GestureServer()
+
+# Create a window to add trackers to
+win = FullscreenWindow(server=server)
+
+# Add tracker and handlers
+tracker = BasicTracker(win)
+tracker.bind('down', lambda g: 0)
+tracker.bind('move', lambda g: 0)
+tracker.bind('up', lambda g: 0)
+
+# Start listening to TUIO events
+try:
+    server.start()
+except KeyboardInterrupt:
+    server.stop()