[pitivi: 26/41] Save metadata within the formatters
- From: Thibault Saunier <tsaunier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi: 26/41] Save metadata within the formatters
- Date: Sat, 13 Aug 2011 12:08:25 +0000 (UTC)
commit 786fab9d1a19c4f59251832c09c239f227f51905
Author: StÃphane Maniaci <stephane maniaci gmail com>
Date: Thu Jun 30 23:54:09 2011 +0200
Save metadata within the formatters
pitivi/formatters/base.py | 7 -------
pitivi/formatters/etree.py | 27 +++++++++++++++++++++++++++
2 files changed, 27 insertions(+), 7 deletions(-)
---
diff --git a/pitivi/formatters/base.py b/pitivi/formatters/base.py
index 54d43a5..33cc59f 100644
--- a/pitivi/formatters/base.py
+++ b/pitivi/formatters/base.py
@@ -129,7 +129,6 @@ class Formatter(Signallable, Loggable):
project = self.newProject()
self.emit("new-project-created", project)
- project.name = self._projectNameFromURI(location)
project.uri = location
self.log("location:%s, project:%r", location, project)
@@ -139,11 +138,6 @@ class Formatter(Signallable, Loggable):
# FIXME : maybe have a convenience method for opening a location
self._loadProject(location, project)
- def _projectNameFromURI(self, uri):
- path = urlparse(uri).path
- basename = os.path.basename(path)
- return os.path.splitext(basename)[0]
-
def _finishLoadingProject(self, project):
self.debug("About to get used sources")
# ask for all sources being used
@@ -206,7 +200,6 @@ class Formatter(Signallable, Loggable):
if self._saveProject(project, location):
if not backup:
project.uri = location
- project.name = self._projectNameFromURI(location)
self.emit("project-saved", project, location)
return True
diff --git a/pitivi/formatters/etree.py b/pitivi/formatters/etree.py
index 7b14818..402ad1b 100644
--- a/pitivi/formatters/etree.py
+++ b/pitivi/formatters/etree.py
@@ -85,6 +85,9 @@ class ElementTreeFormatter(Formatter):
self.timelinenode = None
# An Element representing the <export-settings> element.
self._settingsnode = None
+ # An Element representing the <metadata> element.
+ self._metadatanode = None
+
# A list of SourceFactory objects.
self._sources = None
self._context = ElementTreeFormatterContext()
@@ -322,6 +325,13 @@ class ElementTreeFormatter(Formatter):
self._serializeDict(ss, settings.acodecsettings)
return element
+ def _saveProjectMetadata(self, project):
+ element = Element('metadata')
+ element.attrib["author"] = project.author
+ element.attrib["name"] = project.name
+ element.attrib["year"] = project.year
+ return element
+
def _loadProjectSettings(self, element):
self.debug("element:%r", element)
settings = ExportSettings()
@@ -352,6 +362,11 @@ class ElementTreeFormatter(Formatter):
return settings
+ def _loadProjectMetadata(self, element, project):
+ project.name = element.attrib["name"]
+ project.author = element.attrib["author"]
+ project.year = element.attrib["year"]
+
def _saveTrackObject(self, track_object):
element = Element("track-object")
element.attrib["id"] = self._new_element_id()
@@ -698,6 +713,9 @@ class ElementTreeFormatter(Formatter):
if project.settings:
root.append(self._saveProjectSettings(project.settings))
+ # metadata
+ root.append(self._saveProjectMetadata(project))
+
# sources
root.append(self._saveFactories(project.sources.getSources()))
@@ -723,9 +741,13 @@ class ElementTreeFormatter(Formatter):
self.factoriesnode = self._context.rootelement.find("factories")
self.timelinenode = self._context.rootelement.find("timeline")
self._settingsnode = self._context.rootelement.find("export-settings")
+ self._metadatanode = self._context.rootelement.find("metadata")
+
if self._settingsnode != None:
project.setSettings(self._loadProjectSettings(self._settingsnode))
+ if self._metadatanode != None:
+ self._loadProjectMetadata(self._metadatanode, project)
# rediscover the factories
closure = {"rediscovered": 0}
try:
@@ -844,6 +866,11 @@ class ElementTreeFormatter(Formatter):
# add the settings
if self._settingsnode != None:
project.setSettings(self._loadProjectSettings(self._settingsnode))
+
+ # add metadata
+ if self._metadatanode != None:
+ self._loadProjectMetadata(self._metadatanode, project)
+
return project
def _getSources(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]