[pygtkglext] Enable mouse wheel scroll events



commit 896582fcbb0b15e329fcc43318b11ba0b6d87b17
Author: Mukund Sivaraman <muks banu com>
Date:   Tue Jan 12 20:18:25 2010 +0530

    Enable mouse wheel scroll events

 gtk/gtkgl/apputils.py |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkgl/apputils.py b/gtk/gtkgl/apputils.py
index 0bec85c..e95b15b 100644
--- a/gtk/gtkgl/apputils.py
+++ b/gtk/gtkgl/apputils.py
@@ -117,6 +117,12 @@ class GLSceneButton(object):
         """
         raise NotImplementedError, "must be implemented."
 
+    def button_scroll(self, width, height, event):
+        """Process button scroll event.
+        This function is invoked on 'scroll_event' signal.
+        """
+        raise NotImplementedError, "must be implemented."
+
 
 class GLSceneButtonMotion(object):
     """Button motion event interface mixin."""
@@ -188,8 +194,10 @@ class GLArea(gtk.DrawingArea, gtk.gtkgl.Widget):
         if isinstance(self.glscene, GLSceneButton):
             self.connect('button_press_event',   self.__button_press_event)
             self.connect('button_release_event', self.__button_release_event)
+            self.connect('scroll_event', self.__button_scroll_event)
             self.add_events(gtk.gdk.BUTTON_PRESS_MASK   |
-                            gtk.gdk.BUTTON_RELEASE_MASK)
+                            gtk.gdk.BUTTON_RELEASE_MASK |
+                            gtk.gdk.SCROLL_MASK)
 
         # Add motion events
         self.__motion_events = 0
@@ -323,6 +331,20 @@ class GLArea(gtk.DrawingArea, gtk.gtkgl.Widget):
         gldrawable.gl_end()
         return True
 
+    def __button_scroll_event(self, widget, event):
+        """'button_scroll_event' signal handler.
+        This function invokes glscene.button_scroll().
+        """
+        glcontext = widget.get_gl_context()
+        gldrawable = widget.get_gl_drawable()
+        if not gldrawable.gl_begin(glcontext): return
+        # Call glscene.button_scroll()
+        self.glscene.button_scroll(widget.allocation.width,
+                                   widget.allocation.height,
+                                   event)
+        gldrawable.gl_end()
+        return True
+
     def __motion_notify_event(self, widget, event):
         """'motion_notify_event' signal handler.
         This function invokes glscene.motion().
@@ -536,6 +558,10 @@ class EmptyScene(GLScene,
         print "button_release (button=%d, state=%d, x=%d, y=%d)" \
               % (event.button, event.state, event.x, event.y)
 
+    def button_scroll(self, width, height, event):
+        print "button_scroll (direction=%d, state=%d, x=%d, y=%d)" \
+              % (event.direction, event.state, event.x, event.y)
+
     def button_motion(self, width, height, event):
         print "button_motion (state=%d, x=%d, y=%d)" \
               % (event.state, event.x, event.y)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]