[pitivi: 26/41] Save metadata within the formatters



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]