[pitivi: 49/65] Changed ProjectSettingsDialog to generate unique names when a new preset is added. Required to fix b



commit 86822f9d4837f872171ad5d4fb167f9bf7f43173
Author: Alex BÄluÈ <alexandru balut gmail com>
Date:   Mon Jun 13 16:38:49 2011 +0200

    Changed ProjectSettingsDialog to generate unique names when a new preset is added.
    Required to fix bug 638799.

 pitivi/ui/projectsettings.py  |   19 ++++++++++++++++-
 tests/Makefile.am             |    1 +
 tests/test_projectsettings.py |   43 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+), 2 deletions(-)
---
diff --git a/pitivi/ui/projectsettings.py b/pitivi/ui/projectsettings.py
index dbb965e..c91705b 100644
--- a/pitivi/ui/projectsettings.py
+++ b/pitivi/ui/projectsettings.py
@@ -356,12 +356,27 @@ class ProjectSettingsDialog():
         self.par_fraction_widget.set_sensitive(not state)
         self.par_combo.set_sensitive(not state)
 
+    @staticmethod
+    def _getUniquePresetName(mgr):
+        """Get a unique name for a new preset for the specified PresetManager.
+        """
+        existing_preset_names = list(mgr.getPresetNames())
+        preset_name = _("New Preset")
+        i = 1
+        while preset_name in existing_preset_names:
+            preset_name = _("New Preset %d") % i
+            i += 1
+        return preset_name
+
     def _addAudioPresetButtonClickedCb(self, button):
-        self.audio_presets.addPreset(_("New Preset"), {
+        preset_name = self._getUniquePresetName(self.audio_presets)
+        self.audio_presets.addPreset(preset_name, {
             "channels": get_combo_value(self.channels_combo),
             "sample-rate": get_combo_value(self.sample_rate_combo),
             "depth": get_combo_value(self.sample_depth_combo)
         })
+        self.audio_presets.restorePreset(preset_name)
+        self._updateAudioPresetButtons()
 
     def _removeAudioPresetButtonClickedCb(self, button):
         selection = self.audio_preset_treeview.get_selection()
@@ -374,7 +389,7 @@ class ProjectSettingsDialog():
         self.save_audio_preset_button.set_sensitive(False)
 
     def _addVideoPresetButtonClickedCb(self, button):
-        preset_name = _("New Preset")
+        preset_name = self._getUniquePresetName(self.video_presets)
         self.video_presets.addPreset(preset_name, {
             "width": int(self.width_spinbutton.get_value()),
             "height": int(self.height_spinbutton.get_value()),
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1326d4d..c016f1f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -35,6 +35,7 @@ tests = \
 integration_tests = \
 	test_integration.py \
 	test_preset.py \
+	test_projectsettings.py \
 	test_still_image.py
 
 EXTRA_DIST = \
diff --git a/tests/test_projectsettings.py b/tests/test_projectsettings.py
new file mode 100644
index 0000000..9d5a5f9
--- /dev/null
+++ b/tests/test_projectsettings.py
@@ -0,0 +1,43 @@
+# PiTiVi , Non-linear video editor
+#
+#       tests/test_projectsettings.py
+#
+# Copyright (c) 2011, Alex Balut <alexandru balut gmail com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+from unittest import TestCase
+
+from pitivi.ui.preset import PresetManager
+from pitivi.ui.projectsettings import ProjectSettingsDialog
+
+
+class TestProjectSettingsDialog(TestCase):
+
+    def testGetUniquePresetName(self):
+        preset_manager = PresetManager()
+        name = ProjectSettingsDialog._getUniquePresetName(preset_manager)
+        self.assertEqual('New Preset', name)
+
+        preset_manager.addPreset(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_preset1, {})
+        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]