pitivi r1194 - in branches/SOC_2008_BLEWIS: . pitivi/ui
- From: blewis svn gnome org
- To: svn-commits-list gnome org
- Subject: pitivi r1194 - in branches/SOC_2008_BLEWIS: . pitivi/ui
- Date: Sat, 19 Jul 2008 19:29:06 +0000 (UTC)
Author: blewis
Date: Sat Jul 19 19:29:06 2008
New Revision: 1194
URL: http://svn.gnome.org/viewvc/pitivi?rev=1194&view=rev
Log:
* pitivi/ui/complextimeline.py:
edge snapping is here! \o/
* pitivi/ui/util.py:
cleaned up a bug in magnetize(), and also wrapped a really long line
in drag_start()
on the down side, i've noticed wierd freezes during pitivi startup on
occasion.
Modified:
branches/SOC_2008_BLEWIS/ChangeLog
branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py
branches/SOC_2008_BLEWIS/pitivi/ui/util.py
Modified: branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py
==============================================================================
--- branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py (original)
+++ branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py Sat Jul 19 19:29:06 2008
@@ -147,7 +147,6 @@
def _adjust_zoom(self, adjustment):
self._zoom_ratio = adjustment.get_value()
self._deadband = self.pixel_to_ns(DEADBAND)
- print self.ns_to_pixel(self._deadband)
self._zoom()
def set_zoom_ratio(self, ratio):
@@ -201,15 +200,18 @@
def pixel_to_ns(self, pixel):
return long(pixel * gst.SECOND / self._zoom_ratio)
- def _edge_snap(self, coord):
+ def _edge_snap(self, element, coord):
+ # need to find the closest edge to both the left and right sides of
+ # the object we are draging.
+ duration = element.duration
left_res, left_diff = closest_item(self._edges, coord)
- right_res, right_diff = closest_item(self._edges, coord)
+ right_res, right_diff = closest_item(self._edges, coord + duration)
if left_diff <= right_diff:
res = left_res
diff = left_diff
else:
- res = right_res - self._draging.duration
+ res = right_res - duration
diff = right_diff
if diff <= self._deadband:
return res
@@ -221,22 +223,25 @@
def _start_drag(self, item):
item.raise_(None)
- self._draging = item
+ self._draging = item.element
self._update_edges()
def _update_edges(self):
+ #FIXME: this might be more efficient if we used a binary sort tree,
+ # updated only when the timeline actually changes instead of before
+ # every drag operation. possibly concerned this could lead to a
+ # noticible lag on large timelines
edges = {}
for element in self.widgets:
edges[element.start] = None
edges[element.start + element.duration] = None
self._edges = edges.keys()
self._edges.sort()
- print self._edges
def _move_source_cb(self, item, pos):
element = item.element
- element.setStartDurationTime(max(self.pixel_to_ns(
- pos[0]), 0))
+ element.setStartDurationTime(max(self._edge_snap(element,
+ self.pixel_to_ns(pos[0])), 0))
def _trim_source_start_cb(self, item, pos):
element = item.element
Modified: branches/SOC_2008_BLEWIS/pitivi/ui/util.py
==============================================================================
--- branches/SOC_2008_BLEWIS/pitivi/ui/util.py (original)
+++ branches/SOC_2008_BLEWIS/pitivi/ui/util.py Sat Jul 19 19:29:06 2008
@@ -132,7 +132,7 @@
def magnetize(obj, coord, magnets, deadband):
# remember that objects have two ends
left_res, left_diff = closest_item(magnets, coord)
- right_res, right_diff = closest_item(magnets, coord)
+ right_res, right_diff = closest_item(magnets, coord + width(obj))
if left_diff <= right_diff:
res = left_res
@@ -172,7 +172,9 @@
def drag_start(item, target, event, canvas, start_cb, transform, cursor):
"""A callback which starts the drag operation of a dragable
object"""
- mask = gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.LEAVE_NOTIFY_MASK
+ mask = (gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK
+ | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK
+ | gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.LEAVE_NOTIFY_MASK)
canvas.pointer_grab(item, mask, cursor, event.time)
item.set_data("dragging", True)
if start_cb:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]