[pitivi] TimelineCanvas: More extensive scrollwheel behaviour. Fixes #576326
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Subject: [pitivi] TimelineCanvas: More extensive scrollwheel behaviour. Fixes #576326
- Date: Thu, 14 May 2009 13:28:20 -0400 (EDT)
commit 69dd1b51f19f67accbbf7dbdaa9de4fd493e09e4
Author: Edward Hervey <bilboed bilboed com>
Date: Thu May 14 19:27:28 2009 +0200
TimelineCanvas: More extensive scrollwheel behaviour. Fixes #576326
UP/DOWN : scrolls left/right
SHIFT + UP/DOWN : scrolls up/down
CTRL + UP/DOWN : zooms in/out
Also made the canvas Loggable (for debug messages).
---
pitivi/ui/timelinecanvas.py | 32 +++++++++++++++++++++++++++++++-
1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/pitivi/ui/timelinecanvas.py b/pitivi/ui/timelinecanvas.py
index 2bdac58..c28d70c 100644
--- a/pitivi/ui/timelinecanvas.py
+++ b/pitivi/ui/timelinecanvas.py
@@ -22,6 +22,7 @@
import gtk
import goocanvas
+from pitivi.log.loggable import Loggable
from pitivi.receiver import receiver, handler
from pitivi.ui.track import Track
from pitivi.ui.trackobject import TrackObject
@@ -50,13 +51,18 @@ PreferencesDialog.addNumericPreference('edgeSnapDeadband',
"operations",
lower = 0)
-class TimelineCanvas(goocanvas.Canvas, Zoomable):
+class TimelineCanvas(goocanvas.Canvas, Zoomable, Loggable):
+
+ __gsignals__ = {
+ "scroll-event":"override"
+ }
_tracks = None
def __init__(self, instance, timeline=None):
goocanvas.Canvas.__init__(self)
Zoomable.__init__(self)
+ Loggable.__init__(self)
self.app = instance
self._selected_sources = []
self._tracks = []
@@ -103,6 +109,30 @@ class TimelineCanvas(goocanvas.Canvas, Zoomable):
track_ui.setExpanded(expanded)
+ def do_scroll_event(self, event):
+ if event.state & gtk.gdk.SHIFT_MASK:
+ # shift + scroll => vertical (up/down) scroll
+ if event.direction == gtk.gdk.SCROLL_LEFT:
+ event.direction = gtk.gdk.SCROLL_UP
+ elif event.direction == gtk.gdk.SCROLL_RIGHT:
+ event.direction = gtk.gdk.SCROLL_DOWN
+ event.state &= ~gtk.gdk.SHIFT_MASK
+ elif event.state & gtk.gdk.CONTROL_MASK:
+ # zoom + scroll => zooming (up: zoom in)
+ if event.direction == gtk.gdk.SCROLL_UP:
+ Zoomable.zoomIn()
+ return True
+ elif event.direction == gtk.gdk.SCROLL_DOWN:
+ Zoomable.zoomOut()
+ return True
+ return False
+ else:
+ if event.direction == gtk.gdk.SCROLL_UP:
+ event.direction = gtk.gdk.SCROLL_LEFT
+ elif event.direction == gtk.gdk.SCROLL_DOWN:
+ event.direction = gtk.gdk.SCROLL_RIGHT
+ return goocanvas.Canvas.do_scroll_event(self, event)
+
## sets the cursor as appropriate
def _mouseEnterCb(self, unused_item, unused_target, event):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]