From 3693e55f5c2673adbfd8698e22cba06b9fa15995 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 27 Oct 2014 11:37:22 +0100 Subject: [PATCH 1/6] Change filename encoding to only apply to local variable. --- openlp/plugins/presentations/lib/pptviewcontroller.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 4aea501b4..8bde0b213 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -135,11 +135,11 @@ class PptviewDocument(PresentationDocument): self.file_path = os.path.normpath(self.file_path) preview_path = os.path.join(temp_folder, 'slide') # Ensure that the paths are null terminated - self.file_path = self.file_path.encode('utf-16-le') + b'\0' + byte_file_path = self.file_path.encode('utf-16-le') + b'\0' preview_path = preview_path.encode('utf-16-le') + b'\0' if not os.path.isdir(temp_folder): os.makedirs(temp_folder) - self.ppt_id = self.controller.process.OpenPPT(self.file_path, None, rect, preview_path) + self.ppt_id = self.controller.process.OpenPPT(byte_file_path, None, rect, preview_path) if self.ppt_id >= 0: self.create_thumbnails() self.stop_presentation() From 6d2cfedd7e0689cbb20d42a3bf58d336cbde16bf Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 27 Oct 2014 13:52:56 +0100 Subject: [PATCH 2/6] Remove prints --- openlp/plugins/remotes/lib/httprouter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openlp/plugins/remotes/lib/httprouter.py b/openlp/plugins/remotes/lib/httprouter.py index ff28de399..22e2495c0 100644 --- a/openlp/plugins/remotes/lib/httprouter.py +++ b/openlp/plugins/remotes/lib/httprouter.py @@ -526,7 +526,6 @@ class HttpRouter(RegistryProperties): Settings().value('remotes/thumbnails'): # If the file is under our app directory tree send the portion after the match data_path = AppLocation.get_data_path() - print(frame) if frame['image'][0:len(data_path)] == data_path: item['img'] = urllib.request.pathname2url(frame['image'][len(data_path):]) item['text'] = str(frame['title']) @@ -534,7 +533,6 @@ class HttpRouter(RegistryProperties): item['selected'] = (self.live_controller.selected_row == index) if current_item.notes: item['notes'] = item.get('notes', '') + '\n' + current_item.notes - print(item) data.append(item) json_data = {'results': {'slides': data}} if current_item: From 3d387cb296f6b7a009850b1aface780ca5dcd664 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 27 Oct 2014 13:58:59 +0100 Subject: [PATCH 3/6] Fixed a tiny glitch, remove author button became always disabled even if not needed to. Copied from lp:~mahfiaz/openlp/author-delete-button-not-active-in-edit-dialog --- openlp/plugins/songs/forms/editsongform.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index d71cde304..624b409ec 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -625,7 +625,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties): """ Remove the author from the list when the delete button is clicked. """ - self.author_remove_button.setEnabled(False) + if self.authors_list_view.count() <= 2: + self.author_remove_button.setEnabled(False) item = self.authors_list_view.currentItem() row = self.authors_list_view.row(item) self.authors_list_view.takeItem(row) From d2f388bb5908e7ae1e73b62bfbd67188225e55fd Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 27 Oct 2014 14:11:55 +0100 Subject: [PATCH 4/6] Fix for another occurrence of bug #1296574. Copied from lp:~erik-lundin/openlp/bug-1296574 Fixes: https://launchpad.net/bugs/1296574 --- openlp/core/ui/slidecontroller.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 062a8440f..f706dd929 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1245,7 +1245,7 @@ class SlideController(DisplayController, RegistryProperties): if event.timerId() == self.timer_id: self.on_slide_selected_next(self.play_slides_loop.isChecked()) - def on_edit_song(self): + def on_edit_song(self, field=None): """ From the preview display requires the service Item to be editied """ @@ -1254,7 +1254,7 @@ class SlideController(DisplayController, RegistryProperties): if new_item: self.add_service_item(new_item) - def on_preview_add_to_service(self): + def on_preview_add_to_service(self, field=None): """ From the preview display request the Item to be added to service """ From e9a151cec0ab8e765377278d2f4451c883e47de9 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 27 Oct 2014 14:14:12 +0100 Subject: [PATCH 5/6] This fixes the adding of images and media to the media manager. Copied from lp:~rafaellerm/openlp/media_import_fix --- openlp/core/lib/listwidgetwithdnd.py | 2 +- openlp/core/lib/treewidgetwithdnd.py | 2 +- openlp/core/ui/media/mediacontroller.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/lib/listwidgetwithdnd.py b/openlp/core/lib/listwidgetwithdnd.py index 2618d13c3..cbedbc79c 100644 --- a/openlp/core/lib/listwidgetwithdnd.py +++ b/openlp/core/lib/listwidgetwithdnd.py @@ -109,6 +109,6 @@ class ListWidgetWithDnD(QtGui.QListWidget): listing = os.listdir(local_file) for file in listing: files.append(os.path.join(local_file, file)) - Registry().execute('%s_dnd' % self.mime_data_text, files) + Registry().execute('%s_dnd' % self.mime_data_text, {'files': files, 'target': self.itemAt(event.pos())}) else: event.ignore() diff --git a/openlp/core/lib/treewidgetwithdnd.py b/openlp/core/lib/treewidgetwithdnd.py index cdb6cbbdb..0bdd664e8 100644 --- a/openlp/core/lib/treewidgetwithdnd.py +++ b/openlp/core/lib/treewidgetwithdnd.py @@ -127,7 +127,7 @@ class TreeWidgetWithDnD(QtGui.QTreeWidget): listing = os.listdir(local_file) for file_name in listing: files.append(os.path.join(local_file, file_name)) - Registry().execute('%s_dnd' % self.mime_Data_Text, {'files': files, 'target': self.itemAt(event.pos())}) + Registry().execute('%s_dnd' % self.mime_data_text, {'files': files, 'target': self.itemAt(event.pos())}) elif self.allow_internal_dnd: event.setDropAction(QtCore.Qt.CopyAction) event.accept() diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 4a2d475c1..e3517ba0f 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -146,7 +146,7 @@ class MediaController(RegistryMixin, OpenLPMixin, RegistryProperties): if player.is_active: for item in player.video_extensions_list: if item not in self.video_extensions_list: - self.video_extensions_list.extend(item) + self.video_extensions_list.append(item) suffix_list.append(item[2:]) self.service_manager.supported_suffixes(suffix_list) From 11b2b4dc3b58ecc11ed6f6afa7dfe1d5259a14dd Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 27 Oct 2014 21:38:19 +0000 Subject: [PATCH 6/6] Added test for checking extension list creation --- tests/functional/openlp_core_ui/__init__.py | 31 +++++++++ .../openlp_core_ui_media/__init__.py | 31 +++++++++ .../test_mediacontroller.py | 67 +++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 tests/functional/openlp_core_ui_media/__init__.py create mode 100644 tests/functional/openlp_core_ui_media/test_mediacontroller.py diff --git a/tests/functional/openlp_core_ui/__init__.py b/tests/functional/openlp_core_ui/__init__.py index e69de29bb..00a1db85c 100644 --- a/tests/functional/openlp_core_ui/__init__.py +++ b/tests/functional/openlp_core_ui/__init__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # +# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # +# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, # +# Frode Woldsund, Martin Zibricky, Patrick Zimmermann # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# 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 General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +""" +Package to test the openlp.core.ui package. +""" diff --git a/tests/functional/openlp_core_ui_media/__init__.py b/tests/functional/openlp_core_ui_media/__init__.py new file mode 100644 index 000000000..c489203a2 --- /dev/null +++ b/tests/functional/openlp_core_ui_media/__init__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # +# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # +# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, # +# Frode Woldsund, Martin Zibricky, Patrick Zimmermann # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# 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 General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +""" +Package to test the openlp.core.ui.media package. +""" diff --git a/tests/functional/openlp_core_ui_media/test_mediacontroller.py b/tests/functional/openlp_core_ui_media/test_mediacontroller.py new file mode 100644 index 000000000..17fcba954 --- /dev/null +++ b/tests/functional/openlp_core_ui_media/test_mediacontroller.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # +# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # +# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, # +# Frode Woldsund, Martin Zibricky, Patrick Zimmermann # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# 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 General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +""" +Package to test the openlp.core.ui.media package. +""" +from unittest import TestCase + +from openlp.core.ui.media.mediacontroller import MediaController +from openlp.core.ui.media.mediaplayer import MediaPlayer +from openlp.core.common import Registry + +from tests.functional import MagicMock +from tests.helpers.testmixin import TestMixin + + +class TestMediaController(TestCase, TestMixin): + + def setUp(self): + Registry.create() + Registry().register('service_manager', MagicMock()) + + def generate_extensions_lists_test(self): + """ + Test that the extensions are create correctly + """ + # GIVEN: A MediaController and an active player with audio and video extensions + media_controller = MediaController() + media_player = MediaPlayer(None) + media_player.is_active = True + media_player.audio_extensions_list = ['*.mp3', '*.wav', '*.wma', '*.ogg'] + media_player.video_extensions_list = ['*.mp4', '*.mov', '*.avi', '*.ogm'] + media_controller.register_players(media_player) + + # WHEN: calling _generate_extensions_lists + media_controller._generate_extensions_lists() + + # THEN: extensions list should have been copied from the player to the mediacontroller + self.assertListEqual(media_player.video_extensions_list, media_controller.video_extensions_list, + 'Video extensions should be the same') + self.assertListEqual(media_player.audio_extensions_list, media_controller.audio_extensions_list, + 'Audio extensions should be the same')