[pygtkglext] Enable mouse wheel scroll events
- From: Mukund Sivaraman <muks src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [pygtkglext] Enable mouse wheel scroll events
- Date: Tue, 12 Jan 2010 14:51:27 +0000 (UTC)
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]