[pitivi/ges: 183/287] timeline: remove timelinecontrols, and mobe its content around
- From: Jean-FranÃois Fortin Tam <jfft src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi/ges: 183/287] timeline: remove timelinecontrols, and mobe its content around
- Date: Thu, 15 Mar 2012 16:41:13 +0000 (UTC)
commit 0b50a18262588e0cdb892de6c824f14acdcf0a17
Author: Thibault Saunier <thibault saunier collabora com>
Date: Tue Jan 10 16:26:18 2012 -0300
timeline: remove timelinecontrols, and mobe its content around
pitivi/timeline/Makefile.am | 1 -
pitivi/timeline/timeline.py | 49 ++++++++++++++++-
pitivi/timeline/timelinecontrols.py | 102 -----------------------------------
pitivi/timeline/track.py | 56 +++++++++++++++++++
po/POTFILES.in | 1 -
5 files changed, 103 insertions(+), 106 deletions(-)
---
diff --git a/pitivi/timeline/Makefile.am b/pitivi/timeline/Makefile.am
index 51c97a7..7c1b087 100644
--- a/pitivi/timeline/Makefile.am
+++ b/pitivi/timeline/Makefile.am
@@ -3,7 +3,6 @@ timelinedir = $(libdir)/pitivi/python/pitivi/timeline
timeline_PYTHON = \
__init__.py \
timelinecanvas.py \
- timelinecontrols.py \
timeline.py \
trackobject.py \
track.py \
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index 9c3ba4b..2e1bf80 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -20,7 +20,7 @@
# Boston, MA 02110-1301, USA.
"""
-Timeline widgets for the complex view
+ Main Timeline widgets
"""
import gtk
@@ -35,7 +35,7 @@ from pitivi.check import soft_deps
from pitivi.effects import AUDIO_EFFECT, VIDEO_EFFECT
from timelinecanvas import TimelineCanvas
-from timelinecontrols import TimelineControls
+from track import TrackControls, TRACK_CONTROL_WIDTH
from pitivi.ui.depsmanager import DepsManager
from pitivi.ui.filelisterrordialog import FileListErrorDialog
@@ -121,6 +121,51 @@ ui = '''
'''
+class TimelineControls(gtk.VBox, Loggable):
+ """Contains the timeline track names."""
+
+ def __init__(self):
+ gtk.VBox.__init__(self)
+ Loggable.__init__(self)
+ self._tracks = []
+ self._timeline = None
+ self.set_spacing(LAYER_SPACING)
+ self.set_size_request(TRACK_CONTROL_WIDTH, -1)
+
+## Timeline callbacks
+
+ def getTimeline(self):
+ return self._timeline
+
+ def setTimeline(self, timeline):
+ self.debug("Setting timeline %s", timeline)
+
+ while self._tracks:
+ self._trackRemovedCb(None, 0)
+
+ if self._timeline:
+ for track in self._timeline.get_tracks():
+ self._trackAddedCb(None, track)
+
+ self._timeline.connect("track-added", self._trackAddedCb)
+ self._timeline.connect("track-removed", self._trackRemovedCb)
+
+ timeline = property(getTimeline, setTimeline, None, "The timeline property")
+
+ def _trackAddedCb(self, timeline, track):
+ track = TrackControls(track)
+ self._tracks.append(track)
+ self.pack_start(track, False, False)
+ track.show()
+
+ def _trackRemovedCb(self, unused_timeline, position):
+ self.timeline.disconnect_by_function(self._trackAddedCb)
+ self.timeline.disconnect_by_function(self._trackRemovedCb)
+ track = self._tracks[position]
+ del self._tracks[position]
+ self.remove(track)
+
+
class InfoStub(gtk.HBox, Loggable):
"""
Box used to display information on the current state of the timeline
diff --git a/pitivi/timeline/track.py b/pitivi/timeline/track.py
index bdf33ed..8e2ed0e 100644
--- a/pitivi/timeline/track.py
+++ b/pitivi/timeline/track.py
@@ -23,6 +23,9 @@
import goocanvas
import ges
import gobject
+import gtk
+
+from gettext import gettext as _
from pitivi.utils.loggable import Loggable
from pitivi.utils.timeline import Zoomable
@@ -32,6 +35,59 @@ from pitivi.utils.ui import LAYER_HEIGHT_EXPANDED,\
from pitivi.timeline.trackobject import TrackObject
+TRACK_CONTROL_WIDTH = 75
+
+
+class TrackControls(gtk.Label, Loggable):
+ """Contains a timeline track name.
+
+ @ivar track: The track for which to display the name.
+ @type track: An L{pitivi.timeline.track.Track} object
+ """
+
+ __gtype_name__ = 'TrackControls'
+
+ def __init__(self, track):
+ gtk.Label.__init__(self)
+ Loggable.__init__(self)
+ # Center the label horizontally.
+ self.set_alignment(0.5, 0)
+ # The value below is arbitrarily chosen so the text appears
+ # centered vertically when the represented track has a single layer.
+ self.set_padding(0, LAYER_SPACING * 2)
+ self.set_markup(self._getTrackName(track))
+ self.track = track
+ self._setSize(layers_count=1)
+
+ def _setTrack(self):
+ if self.track:
+ self._maxPriorityChanged(None, self.track.max_priority)
+
+ # FIXME Stop using the receiver
+ #
+ # TODO implement in GES
+ #track = receiver(_setTrack)
+ # handler(track, "max-priority-changed")
+ #def _maxPriorityChanged(self, track, max_priority):
+ # self._setSize(max_priority + 1)
+
+ def _setSize(self, layers_count):
+ assert layers_count >= 1
+ height = layers_count * (LAYER_HEIGHT_EXPANDED + LAYER_SPACING)
+ self.set_size_request(TRACK_CONTROL_WIDTH, height)
+
+ @staticmethod
+ def _getTrackName(track):
+ track_name = ""
+ #FIXME check that it is the best way to check the type
+ if track.props.track_type.first_value_name == 'GES_TRACK_TYPE_AUDIO':
+ track_name = _("Audio:")
+ elif track.props.track_type.first_value_name == 'GES_TRACK_TYPE_VIDEO':
+ track_name = _("Video:")
+ elif track.props.track_type.first_value_name == 'GES_TRACK_TYPE_TEXT':
+ track_name = _("Text:")
+ return "<b>%s</b>" % track_name
+
class Transition(goocanvas.Rect, Zoomable):
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ca00d2f..f5a4f25 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -22,7 +22,6 @@ pitivi/settings.py
pitivi/medialibrary.py
pitivi/timeline/timelinecanvas.py
-pitivi/timeline/timelinecontrols.py
pitivi/timeline/timeline.py
pitivi/timeline/trackobject.py
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]