[pitivi/ges: 38/287] Track object : change in the movement policy
- From: Jean-FranÃois Fortin Tam <jfft src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi/ges: 38/287] Track object : change in the movement policy
- Date: Thu, 15 Mar 2012 16:29:01 +0000 (UTC)
commit 3ec7619ac359b5b7819a269d98f524068ded5d61
Author: Mathieu Duponchelle <seeed laposte net>
Date: Wed Sep 14 14:40:29 2011 +0200
Track object : change in the movement policy
Make the track object referential be its last position and not the whole timeline, this is needed to allow "pass over"
pitivi/ui/trackobject.py | 31 +++++++++++++++++++++++--------
1 files changed, 23 insertions(+), 8 deletions(-)
---
diff --git a/pitivi/ui/trackobject.py b/pitivi/ui/trackobject.py
index 4c75a3a..70b91e9 100644
--- a/pitivi/ui/trackobject.py
+++ b/pitivi/ui/trackobject.py
@@ -101,6 +101,9 @@ class TimelineController(controller.Controller):
_cursor = ARROW
_context = None
_handle_enter_leave = False
+ previous_x = None
+ next_previous_x = None
+ ref = None
def enter(self, unused, unused2):
self._view.focus()
@@ -111,6 +114,10 @@ class TimelineController(controller.Controller):
def drag_start(self, item, target, event):
#if not self._view.element.selected:
#self._view.timeline.selection.setToObj(self._view.element, SELECT)
+ if self.previous_x != None:
+ ratio = float(self.ref / Zoomable.pixelToNs(10000000000))
+ self.previous_x = self.previous_x * ratio
+ self.ref = Zoomable.pixelToNs(10000000000)
self._view.app.projectManager.current.timeline.enable_update(False)
tx = self._view.props.parent.get_transform()
# store y offset for later priority calculation
@@ -126,17 +133,24 @@ class TimelineController(controller.Controller):
self._view.element.starting_start = self._view.element.get_property("start")
obj = self._view.element.get_timeline_object()
obj.starting_start = obj.get_property("start")
+ self.previous_x = self.next_previous_x
def set_pos(self, item, pos):
x, y = pos
- position = Zoomable.pixelToNs(x + self._hadj.get_value())
+ x = x + self._hadj.get_value()
priority = int((y - self._y_offset + self._vadj.get_value()) //
(LAYER_HEIGHT_EXPANDED + LAYER_SPACING))
#self._context.setMode(self._getMode())
track = self._view.element.get_track()
start = self._view.element.get_start()
duration = self._view.element.get_duration()
- if isinstance (self._view, EndHandle) or isinstance (self._view, StartHandle):
+ if self.previous_x:
+ position = self._view.element.get_start() + Zoomable.pixelToNs(x - self.previous_x)
+ else:
+ position = Zoomable.pixelToNs(x)
+ self.previous_x = x
+
+ if isinstance(self._view, EndHandle) or isinstance(self._view, StartHandle):
position = Zoomable.pixelToNs(x)
self._context.editTo(position, priority)
self._view.get_canvas().regroupTracks()
@@ -170,6 +184,7 @@ class TimelineController(controller.Controller):
self._context.editTo(position, priority)
self._view.get_canvas().regroupTracks()
+ self.next_previous_x = Zoomable.nsToPixel(self._view.element.get_start())
def _getMode(self):
if self._shift_down:
@@ -202,8 +217,7 @@ class TrimHandle(View, goocanvas.Image, Zoomable):
pixbuf=TRIMBAR_PIXBUF,
line_width=0,
pointer_events=goocanvas.EVENTS_FILL,
- **kwargs
- )
+ **kwargs)
View.__init__(self)
Zoomable.__init__(self)
@@ -297,10 +311,11 @@ class TrackObject(View, goocanvas.Group, Zoomable):
#self._view.app.current.seeker.seek(Zoomable.pixelToNs(x))
#timeline.setSelectionToObj(element, SELECT)
- def __init__(self, instance, element, track, timeline, uTrack, is_transition = False):
+ def __init__(self, instance, element, track, timeline, uTrack, is_transition=False):
goocanvas.Group.__init__(self)
View.__init__(self)
Zoomable.__init__(self)
+ self.ref = Zoomable.nsToPixel(10000000000)
self.app = instance
self.track = track
self.uTrack = uTrack
@@ -342,7 +357,7 @@ class TrackObject(View, goocanvas.Group, Zoomable):
for thing in (self.bg, self.selection_indicator,
self.start_handle, self.end_handle, self.namebg, self.name):
self.add_child(thing)
- else :
+ else:
for thing in (self.bg, self.name):
self.add_child(thing)
@@ -449,7 +464,7 @@ class TrackObject(View, goocanvas.Group, Zoomable):
def _setElement(self):
if self.element and not self.is_transition:
- self.name.props.text = self.element.get_property ("uri")
+ self.name.props.text = self.element.get_property("uri")
twidth, theight = text_size(self.name)
self.namewidth = twidth
self.nameheight = theight
@@ -497,7 +512,7 @@ class TrackObject(View, goocanvas.Group, Zoomable):
print self.element.get_start()
raise Exception(e)
priority = (self.element.get_priority()) / 10
- if priority < 0 :
+ if priority < 0:
priority = 0
y = (self.height + LAYER_SPACING) * priority
self.set_simple_transform(x, y, 1, 0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]