[pitivi: 78/94] presets: really write individual presets to disk, clean methods names



commit 94852fe9d410b725022c2626008e65db4adf7353
Author: Jean-FranÃois Fortin Tam <nekohayo gmail com>
Date:   Fri Sep 9 15:16:12 2011 -0400

    presets: really write individual presets to disk, clean methods names

 pitivi/ui/encodingdialog.py  |    4 ++--
 pitivi/ui/preset.py          |   34 ++++++++++++++++++++++------------
 pitivi/ui/projectsettings.py |    6 ++----
 3 files changed, 26 insertions(+), 18 deletions(-)
---
diff --git a/pitivi/ui/encodingdialog.py b/pitivi/ui/encodingdialog.py
index eb3fe39..5a02f93 100644
--- a/pitivi/ui/encodingdialog.py
+++ b/pitivi/ui/encodingdialog.py
@@ -442,8 +442,8 @@ class EncodingDialog(Renderer, Loggable):
     def _copyRenderPresets(self, cur_preset):
         #  Copies current settings to presets
 
-        self.render_presets.savePreset()
-        self.render_presets.save()
+        self.render_presets._updatePreset()
+        self.render_presets.saveAll()
 
     def _updateRenderPresetButtons(self):
         preset_changed = self.render_presets.isSaveButtonSensitive()
diff --git a/pitivi/ui/preset.py b/pitivi/ui/preset.py
index cbd3d1e..5b6743a 100644
--- a/pitivi/ui/preset.py
+++ b/pitivi/ui/preset.py
@@ -82,13 +82,14 @@ class PresetManager(object):
             if file.endswith("json"):
                 self.loadSection(os.path.join(self.default_path, file))
 
-    def save(self):
+    def saveAll(self):
+        """Write changes to disk for all presets"""
         if not os.path.exists(self.user_path):
             os.makedirs(self.user_path)
         for name, properties in self.ordered:
             try:
                 filepath = self.presets[name]["filepath"]
-            except:
+            except KeyError:
                 filename = name + ".json"
                 filepath = os.path.join(self.user_path, filename)
 
@@ -223,6 +224,24 @@ class PresetManager(object):
         self._ignore_update_requests = False
 
     def savePreset(self):
+        """Update the preset values and write to disk"""
+        if self.cur_preset != "No preset":
+            self._updatePreset()
+            if not os.path.exists(self.user_path):
+                os.makedirs(self.user_path)
+            try:
+                filepath = self.presets[self.cur_preset]["filepath"]
+            except KeyError:
+                filepath = os.path.join(self.user_path, self.cur_preset + ".json")
+            try:
+                fout = open(filepath, "w")
+                self.saveSection(fout, self.cur_preset)
+            except IOError:
+                # TODO: show an error infobar... but this should never happen,
+                # because the UI is supposed to disable the Save button
+                pass
+
+    def _updatePreset(self):
         """Copy the values from the widgets to the preset."""
         values = self.presets[self.cur_preset]
         for field, (setter, getter) in self.widget_map.iteritems():
@@ -289,7 +308,6 @@ class VideoPresetManager(PresetManager):
     default_path = get_videopresets_dir()
     user_path = os.path.join(xdg_data_home(), 'video_presets')
 
-
     def loadSection(self, filepath):
         parser = json.loads(open(filepath).read())
 
@@ -311,10 +329,8 @@ class VideoPresetManager(PresetManager):
             "frame-rate": framerate,
             "par": par,
             "filepath": filepath,
-
         })
 
-
     def saveSection(self, fout, section):
         values = self.presets[section]
         data = json.dumps({
@@ -334,7 +350,6 @@ class AudioPresetManager(PresetManager):
     default_path = get_audiopresets_dir()
     user_path = os.path.join(xdg_data_home(), 'audio_presets')
 
-
     def loadSection(self, filepath):
         parser = json.loads(open(filepath).read())
 
@@ -351,7 +366,6 @@ class AudioPresetManager(PresetManager):
             "filepath": filepath,
         })
 
-
     def saveSection(self, fout, section):
         values = self.presets[section]
         data = json.dumps({
@@ -362,13 +376,12 @@ class AudioPresetManager(PresetManager):
         }, indent=4)
         fout.write(data)
 
+
 class RenderPresetManager(PresetManager):
-    """ load() and save() are rewritten to save widget values to json """
 
     default_path = get_renderpresets_dir()
     user_path = os.path.join(xdg_data_home(), 'render_presets')
 
-
     def loadSection(self, filepath):
         parser = json.loads(open(filepath).read())
 
@@ -405,7 +418,6 @@ class RenderPresetManager(PresetManager):
             "filepath": filepath,
         })
 
-
     def saveSection(self, fout, section):
         values = self.presets[section]
         data = json.dumps({
@@ -421,6 +433,4 @@ class RenderPresetManager(PresetManager):
             "depth": int(values["depth"]),
             "sample-rate": int(values["sample-rate"]),
         }, indent=4)
-
         fout.write(data)
-
diff --git a/pitivi/ui/projectsettings.py b/pitivi/ui/projectsettings.py
index dccea3c..0539ecf 100644
--- a/pitivi/ui/projectsettings.py
+++ b/pitivi/ui/projectsettings.py
@@ -235,7 +235,6 @@ class ProjectSettingsDialog():
         self.createAudioNoPreset(self.audio_presets)
         self.createVideoNoPreset(self.video_presets)
 
-
     def bindPar(self, mgr):
 
         def updatePar(value):
@@ -302,7 +301,6 @@ class ProjectSettingsDialog():
             "height": int(self.height_spinbutton.get_value()),
             "width": int(self.width_spinbutton.get_value())})
 
-
     def _newPresetCb(self, model, path, iter_, column, renderer, treeview):
         """Handle the addition of a preset to the model of the preset manager.
         """
@@ -585,6 +583,6 @@ class ProjectSettingsDialog():
         if response == gtk.RESPONSE_OK:
             self.updateSettings()
             self.updateMetadata()
-        self.audio_presets.save()
-        self.video_presets.save()
+        self.audio_presets.saveAll()
+        self.video_presets.saveAll()
         self.window.destroy()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]