[pitivi] Remove proxy target when removing an proxied asset
- From: Thibault Saunier <tsaunier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] Remove proxy target when removing an proxied asset
- Date: Sat, 11 Jun 2016 18:59:24 +0000 (UTC)
commit 0aabb19433bd08248c31d5fd3028a14bd32b77eb
Author: Thibault Saunier <tsaunier gnome org>
Date: Sat Jun 11 09:58:46 2016 -0400
Remove proxy target when removing an proxied asset
+ Add a unit test
Fixes T7469
Reviewed-by: Alex Băluț <alexandru balut gmail com>
Differential Revision: https://phabricator.freedesktop.org/D1073
pitivi/medialibrary.py | 5 +++++
tests/test_media_library.py | 26 ++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/pitivi/medialibrary.py b/pitivi/medialibrary.py
index 58512d9..0d95426 100644
--- a/pitivi/medialibrary.py
+++ b/pitivi/medialibrary.py
@@ -541,9 +541,14 @@ class MediaLibraryWidget(Gtk.Box, Loggable):
with self.app.action_log.started("remove asset from media library"):
for row in rows:
asset = model[row.get_path()][COL_ASSET]
+ target = asset.get_proxy_target()
self._project.remove_asset(asset)
self.app.gui.timeline_ui.purgeAsset(asset.props.id)
+ if target:
+ self._project.remove_asset(target)
+ self.app.gui.timeline_ui.purgeAsset(target.props.id)
+
# The treeview can make some of the remaining items selected, so
# make sure none are selected.
self._unselectAll()
diff --git a/tests/test_media_library.py b/tests/test_media_library.py
index 1868c80..5134a2b 100644
--- a/tests/test_media_library.py
+++ b/tests/test_media_library.py
@@ -17,6 +17,7 @@
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.
import os
+import tempfile
from gettext import gettext as _
from unittest import mock
@@ -150,6 +151,31 @@ class TestMediaLibrary(BaseTestMediaLibrary):
check_no_transcoding=True,
clean_proxies=False)
+ def testSaveProjectWithRemovedProxy(self):
+ sample_name = "30fps_numeroted_frames_red.mkv"
+ self.runCheckImport([sample_name])
+
+ project = self.app.project_manager.current_project
+ asset = GES.UriClipAsset.request_sync(common.get_sample_uri(sample_name))
+ target = asset.get_proxy_target()
+ self.assertEqual(set(project.list_assets(GES.Extractable)), set([target, asset]))
+
+ # Remove the asset
+ self.medialibrary.remove_assets_action.emit("activate", None)
+
+ # Make sure that the project has not assets anymore
+ self.assertEqual(project.list_assets(GES.Extractable), [])
+
+ # Save the project and reload it, making sure there is no asset
+ # in that new project
+ project_uri = Gst.filename_to_uri(tempfile.NamedTemporaryFile().name)
+ project.save(project.timeline, project_uri, None, True)
+
+ self._customSetUp(project_uri)
+ self.assertNotEqual(project, self.app.project_manager.current_project)
+ self.assertEqual(self.app.project_manager.current_project.list_assets(
+ GES.Extractable), [])
+
def testNewlyImportedAssetSelected(self):
self.runCheckImport(["30fps_numeroted_frames_red.mkv",
"30fps_numeroted_frames_blue.webm"])
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]