~timo-jyrinki/ubuntu/trusty/pitivi/backport_utopic_fixes

« back to all changes in this revision

Viewing changes to pitivi/ui/timelinecontrols.py

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2014-04-05 15:28:16 UTC
  • mfrom: (6.1.13 sid)
  • Revision ID: package-import@ubuntu.com-20140405152816-6lijoax4cngiz5j5
Tags: 0.93-3
* debian/control:
  + Depend on python-gi (>= 3.10), older versions do not work
    with pitivi (Closes: #732813).
  + Add missing dependency on gir1.2-clutter-gst-2.0 (Closes: #743692).
  + Add suggests on gir1.2-notify-0.7 and gir1.2-gnomedesktop-3.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import gtk
2
 
from pitivi.receiver import receiver, handler
3
 
import pitivi.stream as stream
4
 
from gettext import gettext as _
5
 
from common import LAYER_HEIGHT_EXPANDED, LAYER_SPACING
6
 
 
7
 
TRACK_CONTROL_WIDTH = 75
8
 
 
9
 
 
10
 
class TrackControls(gtk.Label):
11
 
    """Contains a timeline track name.
12
 
 
13
 
    @ivar track: The track for which to display the name.
14
 
    @type track: An L{pitivi.timeline.track.Track} object
15
 
    """
16
 
 
17
 
    __gtype_name__ = 'TrackControls'
18
 
 
19
 
    def __init__(self, track):
20
 
        gtk.Label.__init__(self)
21
 
        # Center the label horizontally.
22
 
        self.set_alignment(0.5, 0)
23
 
        # The value below is arbitrarily chosen so the text appears
24
 
        # centered vertically when the represented track has a single layer.
25
 
        self.set_padding(0, LAYER_SPACING * 2)
26
 
        self.set_markup(self._getTrackName(track))
27
 
        self.track = track
28
 
        self._setSize(layers_count=1)
29
 
 
30
 
    def _setTrack(self):
31
 
        if self.track:
32
 
            self._maxPriorityChanged(None, self.track.max_priority)
33
 
 
34
 
    track = receiver(_setTrack)
35
 
 
36
 
    @handler(track, "max-priority-changed")
37
 
    def _maxPriorityChanged(self, track, max_priority):
38
 
        self._setSize(max_priority + 1)
39
 
 
40
 
    def _setSize(self, layers_count):
41
 
        assert layers_count >= 1
42
 
        height = layers_count * (LAYER_HEIGHT_EXPANDED + LAYER_SPACING)
43
 
        self.set_size_request(TRACK_CONTROL_WIDTH, height)
44
 
 
45
 
    @staticmethod
46
 
    def _getTrackName(track):
47
 
        stream_type = type(track.stream)
48
 
        if stream_type == stream.AudioStream:
49
 
            track_name = _("Audio:")
50
 
        elif stream_type == stream.VideoStream:
51
 
            track_name = _("Video:")
52
 
        elif stream_type == stream.TextStream:
53
 
            track_name = _("Text:")
54
 
        return "<b>%s</b>" % track_name
55
 
 
56
 
 
57
 
class TimelineControls(gtk.VBox):
58
 
    """Contains the timeline track names."""
59
 
 
60
 
    def __init__(self):
61
 
        gtk.VBox.__init__(self)
62
 
        self._tracks = []
63
 
        self.set_spacing(LAYER_SPACING)
64
 
        self.set_size_request(TRACK_CONTROL_WIDTH, -1)
65
 
 
66
 
## Timeline callbacks
67
 
 
68
 
    def _set_timeline(self):
69
 
        while self._tracks:
70
 
            self._trackRemoved(None, 0)
71
 
        if self.timeline:
72
 
            for track in self.timeline.tracks:
73
 
                self._trackAdded(None, track)
74
 
 
75
 
    timeline = receiver(_set_timeline)
76
 
 
77
 
    @handler(timeline, "track-added")
78
 
    def _trackAdded(self, timeline, track):
79
 
        track = TrackControls(track)
80
 
        self._tracks.append(track)
81
 
        self.pack_start(track, False, False)
82
 
        track.show()
83
 
 
84
 
    @handler(timeline, "track-removed")
85
 
    def _trackRemoved(self, unused_timeline, position):
86
 
        track = self._tracks[position]
87
 
        del self._tracks[position]
88
 
        self.remove(track)