[pitivi] ElementTreeFormatter: Save/Load project settings. Partially fixes #569834
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Subject: [pitivi] ElementTreeFormatter: Save/Load project settings. Partially fixes #569834
- Date: Thu, 14 May 2009 11:15:57 -0400 (EDT)
commit 68ce9f1370a9cb1feade021c47ee157453f5c1c9
Author: Edward Hervey <bilboed bilboed com>
Date: Thu May 14 12:28:24 2009 +0200
ElementTreeFormatter: Save/Load project settings. Partially fixes #569834
---
pitivi/formatters/etree.py | 59 ++++++++++++++++++++++++++++++++++++++++---
1 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/pitivi/formatters/etree.py b/pitivi/formatters/etree.py
index 9af67e5..d8936ad 100644
--- a/pitivi/formatters/etree.py
+++ b/pitivi/formatters/etree.py
@@ -33,6 +33,7 @@ from pitivi.timeline.track import Track
from pitivi.timeline.timeline import TimelineObject
from pitivi.formatters.base import Formatter
from pitivi.utils import get_filesystem_encoding
+from pitivi.settings import ExportSettings
version = "0.1"
@@ -72,6 +73,7 @@ class ElementTreeFormatter(Formatter):
Formatter.__init__(self, *args, **kwargs)
self.factoriesnode = None
self.timelinenode = None
+ self._settingsnode = None
self._context = ElementTreeFormatterContext()
def _new_element_id(self):
@@ -234,6 +236,40 @@ class ElementTreeFormatter(Formatter):
sources = self.factoriesnode.find("sources")
return self._loadFactories(sources, FileSourceFactory)
+ def _saveProjectSettings(self, settings):
+ element = Element('export-settings')
+ element.attrib["videowidth"] = str(int(settings.videowidth))
+ element.attrib["videoheight"] = str(int(settings.videoheight))
+ element.attrib["videorate-num"] = str(int(settings.videorate.num))
+ element.attrib["videorate-denom"] = str(int(settings.videorate.denom))
+ element.attrib["videopar-num"] = str(int(settings.videopar.num))
+ element.attrib["videopar-denom"] = str(int(settings.videopar.denom))
+ element.attrib["audiochannels"] = str(int(settings.audiochannels))
+ element.attrib["audiorate"] = str(int(settings.audiorate))
+ element.attrib["audiodepth"] = str(int(settings.audiodepth))
+ element.attrib["vencoder"] = settings.vencoder
+ element.attrib["aencoder"] = settings.aencoder
+ element.attrib["muxer"] = settings.muxer
+
+ return element
+
+ def _loadProjectSettings(self, element):
+ settings = ExportSettings()
+ settings.videowidth = int(element.attrib["videowidth"])
+ settings.videoheight = int(element.attrib["videoheight"])
+ settings.videorate = gst.Fraction(int(element.attrib["videorate-num"]),
+ int(element.attrib["videorate-denom"]))
+ settings.videopar = gst.Fraction(int(element.attrib["videopar-num"]),
+ int(element.attrib["videopar-denom"]))
+ settings.audiochannels = int(element.attrib["audiochannels"])
+ settings.audiorate = int(element.attrib["audiorate"])
+ settings.audiodepth = int(element.attrib["audiodepth"])
+ settings.aencoder = element.attrib["aencoder"]
+ settings.vencoder = element.attrib["vencoder"]
+ settings.muxer = element.attrib["muxer"]
+
+ return settings
+
def _saveTrackObject(self, track_object):
element = Element("track-object")
element.attrib["id"] = self._new_element_id()
@@ -443,12 +479,15 @@ class ElementTreeFormatter(Formatter):
def _serializeProject(self, project):
root = self._saveMainTag()
- factories = project.sources.getSources()
- factories_element = self._saveFactories(factories)
- root.append(factories_element)
+ # settings
+ if project.settings:
+ root.append(self._saveProjectSettings(project.settings))
+
+ # sources
+ root.append(self._saveFactories(project.sources.getSources()))
- timeline_element = self._saveTimeline(project.timeline)
- root.append(timeline_element)
+ # timeline
+ root.append(self._saveTimeline(project.timeline))
return root
## Formatter method implementations
@@ -466,6 +505,16 @@ class ElementTreeFormatter(Formatter):
self._context.rootelement = parse(location.split('://', 1)[1])
self.factoriesnode = self._context.rootelement.find("factories")
self.timelinenode = self._context.rootelement.find("timeline")
+ self._settingsnode = self._context.rootelement.find("export-settings")
+ if project:
+ project.settings = self._loadProjectSettings(self._settingsnode)
+
+ def newProject(self):
+ project = Formatter.newProject(self)
+ # add the settings
+ if self._settingsnode:
+ project.settings = self._loadProjectSettings(self._settingsnode)
+ return project
def _getSources(self):
self.debug("%r", self)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]