[pitivi] preset: Allow user presets to override default presets
- From: Thibault Saunier <tsaunier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] preset: Allow user presets to override default presets
- Date: Wed, 25 Nov 2015 09:55:17 +0000 (UTC)
commit 8e06e6bdf9516bf7b6c0d3d65005b0ff84b465fd
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Thu May 21 00:14:17 2015 +0200
preset: Allow user presets to override default presets
Differential Revision: https://phabricator.freedesktop.org/D360
Reviewed-by: Thibault Saunier <tsaunier gnome org>
pitivi/preset.py | 26 +++++++++++++++++++++-----
pitivi/project.py | 10 ++++++----
pitivi/render.py | 11 +++++++----
tests/test_preset.py | 38 +++++++++++++++++++-------------------
tests/test_projectsettings.py | 6 +++---
5 files changed, 56 insertions(+), 35 deletions(-)
---
diff --git a/pitivi/preset.py b/pitivi/preset.py
index 29d54bc..82b384a 100644
--- a/pitivi/preset.py
+++ b/pitivi/preset.py
@@ -131,8 +131,8 @@ class PresetManager(Loggable):
else:
return preset
- def addPreset(self, name, values):
- """Add a new preset.
+ def createPreset(self, name, values):
+ """Create a new preset.
@param name: The name of the new preset.
@type name: str
@@ -141,6 +141,22 @@ class PresetManager(Loggable):
"""
if self.hasPreset(name):
raise DuplicatePresetNameException(name)
+ self._addPreset(name, values)
+
+ def _addPreset(self, name, values):
+ """Add a new preset.
+
+ @param name: The name of the new preset.
+ @type name: str
+ @param values: The values of the new preset.
+ @type values: dict
+ """
+ if name in self.presets:
+ del self.presets[name]
+ for i, row in enumerate(self.ordered):
+ if row[0] == name:
+ del self.ordered[i]
+ break
self.presets[name] = values
# Note: This generates a "row-inserted" signal in the model.
self.ordered.append((name, values))
@@ -346,7 +362,7 @@ class VideoPresetManager(PresetManager):
par_denom = parser["par-denom"]
par = Gst.Fraction(par_num, par_denom)
- self.addPreset(name, {
+ self._addPreset(name, {
"width": width,
"height": height,
"frame-rate": framerate,
@@ -390,7 +406,7 @@ class AudioPresetManager(PresetManager):
channels = parser["channels"]
sample_rate = parser["sample-rate"]
- self.addPreset(name, {
+ self._addPreset(name, {
"channels": channels,
"sample-rate": sample_rate,
"filepath": filepath,
@@ -448,7 +464,7 @@ class RenderPresetManager(PresetManager):
channels = parser["channels"]
sample_rate = parser["sample-rate"]
- self.addPreset(name, {
+ self._addPreset(name, {
"container": container,
"acodec": acodec,
"vcodec": vcodec,
diff --git a/pitivi/project.py b/pitivi/project.py
index 17801ad..ca80fcc 100644
--- a/pitivi/project.py
+++ b/pitivi/project.py
@@ -1717,21 +1717,23 @@ class ProjectSettingsDialog():
def _addAudioPresetCb(self, unused_action, unused_param):
preset_name = self._getUniquePresetName(self.audio_presets)
- self.audio_presets.addPreset(preset_name, {
+ preset = {
"channels": get_combo_value(self.channels_combo),
"sample-rate": get_combo_value(self.sample_rate_combo),
- })
+ }
+ self.audio_presets.createPreset(preset_name, preset)
self.audio_presets_combo.set_active_id(preset_name)
self._updateAudioPresetMenu()
def _addVideoPresetCb(self, unused_action, unused_param):
preset_name = self._getUniquePresetName(self.video_presets)
- self.video_presets.addPreset(preset_name, {
+ preset = {
"width": int(self.width_spinbutton.get_value()),
"height": int(self.height_spinbutton.get_value()),
"frame-rate": self.frame_rate_fraction_widget.getWidgetValue(),
"par": self.par_fraction_widget.getWidgetValue(),
- })
+ }
+ self.video_presets.createPreset(preset_name, preset)
self.video_presets_combo.set_active_id(preset_name)
self._updateVideoPresetMenu()
diff --git a/pitivi/render.py b/pitivi/render.py
index ecc808d..b824130 100644
--- a/pitivi/render.py
+++ b/pitivi/render.py
@@ -611,16 +611,19 @@ class RenderDialog(Loggable):
def _addRenderPresetButtonClickedCb(self, unused_button):
preset_name = self._getUniquePresetName(self.render_presets)
- self.render_presets.addPreset(preset_name, {
+ framerate = Gst.Fraction(int(get_combo_value(self.frame_rate_combo).num),
+ int(get_combo_value(self.frame_rate_combo).denom))
+ preset = {
"channels": int(get_combo_value(self.channels_combo)),
"sample-rate": int(get_combo_value(self.sample_rate_combo)),
"acodec": get_combo_value(self.audio_encoder_combo).get_name(),
"vcodec": get_combo_value(self.video_encoder_combo).get_name(),
"container": get_combo_value(self.muxercombobox).get_name(),
- "frame-rate": Gst.Fraction(int(get_combo_value(self.frame_rate_combo).num),
- int(get_combo_value(self.frame_rate_combo).denom)),
+ "frame-rate": framerate,
"height": 0,
- "width": 0})
+ "width": 0,
+ }
+ self.render_presets.createPreset(preset_name, preset)
self.render_presets.restorePreset(preset_name)
self._updateRenderPresetButtons()
diff --git a/tests/test_preset.py b/tests/test_preset.py
index 727b69b..1ae1ab7 100644
--- a/tests/test_preset.py
+++ b/tests/test_preset.py
@@ -92,23 +92,23 @@ class TestPresetBasics(TestCase):
self.assertEqual("defaulT_", self.sectionToPreset('defaulT__'))
def testAddPreset(self):
- self.manager.addPreset('preseT onE', {'name1': '1A'})
+ self.manager.createPreset('preseT onE', {'name1': '1A'})
self.assertRaises(DuplicatePresetNameException,
- self.manager.addPreset, 'Preset One', {'name1': '2A'})
+ self.manager.createPreset, 'Preset One', {'name1': '2A'})
def testAddDuplicatePreset(self):
- self.manager.addPreset('x', {})
+ self.manager.createPreset('x', {})
self.assertRaises(
- DuplicatePresetNameException, self.manager.addPreset, 'x', {})
+ DuplicatePresetNameException, self.manager.createPreset, 'x', {})
def testAddPresetWithNonAsciiName(self):
unicode_name = "ソリッド・スネーク"
- self.manager.addPreset(unicode_name, {})
+ self.manager.createPreset(unicode_name, {})
self.assertTrue(unicode_name in self.manager.getPresetNames())
def testRenamePreset(self):
- self.manager.addPreset('preseT onE', {'name1': '1A'})
- self.manager.addPreset('Preset Two', {'name1': '2A'})
+ self.manager.createPreset('preseT onE', {'name1': '1A'})
+ self.manager.createPreset('Preset Two', {'name1': '2A'})
# Renaming 'preseT onE' to 'Preset One'.
self.manager.renamePreset('0', 'Preset One')
@@ -141,15 +141,15 @@ class TestAudioPresetsIO(TestCase):
return other_manager
def testSaveAndLoad(self):
- self.manager.addPreset("Vegeta",
- {"channels": 6000,
- "sample-rate": 44100})
+ self.manager.createPreset("Vegeta",
+ {"channels": 6000,
+ "sample-rate": 44100})
self.manager.saveAll()
self.assertEqual(1, countUserPresets(self.manager))
- self.manager.addPreset("Nappa",
- {"channels": 4000,
- "sample-rate": 44100})
+ self.manager.createPreset("Nappa",
+ {"channels": 4000,
+ "sample-rate": 44100})
self.manager.saveAll()
self.assertEqual(2, countUserPresets(self.manager))
@@ -161,9 +161,9 @@ class TestAudioPresetsIO(TestCase):
def testNonAsciiFilenamesSaveAndLoad(self):
non_ascii_preset_name = "Solid Snake (ソリッド・スネーク) \\#!\"'$%?&*"
- self.manager.addPreset(non_ascii_preset_name,
- {"channels": 2,
- "sample-rate": 44100})
+ self.manager.createPreset(non_ascii_preset_name,
+ {"channels": 2,
+ "sample-rate": 44100})
snake = self.manager.presets[non_ascii_preset_name]
self.assertEqual(2, len(snake))
self.manager.saveAll()
@@ -178,9 +178,9 @@ class TestAudioPresetsIO(TestCase):
def testInvalidFilenamesSaveAndLoad(self):
# This would be an invalid file name as is.
preset_name = " / % "
- self.manager.addPreset(preset_name,
- {"channels": 2,
- "sample-rate": 44100})
+ self.manager.createPreset(preset_name,
+ {"channels": 2,
+ "sample-rate": 44100})
values = self.manager.presets[preset_name]
self.assertEqual(2, len(values))
self.manager.saveAll()
diff --git a/tests/test_projectsettings.py b/tests/test_projectsettings.py
index 6ae6a6c..8a25cd4 100644
--- a/tests/test_projectsettings.py
+++ b/tests/test_projectsettings.py
@@ -33,14 +33,14 @@ class TestProjectSettingsDialog(TestCase):
name = ProjectSettingsDialog._getUniquePresetName(preset_manager)
self.assertEqual('New preset', name)
- preset_manager.addPreset(name, {})
+ preset_manager.createPreset(name, {})
new_preset1 = ProjectSettingsDialog._getUniquePresetName(
preset_manager)
self.assertEqual('New preset 1', new_preset1)
# Intentionally add 'New preset 2' before 'New preset 1'.
- preset_manager.addPreset('New preset 2', {})
- preset_manager.addPreset('New preset 1', {})
+ preset_manager.createPreset('New preset 2', {})
+ preset_manager.createPreset('New preset 1', {})
new_preset3 = ProjectSettingsDialog._getUniquePresetName(
preset_manager)
self.assertEqual('New preset 3', new_preset3)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]