[pitivi] presets: Fix file extension must change when preset changes.



commit 5b34ed3ac6aedb87d39d6f2b6987e5d6055e1940
Author: kiren <kirenpillay1 gmail com>
Date:   Tue Nov 12 21:19:57 2019 +0200

    presets: Fix file extension must change when preset changes.
    
    Fixes #2348

 .gitignore           |  5 +++++
 pitivi/render.py     | 20 +++++++++++---------
 tests/test_render.py | 26 ++++++++++++++++++++------
 3 files changed, 36 insertions(+), 15 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index feb03b64..1545afcd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,11 @@
 # PyCharm
 .idea
 
+# PyDev
+.project
+.pydevproject
+.settings/
+
 # Generated by configure
 mesonbuild/
 Makefile
diff --git a/pitivi/render.py b/pitivi/render.py
index 271c741f..3ba5357c 100644
--- a/pitivi/render.py
+++ b/pitivi/render.py
@@ -435,9 +435,9 @@ class RenderDialog(Loggable):
         # Directory and Filename
         self.filebutton.set_current_folder(self.app.settings.lastExportFolder)
         if not self.project.name:
-            self.update_filename(_("Untitled"))
+            self._update_filename(_("Untitled"))
         else:
-            self.update_filename(self.project.name)
+            self._update_filename(self.project.name)
 
         # Add a shortcut for the project folder (if saved)
         if self.project.uri:
@@ -528,6 +528,7 @@ class RenderDialog(Loggable):
 
         self.update_resolution()
         self.project.add_encoding_profile(self.project.container_profile)
+        self._update_file_extension()
         self._setting_encoding_profile = False
 
     def _update_preset_menu_button(self, unused_source, unused_target):
@@ -537,9 +538,7 @@ class RenderDialog(Loggable):
         set_combo_value(widget, Encoders().factories_by_name.get(muxer_name))
         self.project.set_encoders(muxer=muxer_name)
 
-        # Update the extension of the filename.
-        basename = os.path.splitext(self.fileentry.get_text())[0]
-        self.update_filename(basename)
+        self._update_file_extension()
 
         # Update muxer-dependent widgets.
         self.update_available_encoders()
@@ -771,7 +770,7 @@ class RenderDialog(Loggable):
                 megabytes = int(round(megabytes, -1))  # -1 means round to 10
             return _("%d MB") % megabytes
 
-    def update_filename(self, basename):
+    def _update_filename(self, basename):
         """Updates the filename UI element to show the specified file name."""
         extension = extension_for_muxer(self.project.muxer)
         if extension:
@@ -1298,6 +1297,11 @@ class RenderDialog(Loggable):
         factory = get_combo_value(self.audio_encoder_combo)
         self._element_settings_dialog(factory, 'audio')
 
+    def _update_file_extension(self):
+        # Update the extension of the filename.
+        basename = os.path.splitext(self.fileentry.get_text())[0]
+        self._update_filename(basename)
+
     def _muxer_combo_changed_cb(self, combo):
         """Handles the changing of the container format combobox."""
         if self._setting_encoding_profile:
@@ -1305,9 +1309,7 @@ class RenderDialog(Loggable):
         factory = get_combo_value(combo)
         self.project.muxer = factory.get_name()
 
-        # Update the extension of the filename.
-        basename = os.path.splitext(self.fileentry.get_text())[0]
-        self.update_filename(basename)
+        self._update_file_extension()
 
         # Update muxer-dependent widgets.
         self.update_available_encoders()
diff --git a/tests/test_render.py b/tests/test_render.py
index 00b92a17..7464565b 100644
--- a/tests/test_render.py
+++ b/tests/test_render.py
@@ -265,12 +265,7 @@ class TestRender(BaseTestMediaLibrary):
         project = self.create_simple_project()
         dialog = self.create_rendering_dialog(project)
 
-        # Select wanted profile
-        preset_combo = dialog.render_presets.combo
-        if profile_name:
-            i = find_preset_row_index(preset_combo, profile_name)
-            self.assertIsNotNone(i)
-            preset_combo.set_active(i)
+        self.set_preset_combo_profile_for_dialog(dialog, profile_name)
 
         return project, dialog
 
@@ -431,6 +426,25 @@ class TestRender(BaseTestMediaLibrary):
         """Tests rendering a simple timeline with the youtube profile."""
         self.check_simple_rendering_profile("youtube")
 
+    def test_preset_changes_file_extension(self):
+        """Test file extension changes according to the chosen preset."""
+        _, dialog = self.setup_project_with_profile("youtube")
+        self.assertTrue(dialog.fileentry.get_text().endswith("mov"))
+
+        self.set_preset_combo_profile_for_dialog(dialog, "dvd")
+        self.assertTrue(dialog.fileentry.get_text().endswith("mpeg"))
+
+        self.set_preset_combo_profile_for_dialog(dialog, "youtube")
+        self.assertTrue(dialog.fileentry.get_text().endswith("mov"))
+
+    def set_preset_combo_profile_for_dialog(self, dialog, profile_name):
+        """Sets the preset value for an existing dialog."""
+        preset_combo = dialog.render_presets.combo
+        if profile_name:
+            i = find_preset_row_index(preset_combo, profile_name)
+            self.assertIsNotNone(i)
+            preset_combo.set_active(i)
+
     @skipUnless(*encoding_target_exists("dvd"))
     def test_rendering_with_dvd_profile(self):
         """Tests rendering a simple timeline with the DVD profile."""


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