~ubuntu-branches/ubuntu/trusty/pitivi/trusty

« back to all changes in this revision

Viewing changes to pitivi/project.py

  • Committer: Bazaar Package Importer
  • Author(s): Loic Minier
  • Date: 2007-01-31 15:32:37 UTC
  • mto: (3.2.1 hardy) (1.2.1 upstream) (6.1.1 sid)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20070131153237-de4p8lipjv8x5x3b
Tags: upstream-0.10.2
ImportĀ upstreamĀ versionĀ 0.10.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
import os.path
28
28
import gobject
29
29
import gst
30
 
from timeline import Timeline
 
30
from timeline.timeline import Timeline
31
31
from sourcelist import SourceList
32
32
from bin import SmartTimelineBin
33
33
from settings import ExportSettings
34
34
from configure import APPNAME
35
35
 
 
36
from gettext import gettext as _
 
37
 
36
38
class Project(gobject.GObject):
37
39
    """ The base class for PiTiVi projects """
38
40
 
39
 
    name = ""
40
 
    settings = None
41
 
    description = ""
42
 
    uri = None
43
 
    sources = None
44
 
    settings = None
45
 
    timeline = None
46
 
    timelinebin = None
 
41
    __gsignals__ = {
 
42
        "settings-changed" : ( gobject.SIGNAL_RUN_LAST,
 
43
                               gobject.TYPE_NONE,
 
44
                               (  ))
 
45
        }
47
46
 
48
47
    def __init__(self, name="", uri=None):
49
48
        """
53
52
        gst.log("name:%s, uri:%s" % (name, uri))
54
53
        gobject.GObject.__init__(self)
55
54
        self.name = name
 
55
        self.settings = None
 
56
        self.description = ""
56
57
        self.uri = uri
57
58
        self.sources = SourceList(self)
58
 
        self.settings = ExportSettings()
 
59
        self.timeline = None
 
60
        self.timelinebin = None
 
61
        self.settingssigid = 0
59
62
        self._load()
60
63
 
61
64
    def _load(self):
86
89
    def saveAs(self, filename):
87
90
        """ Saves the project to the given file name """
88
91
        self._save(filename)
 
92
 
 
93
    # setting methods
 
94
    def _settingsChangedCb(self, unused_settings):
 
95
        self.emit('settings-changed')
 
96
    
 
97
    def getSettings(self):
 
98
        """
 
99
        return the currently configured settings.
 
100
        If no setting have been explicitely set, some smart settings will be
 
101
        chosen.
 
102
        """
 
103
        return self.settings or self.getAutoSettings()
 
104
 
 
105
    def setSettings(self, settings):
 
106
        """
 
107
        Sets the given settings as the project's settings.
 
108
        If settings is None, the current settings will be unset
 
109
        """
 
110
        gst.log("Setting %s as the project's settings" % settings)
 
111
        if self.settings:
 
112
            self.settings.disconnect(self.settingssigid)
 
113
        self.settings = settings
 
114
        self.emit('settings-changed')
 
115
        self.settingssigid = self.settings.connect('settings-changed', self._settingsChangedCb)
 
116
 
 
117
    def unsetSettings(self, unused_settings):
 
118
        """ Remove the currently configured settings."""
 
119
        self.setSettings(None)
 
120
 
 
121
    def getAutoSettings(self):
 
122
        """
 
123
        Computes and returns smart settings for the project.
 
124
        If the project only has one source, it will be that source's settings.
 
125
        If it has more than one, it will return the largest setting that suits
 
126
        all contained sources.
 
127
        """
 
128
        if not self.timeline:
 
129
            gst.warning("project doesn't have a timeline, returning default settings")
 
130
            return ExportSettings()
 
131
        settings = self.timeline.getAutoSettings()
 
132
        if not settings:
 
133
            gst.warning("Timeline didn't return any auto settings, return default settings")
 
134
            return ExportSettings()
89
135
        
 
136
        # add the encoders and muxer of the default settings
 
137
        curset = self.settings or ExportSettings()
 
138
        settings.vencoder = curset.vencoder
 
139
        settings.aencoder = curset.aencoder
 
140
        settings.muxer = curset.muxer
 
141
        return settings
90
142
 
91
143
 
92
144
def file_is_project(uri):
93
145
    """ returns True if the given uri is a PitiviProject file"""
94
146
    # TODO
95
147
    if not gst.uri_get_protocol(uri) == "file":
96
 
        raise NotImplementedError("%s doesn't yet handle non local projects" % APPNAME)
 
148
        raise NotImplementedError(_("%s doesn't yet handle non local projects") % APPNAME)
97
149
    return os.path.isfile(gst.uri_get_location(uri))
98
150