From 141c07d42ae2a9071f2791e5132352b99cb9e6b5 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Fri, 30 Sep 2016 04:06:51 +0300 Subject: [PATCH 01/86] Fixed bug 1512040 --- 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 7121e5227..dbac40ba7 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -732,8 +732,10 @@ class SlideController(DisplayController, RegistryProperties): # Reset the button self.play_slides_once.setChecked(False) self.play_slides_once.setIcon(build_icon(':/media/media_time.png')) + self.play_slides_once.setText(UiStrings().PlaySlidesToEnd) self.play_slides_loop.setChecked(False) self.play_slides_loop.setIcon(build_icon(':/media/media_time.png')) + self.play_slides_loop.setText(UiStrings().PlaySlidesInLoop) if item.is_text(): if (Settings().value(self.main_window.songs_settings_section + '/display songbar') and not self.song_menu.menu().isEmpty()): @@ -1326,7 +1328,6 @@ class SlideController(DisplayController, RegistryProperties): else: self.play_slides_once.setIcon(build_icon(':/media/media_time')) self.play_slides_once.setText(UiStrings().PlaySlidesToEnd) - self.on_toggle_loop() def set_audio_items_visibility(self, visible): """ @@ -1385,7 +1386,6 @@ class SlideController(DisplayController, RegistryProperties): [self.service_item, self.is_live]) if self.service_item.is_media(): self.on_media_close() - self.on_go_live() # If ('advanced/double click live') is not enabled, double clicking preview adds the item to Service. # Prevent same item in preview from being sent to Service multiple times. # Changing the preview slide resets this flag to False. From d716f62d578725880071703e3a90fb86e9650026 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Fri, 30 Sep 2016 04:11:41 +0300 Subject: [PATCH 02/86] - reverted some other changes made while trying to find the fix --- openlp/core/ui/slidecontroller.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index dbac40ba7..f2549eb42 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1328,6 +1328,7 @@ class SlideController(DisplayController, RegistryProperties): else: self.play_slides_once.setIcon(build_icon(':/media/media_time')) self.play_slides_once.setText(UiStrings().PlaySlidesToEnd) + self.on_toggle_loop() def set_audio_items_visibility(self, visible): """ @@ -1386,6 +1387,7 @@ class SlideController(DisplayController, RegistryProperties): [self.service_item, self.is_live]) if self.service_item.is_media(): self.on_media_close() + self.on_go_live() # If ('advanced/double click live') is not enabled, double clicking preview adds the item to Service. # Prevent same item in preview from being sent to Service multiple times. # Changing the preview slide resets this flag to False. From 337edf039f7da621627c847e9095c4643c5ca9ea Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Fri, 30 Sep 2016 05:26:04 +0300 Subject: [PATCH 03/86] Fixed bug 1487788 --- openlp/core/ui/lib/treewidgetwithdnd.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/lib/treewidgetwithdnd.py b/openlp/core/ui/lib/treewidgetwithdnd.py index c49fc144e..bf7209822 100644 --- a/openlp/core/ui/lib/treewidgetwithdnd.py +++ b/openlp/core/ui/lib/treewidgetwithdnd.py @@ -26,7 +26,7 @@ import os from PyQt5 import QtCore, QtGui, QtWidgets -from openlp.core.common import Registry +from openlp.core.common import Registry, is_win class TreeWidgetWithDnD(QtWidgets.QTreeWidget): @@ -44,6 +44,7 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): self.default_indentation = self.indentation() self.setIndentation(0) self.setAnimated(True) + window_flags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnTopHint def activateDnD(self): """ @@ -108,6 +109,11 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): :param event: Handle of the event pint passed """ + # If we are on Windows, OpenLP window will not be set on top. For example, user can drag images to Library and + # the folder stays on top of the group creation box. This piece of code fixes this issue. + if is_win(): + self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive) + QtWidgets.QWidget().raise_() if event.mimeData().hasUrls(): event.setDropAction(QtCore.Qt.CopyAction) event.accept() @@ -125,8 +131,18 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): event.setDropAction(QtCore.Qt.CopyAction) event.accept() Registry().execute('%s_dnd_internal' % self.mime_data_text, self.itemAt(event.pos())) - else: - event.ignore() + + #QtWidgets.QWidget.activateWindow(self) + #QtWidgets.QWidget().raise_() + #QtWidgets.QApplication.setActiveWindow() + + #self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive) + + # this will activate the window + #self.activateWindow() + + # this will activate the window + # Convenience methods for emulating a QListWidget. This helps keeping MediaManagerItem simple. def addItem(self, item): From 8dbd79dba07c333af6b50cb9224c19df13afc6b3 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Fri, 30 Sep 2016 05:36:32 +0300 Subject: [PATCH 04/86] - cleanup.. The drag&drop focus solution only works for the 1st drag&drop... Why? --- openlp/core/ui/lib/treewidgetwithdnd.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/openlp/core/ui/lib/treewidgetwithdnd.py b/openlp/core/ui/lib/treewidgetwithdnd.py index bf7209822..bf710c354 100644 --- a/openlp/core/ui/lib/treewidgetwithdnd.py +++ b/openlp/core/ui/lib/treewidgetwithdnd.py @@ -44,7 +44,6 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): self.default_indentation = self.indentation() self.setIndentation(0) self.setAnimated(True) - window_flags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnTopHint def activateDnD(self): """ @@ -113,7 +112,6 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): # the folder stays on top of the group creation box. This piece of code fixes this issue. if is_win(): self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive) - QtWidgets.QWidget().raise_() if event.mimeData().hasUrls(): event.setDropAction(QtCore.Qt.CopyAction) event.accept() @@ -131,18 +129,8 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): event.setDropAction(QtCore.Qt.CopyAction) event.accept() Registry().execute('%s_dnd_internal' % self.mime_data_text, self.itemAt(event.pos())) - - #QtWidgets.QWidget.activateWindow(self) - #QtWidgets.QWidget().raise_() - #QtWidgets.QApplication.setActiveWindow() - - #self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive) - - # this will activate the window - #self.activateWindow() - - # this will activate the window - + else: + event.ignore() # Convenience methods for emulating a QListWidget. This helps keeping MediaManagerItem simple. def addItem(self, item): From 238397fa3c70d9fd0ba9b96b31096e461ee85a09 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Fri, 30 Sep 2016 05:57:44 +0300 Subject: [PATCH 05/86] - Made a better fix for giving OpenLP focus, it now works more than once. --- openlp/core/ui/lib/treewidgetwithdnd.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/ui/lib/treewidgetwithdnd.py b/openlp/core/ui/lib/treewidgetwithdnd.py index bf710c354..f410e453a 100644 --- a/openlp/core/ui/lib/treewidgetwithdnd.py +++ b/openlp/core/ui/lib/treewidgetwithdnd.py @@ -112,6 +112,7 @@ class TreeWidgetWithDnD(QtWidgets.QTreeWidget): # the folder stays on top of the group creation box. This piece of code fixes this issue. if is_win(): self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive) + self.setWindowState(QtCore.Qt.WindowNoState) if event.mimeData().hasUrls(): event.setDropAction(QtCore.Qt.CopyAction) event.accept() From 4471338a19b5d638e2f71419ea70f6884f1fbec9 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Sun, 2 Oct 2016 14:31:35 +0300 Subject: [PATCH 06/86] - Fixed bug 1624661 --- openlp/core/__init__.py | 8 ++++---- openlp/core/lib/db.py | 19 +++++++++++++------ openlp/core/ui/advancedtab.py | 33 +++++++++++++++++++++------------ 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 6f6addbbd..852bf5424 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -208,8 +208,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): # If data_version is different from the current version ask if we should backup the data folder elif data_version != openlp_version: if QtWidgets.QMessageBox.question(None, translate('OpenLP', 'Backup'), - translate('OpenLP', 'OpenLP has been upgraded, do you want to create ' - 'a backup of OpenLPs data folder?'), + translate('OpenLP', 'OpenLP has been upgraded, do you want to\ncreate ' + 'a backup of the old data folder?'), QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes: # Create copy of data folder @@ -223,8 +223,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): translate('OpenLP', 'Backup of the data folder failed!')) return message = translate('OpenLP', - 'A backup of the data folder has been created' - 'at {text}').format(text=data_folder_backup_path) + 'A backup of the data folder has been created in:\n\n' + '{text}').format(text=data_folder_backup_path) QtWidgets.QMessageBox.information(None, translate('OpenLP', 'Backup'), message) # Update the version in the settings diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index f42c3b5fc..c1b9fb5cf 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -75,19 +75,26 @@ def get_db_path(plugin_name, db_file_name=None): name=db_file_name) -def handle_db_error(plugin_name, db_file_name): +def handle_db_error(self, plugin_name, db_file_name): """ Log and report to the user that a database cannot be loaded + :param self: Allows the usage of other functions. :param plugin_name: Name of plugin :param db_file_name: File name of database :return: None """ - db_path = get_db_path(plugin_name, db_file_name) - log.exception('Error loading database: {db}'.format(db=db_path)) - critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), - translate('OpenLP.Manager', - 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) + # Check if the path (Eg. C:/ or D:/) exists in the system, if not: 'pass' so def load will handle the missing + # drive in advancedtab.py. Otherwise check for "Normal" database errors. + self.current_data_path = AppLocation.get_data_path() + if not os.path.exists(self.current_data_path): + pass + else: + db_path = get_db_path(plugin_name, db_file_name) + log.exception('Error loading database: {db}'.format(db=db_path)) + critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), + translate('OpenLP.Manager', + 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) def init_url(plugin_name, db_file_name=None): diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index ca91e882a..be4c9bcd6 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -401,23 +401,32 @@ class AdvancedTab(SettingsTab): log.error('Data path not found {path}'.format(path=self.current_data_path)) answer = QtWidgets.QMessageBox.critical( self, translate('OpenLP.AdvancedTab', 'Data Directory Error'), - translate('OpenLP.AdvancedTab', 'OpenLP data directory was not found\n\n{path}\n\n' - 'This data directory was previously changed from the OpenLP ' - 'default location. If the new location was on removable ' - 'media, that media needs to be made available.\n\n' - 'Click "No" to stop loading OpenLP. allowing you to fix the the problem.\n\n' - 'Click "Yes" to reset the data directory to the default ' - 'location.').format(path=self.current_data_path), + translate('OpenLP.AdvancedTab', 'OpenLP data folder was not found in:\n\n{path}\n\n' + 'The location of the data folder was previously changed from the OpenLP\'s\n' + 'default location. If the data was stored on removable device, that device\nneeds to ' + 'be made available.\n\n You may reset the data location ' + 'back to the default settings, or you can try to make the current ' + 'location available.\n\n' + 'Do you want to reset the default data location?\n\n' + 'If you click "No" you can try to fix the the problem.\n' + 'If you click "Yes" the data will be reset to the default location. \n\n' + 'You will need to re-start OpenLP after this decision.').format(path=self.current_data_path), QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No), QtWidgets.QMessageBox.No) if answer == QtWidgets.QMessageBox.No: log.info('User requested termination') - self.main_window.clean_up() + # self.main_window.clean_up() is causing tracebacks, not sure if it's required in some cases. + try: + self.main_window.clean_up() + except: + pass + sys.exit() + # If answer was yes, Set data location to default and shut down OpenLP. + if answer == QtWidgets.QMessageBox.Yes: + settings.remove('advanced/data path') + self.current_data_path = AppLocation.get_data_path() + log.warning('User requested data path set to default {path}'.format(path=self.current_data_path)) sys.exit() - # Set data location to default. - settings.remove('advanced/data path') - self.current_data_path = AppLocation.get_data_path() - log.warning('User requested data path set to default {path}'.format(path=self.current_data_path)) self.data_directory_label.setText(os.path.abspath(self.current_data_path)) # Don't allow data directory move if running portable. if settings.value('advanced/is portable'): From cff02e6b7af5435e308fef81991d93eda0625c32 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Sun, 2 Oct 2016 18:51:16 +0300 Subject: [PATCH 07/86] Fixed bug: 1513490 --- openlp/core/lib/__init__.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index d00d85b54..159dfdd6c 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -307,7 +307,6 @@ def expand_tags(text): text = text.replace(tag['end tag'], tag['end html']) return text - def create_separated_list(string_list): """ Returns a string that represents a join of a list of strings with a localized separator. This function corresponds @@ -318,7 +317,13 @@ def create_separated_list(string_list): :param string_list: List of unicode strings """ if LooseVersion(Qt.PYQT_VERSION_STR) >= LooseVersion('4.9') and LooseVersion(Qt.qVersion()) >= LooseVersion('4.8'): - return QtCore.QLocale().createSeparatedList(string_list) + # Separate items with multiple same type creators with ',' and the last with " and ". + and_translated = translate('OpenLP.Ui', 'and') + if len(string_list) > 1: + string_list = ', '.join(string_list[:-1]) + ' ' + and_translated + ' ' + string_list[-1] + else: + string_list = ''.join(string_list) + return string_list if not string_list: return '' elif len(string_list) == 1: @@ -335,7 +340,6 @@ def create_separated_list(string_list): 'Locale list separator: middle') % (string_list[index], merged) return translate('OpenLP.core.lib', '%s, %s', 'Locale list separator: start') % (string_list[0], merged) - from .exceptions import ValidationError from .filedialog import FileDialog from .screen import ScreenList From c7a682ebfb5a13320435267c2b31249250f610df Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Sun, 2 Oct 2016 20:03:59 +0300 Subject: [PATCH 08/86] - The footer now follows proper english grammar rules. --- openlp/core/lib/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 159dfdd6c..6ac316854 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -317,10 +317,14 @@ def create_separated_list(string_list): :param string_list: List of unicode strings """ if LooseVersion(Qt.PYQT_VERSION_STR) >= LooseVersion('4.9') and LooseVersion(Qt.qVersion()) >= LooseVersion('4.8'): - # Separate items with multiple same type creators with ',' and the last with " and ". + # Separate items with multiple same type creators with ',' and the last with ', and ' ' If we have two creators, + # ',' is not used by proper grammar, however in some languages ',' is not used at all before 'and'. and_translated = translate('OpenLP.Ui', 'and') - if len(string_list) > 1: + comma_and = translate ('OpenLP.ui', ', and') + if len(string_list) == 2: string_list = ', '.join(string_list[:-1]) + ' ' + and_translated + ' ' + string_list[-1] + elif len(string_list) > 2: + string_list = ', '.join(string_list[:-1]) + comma_and + ' ' + string_list[-1] else: string_list = ''.join(string_list) return string_list From 946fb02d5749c14ac8deb063fd9e1c063e00a2a6 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Sun, 2 Oct 2016 21:57:38 +0300 Subject: [PATCH 09/86] The def create_separated_list now uses the perfectly made and re-formatted code by the mastermind alisonken1 --- openlp/core/lib/__init__.py | 43 ++++++++++++------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 6ac316854..d7393eb4e 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -310,39 +310,24 @@ def expand_tags(text): def create_separated_list(string_list): """ Returns a string that represents a join of a list of strings with a localized separator. This function corresponds - to QLocale::createSeparatedList which was introduced in Qt 4.8 and implements the algorithm from http://www.unicode.org/reports/tr35/#ListPatterns - - :param string_list: List of unicode strings + NOTE: translate() can change the format based on language styling (ex: Finnish not using "{} and {}" rather than + english style "{} , and {}"). + :param string_list: List of unicode strings + :return: Formatted string """ - if LooseVersion(Qt.PYQT_VERSION_STR) >= LooseVersion('4.9') and LooseVersion(Qt.qVersion()) >= LooseVersion('4.8'): - # Separate items with multiple same type creators with ',' and the last with ', and ' ' If we have two creators, - # ',' is not used by proper grammar, however in some languages ',' is not used at all before 'and'. - and_translated = translate('OpenLP.Ui', 'and') - comma_and = translate ('OpenLP.ui', ', and') - if len(string_list) == 2: - string_list = ', '.join(string_list[:-1]) + ' ' + and_translated + ' ' + string_list[-1] - elif len(string_list) > 2: - string_list = ', '.join(string_list[:-1]) + comma_and + ' ' + string_list[-1] - else: - string_list = ''.join(string_list) - return string_list - if not string_list: - return '' - elif len(string_list) == 1: - return string_list[0] - # TODO: Verify mocking of translate() test before conversion - elif len(string_list) == 2: - return translate('OpenLP.core.lib', '%s and %s', - 'Locale list separator: 2 items') % (string_list[0], string_list[1]) + list_length = len(string_list) + if list_length == 1: + return_list = string_list[0] + elif list_length == 2: + return_list = translate('OpenLP.core.lib', '{one} & {two}').format(one=string_list[0], two=string_list[1]) + elif list_length > 2: + return_list = translate('OpenLP.core.lib', '{first}, & {last}').format(first=', '.join(string_list[:-1]), + last=string_list[-1]) else: - merged = translate('OpenLP.core.lib', '%s, and %s', - 'Locale list separator: end') % (string_list[-2], string_list[-1]) - for index in reversed(list(range(1, len(string_list) - 2))): - merged = translate('OpenLP.core.lib', '%s, %s', - 'Locale list separator: middle') % (string_list[index], merged) - return translate('OpenLP.core.lib', '%s, %s', 'Locale list separator: start') % (string_list[0], merged) + return_list = "" + return return_list from .exceptions import ValidationError from .filedialog import FileDialog From 036907eb5ea1894cafc6f89c806fbc42391f86d6 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 03:03:15 +0300 Subject: [PATCH 10/86] - Changed "&" back to "and" --- openlp/core/lib/__init__.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index d7393eb4e..bec198288 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -307,13 +307,12 @@ def expand_tags(text): text = text.replace(tag['end tag'], tag['end html']) return text + def create_separated_list(string_list): """ - Returns a string that represents a join of a list of strings with a localized separator. This function corresponds - to QLocale::createSeparatedList which was introduced in Qt 4.8 and implements the algorithm from - http://www.unicode.org/reports/tr35/#ListPatterns - NOTE: translate() can change the format based on language styling (ex: Finnish not using "{} and {}" rather than - english style "{} , and {}"). + Returns a string that represents a join of a list of strings with a localized separator. + Localized separation will be done via the translate() function by the translators. + :param string_list: List of unicode strings :return: Formatted string """ @@ -321,9 +320,9 @@ def create_separated_list(string_list): if list_length == 1: return_list = string_list[0] elif list_length == 2: - return_list = translate('OpenLP.core.lib', '{one} & {two}').format(one=string_list[0], two=string_list[1]) + return_list = translate('OpenLP.core.lib', '{one} and {two}').format(one=string_list[0], two=string_list[1]) elif list_length > 2: - return_list = translate('OpenLP.core.lib', '{first}, & {last}').format(first=', '.join(string_list[:-1]), + return_list = translate('OpenLP.core.lib', '{first}, and {last}').format(first=', '.join(string_list[:-1]), last=string_list[-1]) else: return_list = "" From 869caa9bf5b2117991893401f7ea1d196bfd3166 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 10:27:08 +0300 Subject: [PATCH 11/86] - pep8 (one ident) --- openlp/core/__init__.py | 6 +++--- openlp/core/lib/__init__.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 852bf5424..92cb9cab4 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -208,8 +208,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): # If data_version is different from the current version ask if we should backup the data folder elif data_version != openlp_version: if QtWidgets.QMessageBox.question(None, translate('OpenLP', 'Backup'), - translate('OpenLP', 'OpenLP has been upgraded, do you want to\ncreate ' - 'a backup of the old data folder?'), + translate('OpenLP', 'OpenLP has been upgraded, do you want to create ' + 'a backup of OpenLPs data folder?'), QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes: # Create copy of data folder @@ -223,7 +223,7 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): translate('OpenLP', 'Backup of the data folder failed!')) return message = translate('OpenLP', - 'A backup of the data folder has been created in:\n\n' + 'A backup of the data folder has been created at:/n' '{text}').format(text=data_folder_backup_path) QtWidgets.QMessageBox.information(None, translate('OpenLP', 'Backup'), message) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index bec198288..be92d2d49 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -323,11 +323,12 @@ def create_separated_list(string_list): return_list = translate('OpenLP.core.lib', '{one} and {two}').format(one=string_list[0], two=string_list[1]) elif list_length > 2: return_list = translate('OpenLP.core.lib', '{first}, and {last}').format(first=', '.join(string_list[:-1]), - last=string_list[-1]) + last=string_list[-1]) else: return_list = "" return return_list + from .exceptions import ValidationError from .filedialog import FileDialog from .screen import ScreenList From ce4d8224a23b1b36d1610cdd4b8979412a621a1d Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 10:37:08 +0300 Subject: [PATCH 12/86] -redid some mistakenly removed text changes --- openlp/core/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 92cb9cab4..dd9b231e4 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -208,8 +208,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): # If data_version is different from the current version ask if we should backup the data folder elif data_version != openlp_version: if QtWidgets.QMessageBox.question(None, translate('OpenLP', 'Backup'), - translate('OpenLP', 'OpenLP has been upgraded, do you want to create ' - 'a backup of OpenLPs data folder?'), + translate('OpenLP', 'OpenLP has been upgraded, do you want to create\n' + 'a backup of the old data folder?'), QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes: # Create copy of data folder @@ -223,7 +223,7 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): translate('OpenLP', 'Backup of the data folder failed!')) return message = translate('OpenLP', - 'A backup of the data folder has been created at:/n' + 'A backup of the data folder has been created in:\n\n' '{text}').format(text=data_folder_backup_path) QtWidgets.QMessageBox.information(None, translate('OpenLP', 'Backup'), message) From 400595adf5746c33db2938db27260ff1d169925a Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 11:43:52 +0300 Subject: [PATCH 13/86] - Fixed tests for creating creator lists --- tests/functional/openlp_core_lib/test_lib.py | 50 ++++++++------------ 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/tests/functional/openlp_core_lib/test_lib.py b/tests/functional/openlp_core_lib/test_lib.py index 145be21f4..05c2b8a28 100644 --- a/tests/functional/openlp_core_lib/test_lib.py +++ b/tests/functional/openlp_core_lib/test_lib.py @@ -689,50 +689,38 @@ class TestLib(TestCase): """ Test the create_separated_list function with a list consisting of only one entry """ - with patch('openlp.core.lib.Qt') as mocked_qt: - # GIVEN: A list with a string and the mocked Qt module. - mocked_qt.PYQT_VERSION_STR = '4.8' - mocked_qt.qVersion.return_value = '4.7' - string_list = ['Author 1'] + # GIVEN: A list with a string. + string_list = ['Author 1'] - # WHEN: We get a string build from the entries it the list and a separator. - string_result = create_separated_list(string_list) + # WHEN: We get a string build from the entries it the list and a separator. + string_result = create_separated_list(string_list) - # THEN: We should have "Author 1" - assert string_result == 'Author 1', 'The string should be u\'Author 1\'.' + # THEN: We should have "Author 1" + assert string_result == 'Author 1', 'The string should be u\'Author 1\'.' def test_create_separated_list_with_two_items(self): """ Test the create_separated_list function with a list of two entries """ - with patch('openlp.core.lib.Qt') as mocked_qt, patch('openlp.core.lib.translate') as mocked_translate: - # GIVEN: A list of strings and the mocked Qt module. - mocked_qt.PYQT_VERSION_STR = '4.8' - mocked_qt.qVersion.return_value = '4.7' - mocked_translate.return_value = '%s and %s' - string_list = ['Author 1', 'Author 2'] + # GIVEN: A list with two strings. + string_list = ['Author 1', 'Author 2'] - # WHEN: We get a string build from the entries it the list and a seperator. - string_result = create_separated_list(string_list) + # WHEN: We get a string build from the entries it the list and a seperator. + string_result = create_separated_list(string_list) - # THEN: We should have "Author 1 and Author 2" - assert string_result == 'Author 1 and Author 2', 'The string should be u\'Author 1 and Author 2\'.' + # THEN: We should have "Author 1 and Author 2" + assert string_result == 'Author 1 and Author 2', 'The string should be u\'Author 1 and Author 2\'.' def test_create_separated_list_with_three_items(self): """ Test the create_separated_list function with a list of three items """ - with patch('openlp.core.lib.Qt') as mocked_qt, patch('openlp.core.lib.translate') as mocked_translate: - # GIVEN: A list with a string and the mocked Qt module. - mocked_qt.PYQT_VERSION_STR = '4.8' - mocked_qt.qVersion.return_value = '4.7' - # Always return the untranslated string. - mocked_translate.side_effect = lambda module, string_to_translate, comment: string_to_translate - string_list = ['Author 1', 'Author 2', 'Author 3'] + # GIVEN: A list with three strings. + string_list = ['Author 1', 'Author 2', 'Author 3'] - # WHEN: We get a string build from the entries it the list and a seperator. - string_result = create_separated_list(string_list) + # WHEN: We get a string build from the entries it the list and a seperator. + string_result = create_separated_list(string_list) - # THEN: We should have "Author 1, Author 2, and Author 3" - assert string_result == 'Author 1, Author 2, and Author 3', 'The string should be u\'Author 1, ' \ - 'Author 2, and Author 3\'.' + # THEN: We should have "Author 1, Author 2, and Author 3" + assert string_result == 'Author 1, Author 2, and Author 3', 'The string should be u\'Author 1, ' \ + 'Author 2, and Author 3\'.' From e46174d653b5884f66d1787d970b03a57febcd3e Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 12:06:17 +0300 Subject: [PATCH 14/86] - Added the SWORD importer test fix by phill to this branch --- tests/functional/openlp_plugins/bibles/test_swordimport.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/functional/openlp_plugins/bibles/test_swordimport.py b/tests/functional/openlp_plugins/bibles/test_swordimport.py index 261df1c0e..14480bdd1 100644 --- a/tests/functional/openlp_plugins/bibles/test_swordimport.py +++ b/tests/functional/openlp_plugins/bibles/test_swordimport.py @@ -70,8 +70,7 @@ class TestSwordImport(TestCase): @patch('openlp.plugins.bibles.lib.importers.sword.SwordBible.application') @patch('openlp.plugins.bibles.lib.importers.sword.modules') - @patch('openlp.core.common.languages') - def test_simple_import(self, mocked_languages, mocked_pysword_modules, mocked_application): + def test_simple_import(self, mocked_pysword_modules, mocked_application): """ Test that a simple SWORD import works """ @@ -88,7 +87,7 @@ class TestSwordImport(TestCase): importer.create_verse = MagicMock() importer.create_book = MagicMock() importer.session = MagicMock() - mocked_languages.get_language.return_value = 'Danish' + importer.get_language = MagicMock(return_value='Danish') mocked_bible = MagicMock() mocked_genesis = MagicMock() mocked_genesis.name = 'Genesis' From ece524e2a13bc5a0d98db6c5fea768fce4bc1c1b Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 15:16:42 +0300 Subject: [PATCH 15/86] - def handle_db_error now uses except FileNotFoundError to handle the missing data path --- openlp/core/lib/db.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index c1b9fb5cf..0e9e9335f 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -75,26 +75,23 @@ def get_db_path(plugin_name, db_file_name=None): name=db_file_name) -def handle_db_error(self, plugin_name, db_file_name): +def handle_db_error(plugin_name, db_file_name): """ Log and report to the user that a database cannot be loaded - :param self: Allows the usage of other functions. :param plugin_name: Name of plugin :param db_file_name: File name of database :return: None """ - # Check if the path (Eg. C:/ or D:/) exists in the system, if not: 'pass' so def load will handle the missing - # drive in advancedtab.py. Otherwise check for "Normal" database errors. - self.current_data_path = AppLocation.get_data_path() - if not os.path.exists(self.current_data_path): - pass - else: + try: db_path = get_db_path(plugin_name, db_file_name) log.exception('Error loading database: {db}'.format(db=db_path)) critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), translate('OpenLP.Manager', 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) + # If the path (Eg. C:/ or D:/) does not exists in the system, return and def load will handle the missing + except FileNotFoundError: + return def init_url(plugin_name, db_file_name=None): From 421555e5782950fa1843ac6e18f70422406699da Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 15:27:52 +0300 Subject: [PATCH 16/86] - Improved one comment --- openlp/core/lib/db.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 0e9e9335f..4bcc3597b 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -89,7 +89,8 @@ def handle_db_error(plugin_name, db_file_name): critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), translate('OpenLP.Manager', 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) - # If the path (Eg. C:/ or D:/) does not exists in the system, return and def load will handle the missing + # If the path (Eg. C:/ or D:/) does not exists in the system, return. + # In this case def load in advancedtab.py will handle the missing database. except FileNotFoundError: return From 7ee7ef8846cb32af609d9facafee5d84e0bdfbcc Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 16:07:53 +0300 Subject: [PATCH 17/86] - Not sure why the db bug is fixed in this branch --- openlp/core/lib/db.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 4bcc3597b..858dbcc06 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -75,24 +75,20 @@ def get_db_path(plugin_name, db_file_name=None): name=db_file_name) -def handle_db_error(plugin_name, db_file_name): +def handle_db_error(self, plugin_name, db_file_name): """ Log and report to the user that a database cannot be loaded + :param self: :param plugin_name: Name of plugin :param db_file_name: File name of database :return: None """ - try: - db_path = get_db_path(plugin_name, db_file_name) - log.exception('Error loading database: {db}'.format(db=db_path)) - critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), - translate('OpenLP.Manager', - 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) - # If the path (Eg. C:/ or D:/) does not exists in the system, return. - # In this case def load in advancedtab.py will handle the missing database. - except FileNotFoundError: - return + db_path = get_db_path(plugin_name, db_file_name) + log.exception('Error loading database: {db}'.format(db=db_path)) + critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), + translate('OpenLP.Manager', + 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) def init_url(plugin_name, db_file_name=None): From be9c394b6383de35cabcde4c4ab4933d66231063 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 16:27:41 +0300 Subject: [PATCH 18/86] - For jenkins --- openlp/core/lib/db.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 858dbcc06..11c52c156 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -84,12 +84,15 @@ def handle_db_error(self, plugin_name, db_file_name): :param db_file_name: File name of database :return: None """ - db_path = get_db_path(plugin_name, db_file_name) - log.exception('Error loading database: {db}'.format(db=db_path)) - critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), - translate('OpenLP.Manager', - 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) - + try: + db_path = get_db_path(plugin_name, db_file_name) + log.exception('Error loading database: {db}'.format(db=db_path)) + critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), + translate('OpenLP.Manager', + 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) + except TypeError or FileNotFoundError: + log.exception('Failed to find data folder path.') + return def init_url(plugin_name, db_file_name=None): """ From ebdad8519f08d3e31c0a26cf0fdcf6144ed3d758 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 16:31:09 +0300 Subject: [PATCH 19/86] - Added one missing empty row --- openlp/core/lib/db.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 11c52c156..2cddece82 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -94,6 +94,7 @@ def handle_db_error(self, plugin_name, db_file_name): log.exception('Failed to find data folder path.') return + def init_url(plugin_name, db_file_name=None): """ Return the database URL. From 39916d59ed333a35bbb03b2d4b787e2c2f85c329 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 17:09:53 +0300 Subject: [PATCH 20/86] - Attempt to fix jen --- openlp/core/lib/db.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 2cddece82..9836a8080 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -84,16 +84,11 @@ def handle_db_error(self, plugin_name, db_file_name): :param db_file_name: File name of database :return: None """ - try: - db_path = get_db_path(plugin_name, db_file_name) - log.exception('Error loading database: {db}'.format(db=db_path)) - critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), - translate('OpenLP.Manager', - 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) - except TypeError or FileNotFoundError: - log.exception('Failed to find data folder path.') - return - + db_path = get_db_path(plugin_name, db_file_name) + log.exception('Error loading database: {db}'.format(db=db_path)) + critical_error_message_box(translate('OpenLP.Manager', 'Database Error'), + translate('OpenLP.Manager', + 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) def init_url(plugin_name, db_file_name=None): """ From 5d9d76f62d290a8fb04b8bde367e755e0396d3e2 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 17:14:28 +0300 Subject: [PATCH 21/86] pep8 --- openlp/core/lib/db.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 9836a8080..858dbcc06 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -90,6 +90,7 @@ def handle_db_error(self, plugin_name, db_file_name): translate('OpenLP.Manager', 'OpenLP cannot load your database.\n\nDatabase: {db}').format(db=db_path)) + def init_url(plugin_name, db_file_name=None): """ Return the database URL. From 0887ca6645f01e95b32432344727e95aa1f44f03 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Tue, 4 Oct 2016 17:21:40 +0300 Subject: [PATCH 22/86] - Removed self from def handle_db_error --- openlp/core/lib/db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 858dbcc06..59d13e568 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -75,7 +75,7 @@ def get_db_path(plugin_name, db_file_name=None): name=db_file_name) -def handle_db_error(self, plugin_name, db_file_name): +def handle_db_error(plugin_name, db_file_name): """ Log and report to the user that a database cannot be loaded From 340b2f3298000efdee935aa39bdacd0c1e555e7e Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Mon, 17 Oct 2016 07:17:33 +0300 Subject: [PATCH 23/86] - Actually fixed the missing DB bug. --- openlp/core/__init__.py | 40 ++++++++++++++++++++++++++++++++--- openlp/core/lib/db.py | 1 - openlp/core/ui/advancedtab.py | 30 -------------------------- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index dd9b231e4..887da172c 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -177,6 +177,40 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): self.shared_memory.create(1) return False + def is_data_path_missing(self): + """ + Check if the data folder path exists. + """ + data_folder_path = AppLocation.get_data_path() + if not os.path.exists(data_folder_path): + log.critical('Database was not found in: {path}'.format(path=data_folder_path)) + status = QtWidgets.QMessageBox.critical(None, translate('OpenLP', 'Data Directory Error'), + translate('OpenLP', 'OpenLP data folder was not found in:\n\n{path}' + '\n\nThe location of the data folder was ' + 'previously changed from the OpenLP\'s\n' + 'default location. If the data was stored on ' + 'removable device, that device\nneeds to be ' + 'made available.\n\n You may reset the data ' + 'location back to the default settings, ' + 'or you can try to make the current location ' + 'available.\n\n Do you want to reset the ' + 'default data location?\n\n Click "No" to close' + 'OpenLP so you can try to fix the the problem.' + '\n Click "Yes" to reset the default data ' + 'location and start OpenLP.') + .format(path=data_folder_path), + QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | + QtWidgets.QMessageBox.No), + QtWidgets.QMessageBox.No) + if status == QtWidgets.QMessageBox.No: + # If answer was "No", return "True", it will shutdown OpenLP in def main + log.info('User requested termination') + return True + # If answer was "Yes", remove the custom data path thus resetting the default location. + Settings().remove('advanced/data path') + log.info('Database location has been reset to the default settings.') + return False + def hook_exception(self, exc_type, value, traceback): """ Add an exception hook so that any uncaught exceptions are displayed in this window rather than somewhere where @@ -202,6 +236,7 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): """ data_version = Settings().value('core/application version') openlp_version = get_application_version()['version'] + data_folder_path = AppLocation.get_data_path() # New installation, no need to create backup if not has_run_wizard: Settings().setValue('core/application version', openlp_version) @@ -213,7 +248,6 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes: # Create copy of data folder - data_folder_path = AppLocation.get_data_path() timestamp = time.strftime("%Y%m%d-%H%M%S") data_folder_backup_path = data_folder_path + '-' + timestamp try: @@ -368,8 +402,8 @@ def main(args=None): Registry.create() Registry().register('application', application) application.setApplicationVersion(get_application_version()['version']) - # Instance check - if application.is_already_running(): + # If user answers "No" to already running or missing db dialogue, shutdown OpenLP. + if application.is_already_running() or application.is_data_path_missing(): sys.exit() # Remove/convert obsolete settings. Settings().remove_obsolete_settings() diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 59d13e568..f42c3b5fc 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -79,7 +79,6 @@ def handle_db_error(plugin_name, db_file_name): """ Log and report to the user that a database cannot be loaded - :param self: :param plugin_name: Name of plugin :param db_file_name: File name of database :return: None diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index be4c9bcd6..fed712ed2 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -397,36 +397,6 @@ class AdvancedTab(SettingsTab): self.data_directory_cancel_button.hide() # Since data location can be changed, make sure the path is present. self.current_data_path = AppLocation.get_data_path() - if not os.path.exists(self.current_data_path): - log.error('Data path not found {path}'.format(path=self.current_data_path)) - answer = QtWidgets.QMessageBox.critical( - self, translate('OpenLP.AdvancedTab', 'Data Directory Error'), - translate('OpenLP.AdvancedTab', 'OpenLP data folder was not found in:\n\n{path}\n\n' - 'The location of the data folder was previously changed from the OpenLP\'s\n' - 'default location. If the data was stored on removable device, that device\nneeds to ' - 'be made available.\n\n You may reset the data location ' - 'back to the default settings, or you can try to make the current ' - 'location available.\n\n' - 'Do you want to reset the default data location?\n\n' - 'If you click "No" you can try to fix the the problem.\n' - 'If you click "Yes" the data will be reset to the default location. \n\n' - 'You will need to re-start OpenLP after this decision.').format(path=self.current_data_path), - QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No), - QtWidgets.QMessageBox.No) - if answer == QtWidgets.QMessageBox.No: - log.info('User requested termination') - # self.main_window.clean_up() is causing tracebacks, not sure if it's required in some cases. - try: - self.main_window.clean_up() - except: - pass - sys.exit() - # If answer was yes, Set data location to default and shut down OpenLP. - if answer == QtWidgets.QMessageBox.Yes: - settings.remove('advanced/data path') - self.current_data_path = AppLocation.get_data_path() - log.warning('User requested data path set to default {path}'.format(path=self.current_data_path)) - sys.exit() self.data_directory_label.setText(os.path.abspath(self.current_data_path)) # Don't allow data directory move if running portable. if settings.value('advanced/is portable'): From 98b51a1db8de4908419cedd7a42d18f25468e20a Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Mon, 17 Oct 2016 07:29:08 +0300 Subject: [PATCH 24/86] - Code cleanup --- openlp/core/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 887da172c..15de367e2 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -236,7 +236,6 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): """ data_version = Settings().value('core/application version') openlp_version = get_application_version()['version'] - data_folder_path = AppLocation.get_data_path() # New installation, no need to create backup if not has_run_wizard: Settings().setValue('core/application version', openlp_version) @@ -248,6 +247,7 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes: # Create copy of data folder + data_folder_path = AppLocation.get_data_path() timestamp = time.strftime("%Y%m%d-%H%M%S") data_folder_backup_path = data_folder_path + '-' + timestamp try: @@ -257,7 +257,7 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): translate('OpenLP', 'Backup of the data folder failed!')) return message = translate('OpenLP', - 'A backup of the data folder has been created in:\n\n' + 'A backup of the data folder has been created at:\n\n' '{text}').format(text=data_folder_backup_path) QtWidgets.QMessageBox.information(None, translate('OpenLP', 'Backup'), message) From aef0941e1885e5c41d380cad22520c543bbb5896 Mon Sep 17 00:00:00 2001 From: Olli Suutari Date: Mon, 17 Oct 2016 22:42:07 +0300 Subject: [PATCH 25/86] - Modified the def create_separated_list by suggestions of TRB143 --- openlp/core/lib/__init__.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index be92d2d49..69c3d30b3 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -318,15 +318,15 @@ def create_separated_list(string_list): """ list_length = len(string_list) if list_length == 1: - return_list = string_list[0] + list_to_string = string_list[0] elif list_length == 2: - return_list = translate('OpenLP.core.lib', '{one} and {two}').format(one=string_list[0], two=string_list[1]) + list_to_string = translate('OpenLP.core.lib', '{one} and {two}').format(one=string_list[0], two=string_list[1]) elif list_length > 2: - return_list = translate('OpenLP.core.lib', '{first}, and {last}').format(first=', '.join(string_list[:-1]), + list_to_string = translate('OpenLP.core.lib', '{first}, and {last}').format(first=', '.join(string_list[:-1]), last=string_list[-1]) else: - return_list = "" - return return_list + list_to_string = '' + return list_to_string from .exceptions import ValidationError From 7acfe1dbfd63ac6b83f115530f44a9dbb923491b Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 23 Oct 2016 20:28:30 +0200 Subject: [PATCH 26/86] Add new branding to OpenLP for when we get to 2.6 --- openlp/core/ui/aboutdialog.py | 1 + openlp/core/ui/generaltab.py | 2 +- openlp/core/ui/projector/editform.py | 2 +- openlp/core/ui/projector/sourceselectform.py | 4 +- resources/images/openlp-about-logo.png | Bin 28293 -> 22584 bytes resources/images/openlp-logo.svg | 445 ++++-------------- resources/images/openlp-splash-screen.png | Bin 57089 -> 48734 bytes .../openlp_core_ui/test_settingsform.py | 12 +- 8 files changed, 109 insertions(+), 357 deletions(-) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index 918e48e64..3f9034dcb 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -41,6 +41,7 @@ class UiAboutDialog(object): about_dialog.setObjectName('about_dialog') about_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) self.about_dialog_layout = QtWidgets.QVBoxLayout(about_dialog) + self.about_dialog_layout.setContentsMargins(8, 8, 8, 8) self.about_dialog_layout.setObjectName('about_dialog_layout') self.logo_label = QtWidgets.QLabel(about_dialog) self.logo_label.setPixmap(QtGui.QPixmap(':/graphics/openlp-about-logo.png')) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 463aad73f..629e55e0f 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -44,7 +44,7 @@ class GeneralTab(SettingsTab): self.logo_file = ':/graphics/openlp-splash-screen.png' self.logo_background_color = '#ffffff' self.screens = ScreenList() - self.icon_path = ':/icon/openlp-logo-16x16.png' + self.icon_path = ':/icon/openlp-logo.svg' general_translated = translate('OpenLP.GeneralTab', 'General') super(GeneralTab, self).__init__(parent, 'Core', general_translated) diff --git a/openlp/core/ui/projector/editform.py b/openlp/core/ui/projector/editform.py index f4cf8a774..4020b2330 100644 --- a/openlp/core/ui/projector/editform.py +++ b/openlp/core/ui/projector/editform.py @@ -47,7 +47,7 @@ class Ui_ProjectorEditForm(object): Create the interface layout. """ edit_projector_dialog.setObjectName('edit_projector_dialog') - edit_projector_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo-32x32.png')) + edit_projector_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) edit_projector_dialog.setMinimumWidth(400) edit_projector_dialog.setModal(True) # Define the basic layout diff --git a/openlp/core/ui/projector/sourceselectform.py b/openlp/core/ui/projector/sourceselectform.py index c2b1c2a1b..62b0a2158 100644 --- a/openlp/core/ui/projector/sourceselectform.py +++ b/openlp/core/ui/projector/sourceselectform.py @@ -243,7 +243,7 @@ class SourceSelectTabs(QtWidgets.QDialog): title = translate('OpenLP.SourceSelectForm', 'Select Projector Source') self.setWindowTitle(title) self.setObjectName('source_select_tabs') - self.setWindowIcon(build_icon(':/icon/openlp-log-32x32.png')) + self.setWindowIcon(build_icon(':/icon/openlp-log.svg')) self.setModal(True) self.layout = QtWidgets.QVBoxLayout() self.layout.setObjectName('source_select_tabs_layout') @@ -395,7 +395,7 @@ class SourceSelectSingle(QtWidgets.QDialog): else: title = translate('OpenLP.SourceSelectForm', 'Select Projector Source') self.setObjectName('source_select_single') - self.setWindowIcon(build_icon(':/icon/openlp-log-32x32.png')) + self.setWindowIcon(build_icon(':/icon/openlp-log.svg')) self.setModal(True) self.edit = edit diff --git a/resources/images/openlp-about-logo.png b/resources/images/openlp-about-logo.png index a20534362feca0beec7283b944f81d095062ddfc..b2b141a17c67943ec3b383236b1676860dfdb8e7 100644 GIT binary patch literal 22584 zcmXtg1yEy6(={yau)t!AyTjt{?hcE)ySuwSxVyVM1b26LcX#=-?^i!n;U=kM?wz^a z)7|HsPPn|R7y>LdEC>h)f`quRA_xd*9Pqg#G$inUGp4dK@Br>8D4`4u{PTh~3Io1| zu@l#D1OWl_`}Y9-c;USVzKP`|qVA+*YvSap?_dn#>gq~oZe!_asBdRXXX{{^am9@d z{E*_m4++`YxjUGfnmK_82@wc5IXRdcI6Il!+R!SQ0lz9>Wo~IqVCLjx$4O6b=wPhx zWbR^YXlre4YvcHDBzh}zLt`69V@G-ecUnh%dL}vsdY!<(ogg3tAQHj?%5Iq#S*~8n zDo;It=gGonNx_;tHUSjzAA|znBI@X>+MWV1Cu?eI%h6ZU_0`o7Fi-VM5ZdTCq|qd3 za1@eIr{WUOr_M)N+xQ7V<`QJM&fPiA32oP%?^B*eSMJYSN@xHBvhDV~juL^vlM^rq z@7yqWerRMAKH&go(l6*Q0^Tq*Sj7l&O7S%4;DGGdQe4hAS%Gyd`Qq!pk57&DQ{D7z zHXE(4EV-PTplVpY!<;!Ff%@DGB2GWSv0}vi2-LsG36j6TEqqyTHNcSv=KR8-PeO$k zAknbe{}_9H&P{A)IZp#euy-VL6vc_da{WRsz>#(oNukWgj16mXEbvQWM5YO)$;rZw zn}-DB0^57hIH;vaA~d;&Z3umH+8<{c=lT$6wcj6_#2Ude>^0rF~)gr-G%ah6{ zC{Jq$3*lqaGs^U7PG3}?bfDtr#W*;$)y+vll;nKa{l6~`U>Wk$bzZ-Znkc{t(4nEw zTN3NBg=u0T&Y%egyU!8#rQm6I!aT6-T^shS&-=xufa235AQgxjH>KUdq8cZWQI$_5 zs-rVL_8vkZjl~gd7*^KJH{VU5$z3Ug#X|Bo=3Gg+v(JA5O{R9W~7vDG8q~NHTbYqsmke z(I+?(=9vN^<^^Z{VSgglD|U$|q~RBHIRT|{BNfh0y1$bNe4XyEUx*5G{|4jy50Q-k zzqj_4n@l1=w#+9Z6zOauy;Q zMoVDtlck$`l^#K6TGP-Z9y17r3j zEd&lLWl2F(Rb1N$sf|HZ;f%I(S+sj>J+Qo9&-e4<+CQ}JHADj3XT>=lY0ii2yhC^9 zJh}1WNmBTsE3Ex7^!e+>xPg9e2zcp$ADjbz6CQTMMVxO9VNQCQ0gn$?1RR zOmJZ$z~E^$%nc~YHwyYBuvysYyVd`oWUQb4j2^Sdx|oEhT-EA%?ucYebNY)lJXWVx+>}q({Y6Jf6$?7q!=|i_u$HrD?=qvD9S#tH4fQTrP`-jx^*2~=_OO<=` z|GDT49i-8d5LeAl5)~TvQY*+g!Y=PtV-x1C4mUQpuipJ68eP|bsB1Wi2Kyps<{wkZ zept>o6Gb>Q&T z|IQJRSH+p08E;OLn4aSQTB1oCX!8s$hu2n&VQBb)vzg0^jb_P;aVO=IH2M1Ux$5<6 zeR|H%s6QHEN4UBA^rZ||)rMVosklHm$ZejQvqxZQd41#ort9WmW~KEL+@s4MtOw~o zYN8OWPDo<7qO0LOi~Uou|qoXLk;?3M23VOr6un*NmvBdt7B z1hJ_MiX$+G(5`R36bYlbrY^%~bB6VN+(?JFxK=r2#QacxK`LSEoG2TOlG9lqN{2VU zUN2X4Iw;v_k$4a(an~grQ`p7bRJ!=te00F!`una7v0ST4m~4qHLXVls2EZN>E`*!n zlHT84fL_?ymQg@nk%{zX%^qo1(Usue74UN02LtqM*VddfY^G=0zfx;#P?x6S`32MK zU%QVr&1e2i#0kF&qnAZC!w2o$nvA!9XeQRK99-Tny_u3JHyUr-Y%F|TR$D5IE5tRh zGgbyFTO_U=G~T11RUo!5!1!lLu9Px2=`b6bOy$3rkcL>-fu^xtbH$?0`saW!Rjzk& zqdjZ?nk@B^8J24mv~LR^-rDLf)*eI@&8;h<(j?wlqv?BVkkPHCNm#_8?**Dt;BxHY z2MiDHmDqByn9gT&?o6F@4V8k7m3GrYHg`b@g8VLL zz1_;j8A@w<@*1QC)ElXTs>E`5-XKlg_ z1pE!#{h`?ZgOF}aA+kM3#wI3mvqr{tYB^j2Y#5hUlO;)I$?kjak^AXLwA|7OM?yyF z4<5*WVcb~QC{IcoeNpDP zPQd%Vq0ZnpKvbAMi!@AH!t;lNW8R)}Fya?hoCambH)Wsmk~OamHj?&gw9l+{dpoF~ zfYL}1>`GPwDf-c+)SS6n|8Yg8{Ai#h(@sWMy{gWa*|=| zSwL@-wmRo*ub40|uEXfKP)4401}YaH?P$~&j~!`NLLCRBw(7v7-1l^pN9UX05j3 zLL$($>!NUeSvMe(&rFXOcFn<8{hd5Wls2?-IHC?~&tb})QO6CyE{d|~4?37o$f}A2 z22mxn5#qYh)7W)KJ<@cenQHDDE*<=ui2Z?$!)H(cLg@SvIKUw${?Jt|3tSaHOYzPkie$5 zxq?%52%mT+v7Bxz*x2ldt;c3KqA-v$IWOjUWRY5HM!2Gse%A)h~ z5l+$);^(JqihO`eW=;ru6{#8LQ=pw;IU&266rnDb)<2NY05%kN0&caYXbh!Qnen&r5|^xj%BO9jC| zQt#pIx~buUe1pzvMit6xezVbfWnPoC#CyfL=3klTN3LVG3vg0UTG9K^AW>EG<=L<( zSjinE=Jc&*{3bk&p2dpw8|}253xOpzSK&1&mn26?^l~?^AwNJaw5_IbfA&N(<)8eV zb5mVEs(039q^z+f2eg*o3VcL`>4Y){61$)J3wLr`F^zg<-!nb)b__|Xf;4ATP>Ef? zo;6dg`L`ZCkoM3{a?|SWXcUw*v!Aa9^_l20lZr%6MrP#+^FT*gPL;vNgpKZBWTx!L zvc9+5_@sQWB807_BybkhjAs=WnuWX95we(^hW9e?J9#5ZlKwz7E4Ej-(QvWY6KMjl zO=WT+zAk{PSc#k{Eg$JCbK46ch05G7;zX)GDCkczZY+Uc1m= z{F#wy-z1oh>P;;F78pcTuZI_^JdehRHy_zyU*Mb>jd}Tt@zIyD}Q8hefF$H)?oFD5>+~5T=5f zeLJeOde)u%l6`dg>L3Gmu=;GBWLF@Y`}z1kX};w!l`m|S=u|DJmLNTfn|B&398?8DL zVv@-|>ZOHegM$l9n?K__NUoHx_9&-QGREFPr(3=9(=_wKWgevPKHNb@vX-nFH@nhy zNdQR%15WogMyTsgJ+lcaz@QhK*z)vOF{u$0Pc$0vVNTGZ%?VPVoxR(Bc@gu}V{s8x zvb{R8lyh$#4VgfDBHC_I})=O|jXiF%s&Bn*p%FErvUFO07m%}0F53)82pOsuodkuP$3$sW|wgI(B6J;#oCO%ji=UcRblMv-NrlG@?=nP%15a>sw z;E$QYT;#K31?Fx6us`p4S@Y;;UgyoHrcm<$&Hf~CP{`+p-CjQD<69h0#`>B~I2$mV z2C{}5i7OZzcMt0GW@cZxC9M8;h}*d?!?08RteLuAma1P9MA#=iN!?XONVxR7;cVUZ z?8n&^(}XkI<4+`m0C5R({WmN)!z1tGyu^=wky`^{x)BdXeP7G!Qz{Kgm|_s2#YJ^3 zUu}K^!vvhHmD;rWIzvcrrz z*MR=Y;l2`$j3}K_IPgcKC@aQa`J9qQ4Ztb zs(NVKq~d+7PMiMr{afL|&2%0p$43+SS(#C4HxN5_bL+dl34!(#I+^*ZS%}$0G}ynC z@)7c-aaGuBvB2D8IDI{bX)k`hMrDi@pyin#{Ga0&sP7Y!Q`l8y}*BwWf7MyqB{ZTEk07!vwt0a4IU4Ym1x)WBt;eOlhKOf08H%X zJk;J;PmAq>SxeeDDfxx<0Vn37%-%fW|HN54k(kl*Qsv)3VuA7w6j8BT!i_neBzUtdHuq`2OFxz8z z7ypfZBE4V?`S@_SYw6i=vIIJSh*a)MU_+5$6D{#Vu#Zvg>BVG@bDssr5;z|3al3J8 zn0XQD)CiS)kF(VV@N)&!KaTw|i*U!_GP=QBwLOZzzr@idwDDPkMkCfnrtLl0onvn9 z8j+FtyL(pL4z1SQ!YhMJc>@*Pd1(2-^P7$DGH+Yr=Lqzsl@6=Z)Lb*dg~R-5SgAK% z*rOc-5K^#yHbYaYS~rPC>YXpJexiC8eYg8Y?{Xt^2RVjEtlW&VWly*o-Lv?5y~6vt z+jBw0v(>K3QvefmyWMg;S)SZ}GpL@m@gy$^#_+EFZ%HK8^(jqM_|?F6v|VR~jqA z+`reP&xYSAYM5JI+Bb>3+;6w+Nir9Ulz3`0vC`%uu(w|4SfxT|bM5ypP*}U5GuK^* z^6O%FnEk7@G<0kJP+8kIyxTx6(WTX+s&5q%2#aUGN{=Tj>M~o)d;~naOsN)vsbli- z?MFZ0=`_tSnTHMY6uQVZ97@Dr|6bLCTcL-uE~x^{(q$<#o=nM&1@F zL80JX7!uboJF74;lbCOv5uo*JA%B)vu?DaI@L$&cZ+_MwBl*nk2RLtxZfm_vApf+m z@aQ-yhLMv6E)JV@C=(Q<7~z1)+V%0dcNxF;kWi7{nFg*>a=tE`E?#>v{(G!SEzLRR zX~x~`^!2uGmnG1hOLHStLHL@l=^>u?J4QpDcF+Bx4DGQr-Anz{u&_J{f&XH) zPHPIF8I-H2SUk}UQy|t*!XdsE(=90n|7fe3PsNy@;Bk)O->5}g@xwDFFGg?FclAjh5!<)gtviNyu zy5sbAHv6`p$nCNQwbgaj^@8unYiS7&PyH!$@N8>K{R>rX`gh3e7_sG(5f>QIPkXBJ zGwvO@<%b!lj(DzlJ!Ye}1zo7y#e6Ik`%$cOer$Zd;NGgPai((wo7Tzu`4nd&!kR`|Aci}N^S-dSa0xk zLVl@FQ2UL4)~4U+(lDwh!YOEwL&_ z2P|P@8WW^U&XG6KF*dh=S+(^Sjxe?Q_e4;{#=^j~gCZ(9<$-8!??Fudda~dPf}^>Y z!&{b2WE+PgN-#sW1m!M&7wGNHPAv4JEEd9hXU)lQ#dD0&*(wU= z?`A_9VhaI#7C8VQ@>R~-VA%g?I@h}^nw!^`296H*!mM&_60Bl3M6TY2BWzkStnRfk zapH{go-}1c1Y)s60!yJo`?R6}82@ze#DoOfn>zj=#AT&FqzAm?pvh}7m~6S?;g%|v z5SEhrkWYaDB=&4Z*>S?mBxQx37LkSnl8wA?G6lX6GmgiXa}2iYTqvbxNq9P5Zc?Zr zZ`QmEB(QP(i!~7LRKadzzy>FLEl{WFHbu-u?(4m&A=G59hxbPfZy#A*;-HcpBNJ{X zK|_CQV8~$m)w9@a=^Ukp%W~QAvtW%BB>K!Wb#wljRGh7qh)S<>?v<=6oIrc{jc|^= zbE&Z>2|r~ES`g;N0IanSA9ie}2+-&taNy1~5ojK3>ms@FH@BY#pUeahY%3>@r!bHl z?i=3Stwr#-5S!`f3P>Nq9(KQ|4c*>*8MWAXVFOKYaN%>$Ilna>Q^)cC4u__Nrgv4c zyjD_dc~N9<&C*Tu{Jr!){HQFqV4_~WY~uKdbvE3ymFMD}fvRw&?$Kmc3c^lS z=+seP_-s?iK=NKacD81Fg1ekof3tVBs&C^A^;izu7i+jgL4mn1aJT6~g*(-~cAYuj zK-si1LYKBL27tlV6pNf>o*FAHh!;sYNH)>A|J5Y0vbaf|OV|4K!jc#Mq=qf$g=Nc` z$2Y6+)@qKMU^@-JB+`Y{TDwq=ct|I)QV43+Zgc+&2lq@sxYinf`-;YKZSvnmuiHhu z>+ta3IeNOY@x*=(YrS{3Kq%yGZ8&Sd+kRhK701R7nb}SJSAVa^*uwpaAlKEBwf85b zQwQ|sp7Cxv_}Fd|g0TcQb!`xATxaQScfCps*TFR!e-^jngWm8>&bRxt2q$mU7md_o zzbu&xW|lbxKCt+K)!ES+MzRbQ0WZ-+MVtG6mJw@)4$Pdv(m#M}-)7YAGsy4kq6hM3Na~ww95g|81ojTzMI~BZeKv*QzTl=0NRsyVA?XQ=guVw<|-f zn|-Vq4EH|k3j3;G_lr61`OAkch2)`UzIq{?u8({*H1%B%ar_Tr?s>Jw4;dwzOs2%) zqnzm2lsc@2up)e=Yl_&bZ{tENdXm#3NPrv}=B>IX758i-5)=*kFlm)smy*w2)Q zKa^GT2w`n?kBS)A`^&6GR z!=E$rOIa}yriHW_oqNelr)#&G>AgC9%LXoJN^AaOe0eFeNUq@;EjgE+Ksuy)Jd~kOZXPrR zL}~g|wx$&1%EyLB>`s>ccy$F<%_@Gp{#RiA*D!GuCbGsh_RjHW?bm-FwdYQ?tzp;* zUR&z6k`xx4@WPKalKD#VfAQ6_t89{+Daqzx;Y;H}0)$0QoIckAS)}3}_7di=P?d#N zy}^>=k)}I558EoT)0Yk+qj1!ab5>r>C1l1mW)gpeoq+lQ_~{c_v5iQOXE%DFNbd}? zIso=lpB=;&$Qhm2T^%cQDc77AUXT5}R6k5}MA$Rc2H&xU-TC%0H~YK7a8RT#ZgyN) z$o`q6_p4qtF96B5W@Y-=5=lwhuzK0<{fp>`r#l_<6x>1H#hmz!zWWq0DgLLE*G-mx= zINyV$^8yD>K2Q?o%qbxy+G&7eNJ3Wn%k>Kc);_l6XSJTXNZPH+&K;uaWs78@qD50h zUw~eQU2U*^c0}M2>^0OmFSd-%8~=HEZo0`TSY5GgBL)mH*lIl>vy*5z&BAey5b;pu zPUnqrONL7_R-Aq>1PYanC}>OJvf&#GYj09J1!=GR-t&HH%-bv3GpyVq(!m5J`S>@9 zF8p&%tJm3oC`%xAb2ujQV>&!{%__O+kz2+w+>e zvAdqFVv(>+J4+9MbL3B77lGz}WCc`hXsazTNy+sEVHN$#b z)|t0)EUXLv&{-E`+|}ij|Ga76iAp4;t@zYOkGc+lhpApvl@)+_WdFv%YsORFep09B z2gP;uS1?_kP89x6;f)dbkSCjWkf9M|+pA71hGp%U*k`qCQ;jztstOr`U$#}`+ppoV z4bP6x=>1q6xwnE^kb!&Ee9=Z`+sJr6hd5Lfl?`BASJvvjPVKI9VTU{l@}lPMEMMIv zrsCcm>vSD3@Zbv3MX|_5*7k$x=446GnT(J|4i3ctEbmOXe9d+3G_q7LsUrp^kA8a& z$a^{3D=oXSh(hWYOs_RkuCwJx6EwNZ97ZXnJK7m}>`32XvYIbKHs|sVhJ~8QKLT`< z+LWmfMW^(DQ46($1@}H4It+dx%_Wu<8!7b6v9`en@m{u`$9okZor<11*71{P0uBE8+ znH{iK%=32|e>;KgJ6m`ex&j#v!}PZ^^q2Sn+T>d;||9Jsl%ffH#B3wo;cVIin7Sr-l;3(b%*pC;c6xNwY(=- z8M}_Hv5vLbP2B8R!_y9Kz`WKiOjULJ8L1*CLoIacZTP22I@`{&-Ll#X*RMyWdc@qs zu>>oQ@t*gd=NHNonIst-(G$RU{HVDzZn7rqVxiDgq-@Ay%xT!lqo%+yrOlkxM4-#$ zMwxgC7({oZdni_Z$s!?GY44c1#X-Ro1V~^SYnX6oX!XZ>j<3|WB;r3OJCJPK3vIo^ z#vG=64v(z@@}pY1ImNFjboa!98QqoHyYkn_PS}}eBKf9q`xcL%_p_4t?iGf3$Ealz z6PIrmxcKf)(?2&n7sW*fgIMN5+30!VdH`En15nhsj_Mp+n)6{vbv$+pE|3Py7C}(& z4$Oc;9d($eG=i+hHmzO`nJ}y9&PsFR6D+q z+MYD$gF&>>FxZ#GGv3_mF7C`UGfTN>$>}fVwv_9LiS@?1FrG1qnvhZ@p5)CJe5zC3 zHDhk)<6sXFPx^PI&}7juxvn^v332@NHd#zT6~)g$-{#%YZ3_iPFc*BPy&WIoOa zfEG_WUEY+MQWRwLdkyY**w-%i#~38gy`Q)=F))RG@N2!mYhh%1Ywu|H64HM?s4vNWqmg?5p>;;qfo5}9VBqqj} zy4b6B{nV+WazCoX@}DYsp^-0aNo<4}?1^P@60<@jSAj+#(-FDi*gA1`xjvPvPWySm z_jf7-aB&<>|2)q%mNHsEEY40HprbHJPiI__L(VpdJ+d*tOCz&B{$BAUuca#U^epyj zVu`0VjoIVO1huR0^p!~$b}6%Mrh#YFCA7JSmDa)vUXpA3CCwa2S-D zk+GClCU*F#%v(xKu}YiolDmSLtMYXNED0xNjg5pQ{2q4}mzd&;p`Y0P*w``bLqa)% zZBo)y=@0k*X}+K}nXeXf!KV|l$YR2Y=w0`1jADyPz8k{uJjFd6K4>6H`$JZ*GDHH5 zZy6>?dlBZJuMCFtw%*+d`SnyfZ`-V@m3$*WPTJtZ?)ZHv@IC0R*Ki()(^_?Jx^xcW zsXOP4Q!rWqPw2-34<)e}^c11((4fg7NcUO8~26D9ksAEK!qYc7dez^!q%N3v8#GI#J z4fe;Bz?s*r;+NtlTdqIh(i(4L6m@>RPCtZKvyd4UoNNjj?j0K*q{A7cCak0sne*K* z9doVvHU>d_Pmq08nq766z$@s-NSP7(Z*|`7D1SXZxpv+kx?~tud+KRWP`hUOzr4E{ zEDI%!{seXSMNSi|8CQp(FRoPoBX*c};)U`!n37ssxoMGvP8_b{SJUr`xv}UxVLV&Y zq`v{V3%;Ee6TY&Z9Chv*+`fSa!X|v!u0&T_dLa$_0ocZs)#~tC+jZ%m=?WhID37eF z;E;Of{~qqlmL57cVeX!HHu4BJm>V$Yw|F9A@p)3jY<~BVCUnf!WB?{RSA0V1uS*Bx zw9@L6Ex+nw*Z?nSfx~~3CH|4kO&Ev=4Zd=wU!+37af~L5bz2{{=-tonaZ@K^7_ESj zzT0y8C@*7*r|V!*8i@vZj2agqtRKq|tfvZw`Np&R(8&l$)Y z)46W|%lsK+tKw)CmaO`N%Rl};ctG&YaCh+2?XsKE>ux%no6{E4@uvqvt{A^Hi$KQ? z56aVTy4@r>SI1SMRjp5PI$NK*(7@pgTj>vPo>ucGWM1E+AHSxsVtUPX(w=?vuDq#V zOwR2~jwiCP`z?`Vh-pTe%skhzez{@dcHvf(PqOwAu~$2?@IUQQ>QcR|h}?q6oK}$2 zif5czeA5zMEnPs~+L6F?i@ICe2sW zdmWb$A20Wm&6m`LLq?YJz}?y8InO}n&5hi<{f)`kidn+c)w#+~nbwCFZ-c=SS}ha5 ze>lz4-TGD4<_+MqH+?qtxtt}lY`0F@&;Th?e=(Z2@l^xQdfn`5XSMzByx zVZvewCe38lk~ZnVJyYv@Xa3==pgRPl<>M04Uuv4S)MGnHKYvdYBS9?oA10t78Fi)B z0%#xQBaGXt=Q8n8QS#)mlo{nM7|QZH6WlwR=`zmicfYz4fceW1kZ@f0OTj_DRh8uZ z?b{FAg7TWAC#(!3?xZbbyjU~tx3a%)tap(sKZIBx)RL&0y3+ZM#&=aAcR@%eKelisZX148pV1C8Tq?Dc&_v>1l%asVmX^$f1GZ@sTDb zD92TIFrZi}gDu(iaKDmg!}oGk8gsQtXKK8^#}IBGbB;WbeCq?Up^c8cZI}JO83HjV z>hox4&_qRYZBL?-Q628X@m2_|@6ZvU>g)mn#K1R3Aot+Sv^IaPh?YImKFS zqyo9ewzq)Z4|@xEsd<-M{mI?G6!KO>qgVG(HtC^WSKzJuxDzbq-4Kg6ms+lGA#CEIp~ME2Bg(Ld4V`cpO#aujs=%|3Yl{TVLMCB%N6c|{U! z30wtt>{g2*y(8J^-Tp@Hjhhik6PdGNXAFe?`To0&A%sYiRe(vuO}I)^5)>{^EeMg2 z^|O*RS=L9N1CEA_WnrR40Y&(fX8Vqrk-Fc{YBK?-euY23vj7H_gmfHTzZWEg%M~aH zO7k;o-yp(&P2(Jt3g#qdy`4t}+wG6E4~9b-U=(Us(CD~kUB6Mf!A@DGHExo=JR+sK zV2Z3*Z`vIcR*jqa#fm=3k(MODN@{Ne>oM@>#)^vj{YOWL7X+L;3~)O|*C*4hC{WrOBoG!kD2V=o6$n?HPQ&H0*M0$!SL<7$Wf^gV!xP&Vu3 zqgqf5Bdd$g-;7^{fB02Q+Xas4WZ$@L1lCZ)+5rttcJrK3l4V&2EXcT{EzVSom}m-w zc#oG$y`E$Z^700IMiK~~G0N(HMdCb`6~|4Qa#}>ybD;>EL`j)@0%!P<@`ZR{;2sFL zM^JUIndaF&J+U!42%`Q2>uY`L^H)~QSgrd;+rFMK>`ylA?DnFT;(ZJE+5C~_VIyZE zeIin0Haxcs@-cn!8zc#`!>65%;H$>fqe(UJb)xII)#DwBsCHCfl{8t1M-0nb*{ zV@-Ith+x&8-A!N|C~ZhXSz$O}nagP&t>##wGp-ub1osgZrHtV+3T0Qj*@z)Uh#3T} zkiY?{CxF}Xs&D1eyTpOhoiGYGVb8F*S?+%$dUAaM+|WpOL_{ONHIO3`>IA+Z>1lCJ z3t0bQD+g9!(1(SNIt5Ihl{Ab^?ytPM*IhCZ_;3%Kh=nIbSpA@=wZO z+=J=cK=;47Z(DN>J*;%QxnsWUy9b{B+MULgD^gH5urG&2xFcMk^D)}~PY?%*Cb&^! zt{+TgDgl5j^DJY)e@4mKw^-Pma{fkZ%cG<|0gyUc}_`HVQ`mvrG>n{Y+|BlDlTo3h3}fvGdv#H>)jWIyBR2# zlhq$EtX6A04I?@v%&B#M++U(Q1i?Qmj`(`i;BuQ-1(Xl4P7UvP0u(n88g*|y$f1oa z(!Y+GScj7`SdBL$=Vhfcb2!B2A6Qy56?!Mr{Oniv!R}1Hz12WfoduroYw8&Z0zH|L z1vW=QN`?0NkF2s;2{aAoI5dpN0JRZWp%IqzJ(`miATk2~rYHFCo)U4dL;?Y!zQE2f z_^MB=y-hvV&859VbG?TiaZ#kGgEtMKGT=Pj)$nqTFN*TVgq>RHVGKRznp{i_n9VX- zC}0~jj+O06dqKCHqHm5jhfQu%OqnoO)@LP*hj}~Z)&w(3w6}p;5{DhzTR63Dy1iT1 zxN)wX@lT$159a4VO8lmK=Z#GLO6~YsLSBwb9RZ&8)%I5Vtag?>8Gc3W{bXca0}67q}qjZ{nM5k8>@LM}$>KX9*nYH2Xq5)(8rj`XY% z^wk_-{i+V+wz?b(C~4|iUy@Z*QG&`XvalQU{=g)$m(gpl{OR(#fx=}} zlna>@d3>S(?=bi#%+xSs{Ju=^SC){JQ2&O|Y*{c}ZNuXBA+75*%V z=*1$_K`3qez$eS9P5_5o2|zCp_v>!kQ6b;h9sm8%N0IYI!BYlXiI> zs#?r^;EXL2Vl-MXiN_gHi3EXd7uZTwpyhKYL30jL7O@eMOe`i@*a>N4R8qR6hb(^b zs``DEaEps3RF={w?TdAH*yBA`BJM@uU1AZdo`oY8WPyuOqBl1)VbD*6L<1S64BKm~ zk@)}R@d}5$Amd)ixzz&g=$@3xG^BuW$+j6W5E;39{eICJSCL>OAihaz1;h#jlL@Ho z1(}ZbX&2W;IgO0x4~9kSMN;O7kR(+kl0-CA^^{>@@mzAv7fWKCYwdN~z&v|U4=z(W zS4hkl$G>3&XH#Y?n7n0GV?E8(d%Ang$ea5pZ7|eOIJM5UW~XM!bGmCvGnD2PEukk> zERvpD!x0j}>`sFGn&kRf@Q0&#(M2$rl6`Ynezvr``eWT099GXkvY1i5Jq!HI)!jB@ zGdM^g=BgCnTy8l5w2Y>PGVJlFvbjHo<>ib@D%PSHk-gJZvU6TrZ4D^Y z$BjWDpeF5Qe!uQ;s2dY#FqeD1p7V3_z&taB5co1p788YXI|RApeg#8NF{A6JDi`$dh&rpCzIQD&MJ)g*VA&mVC#@N`KDM9`i5aJ zx~!;8Y_*~=mbkr3Q`l8n&gl4Igyjx#cz~{oymKyKm&-;7suKkMH@O9SKVbs539u;g zR&faMa&dI;H~rV@BlE7nXW;#H(nH*!Jj=sD0mC6l){_|d-WD~aMYt*Dgr+G5ahBd zb}w#}?!o8>=!uRuZW7+XJz;vbArCOdcH0a?2(iV!v3hSVa5l`*v)Mu=FBX^6UfErt zU7>RJ%ZvNJ5BNq`^soE8h`6_H7yVfQn*TbB>=AIrs!M%3$wcso7oT?(T&JAcp0V6I{y!ED}};F=yA63Ur?dLLLx| zT?BOvJVKD?nK1eAmtoI88_8pn&Yx}<*K#<#I$L>7NN1)a`6g>+1XMJv_x9n(?^L=F z6gmO+`;&BS5dYL`GM;*d{Hi=G^;RxpQ?V#2_%LsWY{3)h$N@FWH5GkEB1vic5a_@T zjlF>~N!iSD5=z^0 zsb|bht}&$xR14EE5*49yQg_oH?5)Vg_Lm(iOR$hfmUAemOKg=<0Z(pUnH!%FoYZ8U z^avU-_2)bL3w|lEzBl&-{ZLLimH_er-av2q-+_#|);MiaWM_EOy;2Jht8)JANK$j~ z(3G{af7#2z6uREHm^#t<@t=3`&!*j(6j!fhq9UNkGn(n2bf7yiG@}u_>Ms&!-R)tW ztm&Ek{rqC>7*NS7iwp$S_=*MHp8k5TUQ|Ck z{uMQ=>_CK`>V%{`pBn>$*Iik95XUSvr82L zi7pnuy=R;QXo7gRL(a5Vf&_X%{loURva4#O?(TPqfQveP$KuKERN1P-=UH@dA4odQ zF;3|G{ypbv$2`r6T2Byx7^!N52&{Z<#ainrIs8i;l~A{@p|dvBQ!_J9ZGXMOlY+wX zPRq(j+mo^FCMW$TI(bu;%Z%z6r$tpbh@e5$!2OPuu%dXi8j9 zLe6q3l%a&?i`=Vw`hoGXh>09@`r{Kk2_jPi5}aR+yL{9fOi|sydN4WXHCP2`RmHi5*!GHXV?Muj!?Ytrxzeh4c^}SE_@$ru-=3lM_+$Co zL%5c(Y$@BJGhC1A&d$LqzurKG@5beDnAMP_7JJW4W9!XX&-)>&K40r*gK{JMT~Q;2T_MT00_~cNx663srW+t%R_j`eN>`MxJ(9> z<<9lnbXFiM%Rwk<+)Y06DvOANQtX%hla24w5ub0~7)af!F6~NwiP~H6CzlKuO#{{J zfyhwFyRU(j2?Iz-Bt6Tw2wjbR(gNY(0ejf6k`@#c)w?I7RKREK8p=Wf;e%%U{j2tJ z^puOUZlB1e^Kb>lC$odG{yaZUHWzbvXTRVtQHAaJ*ToXgi9TAXbCPuNjUGe5GASr( z0BkAsXzR>yNE__4y;aXy)4m5ivqTxD#HHW;oc60}64}slY)1Ix2 zSMqA|GFQ!Oaa6?EkO?hkh&V1%luOilVuCB~)CZTOd_i zgRYRBTXN_!x{05I;oIHAjxsCI9WzC(Ze0ep?I+7tgG~V0&+KoLo-dvFwuD?g*P!_G z4E0q8NMg$OlE|DM0eyP;GTLJ!AW9>D9-;_;0w}H2_qLkoyyo_TA6y1KNw3suVXxc5 z@dSqVSud^P@c25(aE#Kf_CLODPr>&-bytQbnMK)zySvLj7TnHqd_J}2ZvXNBu=x(j zBplAQBa#vfGJoS(bup4E2)8bZ|7Dwh5B6QqCgU4KR&2MR1*He=ejI#+^tH>{_`)y zJ)6mx9%aY0)JHi--E5DU)lZPr&j}<#3$H5Kn&gbY_{%5mdVZYYMuztvCRs%m-Fk-dhY7ZBgWQ z)ZEp$gsjWN8=>gGfDz=)%Bvq%@ZwGJ;zcwbo~hjPeg+`gYK}?q>*y9D8-4J&j+2UL z{^<(q(CjP(s5R3F{N-O-6>_4oMpKhh0DMUYMfdtV(*QD1dw2T^h~kCKOc49gG-~+6 zG~W>qro3*7Si!GoB55(ePoSoWO!_lvPUpuBO_e)F?MFuBMlM8en4O_$0=qgRC2f3Af`W zauNc1%y9{@ZE>=Jbba0|C^x2EChuF=T0#lM?e@Na+u1Saji0S(XFA2naM$rLld1{R zN6i$46&e#E!e*Cu;NixQ-<8k6<7FO~+Y|V!0~mb&eixu710SgT-CnUlY^VEpaP%KE z^RnieuU%SBGHz-&8K!k&FpDU;P8AdmyY!iGU5}~f9&aAW4Twdm?A(w1wJ}u_jMDR} z&dS7=dlG7gGNTP2@=bLDm5P4XUfl?5>|S>oX{UV=FtM>Q*lDw!NAZ{%U?$A_v&cuW zj{q%&3X{wXYu{D^U-P*rlgYGfH?`(fNFHM$J3D5CtmuTOGz}Iqytpb{x7EYo2~Np( zOj2eA6)3;@e*u~nW$B%u#u`Mw6iyqE@-pKLi}3&;+?*$qfb@F3;8M#klAg0DJ`Z3* za^@(|)3L;0?M2iFO35ifVi7e9QlP>O%AT|8xLoorlk`a*<7wR-PBsq|Xi6BP^+)T?pH={`BB zi7zyDU6)YO6P;y%FT!R`v<6ERXg<|bkh*2adYN!O5d`o6;v(ncBQCNnEY+xUXAqZzHNH8i%!12Z44h3Bi z`3R*BqL_$qj-bx1_TWk2<~Gs05gIih%TxOAnU%8RX+%9xH}dT{Qpx8V3Ya7=Ra;Q6~hjLP<{G+ZRE;-|$Aol{JfxTwkG=ANS(@ucp?Njrv`Vr`j z$YtPYK(H8(i*uGFeNxvDzaV{y2&;f7gQgw^ZUi_Q8Geltxd0G_T%Mhp^xwL3#@~|O z&8V>w7%HN@3XH2g^Z_tdgiCh8xj1W4!eP7n9H-#^oXDIfT^U5zzjl5>?ELh5 zmEv_23&mVBR6z)Ez}v@E|NLX;t?mgt1%U8sh1K%V&^b#zLnFdo09mf=1T zm?@(ENJ`55_Fl1QGCI(+$nQ~*eb#Mnt~$=1Uu;XQjvnC8_2=8}kAP)X(L2hADQAUp z(}mr6V%|WOK0KQD{x*vLyKx}b|9^XD9v)S7Ht^qjXR@*i1_Tj=s<^LJKOhNP6pEr% zirTug)k-BOf?N6Yv!*WntV`)v1(a&F+FBvh4K-TGViJRbhynpcmRK->5C~hg$=vgP zf6PpnEt7??wfFZt^JLCF>%B?Nd(U~7bJ+!yg5L9aaR#mv!ZAgA_x)nku{rnTSb;7w3*MIX|AsaS_ZYv8sQue|0vX)yt zVn_zfi1sncSstzT{7y*tC~;;22x1Ujz$} zp|^e53-KSLVdVB;;Q>(i+~~aG*`uQ#=!Np?N3$~a3(l-8gUSp3RJRf3!wC%`k_R*CchS{(bYKIPy@~hDtMUZ6^A}Abb@*0orkPg{!gY8I?v>QvdOc64ldFg}i9j zEisD?azAj)i1Oh*3ZM$%O#j&Pqtz)ows1*WWm+wejO{uLSXJ=M$StXvxgQIp;ng1j zU%KmS#~{)fsP-D~Z7$0_4md7-ds=EC6k_QFpEgE6DEPz3UA{-+J~{9zCt^LHmKi?m zeDJ^QMKytz_5{@wb(#FhwxwSHF3|UiW{rM3xP)4Irug26mMob$G~%?z<#Wf^rcGYF z1d$1foEe_qPPP<3dr3j-ipqBXe~N7D(R~o`O}lzjSrc&y-7G$>nR`T5fvX^kHlKtT zg%!cug8(jxI}OwV@HTp){_Qo3M2;J^HzU43rUuKj&jY#*v?@yCn^~v5d*y>)%~r?^ zOl%c98+i83a(?yWQ0t+ejp@_TV?1DtQC4r|*Lh;4a z@c+_^SMTBNk{t(SU;J5NpxHoM|?)lA?O}~B7StF+9cW-UmG4TD9 zn#g-IA~Ej`iM%(jiw#ZR-8wEj|466R0wm{|lN)fGYw?@i`A}YXzk;Hb2i;n%RWy1H zAFtfbqc5%EvU~El=Z~N9e#w@mxLBctX)+=d<}u2*$^t7?chajzGA};#1N!yu5>m?3 zXp{L^4(q<%8PbHH^Ec&8{ZsTib!a8Gq-HKk4ZbimGyhyf?*|ake*~GUz5*cVEyFVx zj|{FeVp@K8ESc?3uJTV@0QmJXzC9;jnQjW(dR6Ys14vA^-vw%beyI9FmvPO0qcrR(+l-js1Pbol zzGH5WV|!kQFw7u}(kAC-W69^L+S~S+YeD)Uctp7^+__9e=85X1ium5fMHU1cx&Hao zn3}ZA+;@Nm|RqG8z zzYm;eD(xk{@G#od_Lvr9z%_@!RE3X#W5wvww8^<|h()RT%+#+1l9S!Ls_8guunwcm zG1?bCa>jf_g1n3sudV#{Z{M>1y9hnoLBZ2#C|Om-V}B`S{C$PoH~R}d_@vw?JUDo( zh_+i`Dd(Khi&r1HEJAny{Pu+saz5S=BCG^(ppZb)mayJFGVUH^N(vnGmsAM|119-vZ{sqJa=quCkD)H36Ma+G+4 z>r{CJ<>x>W%B!Y6@yP=j_raoFM-47~^tAuJ{DCzopf?9*zq$s)uV328!#^L$Nym3w zpuzwRjfSObc2KaQl8;waQCsJw$+@qYWkN@;BAUyJWq~zr*dQLAk`@u+R~4Rkc?qw) zyDF@P))|p2H|9)@w5~V`ung}TVSCF3Sr_;!A`8`M1wnd%01cfIYFzboGXUHo--YL6 zbg3dUkmlYfWwWc7b&;vGCn%DtB4Qb{%&N2I6}+4gu@&UEiuz&dl)Q^k9V>9WLan8; zw8pM^Yx&&qQO}<*_`}FusZ(-q#n9Ih^%l*}2r7~PK)M@ zdT-dx#e=NGh6xDgqa>obC0fXq9?-B?eZD7N%N)SLl=6_O#*3@D_++9*v-oX#=7+C> z>uOaQ3?QOkTQ1i>qWGjhR+cG7uS=hj{}-crsVMP^eBl;(&1>9o;PL%V6I}blcv$kT z8r^DHtyiK4Q}pbp4<}BXe`ZDRW706zaF9NNHmd3-EZ!}em9Z|emi$^(<5gH4p5s>6 zdM{=MKmi{$sikwC8P`Bo)|j-d=~rRt2th5BrB-E*yv8QK~;ftueZqP49 zBl`(Z{OlzKL#CIU6xUFDHE@x^O0du}we_7~6Jr1oebT6Ox73dCeNjo+s@gaM!15#< z^q0_f+t*H1Ve+{JW>ouzcOFCZSPN?1mp zoYFt?-s>B@OnY)M`JV+l>^AMC{n8O04h{}S6YUlt0NFE#)?GGZU&+#$$t-{hBV1X6qwz%oC z)0jN*+^C0A?bubvl*bpb;_I#9SqAiu^$VxG7*WZ=!NK7O=70nUz9_lsHlcsB0TDl4Q_W+qtn;rl_M6kTG-*eTb{le`6{4ntEU<>1 z)0Y`PyNDC}c8!|9bae%H&&+50&Vc1+lQP~T$WOmnm>Fr6p^^LAvFRQ5K`FF}#y0*H*bP>^xy6tG) z$$&mxnf{aW7|Jfow{&GvG!1MLB%@%XnhPN`8N3HDO;NWl+a8RNgj{Vj0 z8?c$9qMgH64W|$2%+v`dGN_r=2*9R_8Wt3MN5SWn)YRMU5*QtAfn^C?bY^dE`oXCT zJ*WA2U$$-dTh3aZnfEz0wVtq552&)#68qY(-kMx?Ko8l$!NK7$bI`)%j=gW$U{#rq z>e=CM@(7H(IE6{$2aufD{9#c6Gu{tA-O9%+t7!Dv(I@@zbj+=<(6NN9P@-&;eed{g zWL(^jE7AtiH>Febf%+-kP{qS9e8Q@4wug+x|6NgirgLxZSw8odQG@(BI5;>QO&ruX z>m#!A6XW-F`W?vBXp?r2u5sLO>G6!cs26eW*iP}g_cc9ToZ}eSjAA^PvWh)C|Bsa{EL@M8s9RrEYWV58w{Jb< zp2Q9g4h{#4Lvm2Z*t?frZQ%b@wO_PJyJy!pt{HVamk&9Pg!tA)SJ}Fwj?dRsvti3# zHdofLd0QhQa-D6q5c^7|r za}_xyWf#4h}~XhwP-M@mZfGH|(+RGw6S#8V`}HfNq`L zOi1s`*o%A9vs-+u=AvR7WqWl!yY_jg_t-ReZ1&ap91-K)7RiZjIwiX4oE%4wt_dV3 zw%v-^sIq)*C9matMeeeH`Bxm#Ryn%CHgd4qq{MLBa|S1!4*HyPjW)vOQ6p`@&04aO3979U?gMLaQ z0Jg2H*|d{SOSkdS@-3`fUlmh#qN?=@FIwVyqBQ%af5mLv!NI}d-+;q@Sb4^s#i<6# zQZ=Jvnc)Vm_3xd`d8Zu1xhHpLP~Xn<>y_N10=_lu+S@=`#a>D`?qq3cCCk@tqb4Zg zZw%|N8dZJKEAqs;?4L$PjCF8uaQHXnunUj?Bkw32F2e0b84sG!k~3dm61ObjxE_i0 z@14wm<2rFnmw1vB-6SQrNJ?%G+0d-<+%A7vGL*;Kxl zJv9wYLZLN&Cq}hQ(3d@~xLND|{*$W1@yr|?92^cOM~naokTGddH#;HzN~3xss-qQ^ zm}a@rCjI8pQJoE&*_I0GE0Cw?9#P&_wO?5^|EApVlj$5B931|WIN}6IFe5VaPqIZP zqKpC^hH6qvejKr!1=|_I|J+!6h+_v&hFLZl1nFqmO$uLdXu68ieN8b!!GLU zV|y%*K6W3=W7o&t8;XdcKGH$yNbjBW-g8N=@6P+j?A*<5E|nI2_*%W3Wgi|So`#-08YDN9$)8qfY zMUBj<=1|C7X$y1b82i&)YOtSeVhm2kI|#sG1d}Wx0oVb=0!WY|QUf-)F4~F+ivdOn@Ozwe z_nsZ4D_1W5!%=czCG}Js22c*55`Y6h9hh|D2cWivAEGUgZb68Ep)UyYnUmfwMZ*;6 zKDUX*aGFjW30eoB{#7>t>Fe><_)&?AfzB4H|St$HbJbsrI;b zovabIBno4MN{m(&1}lN;lc>)n!S7Q1?#h~~^8E7R?Cji}jJ(%hfBkT2X{l(3;)QPp zBB-1OlD`1yHrs%s%zyy{Y_cp{eLkPj@An%hrIM7rKQz1+&c1GDq{C~#M~e@l#^r8O1x2X}RgfYY zR%t0v!-7e}fTOAk+9$?f+QcDPy>?ykl3%{~P_4^dg&>gB0q{{u)doBKC!{7^ra4e> zk2iDo?%ksvd-7is()$db>?hHkOX@6%<#ooW8aI(@T@+4F!xlcH0f@2?L|K6-v)|P| z+FfRq>I!QsbGOa?^1WX^`|Pt^1ij|C7o7+wAwY5(ME-mv>a;oR&RT`5i zRSBga02L<^0skLi{}2L7h(uEpsH1C#$n(I~rwbah2W`VV;oNqp6Oaj-J$L7Uynk1E zyeGC=DkJTr5ga`fq8Fv@E0($hf!6DswwUb zX8~ZDI(2IM`~UH;>&#Kf1Dr}k%8?RFLRKjZ>Tw!@SQ|m_WN%fX&0QiZj;xKV7tg!z zo;x;zZ3v?4HD3s)<9Yt1BxobJ4Kx}+%VaNq9hFyKdFEqh>8@`9WPo{Yx$!4fX$jyVs;We3 z!vY{;;>3x`PrmT(J#IO9_{O8=cGb@2cb5RLmtDBKapVlNnEjR_cKe5b{l`90VEvRECk)!sjeQ0uKcQ!BdZ>| z_twvM?b=n2@C=!#-a0Pp=$HURLu3OO61RtB>OWx2bx*zW)U!Q0rL+Uzy2617A;8it zIr#4PgHY7^F1ih=p2CAl6ZbX(P9nfW+bp>LvMG4uKW{D1-@o{E0EfUPs}q3#&$e;t zyhTKb!wkkjMUEITqTLIxeRP-K)M3<`L+0cfSNJYU1n82WDygwGE(spL;&uD|K9^td zI{jWxov)&-#AS<$HbvNCOtR5xFqo_cgVAb`j21&#oz-->)M}}7H(d7_X=-hHe9e)? z3qJeLlaD{T8B9&#M3AEjSpa{w-{OCb!np1;dnnLh;hG~aEjyH)-qJcJ^{U97I;QhI z0P?}sWi_<5i4)A^>C|x+Flj0QK+3|EoB#P+PVbSY0zgDcvJ*Nq)m>zvmHX$B`}s`_rdP2U^dhEmUVLRCnF;+C1yvEY|q4{clZ#gkCIy8#q{aXbD$i(Mp) z!A}g_j7(2YkN@Da`S(z3$FXY;no_Fj>US%`OwhfZ*BfW5sH-i{u3G%dHyQKh&M9=e z-Fzblbnb%)-rA>*xPIn&&tzm|lp)k^#8q3z z3?i)p5CJ@50i;Tiou=M=+cOW`b>nqrSt4P9f;|_$lvcU$#{A95F05+61FHemRyf;9 zgNFGqDy>F<=92TyL{4sg#ecth<4NkRTn8WrOz-Mz>zh^>?-wzE(>80?^}YY^!55!f zxZBdL+)>~AB`rzy_lzxZtRw=x865)JBA1q$cYWdva8(4j-*4L9G} zb;zi*J9>Eim66~Tzuz42` zpaX!e3s&rXY~|6E&MmF;>>g!B7f$H@1ekg`A56tu3oX0ENdOQ&pCiC*z3l;{{_x*b z_pd7+I8Z;2Pc_BbBs!&^Cwu8npS<$qV-K%Ia2@HT`c{KTYh29;g5c3DGHLKl|9s@7 zSr<$?OKJ)z8vD-YSMdJNJFsDQP6J+5^+BXzl~#DwR-?8P!9Jn}>>|C9{jGODJ-^?G>39CJm9*1O`1Y|-2emJ&Uh(VK2VZ;X zUk6lG^&x1O^B~k~Dx9|z5FR|tLa}I9)8HXP;~stbjbRSCTf&ZPgIRB=AJ7HPbbHa- z3#N>Es-~u<0?f@?y{#QxZa7|!yF9ASD0Ns9Ay6e&3GEzFWw9d18l$Ts| zR?nvZ90l{3)exn*KJ{N0~=2X=YA zUamLQ7ttsuZs6j=)dyLL#(JyvJ`n&Swr$Pcrg~ zc4Q)=Fedrzsi2FFDl&EUU_j>K;)kl4w z3KIJx^ZuyE%T@6>)2e;2w~OgC?bnstyG)%p=&s7j%5ZB)A%wJ;5oXq%u$z$3b6&z>ot&t3e|x}%Z(j~4li;&VgOd~R3%nyhOsxP6Pm z;iv`cSB+5W5L6$Dfq?bAIuM+c;o?hphUEw_jx-8vE=4U_{Ht@x;$I7{y5@$i*WCK> z8OsmYW86MAkBcf5dF~&EK2N?f=l#(OK7Rh0Cm&gj@EgZz5NX>aICM}@+VZ8tVl0j+ zRmkzAz&JK61=%614oPN8U+cUaS$2Qy&Yb>;~b>6kAWl+ND={& zpnV1;LLd=9g6=8-g#7^^>>0wZl6YkWgxxFNBZ=+E5@d;B|KSXnjFN54lv|$xk$QoN z<7Ukkbjm4=!JLDK-Da~TeKBv@TR&~L4n9)gGjcT@p(@Vq<*fbfyJ!En^OmdEI2?{r z0L5T2FgalAx*V#W!O1W0bglj37r%bW-Oo3KMuCD$(t=_UZUwwMu z<{1+gP3)Ri5@!SD@9J_Z_-2hiWz4xZJ$cvN_m2QGVA{X{iKqB)6Tii2YLW=0H0Vy> zf}&{|PBn1Ur&jjoWS7z^zqI;r)X;@1wmb!-CIAj=XYi4~b>f0Kw-p#3d)l~{@d?R)J?*i|ADB$;US0UAPK>8cGFH)=?Su4i2Q z2!M1jBbw<{gGdAEB6!eN+%HQvKC^hIp;v{&3sqI1stU{oimCmotN#7yHOs&J?1Q~v zn|&eJ=FUqV*rs0u1_V5taW$AR&H*N&)M|xGD*XR7+CA0UbLCn)#adhWS{uB*d;rA- z1qH>IP943lhk098*CfTy-&s)=EZF3Uzx2BMpBOi8TsJVc&`2<_4CEjRcOC;d4sb9fiNHvW;5d;E2`JR6@5ZUqOY^b zAESQT;Sy9HkJ4Bs*g!c^U=n70d0)f5hd{?9fwVoM2zqh;3Chs|pRq>ndd@?SJU$Nf z8L_~eX-?N0wSj1r$XWv(<5S1o`r;EW3{FpNkDeXeSbMkvnWZi^hLnPWYW4^UsscWR zV)51jY&lehi$--quZ}SdwA0u-0GCYchqRO!y#Dnn)VWkpO2AU+FtDJM1neY~0F1{;8wmtK2!nlG~V^gVmrCVqc(gp6VBbBZpXHes>P=c`0e)l`Pi z!?$?c1vixIZ5`rD4!5dFn9pJ=Zv#S4j^rT2|L+Chd+g!6H{NzfX6>MJ?i#i|3uXXt zdx2lJ$=$zQ@Y}OzjqdvZLJj%cG8@jQ-xB?~*vEQVQMGXon-W4;c=~oF;qT$bskszx z?8E&o`o09-{kTLR*9VSpZL%5gW)uifj4yylYYZ+-E(r?(@>_ys(&&~Tc&5NgVZPQX+m z@x){wbo;FjU!0!G+_yW%Suk^C3JR*+SbMM%M~Z8})1VPT*rrWYNB}Bo-1vCOLGR|n8PdBWUc7rcUi@@9@`@`1;J^&w2!IMzB~Y1d_T0Em_;*y&z)b>` zs0KI$lrTfOq)Hl-qj5<58KP)_1bDn&{JeNEnQ`r%|2OBo2RDJLRRBDMkdvA-O9viY zbrk`?e$y?p2lpK@{nq*GT{eEdED=oVQ&)A>Mbnr1d_GZ~#3hYtga#XhGm?k&uaW*z zVI$SMz7Yg7i1Gw*dZ{H4==A zdkLWlxf}1ID<81Q<4F zo-_y`g7jen(4oh`>33W-WwOk^3*Ofu)`A(M+M}>47OM}G;Yfi4D%gw(N(2Bvu`jy< z2Xo7D*1!&!G^8_(21(au)F4B%q|M0#ha=MMbqAHnXPSj{-2&jD7<< z8B|YoWiS}xuAlwzL!bXv7f*!=ecl;T-D7{haYaQ%1qTjZICzN1{)*`ifL0`63&WWQ zzCv(Q)1UDWE|Vzkz4M0E-~Y18URj&cfiIklLdBR8+vS}5{{HZqS6_Z%HH4#zg?2~J-t4Wd zt<`_8pcURWoOIwJj;|3x6^NKtoR3EUv>6lEDle=SKXX!uvi{H(0tf-2k|b4u*%$+P zz1(g$_Uzds?b)-(fCWE_^Vgi3ni@U(u7^5}>OI1~DLdL!S?h14g~n-Lw##_cxCs}; z#KbJAs;UwL3`NGVQEE&AAz*s31Y&77;^tYm_czFL@JrqFPl>f)=ID+ns&Zr1zG588 zuZBu!fOBUXHK3{#%eLiW^T9$~G&UWBx+R7-+QhQ5nvHny`bn6#Y%9KBx)mzZGcid+ zWv?x9*I%LmSct2y)(B+}0`1Xt2 ze}?KU1>ibaQb-u-Bj9!Q?nhr;xoV%<(J$mx7}ZnuES&e&=FOY_$OfCN+>@#d%*N5s z#U2HeDVG77yq!u7|S`mHGAu9*Is(Vt*^fP!fu47 zI^kphV7cX%TRPl+?~||8I=w_yREdHTs;Yzvn>e2)MhPCO`fAezL_4L+ZbP?ZvuGBKC75YOfEWWPDN`}iA*4lc_CGc^0j$qO*lr^=3s ziHS)_>p6Vt+TZE|zia0tqv|PKfAqum-r5BQ7$sUM1Dmv*^AQ6BTP$(3gm}H$eiZH` zHBkj30gx*yDhy9Pbn}XPpZfINr8`s`v>Uc(8B?Eo@%1T>Jao?j1kZ=yGsp}e(rh-T zY(MH7yn1(SNC0I+WHLywMMT3M8B1r}`DVrc{o~E@2&2Dv*VZ+2@3`%TRj6;T5v5Q5 zn^*uuMMlL8p1;mHzO35Yy1{A&_38}RZMJz}>PQs;$;fxm)q9*{SFYXp@6khhK7pWm z5)h=AR!Ab@)TYt7WlF#AR#kW4H_blJW(4pR*lz*|QV6AgF$n}{l>`DRQG>xyh2Rm} z)d-%9%J*RLxCNd<-d+Xxup-Pe`(S;+zb#t18rNTY-2`H=^#yZ@Gve5E+f7mf(nlnK=(j)ode-t? z-egL(G%i%d@H9{Ly?5Qb8bQw|?vh)D@M-WUhP3ffs-uW zQXT)*%IY2;F0DJ$A2;r$Ra>&Yn=|j1>%si!MGqFP9t*KY)i@ls=C<4F0*Z=?3Okr< zc`SfzKLg)A2Lhmeb?s2D$SXJ@MA!F$Am=N@mW@{$Q4XWrbe_iSAJ!O_88 zp|p1XINZjB{{8!>fX!tKLXYNclJ%l(F;-kPp&R~o!2k?M zi-$pTw-sYDR8Xwko`t7BU4>2i^P62a0CY%-#dCLGhQWQh1cL;@TzCn<{!f@&F9RiZ zPl&6pc&}ChKoI~L4WMLM`(A>oDyS?kmU|37{}!;sY7yba^aPOJ_F?PRty{7^spr_d z5~sv{zPqOwlvPXT?Nt;-^th@(eegJCXKe^z#no0EMC!mmguizvJ5J7ZnLMCOqmrs-~tUMpYDYEdKL~qF~d3YU_uKDtc!+yFavU>(Nig zk00L^p+Sw@))B}8;H;~SQ0a;F?Wd}O+S*zh*oGYgAkOdi8B|rl_9Hd6TB*xb|9<7I z^T0qP3Sj~;n*xzA-eqE*s~AO5WbvK6-mm}?kU(0~PqbkPgsHGv_`6X`4F&^emUyfb z*ANt;e!P?jEScK>^FDm<&0TW!j?$+N?>KoCGgm1CnWz2U?jqE!$l z+k2gN+qE|aj1;W}5ddfxYsJh7Jy7Q8gcaMfu_vPheuV%Mg{0X>YMmZ@xo8L0?aaiC zN&V3=$=X5%JYb@`=3pWL~;KlPO71E@PuYOF8@Odd2C_0k(3-@Ig-Gm#3q zsGbCi)#~_)s zln?2Q72C3~<47?SsG8wg1t^e_Uy0{GUxl#)I^*JreGy?XHe9Jt_l&6{k=h{vAIx0} zm)irDVOIkV&6^4;vu#j`yXXow5FYPAcsz?5a!(+y7BriVN&yO#mK2hNPJ^bE9$B#o zY@_CeuoFSzgt7pLwApO2rl^zw+V`dEg$8BG=nIPN==3C8Prp zKZ2472apH=kxxDL!1}Kjtnd1Li4x17UANzp{N%GQpRc(ja^tocfW_zYX`6U(Ex2on zJXc>baVzR)_XPmh?RMj|X%{4oKWAF!xa6*}d-F}v2Xoy4V`ZIF!N&`WI$k^J%ExCO z*mLhU-+X-lY-|+>Mo*uQr;iD?eQ57i$89&x*d36l?T&g`AY5(-;l#ZL4G7Ii$6c`G;^Ja+RpGvpNK3EIwa%7%W_f9J zg2`lx^m@HqlGeLrhoulm4+$KUjO|B{7#B8Y|FPt`;@>6MBQWEvK6r5ENDS@O9!3MV zFAyymBgL8>nRxuYC0MgPqwxj>8aXf>PyOu*BqzjZk?27+l>`LTQ-O$e!t5kOxQD5` zG`omIAW5=d50RJ+MP}+OS(dPU_imhX*5najIkK!c0cxx;5!KwVX1n{|`$z1~^2VxE z1uy+NxGUd&>(yOg>Z&RP!9zSpx~-n>r?-iS>a0qa%T={=)6xT-l1wV^@6r5P(zWNn z5nw8s2ncE86-6DD`jO!0+psK1Qw&_z8e6_No^DA$E^=w>R9FO7`Bame@p{@`}Z-+Bd8alqJs`B7gQJ=24 z-%;qtq&cPSP17K?ravkup9|q!vc)(lF{=ZYRH_h64^#@EY{B z|Ni~kp}qvt=zP#`bew~UmTak`(|Qk;GfJIdQ;{4G5CMSrXe(x(-4736GZw>pcZAWX zZQdG~INcu1S+ot$f4U5r`4x>fs!^xp1U!51RT$7SHDE-SBn=Qq5I_QU4b9HM4Cy@G ziKN*{BrVsM06Y?b1WB{65Y*Pyp-0zFal{y%3brT>$2)BVA3B7pb*um)M~ zKs9}Mmm~|_w07|UunmfX2N!$m8O%?>d$yW{_Ypa5HyHTw+*;KyJp1^TGrG_k-e;;R z@T%4%i^ak>alQ}?lv0_hDiQA`5>d6f#5`a;$)lJHtXNgmiud1rbN{R>&RIUWx1*?2 zf>Gu5_fV-?siS^*+5_pAyOs&ZyDG>B09Y4z{c zoYGd^c%kombNizi(h+nd(Yv*a@iZJ%M3om`-xUBVmM>eD(ILj?YR$V;)hVX#-Mc3u zJb*MfC&B@U89;2WzGEij*Ac8bT#B#%$i?z~r8rvZgkJ!Y=BTWi`(0eL6*DLG$0M^Q zU{wE3Fv*f&^agSZEAi47%kbIH8&T`@gs)VfNUIqS-FgYmpD>JhSxFMhe zluGOXvS5)UNda4UVg}+Y)HhP*Kuh#kQBhHL`Gx1K7}d>LW;IEHx~ghCsP;t<95G@< zD%hsXJ)I1c0;(2y&5OZc@PToUMOxc>ubYMdgn!51GZzeiIDiD=2&mAe*~q*eRaHe% zxl3BL4@2fHSo${vjp~8-Me9I>P+cFjnI%fi!Vip)dz)L@=4@rus{Yhx%P311TqRaI;J?y9=hyh~NBYV6o4H37kS(5!%0J%GqylPO``xamDzK4vgh0pwP> zupfd%`1xpfrEpHBxe1ULtTM)@7srQ z<0p*<C-kVWnICJ9pXChRM#1?{%OO%MDfNi>E2qu&i)6H{fgqJ)3MXIV+ z-hSidzfT@y43U18Zmx)b`0FcVaj(VO?vB{k1s>0dv8dJ!bkrZcV0Kj8DbgHdTmt85Kw&GFfAvP63oka*i zX<0dj4D8z;vLyv<137M4dc#Bj2O^y>opHli+YULb+^0LjBB7!z=t^t`lYR(vZA+4@glW611%;o#!dP8tEPkJeAwE)-Rz$SZeY z<-THkx;g_3cjV(>fdf9J{=l@>d&_RKV#bs+@WgFXapvH3n2iQVgsGy6%PaBbS4;8H z{NLfIbvE1pfX*pNc>2Cs=$+oVexP7L!qEL+ls05JsKyEy(u08G@p_^9osw+pIu=YV z!1DqfFA}|9c&vfd7Sq0KrNb5Q>F%Fq_0Id|Dp2HZ2u`9Rh%)k3Ar)PSG&Qfr+dAst}Ap;ef)=MyYuDg(tU+?qzm{ zv|Zwloj!efI)W0AfvWttQ=x4JUg6qqX{kf#QNw`*n9Q@3wdeNu@Z0J?+)0M4+PG*# z;63KADu|za;f?p7ciwqD5NcF6Li7A-E)&F5ghI?lBLLFsIFPm~fzZ~S2htjyoX$ol zI-B?ac%9B#mr-u{`?%a*SR-sUgiku!An5_b2q0?s&~bhD=hva2+>6X24+_eCsH|1s z_Of>m;l6n=Af?DDtHa9O1^9TyA^f~K8~buAL%`%%4DZpA7F;oTFrJz{4daIPfW>SC z(fYQ1e2vjdIg*s(=e@zCsl% zHejA&o~z5ap^{4ql|@BGA=c;-k5MtsVnu7&$F4={Z;Vtq#9rixd1 zUd)`V>B~d=3&|kebLR~O=bd42O4@g-qTdF51|NcuhALy z7dsCGXjOlXA-cXHW4qsKwaQ+fzs2uDK;id!{HTAvOrs=jaseOmq=cl%3&(aucDW1L zWiDiwyHHu<2ahr^8wspt2^J%P#R$j}1)*AOgv4Cha?5IvQ{uqyyK~VYE)qRD+R>|H z98AW>CF7>1sx8uj%O?%R)G__BWc_Yz*m)Qp4~5U?$A4FC#UDEl;<9r`qi=eru+K|` z;F^mjp-YE$`1;4i@OW8{A_{1RItd^Yfjn7~0#yOr9uI2koNzd5P*qg}ug{}Rf}sC* zPF^1R^c|eIi>XjflmrsULu9wxBfScYqE9_hT%04-=V}uD{{L*G=e7c8i0s|5DJ!MZ zg?$g_R09Ais+{Q4HKiSx1mJOVx5)MPS|4; zleK&NU=oNF)Zz15CH=w|OLKlBs=Mkvcmke5oFv%``H#KXcdsbWBdfJ70W{@~SG9 zB#{7aw+~L23r?pCE~g81E*IP`H+aejmFgl+1525rw5%M7i3yy8J1$1_F!3K;0x=C7 zI54r?;WeoOCqq@A$VH1mYJVEll}K7}ArEHK8xP&NIhkbxddZ4PSw_<8Iya*2aj{_1 zhYC#`S1F4<2-K?yW6&)?-DlDE6l$yl>ik}39nWaM$*%^Y(7j+rbfRxtn;P{zZg|_x zl@PTU0)1h_286UJ$p#gGbMKzr-tRwu>EPLy-q(Bi)(SHKR5)DZhc)H>7ySDB!_%gW zeHQi4f$z88Ao`Mj0rraAJ2xF)St-U6Z5HH!Tr;Qxjn}g=QpfuK79AYR1Lq48xSM z1F>w~PORI$A8xk?`;O$`*|)#N#1R89b;2;na{c{0ty6nEanDV7>WxpZa_ttlU7q0k z3s;q&wg_lTlOnkP1g}1y50Tag(XakQ*+66f#%|rZ#a7h#Oq`pOB?86g=D-nhFcSo~ zz~lH%CyT_5U5woIWMySlj*Ebgs)`)AkyyD3MuDcn(n}x>ERhiRNg-RX=!4ItA9r5P z(UJsv-yS6uPN4#c=fhF~$P_?538Zz2Q(Ho`o&+KpR51IF_vZ!kt9tb6XBgCNV$bb| ztBe4US>TYj+T+K5_SN?{Tz}1FAEG{pa203+bDB11e8b<{+)lOGsjE3Gv{(XZHBU!$ zC2+8pWVA+5wWh@t+9PFpbjQ(3gimwRAc-?s0$?J>sCJ2Qu^~5wGjb*NZ@nMRvm~i3Q3`iEO+J^5ItwUKwHMZ}~#5ez4h5K&27(@GaulJlSG6FCD<4(Nw z$#?kRs~@$$27!T}P*{IB1rT8xXHWnplWYKp1)#?pK!DJc28Pb5>B;5Q9+}&HVxlZ4 zFUzY$c-?qgU46|ZaU%+eK}S z!)dlkq4mpel=3#8r9q=Cyu&8dm>?5ox+qk6t%QZtpUUa zl3L0D4842zwpY7kTWiKP$_ih0cD4geoIVn~Y zJHcdZ*;y$Tvk4bZ9*OhD55bR1H{i=3SK>%!0dD{2TR3OTAl!S?B}j@7J)2!31b5$b zC38GC(sx9tW;JoEpo}u6?JZ zLr0wfZZ6hlL}5X8Il>=y)NHPz4U;H^_yPE9Yim6wnfgQY@5I34KV&cuEQ!{WK$<-i zdNo(TUeTjxzoZ3Q9HF{@#U~~XWay)B`@|E~pZX`U9Ai9MT?JtJ+a1@hn)Cf)>rXX? zl&TsQocqh_?3kM_m@@miS^M+9`25qY2vvVJs9e{d@zI0;@)wgp!bq9TdFI$9kbpWH zfcfg{ZaQO6h9j~yV;g6aeFqL4s6u^*j7F)R1R@zM@$oS+4c*`Dn2xw8Ge-7G!l>R! zAOxtY_26J$1rB7FV}EuT3d0hiZ@HQTeWdfQQ$4HAa;>x47UNW-wconbaL zU-Y+_jhH!o94?tM3O_DckI#QthNWw^V)Y+8ar2DxaLvW%z-S1qZ_0#`Nb8(}J0E!- zIeCS84OPg00suopZ&Fnsh%qXWdaJk>%kiWTt|Kl!F|KMyO<-X~+YIW_okzh~jrOAp3lgm$H#8X{0y5I)rK zjk^947C7n9iVuKERn@55Zn%8Or{65R;IqYr@m}pbo=<-{m~{8e_y2SMzCHJB-n>~a z!Kw(CBS}BLjc)d>{Vm$+G!FM0H{+=m0%Dl6fC2%<03rqs9XI^#A2M51Cnu}HQ(IP6 zR)_k>BR9%;>H);iF1bsx!O%F@-T!IRQ%Uuu0jl`b5D7%87YN1U6oQpB zdpJau0Uv*MmCRPLPK((9x3k6t9dHNZ7__!2)z>GM=KfaP9??Ls7Y%7s%W_-?CWW}c z*1o5@x>|kco*NcF^YZ7@KlwE?n!PXZ?)?3oUVQ!Ie_b|x!aWrg6(Tq4L+IFQt%bJN z=!?_l-y8Z|iyt{TMC<>?&3ddE9nx_VVjwYh<&Okl`{(1&jN7o!(XKV)8Wm|mRcUT9 zg6`yc0BMl)EWH#H6Ccf9ymdg))OY;*7@HZR`gO$U{vAOGP~-GqZ$>fp94*40BZbH+ zC>I8p!sYQ{)#gL^ebWJ$jWR~`?}7=#dSb-DZm={1OiV@tuAIhz~fKKMq!i&1E+arQlU6#*!8L#GI7ld#jI zdG_I2?ayui%HczY$S3bS^V`MOK0N7%-*X}WptjC~&;EO~$G7trKQVdY@P8nfUfeCb zXRuA(_%=1XtvL^*ts)3h7q;4n-k>C^6_HWUp95qA5IuD0(9R>rPn-V6w|kq%RqJSQ zk2v4FZ=c2biU2|Zs1+3@)#44u0wOJWHagOb(E~bT%)rhJQ0hF`bF>h< z4i{k8!8{zvEeUMkZjTqgZ#szI{@4ezLB_~IT`^&JZ;Tqm0t_1?qrrg7&L5A9ri{f; zOV{FqISVlTh6ix-jA^)W#svY%MwTQzc;^l1)1xaMe&!W8U9NiSs*q*ERa!&>RXh%y z7`IuG8%B9qag{wX8Wq*-sOw6HOX{4O9tSm`uZ9PyKCDz%ilhyh1f(1DUIx!dm>J9PzSgLb=W(Ys)nzH*F1b%VSaRB8c zCcX=Vxaf4@6v2FA+*ryF-;$OtUMQt^?-e_C;FJ+-wilTJprFJd{kp+8u(k^z4m zw?iCn5D__WT9}tr9%~kBM6~X7bBpks;t!$ z1*TS_U>gHh9q3699{RvT0^PYAEDNxzuY*VO^LKO!&r9#T_3E}4U+EUpGqq!%{h1X8 z0N8z`)YLA%^W?YQ`6&0UJ8u3?tILDXjIH&?x3PVve#}Vos4W}OTN4MO<@XABRf5g4 zfD1T6rA+Z;&PV_;cmCf!qo!Rt>+bjF@9Wr{4CUd-WR&4^RaPK;=89$;(fOqGs(x2l zd1WP%6B9yiJQW}!k}blFQ3JbT)WEI)0H@oF-G_3qV}CZb@5{vgj6AqKKCIlh8!OiD zgxM%z^x$4Nd(;4o8QKRHvng!7vMl4`^Ty+X$z$=$vNd?&?a%Pdf<<`r?wir2BeU1^ z?%owYefbXVdiW`<-M9rDGQz2}R0>d^qZq-=x5t|T0Fsq?q@v5P(F%`&sH}D(E=LahVbh!0Bp+eLLdhSnDU5Te5MgfTa@Uw5PTDG~g zgIM2LBRhINdHj53ZxzZ>u@-UfXB4(L%ImGBT=<}8y>p<&Q+g% z{bN*ll_j;fyp90CvJIKGYp3#{Yt>yhU%am-N6o^>Ux7Bgb) z(fIuBm+<`S@8W~czhMuBQE7R7Dy2RLccnd^fqQ!WzjEZrk*YJ!GJ2`1S^>bXs*q%p zcsNkAGHU+GC`2Eeo}M04Uga@z{WBo|RlWR7Y3?yZp+awm07C5$ocn|D96xs@0xVBd z?5l6QcS)5m;miXW86na~#~5Gf@?}f2!4{%Zdq)c)giJGruD;^xKK{IX+l@1peD&R;i$DD}yPea`gt;$&*%N=y zHCNxif8XxXrAwD)B6wu55n8g!X4{x__L*i=89 zl?8w;EiEnijdwo1ck@B#$W^NjTg4Zh=K|F6Ggxv4?Z2q8F^Mu;vxz9JjZ=@XQXzDKsGf03ZNKL_t(_ z|G4|A-@)cBKTpPu(D<=N$pAo%xb;z=quf>JpqW*+1~(m}1VmW~>{c1k5pn=nVj_)* zwHXm>Ga<@q3JVIyVt8)}SY(wx+82x$F+^gfyN}@5*0Km|r z&%o{*mlg+n@Z(}EC@eTqfuM~*0-NF?e)=j^B{0z7+@A`z8FH150f6cD+i&kRY3gNH zcxc2KUoAPDTv%EYGDFWlGtIqp!6$3CZQYUs<|69=TZCq4Iix6#Df4QBq^gRfy+4nR z4;a%a^l=%&zd@BX4>$#M<62NqAiwgj2bbM?-*e}F{>%O-0C0P}czf=Sw2waj{?VzE zM!%>i3Wauf7Nsg_NgrD^9&JW7i|rjQ1L{ZCT=zvF>GKj3>(-Bx8nj0P>x{p&i(lIr)7BRl@BrEj6Rq$ zVHC!X8Um{ZCXz&O{yF0@_3Uw2v1S8y?>m5V#*an6-aW8z?&rAezK5`O!zNGwDaq~N zaMaX5bB{d!y$EpBfpi)sgW^Yz)d|mM|*zxVg>hvQozo%p!ztF#DuuW|Gf9v^oWRvT8qW%GMP;tlgTWZOctA> z!lbB(ba|0@AiFaDxifDS}9 zZQ5w)_RHrR&Kq<2nZK^dumV6?WevVwa=7=L?|#1h%1h7x226Uh)@!ek&A#;#NE-zZ zv@Q(_xDQBaAX z@CNW>AqFVDF>GLO;JQoT_4%-S{}KGLZ8sJyS_ykpBqod=iV0(e!)h^u5Q1~YjRvI@ zyY?PHWMl-=)4JfBkKV!4FTRQoKKl}Vd-p2DutX1>0DzPi=j6rPtsToM znO$?!t~~QK7hE}J?%cVX5R^m$Qpj;it#YzS?+0%LU>ZJrcv4ZhH%8PwcSxS)^Yn@`_Z_w!Fb>__kR{4C&qDj4gW$jR0^Yt4!V;V;%hB%Wu{`^!LAQ0bo<9DuvnrnsVd) z3rQeooektvkjW_H){A@B-h1b@OME^bKMt7#h~ECuB=U2SS=O|?8ok@ zsjWklEfP;Z@&Nkv>4kj<4rAHM4>y8sA}vqKABKdiup#OzXonzu^W{fdFSz#6K|ifL zU;%*IIv325v7MmBE8rN8C~XVWz;V7N0G8`+xOL3$+jDK)`^9WBz*|>dj?e>_41^F> z9|z)ewwzmxkBP*zab2CVQd#=*k;b7yp3S09hHEndJi3mB{r-9 z(>;qv4mSlLs@5+jn50vS;E9vm0IMz0CgU{RyY{T2{e{L_Si0+=9 zUnv2=x@}pOOD6RmbH$9Syx)C0r-G{NO!Sc28x*Jhg4uZWaYk*BWLd)Pm-l!6^TFA_ z<>ch#g3aA>uz6Suo&BRZjAl3haTI24`^})#jJFzP_*DwON`?6+xUE8e4W{~_;qK9a zN!YX?VeWN%e8?%PM0R0Ws01SbjU)l_(Gf_9i$+2$1C_+MXe7qjkrZ!7QhW>&wefEiwX8w#dN!S6nn5AI|wjRckWVgKZ8? zo}th}(yJc406gp0uP?syesir#RSUndw8|GdV8DRHUAuObKseSFElZWrmPjvsSO8d) zQqp?muGkj1X-MA`Wy!)Hb|ZM0mLJ-=Aob%En$ai$x^_yy8NHI+?P84XijthtXa8~I z*1WvDN-(e}2U~{qcPV>QGLme^{qiris9<4 zz{(2~_Y#iupe4FA2O{O~y8VXbUwr$s?aM{Z4plWwYWsfa-pD(yym`W&T{|~Ws!F=^ zRvP5y!o;XFi`wd>j2fAN=_QACW_V3R?@Ob8OFlK}^G0m1f00BTW zPFDd?qdN0;79HN;e)#%X7H-(4pine0QB(>=RpD1v_E}+{{fY{|qQI}H@F@!W>{sCP zv(G-i0>9r6uU~=B?}yLlhu7y9KKtPH`QY>U;PLw5^?BLV>xI|rgU9QG*XIFC{}c*1 zieEudc{K`4E5q7kIN;c$A{em5$Dmz843gqwkQ5(_c8PIlmk@_`iE)UIveh3bg8{v} zcWZPoe_yjMAF8(yY(r2^fT~FJpy7u`xqYtcaHIJ(nN$=hhq5f#5s|adB2v)$o6} zUbFbUPrtwTKi_VTVb&N+4}kh1JS9kds9nlI*zZyq2h-rW5`p9@O?o0Mg1*RMSIf7j0%$iI*Xfovc!3!YLO zT=b>2--+KhMv9`s=U3q60Hj^Lem}fkpZ0ejyc~Rdz5oDuG%)h|yzqFuaMU_cR#AoR zdk(_mb;INFLXv=(=qSY6qY!J4X4e=y;$ot;YYfaf_upzqE!M1Bx)y9h;Bg4Ylk^)1 zk0f?3U-HwAp?#;Oui26z1Hh52Vq7_8+z45g=PQa5fuNz4t4Z4COxIDE?4#W6Hsbl0 z-k82)BWm3Uj+d&p2}Bq?o*S>aWG8}g8{GRuMJTr~9wf!Nehwg& z2)gdN5L6=tBngIHq55%yZ18E%mV$AC4&nKxBGE-ALiD2I9%OjG{0%ObD<43CR*Df``e@N0>j8v(PPk z*t+f@*e1{Y*(ESfC`Ir2qh+V9MJND>nMlK(LMW<@9H<|B1?bd-JgK1?Vgn(H*0uwT z1LWs)h*?m>kzNwvQVs`Lq21=kW$4<|gGh)f>(If2#yOw7y7r1oW>5Tf;cg26lvX$} zZ}GPOZ|}O}tEkfUGk0!!a?=Y5Nk|Ayam9v;t_{#d^s}ujx+;nwyS7z7_Ol@<7H}0T zD2T2gi@2g-0cGhW0YV4_klsQKkmQ!+_B!+ZF>~&mId^VIE(u9o-`{VTaPQoiIWy;+ z=e+HCb#!kMoA7}|&c@p@yQ^fv>R3@&8L5eQU}zub{JAss{Pg(Ga|1-0b8_YR*^y09$t-kGl1*0|!S(NB`{gdWo}^m~}df7Q&jY z;sGSS^WOB~^Ox?(rsM8!8BkyudH>^8Py=B(Z}m}&JW4-q@~7_i9A?37fQM~ zIY0S7t+^2Dli)-z;j}tOKn5?B84{rs65)h=M?1bb=5NX99GV9b{-o*>z63;AiWfbA zs1?hX9xN&@Nxz~0RhO)(I2vZ*@?>BO=E+Eh+$^{2)$N2C`(T7k?lCqtT3&tCp2RdNG6|qOF7;;K5b#_?O47 z`RJbui>J;h3u+c(OL-Eh^fd!Z3I;4n)85? zsHu9U?CO+SowIZ^%?)x8p#qDbh7jcPYM}-q-&YVs$PbB6M+G1NqCfrQqpFE-c1!JD zl+k_9;aZIdzwp;2ND|-g`2PG8R(WB?J6%_e(H%wKR@L4dM%Lp zw-FL()I;&tkp*Ro!**HGD)A@EC$6vDwCu-yhpV6KQ&QZfwL#8@2%-qH#fn;^8MXCh zd2hm*IumN^jW|w`&!MErg~)~+wd;-xFFeDxZPd320m zI=O8zB)c}@v1tooqp)0%CQO^vYHc{OziMBvqO2?S9X_K2fM52W(BFB}EjK16CjMx* z+d~{>kU*qEnX)v(c4-FEz5iQ4a}3EKm}u2*{F+1``@w=o}19@DSyi==8M(iH$b~3WW+O(sVWxmg>~hbJEG@ zih&FyY(0?X_DDt(A*NE+9})#1di={{*U$WXUZSbN(dA6Nl{rzQ;W+;(o1Cehol2hs~_3-gs$J_w1#aX{)cjc-gGw_)!5|MYz8U`;Cd z-P|85vuFKl{$GdPJ#;dZ6*g@@?}+{oHe@#efZ@T19=_P@)L(w4&JsLu;DBDf#S6cz zfKslN_%j5^A-o*Nh2%vrJ`f9(FkJF{$V5&j+tGiEP=f~$F4T$15yYYKbs z9J5yrj35dtF(DS2X-OfUC&b6VkQgT#;`L%uVvLxa7$e5U=tZx`9q_ts-Ud^xb3^I8 zy4h3K8|Cr=PRI*MNd371QlD<1HUb>1uPtadl*EjAb}Hfe9RqRvEth1r5etAol3QHSqF@j4V232W(x5wu}yJV%<5kh;Js4G%~BOZXE zZ{NOocMN;<>50>RP7&nWvSEW&87xa>WA{02Xpp<#0qW*<OXIp`bAk1c{ef$($A2i&L3$#5Mr()wZLN_y)QtW z5ZM|+N50W*&?w#&Ssuvs{fotbWv|U-HhXlO&d*7~6#<*E(ObQ*&SN&4y+)(aV>B8) zcDtQuzr-&`0y~^g`Y#FYutL!`2u(Wy4!VDz6Lu={T6$7q)kPyFBqpw)eFfR}@mJQM>!|=g-?`-+@#}yZC{pCo8*C$1IE?K)H{;3fI zhdny#vHhR_^V5ycrp;(qbCx_|k<}%cAmRZSVq#*_CcQgj{2Mct<>gNbZfUc-V6nPjwmM*Hbi&l=K%>nmJD$Q*n9$%L$|Yk(QCj)uXJ??KFdHTLStu#Y zL62@-kd_>p0N5OHd%P&CsKU}U8?dUh9Co`SsKwBIiO#U+bvh&@Ww`6B%jQDTKH4gI zP)let7V(1+Q%usN*Pj2+GtW=D>+PA#f)C`QFIJ|$F?Ph*ty?xfvwiz^*49o2AkH_4 zXw)4i5myNS3;HA?OC&W^|MgY4YSP!i`5Oc*Bd4iT>4uO z1PKs=S~b0=|0^OPHU{0grlF*328#1DP*RYMqPz@5M>TcpXBW4}gVKuaSh{8-)^4bT z!>N!ys_sQ3Ph53lc<@j6V&44u3n2OrLwfnX^D*&;adHwrhy_4mRaMpTMc>X^_wXO@ z9XRWovRHEPTho8aee2ziCq6X%jpF+qyj(xgK=5t^q*WhaZ1>f7!O0 zYYrYg9SkQg%*zl5T$FbFv5|jX3&nrIh9&CcHhJ}Wy{F#=g`(T-m7-&1iF`4Np9F%zfa{&?QjA~y52O#j(mvdYb-@GuU|Ha(~@H|gUtRcyfA`nr;QuWD( zgc)D_IEL5p0UfXNbDU0)eL=0)PpNkzGbMxLIN^7_3!Il+)Z-2)0S^jwz9@16lk3wQ z5k(Ptz1{*Tv9BKLybLV>p>vbMY0soTli#!E*j63aVP|2v;|P!@r<&@WOJ>enwBpj^ zViE6j6M$gMNo?8BP{p4tL6k2-n^}n<) zzyAK&t@}(juUx+)=&&**#pB_-F0Fg$zB`vfi83JoLR5B9KBpIeyRx$KWXz07A9*|; zgD8r6p6A`0SGa2tI#?rfKuAKbT7$L6Kl*UWs^a3}lOB&J&FAwaiJ}-STZf32FUaFe zke^MnuETL$K&R9Bd7k(1Jn!7SG0M4b-@Zoq+T!GiFU-~J_3;2WyZe*Bs9#L+{Uf%#E$&Unb(0!5y0TxKujXl22fP=`{mhmE_L1-3z_Frax^6FQw zy*2m2)%(ep3__^L5^2+qVuFGwB1+FAKPwsCx+J5hOA3neQc;wfip2QV?;B2+2W6Xo z!LriLDBHXPZns;lX;1(L3NDoYs=temi^U&q87jQ-`v1KT;0WZ*^Ydx;X+jHWgft1q z0*Lv?LdgJ7QEFDJ)x2cMlD&|$8eaaKn7kq)kqaX?wj=Yy#)mOS$0yH{^M+@LwZDnFL~F~rB9AUgpCSq2nlC!t%HWaMQgf#1wE-z-Y9+8jAYPtk%e#*DGe|=!kg!iZQ zob$|6fB6PdU!Wa%s=CNPXqjgTh71|f{qbjBo-}Ft;_h|E z#^5=4UWdPr{)7G9x5h22t*t!+bqx-dl7WB|c_woxb?XvW0Rtq@F# z=#acoO-UdS;2~+o#J{EoX}{c_2z($S&+~35v^FG?kj@Sd7Y!KhbCCV{Sk#`?ksuEa zAEd!nee9PXCNEh~IPH?bV+xMf*~n4QfkReW9J*#CplfCV3NjN>ke!5-#OP*`C7vsY z*qv^aRqn>B4cky&wFhpGC&UpSvRBc{hcsNhhlrc5y9NsuE!kkNt(ptq7^FdYz8vSw z?P+Qu^rWl@pce#zANkO*AE(d!;?}aNn%uRU_DE%n0en1XY5HvgFMI5VpH^Hv>Gg3_ zD=I2#pseJHeO1ejDgr@}&}zGuwn6(k=(-+pkR9gJrhod!-by5%So3Uwo-)f=5vOJ{|%0<3JB8Cls5E2fUOouPhMdrwDSWRv^2{TEsCPRahwN$ z5fJxRu9`VMFTeZ8*Zux~67tex(KS6Dxf$_@*6Z3FC}^=e+$i0$2dg*kK*jd`@cO*6 zgPvXqXqc&jinQ{twl<~g2V8kM>dlU0Cw47<8vu#?@rvz8fD^{75E3EdbUL|*9~}16 zD-+(hdenV4_WtbOtK&#NTePw=as8Hk1IIl1%7uS_QCIrH*r%r-I&{bc#h*ZHBXn|I zQ)U<1$H6*W3BVD5N5bTPOc~U>@8yqty?9e`#kL9+L*_-j3x(mg_N#qz%md5n>+9(P zPNW70TZ)rRpmag60HlE#1tmX(Xl*U30eu!>O;}{2bwgTNY8Cei2g1$07HbzL=VJX6 ztORGLgiqS~1|-_QSl1ul6X&ne@jjtjKu)01e(rL_t(*{;1b7L$wu|qSfv~ z+17nnvuPJ9e>nu7&r3P;0njF>FjWwha9rvu4bUJat;_rU4#_Dww$+Q@7!Tk8q?NCy zJ;8$!)}gLLsFPEC{k3r$ZoB=Cx{1$@88B)3q9lh?vM!j+4R~wXf}Dc9%zG!kJ>zQ5 zZ(H`*s1dVmwqSjCvbv=mby}+50UfQAG0mDY z*fx;o52%6WoZG7bB6M5X_K|keG5H;~c1Ac61%ZQl0U(03Q;bXlfhd6TF_LFUZz>aG zdnfv8NwWcj@`pG8oD$vj>!wb5@x!8m{AUOM{z}aO(OMwVXm_D(%YLlgycb({SHti3 zDHRDp;e`5*$&HiymygvjIfqnARHCnbcR_FTzx*oSl*#`)K@7OIL7KqYBkD?1n5<#4 zBBTlW0BVx?Y4MMNy?b_9CcQIl(5!FPr|ms-GPoK(cA}PhanjuUzP$<``RCm42Peex zhxhNB(5CvfC|kOAolo}kt0VI4Y}>^yZEU1OE&MQF8tg0SxEuL zb{roUgQrIhu~%+bRyF0dnY*CW&Y;1Aw&&CKVj}dt5pX5XB-~&?xewd+9z($IS8_^Z z&45hu%`;Qc4PlOj#<8M^K0Ujm?}Zn8roQv?8=}X!4pO|f1MTGZ2q(kWsGoe92;U-nk>V<%P@#zaRIUfchIYu}sk zRb84P?zqKtdfohg&n;cOdbQE#^MzZ~}v~ zo_wm-6w;2^m}oq3_jRuPtT^L)?@lP+xpU`fC=n`zQIyU3&?JPTCO0yHv4Bc{f6m}R zgn1YAby?szR}j%y32ADA?DwtKUS{z^@5!~vYMluujVuqOJw-M)XuUHLKtxekf}(+R zT4`}M9t9$e0IJ=lonMT5>Cw~GM<=}S{1YQ%_4?5AAg2geK_@w7*;=iPdqb4BTSr(Umf@;W#HF2?H%#QFR}oIfDM`vXFp!|9Hx+F70S z>34HtU2YGwBsw|@_uu(@cX6J2I03yo+=>WolHl-;|21i>Fn zQk1V2G(82EFD!bflK+4v#|L{Xb1q)T;gS1?W5t^FyLWDwHxZ(L7o=oCJI-^yM@vNm zMCcVb9kCPS(Q!B&u9sgNTV^mAw!QSqYnLabUek5K&zlSfs!xWTf6x9Sx;^`kq-kAS zr{f?9EqgSn$w|2V<|{ls@>5Npe)2)(rt*!oP-oQ>Dr&+kN>fpvl}(iSi~x$(cdah; z`I|@%Z1sDfCUj2g^R^Q9{EP-j_e05%-pMo&dE#Jw69S|}P?4>B-@G#lgiT-|zxn!KdnT1{tcUcB37aUXXFvl7FqFKLMQWqKxzZ)|5LT6rEL-cQ4ZtP3IOR8a!!O&6o^;>_#yhe zyEe`lJN%K8Prm)e+e2>}a9Qx!`UWQ|cAvz?oyTzCSiKZAB?wRy4Mh_O(F~d}K`F_9 z^s%bD41X;3{Y}?ii5}g%2i|=1l^GuMz6Fr7%uSG!vpUd#JgYPj5yWaCgbF?dQj%1X z#bQZ(d-9u&0AhHaj~;s4ZP|YtF|;H)){tVfI1`SZtc$8OHbxocx+^4-ixxf4BO^T- znHed_%18-hXC(Uya?@NfykOhAd;7@`CO?0ywzk#*rm7+o@E{3Qgk6_t9j!`5{hPG8 z(1VNwGI+Y>=Li#?8*UQ>ffodU7fJbBvDNE&L?$vH7RPa-PNxfSoG#F}cQ+C0uy#TI z+r#VNc=@SeHlN?ei-M>VA#$Q9a;o-F=j1p}(CKu63wjob+t+``^09R)5aC*5{83cg zu>jHl6zCH22Mr!N;xA(!ekf;IRV{WMJ_D9%mnB;a<<-(6WYnN^XMfWa{X0biFNy&a z7vy5dP1oV)Wh?hoZT$XY(PP>S$=}fkIWeoVPEs0Vg*=ox3WPT+iP{YEK2iRTRJn@+ z5S5>wAK$lcUqfDA*Myudd4}}N?8LaZ_}GBR@qz%oj)S1n!7mDapV?$|)SfwIJ9E0m zcJ$~`XJuuj1)=o}NG$^!6aXQA)3wdn0yrH$I_1Azs5wCosUIZ+$O4cDAYa~R%AdzU zgW$^5Jl>E=T+jjvhQU|!*rq__ zEXO9s$Kj4!uE&mDdurA#`}a)2b!r2E6Odl41Cqa^)9Kl)XwapTK}~>!(1;{J0**xa z?*ynpBuI|}b)q7jZvd!m-DDtY6~duSXml+DQZ)!Z)=7)M=C@EpgHD97&)mcZkLaVgVcshc}s&d_tAhzpO=JmJ0WS>Mug@y z(OhL6Uc+uR012Lu<4F8}41%i;u3JLRWy2nL@bSCTyY`MQtvUi9RbG|`6XHNWTM?;H zz>&Ud5{$$E^0G5<DLE5a1vQhd!vmgKVT24qeB9ONaQX5j_EeX=NA=&C$xmbj{gs$O3h&^eZvQA<7 zXmtPqLRKF{ea(h0x_egfbtC@tr-yFJ$t#LJblQep2Wyz3Qcan(ng$Ue%&}3t4mVug z4<+65ap=f#`!`?DUg)adz7W81NUI7fD1y1p@Zus74H|W=WIv*rXl+^mLMK;gMSZEl zhr?{7jsfkYq{;q%weRHDEQ}e8<~<`?Zk+r%y;^T?5TOH4Xn!Fwx6%d62oWgJ*on3t z&KyTGM$jzEw4aaoS2{(XZxa9so;=hJngSpb;Bs||g;y4qTyos~Wku#_p(078T|VX+{hwb8W<$ZzP-&)>9;PAW`|dzu4{)@Erfwj&Ac z3!xW4L^}qQg%`cJBH*EwSgndigL+Y=^7D0;KHsJQ61<4oKSIitCPPwV)4ABJJ{fs^ zZyY%Amj3-N?w7{#F{raRaN>*^4OR!Nb_Z;BCjtR~5GVvuKx~vAhNM^|C&a;!6pQS% zWaQrpwR5OG-%NN4|?#k zG5@qVi>|Q70tQQq@*8mc3WNa>c7eijgLM=Tp`*v>{>xJM&|`$v$brytL7$WM50Z0t zy6D350wBSQDL}%~c_%{BPExt3q+Bj0y*v20thjhXR$g8~PM0oS(zCO&4Jj$9i3UST zOdt>tZPo^t$zpcY)zvnfI#pvjb?W44pT}O0fU8z;*B(H?L(^Umx^Eig|7$dkvxx?f z&>L-{V*jRXyu^eBgeH%%fT9H$!FTc7d--(<10rlc>IjbWaKh$M(ftG(p6xkDQeGm1yiW<2yy`b|c8dU?yo*fv? z87Nv{B5Hgt{pYuL@~f6Gixi;af(H?;{z?M~*|)Sknq#4}je~Xp5Y-JdZI5S7Dr{Ue z%P<CXJ?cD2V4n? UP&s`hq5uE@07*qoM6N<$f@HOpYybcN diff --git a/resources/images/openlp-logo.svg b/resources/images/openlp-logo.svg index c5e7985e1..764ba8563 100644 --- a/resources/images/openlp-logo.svg +++ b/resources/images/openlp-logo.svg @@ -1,5 +1,5 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - image/svg+xml - - - - - - - - - - - - - - - - - - + inkscape:zoom="1" + inkscape:cx="151.21623" + inkscape:cy="240.04907" + inkscape:window-x="1920" + inkscape:window-y="312" + inkscape:window-maximized="1" + inkscape:current-layer="svg5740" + fit-margin-left="0" + fit-margin-top="0" + fit-margin-right="0" + fit-margin-bottom="0" + showguides="true" + inkscape:guide-bbox="true"> \ No newline at end of file diff --git a/resources/images/openlp-splash-screen.png b/resources/images/openlp-splash-screen.png index 618e47c6eb86f856f098a58fbfe5dccf9bdbb5c0..09785488a219db75fd2ce3d3be6933e13ccfe706 100644 GIT binary patch literal 48734 zcmXtf1yEdF)AZu*wz#{yySoJ^xVr^Oa9!NpAp|Etkl+rBO9&F&-QE9v-oHMo7HYSO zJ@=lOGt<-EH(EnY9u1iY82|vFDJsZl0RT`Q|Gg05A)g%5Xd*%WzMhcaX z8#|js@Zf``c5j!b%@pbCOPB3bo}e_QG%6N?64}!jT=Uvkg@iK`F)fou2XYY;M;uXF zm4rPqVu~bXDS*LFgdsdU7@z|dotEkRG0Xo*OX*6%_KOARn<9gqQ#nk{M~ zlLF`fvh)p77WZCLbV6AB?Zj6kLQb zxQ>Qs2x!Vv7F~=ycIddMPNakn#G<|iO2v?x3TH}APEaX;m?H)&i*J>Q~uzixRc675D&l16+&Bu^maWI{~BN!sEdR39XqI>7jn@ugg z`X3Y-!Ep|5B5+bAQc{RqKV<%rtjFp#46Z3J!UN!muxv_LKyDWXONijkZnk|qJQy5s za&DrYBy(QX5g)pMJ(gD*zMv74$o_WPpw^0P3F?D`d{rMcpI#76TEgJZ7OeItzzS45 zD!}}}@_x7MUVb+Or`YG?aUdfPLkO#lxVmHfkyLfUAIYDGvs9Uaof5i9V^iStRzD?A z@Z0eQId_K+!9b^c9N5wqG}8T5a1#C+kzpBTMxLQ4Pms9N(c+pU2%lAt$|u!ade`OH zueq-4P^?sWvotyiEiPmey6pBhU_zK6u=^z>YRob#3WW6}GLrCfU0)mGV)I_pn3ZQ32qfCT8>TIHV?qEWzoJPR2y^-Hjx%N~x!hCE^bS?aq> zA%5+PW{}LeBprT3|0wJ3JJB_NPS)$T8{-#>Th_>ixAX03vYvw*u0K~~$j;4Xtc7p?{n9v>DnI+NeKsQ=OV``uP+Zqe?SE7+U;wvE%- z4o2WWo1Z76xIK=;lIK13$pHWll!7G-aIDTyql@Go8hs^mh zvbWt_7+argjqh9pOtN|*Z`d{i@O5|Wot)kvAPj5L8@u%|K z?>MzFJ}xb1g@VxXz-{_X$d#B%5s2{3?Bb!w3RN=_ zm@F?y_VRodPjRc9Huna=>%hA_vD}|7`SL!tUV?{&G?zlFpqxR$Yk;hp0#v-RpaDl{ z3`ZwX5U9PehXx}});j*u2FkGl`PAOUdG7q&2IJoQ+;0zuXSvO!E{c%wtJn74b`rs# zU)E)Z)i*ju-RQ56N^t;!&`R$+V?k#hu$(fikYgNCQTJnl_RrZG#Unh_XBb}}RT-k> zSXfjKZENr}NLn`r*S<<|PE9?7LQoPFo7RV>EZAi!t^f+B9YN*rZ}!YOf8@eBR?|I@ zUQvuj=Dh790LPD_6loQ3_@ODH@I0B#-SEmj8_D43WB~}C{Of~v?Y_c|dpiz@$v^C+ zPWFuL^A`W_B!e}ObwYt{_FTI^Mm5rCEONiM%&& z@=h#iw#9W8rA}Qt*`Xbi9*i;SS_iHEu?vNEE_zfamJam4$wY{PZd(W1kV8%`w8;J6 z4*NLpGrxDtK#@X$;Ld3dB0}=F7Gy>m3wYXPWEK{Xyk8yko*y#9kJklG6$`70(0>_} ztM+95wKk&X&1mNS{d|6NrM&2uJhMlC%J#IjynYQ7-J5brZ9UYzZcE5Z5C8{iDCKss z;_^S-sMP^|)fB$yMO3aBCYv(nD!n0CZPmPDPyB)=;oDAvOxN2D9Ht@LPEUEQO;3@N zYP0LMgJ*Q2F8n9%rJ7M>`J-(!HCRsr7dRBY11^2yYmbvS4QT+Z7)Z`gcn6&6W=I78 z)Jp1sr+^}H;uQm}CVn{^B_iN}wQlpMVNoA!EP-VKr^&~Q3+K#~kq)GPgAoYoAkRE^ zFmIS};@gb}2fU1wzdzG>w7Lh=e{@G^y!K0-Zgk&Om$yTA7XkZ2mr8+>OLy@n4w0Z9 z)FspKKj=b%pw;mK;HiwQVI%B#%ua)sBy>h50~S3VMdT%9cOr!+zZ$pk2PeATZb@D+ z^h@rp?;HJi&jnm6ODWzp^A{d&xfyVV10c}=kh~6yrbp;wXm4IX4NmV{L9`G8&YZAV~0VpzF@CBemOB$>mg`(!Wou$a$TBeTy2m zbvh~L@7qkwpZkLk@7n6~H_B_k+m0F+n~d0-c{uckk&xO)^L}l)3K^^=A`GPFDKFi4 zoS7(H1tBFJh?(OFBqN-Y`!Gm{oPJ{D)1@=t*{0dGv)Cn_JR}1SAn3KbZyO{0`zl99 zc3@ue=c&_{s!&Kx80z{up1;tay5&{;6@=xN)$sCnMJJqV17QeW5Bgqi*I(6Zj0W1t zBqjW8JVmph9C4q^0;DnDineu@NWR&n{Fx)csE;ViNi+5hva%`)(%fMcT zVHEefoJRQm8DL)Yq7ni(7Qj9Om2OfNm&>tstH6 z9qOsdgE7YaW&_(arv~|*aul@)L{?~xW*-=*UF08gfP zUUK+CW_sG6_RFVXivv-`IC?HlG0k1?{tD>tn7|zBNnCL}<|sEZn&RYh4>98Jk6%5) zqv@tI9t=v6-h`8eQRB=c>YD+ZCB%h7`nE=$!XX756+PFS$AD8PJ#sffhFE_Hs}?Bmx$`>N!f4dy|m9Spta~1k!HFdAHQ)3ZhpH zcrGVtfKo+DxYVC%W!se^Z*d9dQmnx$$;A}fA+T+rp>%n4hl`V|{UbVmuUcYn;XR^; zZML0%f4LFb8H-KZ?@rWvCa3WR0fV4Cev+E*vIZmBjbAX+lO%WYyQ_3UvQnY)dKGSN zVMO+d=Zs)#tj{nzc6Q{lmLm-3K7_Nyypq+0fZWlR>~pVNnP7GZe%X@Pt?RGD3Cf{i zMCQU{n9wNVU?z*mM&A9wNP#OeLcLJNyFIC`>U*%mr(fe8#a*{3?CJDu*(-ByJYwV> zvZvg-;VahC0EYoe=wRt@xcK{QD|z;T5IokZ10+dCfrDMCPPx3rN1KmMR^I$qjKt#| zS5mwNicG-b@dk2o@#Sy-3(;MRB1%2zm)fnPrhNDswr2T>#!4frvbUsP<`X`h`E006 z1rD{aO^>Y^s<^OW;?4nCuTAOY{kF#|I52TGN(&}@vn;pg{nqtyE~p!VRV6oP7B845 zEpCDUy9S8{F!>n1v>q3_iCJ=ek}+0Z7H@Q zmItu)vEJ2nfW*1B)OM$2yKvg**ZzFsVlhbqMZiVt8>hwfPdtM1{u~|>52+{4?|7*S zpYn~o??r(>7eut44!$q?1m0vX?az>4g|upTnN3$eEO7MZ0+0c{EiiSf&&%Hr}i2mz3Sb{T7lCg4|0>irTIf!?dUF>vu~ zlTI2+>GTX*si5a-#a3)z^UW^|nEY#S|2Q!m>Anea>W~4g5u)ogjx9L(%CWeQv7e8? z%CT|9zK+wtskPZ1hcGC#Gr6U+)WA;%2y^7g+8DBL28(qvhg3LwGGc!I*T4bHPrLLM zlTy68?4L?$_$e)<=yHWnAKzVFcIG}uz3Pi#Kh2X1Bfeo&%ijLgUlkOV8UBn-yY!+I zAU3e6s&r&njsumfXeLuooU-{OuhkHkoFYHjR@^lmuI_T=zP~{6?`4<{MJ+|sf;-?&+m7>xvtA7 zFV_E2wu8q#|9p@L&OfQg`5MuHRM2(TQBLglDL{=H+9m$5w|kLDOr7CP3~sleMxi%< z*grM;#+eO|+t)t;8Qob+nkKKSu2LjZ4zi_r2y+)gp5$LE#s)9u1MM{GDLv*DhifTU!qf&29ArB+H}10q2i zl(0zm*G-IOfopf-(?5%3zJoCX?ujyD@%+1dv!)|jyU%iQ-~h9a@yTTwvo~ruU4WS+ z-8uhHdMftOgaMQn?xaGpK=I#eYVK`;z;bqb_qKIF?%Gw(e?buQrM}i5jGALB?53~Cv*0G{X9H_C;;Zvd@`6VZ>nt9)B4T~M z!+|o4fK=6|5LCG2sNs^k4{VR0BR%IKm~AHkJ9S;c$uCDQjGwo6WR_Z}VANeE%!*|D*iZrW-^DB@Q|;>z=EH9IA@Xx9E?$pg?i|s#vs zC4ZxcQxGPAk5#SLR4fC(WmF|~IWjfV%lE~Y+zUQ7R;jqvj(mX#K6WAVz2N6!m`b>O z&Evvan~6MCVWbviKaSD$)%-m)4Sl$4-|Xh4!24c2u|Poa+7?4~w3;oUZJ&@u`8SKe z8^u8oN$?M+n;@apK`Qzdd7m|k25 zf=XJ|Z766dMY=C-TG zjdYqx9c6$%y0pFyS2a=0jzr$ zaFiD1@LorNwx3Zb0$eztVCEAE#hcHD;DB@6l zQ+tW5slUtNustJK%?g2iXJwi2H)mR){k?rS(_&_97i$~|2l)f_!w}X6*bLR)&@R7* z9I@q!$ORWxJ^$+Q-Jif`-Y4A8mkq3VuIn!$dxn83_##Xgo_u+DE#rTa%~CM{)ICHp za9~_u`?M|h2QhNQx3jS8E`CH&tS)_$lkjK2u&1!(7zD+vI?Qe5CmK;=BWq+70_X0~ zj%f(dotS!y`r@AXGAEkFUMAS9hIa?5u`@*6y)LH;C;IFOKWFL5K$doCge!S~a&i|x zc~QIa&yZrFdED;y66um9M0cKQme!RoIX_>;lkjlL5B zw~_WhG=VSdaDKbhrA(^9SjGTGU8Ctz07I%IT_evGWDG>mjZ$S<>Ql7|0o!ckwC~Q4 zzg)bIj!%j|aJYhA&A$8^hTn(LV7bwaJabMf!QCPk&yB~Uy^?eo5tosICuUBiz~cNp zJMq_b>b>t8R~|dYTfcdCpli#NG*PWmf_Rq(=eL)g-5Q5b2nL(amQ5*onV%vhngPp{ z>R==-VMW{82_+PPJf@XquCuGs5soXy>bGxcg-X=KH=$ti51Y?Iu)ES4EXc-V57LcZ zAtW2`PUv$w$*q>tJcv+C*SHJ{nOh!R=3~d%Fo-UXqT+phybG1Q+h^R)5FW(LJsH_T z)9#RpRx@(#nW5s^_1N@CBheo>{_Y zZ|LeFb)>{{Q6GJd3x46U-=3yXmIq`M)Usq;KCz#u2G76vnE^vj9-5$zPMaqtqH)J& z=y~weNfsBnM8Q!7$uWYeyXv3#)3nC?VJQ+lY0(EfvcvoI(5=lLs=k91uBYLVJSbaO zbc&l7dD5#E_(Qo|3=AhUFN6d6J(qD@0o<65ViBq}jW zdDwa2RV9C5=T>oDjoz`v<*@jFs-#F0tE^o52x&Q2`1!Ft8zrc?i(u-kuL8`2D!S71 z#_lFh>EuD`zG)+|`XN&%E~26GGU=&p{d;b6n?F&uMrPKIs)-%ORQsn*EL!2}Vc+C1 z6bq{+wdB-?XR(&j75LcLxauroYLoRbT!$PiIjWtL(ski*l6e2bPWCy=Qzo$f*`y&q z2?Gg~6Q9>=WT9A0@>8@BuFT)%i;hbb>InhumfRnX$oPWo$pibrm?)`a!Uk*+=u6HQ zk#)#40v@SV_@tnbF&(6<9-$I0N{l@7XoiUK6(+IsdNzuSV;4zv=pE-@JGCL%r#RpQ zqxV0f0P!dde;EmA&vM_P-P-zqY;4m&E>dhwFBOMI*-&H9nGRFaLt?2mF)d{)gym$< zB3;ZHau}iKZ=YQ?@2!fcOp19b!-cevspd8y3E9XRJ}L8BXIc_Y5{$j|%f?ZUkIaQ0 zg%XD?$bWhqEn5oe4Yp6kNi76(^N5x4aaB!q$>$P@A96f%@#(`bLxowpYYOxSm8|4z ze8tG>9*i6xIMf!KAko4ibO=01MxIx-imNenvWwm zc>tSC{w$YDWbsOfE8Dj~Yldj@RRryuZiFigXc?YT!rEMb-Lld8b`h*a zq9{&>oa@{XDqVk&o1gHcGdX5iZ#+CJ+rquMvo#SeSD+_G`Yv5D2QyYs_gtSmyeuAs zo!25bf9YyDuZYHYvq8~R-HoccU^?wZD5}^t8Q-0xz{d7J(>~JwT(zm#aVVqJiMUez z>GuY2BpIo=UzE)nHoC6B_fjM_wfyB+{VUV6-H^b1q>*V+2?G=CMxIwO?Fa*s4Z+deHLXEjwnv^gt7YOra7ke1^>3)x%~cPJP61nSS;$l>rXmP_^BB} zSB>%berO4^ED(yLjEGG%8k{QQ|6qFyFj~p3Se+Mii0(YBwEZCM_3T@q&g6O=IcU^K zCMd|)DuD~fWMS5&lBXU>e=Y`t|8TKW=?ZjX8oX=_+-#SnZCf~#6OkP@1iHijd@|&k zN3N+<89~Tg;S}qmwEpEujvGJ3_^0V1f#g8B$Bl|9`gPMW-W2ZAqyCNt4EMNjW56($ z*A-7eMe1kIRl}k@_!oX)UaTmD3L*@!S`4X6;ycKMM~FwX6ktK9J>qJDAC#O0Jx(z> z-+wD|_1pq>Y}g-cH%T?i*fzvP+%CYf1@kDxB?;gMJ$_N7%@ITopHczFuw%&GWMOrG z9xBBfMWS;0sU&&Rw2|j|D{D3+9b(`b`&Dp9ui+4+j|BT{&aGD9I8Xw|*cr)Cg=4MX zA%JtSAkzCd$dm0^fU}gW)!yn|^u8pzj*ALY5(6d=YBq;MOrQXZ^3hU-E*4D6xa&?} zW8h+QhB=Ras$XI_Z}AvKChD7|H;>iNJ}62Ze^LMJ8?4d{JtP?2sgs|=FmQeSDX-3N zbC>%7ASH2MmUjMeBk?w?)_se@TM`L==+-J!hn*;dg1tM5m4*E&l1g|J?b+M3A!5Wj zwD(*bOa=e{v(2m(ocMU}H#Y=dCDwUEQ|OzJnF)OdBvqx9HY&vXIQ}#H zC73EWKI)4_xm4Khwz2ZBy;L*#osS9h`X57432O`3h1X8hkhr`npKGv^BoU99)ZQ&0 zG1oDms^bBg@hn?lF^f>tI7hh8E$OA}o!^zpI}S#c5q7eYjm zf?7;ne$Z$ap-TJ)nZX3{2f9=+0mhHX6};Ty&`&JA_j`;$UIWdIbL&{PmH`i4M7=?! zEKW#4crE_ric8@5QXgQA?yA^|{0lp|Qg?G&?;lLs?2_)iJ(XiHJq>>gWntzygWy^nY96S<9uWA+rESs7FsTmB^EQwO19AVzqyxJ zcWO>X$!LP=a;;~iB^x=GEYHhcI zT<gtZo$)EsDmPFjjL?;6|-<+iR0YP6$$X-EW)Uv9i%k_vT5$&o3I1N&u z`XK*XtCiaO%oYsSH~*_fA))6R6&@;vV;H0C{MjEu7aDp{!xsbOWAeBX(`oerd=o6p zQP@p<l8U^wi zKd?nve=nAm!S;LKCkTX&840bTRt?n?Ple*d$d&SPpucP`Z0d6=W*AG8_w4b}EDm6T5-KtW3Lp06bNA(hy_W zH*(Z@@(#i#EfJ~`kiY4d8))dxcnV#YF&fnFJAXQMV%i5(wUozA(A^fhutVe4&dR{= z4eo?(Cqmpt&~ZOVN-~m!c|6taseo+QJxT^!?0DqbxKU>0EaT zOz(|_$*}BQsUyJzuFv~Eh~Phc^H;l(Rw6A-kFRK9)VlsR2WN-m9>(7{-+!%~;y#eY zZKbZj+ocSGwMMYr{Qf)CElj+Ta;$c@$NWArzo~SWsxi^T_6;1FK_EO+2(I6Jt#uJ; z7b4(_PKvcr15balfON%^yEhXh*doeeLL52x_Ge3SxLQmM5F*vahrP`iP%fx9LDpo;(kL)${*Aw!uZl%j$#lUBT7VV-sXH@capj3%5sFTN@<$V<{ zhX$!dr_#Ok3-DiYWim!JD1DQ)SAP&W*4tNP0Phd){qgY3Kj+?rzikwfV)|UsnAP|{ zcEH(m<)rmX_UdVTAw?39Gg@1ehJ^h~2~y2-3*clmiX+)imG`WFPLh+I42`sw-#8(N zv+!r1Ra6oWuklgGG;Uj*;}Z-j!YwsO!MuTCbA(`42)w3(Ypq2vAc-Uz#`+mPF1J?S zC>zU*nK7EH0(<9DvschSDp%hD8;NQzk5HKccP%Y#c9Y^dpA4nh?5JA|O z)iDG`D|n@Em?yBuZ`=ATNHff|0!qKE#B6hJh|%9Vuy#AwB~bEAO)ez#m+EYe<-Q73 zC61K){kxr!0dpky`^jTj5L^=?&&oN5Q}dV6lkkQcn}gJD!r!f`XYDYB^d{x%;~QKOsf-ZWhNK_ zd8Vb)&gy;bF`FK-7zz4U$LzwKT*I^yIrZZO5>c; zNfIV~u}|*^{81}RxbQimUv1ZV1tW-@Vx?^?^I+^ULbPuvcEt(z<79Eo?&6^QCk)rA zal8yNk9We>8gm$A&c(GJ3oVE!M8QNvTwv9rlw}-F7ZN>nLFJjI((M%7fbkUmH5VSQ zLeq5_M~C9VcW=4zqra#%&d4w$#_>zn;qie8)XydZ#Z|L`E1xi}aN2&Q-9$b9+8@1% z9BnxTyt`WPf2VCFDN&|E-$oT#+161wxJ^M(dpP(pj`7sLjm1M>y%@F98mx=~8hNCN zWwOz~Kk%qcH{`{j10v;k6~>beMFm-}9{z2GMqBTt$_iFZB4?|CRl#*`W?Y8)1hnQwT;x zNxpcoQDz#L*?`(i(_x}i3(hPY4W?0GzB?#ywmU-FnBp}i2O}{Lr9)D`hMR(46<&4w z)w>lD78as$Nnp|UH^X<4YsJgfz_RSrVwChx?hxWvlM=W-m~H%!QjqDJUAeyIc|Dqr z2NqtYhc3UkOVt}{H#}s*JS0T<4;kr$I{i;F0}vDV*41V~?LIV9rPxwR&(;fuL8 z_M73pnT?ybVr*eu+?)z94fK?UT*G6av&=1ut5Q*!BVslYoKo0rX69bC+pl7F5KFXG zbi38G;^zU#72{roVd4nV(&l>gAS8{;8d6dD?r~>RE=S1M;+mge)8Z416_Yj=sk?@> znz!*U7G?f|3J%cE{A)9E_EP$|n?aWCfW-CbhX0|>m}!uj`45K~hwxCYI<-YK9hg8g zXmKb2J?g@HRr%_GsJd+}UVdShl2h!rZCMoyTF_$=7Cv*PpRy8wWuBMh1Maf6==L%q z2^)g$r$wZLdv=&U#L0Cmk3u(bES^FQ8T&IBrTBr)hYJzB35C3J!%mMkXrehCDh$)< z(qihZIXI9Kp!b79ma%W|TUb3pr@Hc^v1MoTK!*yj_r44-biDrG>F>W4Lw&3$p+rM; zU|LKhIDw$*)bzXoT5I}D<2K!HFkAar2L51T-j-tFl8__7 zyah)|d7W~`9uTYHv_(ZsZ+>~FZY?u0CZ`jMn9G!|uU!yqo{Ee*zdGMmA)r$Usd!4+OBAHb0@`?+_ndb(k=n((XSd`9CPyjZNT<2%AfpN(a|>s z8Y_)yP-s#PK1U$w8zlpN4JEXQahF#ZuwgMfk&z3-9k0YcUgn@HwPC^$CNE|d4}aef zLE>$0-+bE_<9NYhP8Nq-q zjHiq}yvALiG5FG7m#DJ)M*;HgH&vAJw}xQsu|(Z7D=;m-Jkb;<8lC#ixT2p}=@&s% z%Ppxh%=4y%A{ry~GK;`HF?DUlhGr(b*4(I~Z$MYF>^ja3JUPmKV0J&ew~*q#x(hox zQ%qT-LRjj7p&4+mX`>P7J%-9x;Gg&lnyi;O`J%dR+6?iD-K}ZZR46Ob>5CVOy!t1^ zh94qOCrsEJV&)@ZV!u{2)^YkR&IDj_Z_(8@A?G44&OkG{JeUEI+`LJW5@&l>=jd=T zaVK!`Q>UPEN;IOL6rw{G1{QNc5qF$46@F0_OMIAEDkcZ4J(HkXLC=LU)-(bmAjz6> z=v!c=qe$PE^yCgTe;rsrS+2?J2CV*oY)c~rdf_sWu~yA;u$GwOp-~2dd4pEdeS+u4 zx0J98_M|AQxiv0GqeO*-N-FT{YUi?p8Uw{ry*^B|e(*_rouA>p;h<75??fpGPyM&a zMwGnn0VQL|w||NKHG`vgg`xxRC>_!Yl0#wf^y==qy>OjaPdn_byP*v|Q)OyW!LB0t z2{N*`az+eR&^0XaBauq9!xP?354nyJG;BZl@)-1YHVyr;E2$2` zMQOxopb(DEFM^p@bhmR_+zE^-|I`{-UJjS`ZwH=Oo$R0{7{-_KT9lpNiVO8gF!LD* z|2URwaSTehEy{}sB0O&PjOLOBu1n>=nxeo(2XC@Zcu-@6rp67`c93kl9MAYLnB zz4Fr1AXI0`!Q5}2A@C+kSHCYd1n?WMjfJOZZN=6c=C-vH)8O%pOwv-rKg0s2NBO5q zMj%Y->W8P;-0F3If%S@se>#A;4eU~<0Kh>Dk!FJ zGN@uB%(j5GH6|*G%)Pxor0YpV8OA!UMgO*s_LY3W)T(W`1R4usr9vvT#8()EW??@N zyUMOfE3RD$9!3ZYRQh@fC|*;Wgyg{cgh2=+tm^Ln)OWHQHYa@^R z+}u1L{;vlFvyZnY7^%K3wc0~%@BAj_plus{oIGmJuHf}%{}pi*>+>OD`8>?7-nlHxJoHsN=C(Z`W-iJ|>OASJao}|%NT3&ZA zhV2(f7(Zof@+rEWf8b;aG6z#czs^uH)jN8*0?b4$DR43U_ePui%;Ud>ewr{l3iUlT zE`}b!T)oJlx<%{_A4*_;h;*xTL3}!L*Px#|voc2V!1Au0l91m3{`)GOUmjt)sLx_C zl&N4=*D!o9SyMS7^EDS!0X8{QNl&;RYT$P1mO8RnlmMa7y~NNWW>f(pC&E zY1%V6z^e^Am+2sr_Z$fWDPYeEHNY_uNq6OTlB2`O77g9#^4yxWNg9V?T3dptpo9H0 zM5M{6;=zPobs*Z_#k}&TG1JVzlWC=$sI0|Ipd-5lUOp~ZOx+ER(;ohbFTU?ysFo6& zS0Tb5bwJ2fbDz>9n@=@pe;O);0$VVTaP)47bBg=#gh(;j)YmYOb?8=6U_nB|*JrUO zzMiejA>o;cMbCCGO=Y2xR}0{lUt%jw-Hxj zqe48;>2S!W#+9KmG`(+RI1ph0C0|qkbzC$rt6r_$$id+btei>7Yk%Hu)X3|;)X9UV zcY?sla}3ezP%reXsA8ye>9%V0l@Bn{&lvVdB6Ew9in>(~DCnS{tDUVMquPEVG}fM=()-)pL)8!JeflzA(s#j!+5yQOBvGVst1X|KETDDZO*^ z_Jbv%zTh&?8=t)U+}4NqEy0(M5l-IDiYcE42rv5o=z>ZKp z{35S)j4|im-Q#>|Szc+gmX1eW&vJADl&PbCXLoz7PK0of$dbPUDobB9n3=Ep5jyy@ zvDJr1CVV!dXV5It2IRnrI{sDALUivLA9Sp9X2Xd7E9d^p4`^F=l2n#KrOmpdTBra; zDX|wyleW*K={Yj%IyF=}QRq04t1MRW9~DzZYGN(Gx)1FIkE7&~stFvNdxMRDrJsHR z#~qSFQ<;5*6kHQ4R&ZJK9BWh%yu_p~+h^MT1M)u;v1OaZp$ZZjIn*QPe;Glk$TR;e zLzfZS9_5p`aDimMw!<6^MGkq3MO&^)ol8^6%k(%rs(N8nsfHp|M3qL-ng zez8L3hM4shV!H%(z}!X2Ou+5hWfaFMtW34ti&GcSKZMvy z9@zzNMr}%e|8?rkCWe9dXD0=HVj(VylWQIbR&UJ}weGTvs<`1q@D-1EXnzc9yE~5a zwJ<{Bj{x9W)9)r(XzxhviMa@oknWkWK#F)n2r5-hyX05o4bI!PUb)2ui``c}-gkDqyzSbcO z$T8#N(Lf5@zQ^3|QWFoF-Z@(DCXwrTFhpCvtgUy9Ewf>(YdBIL7)ClZ)a$KdL-=0K zaJllwC*XKrRy!H9DWLvnK3!tPLUy+-7vlp6ILS*KGSDLV2SgD>rT>8xu+jd>suG?%-UhR{?$i6W40ceA*C=>#tVRT@D8qpX%WjX+~oFirak)dg}#7DGz<%loKyK zKIc+56%0fJtiB86+8lyVLexdw=A*->$U>tU$V+Fqxm6wl;OVB<*>r?JC0`jitQ$gHYy45p83`q>X4s$qJxfXwm(MKY|^+sN`CmcRf4p4yXds1;0&It-K*LFi47hdLt11HzM z@VW>DSlPjJ(?|&yJ2WpBE5!}WrF=p^16U*j&P3ton^9pa`X}-L#XPbbUdQ4v_Vg4G zCjPifHk{)poYn$f&@a8P-Nz*w+wUQm5b`B5;DipTt9B7~z%B{pvp}y^%hoC@sS6)k zu>d`p;?-==F~6W>Xuf0P%sgitn{(0oEF|Z?mlz3$PM=n7I@x`v8Q!XW5ZpDTq|s?M zTQmxrEN^;`ftP{w7ZV{=^lu(E)kBXHEx0WfoZ(oI-F9Yb)V4l6vrBP?fvJk#={ggrUKzwW=G6Gy^^wn5}`9h3}cs855k--OGSx|tHgc4;8xzHar*hF!rfr~7Cg;}!2l zdH2P{*>DWAbHW5>^QVtv5=Ejj8I~$!ZLRUkrQ=U&y9_gxq)}5GkVGfU$erMuU!C33 zTBAVzg{#@~*I07@`^KwQEkV!I>XlTzL~z0v*Z*qF7Q>$f=U(oPF-j~?PaJw?>&MAT zL$>xZ8iI@0((a?C>2%pZgBGvxOcN@K6BzqhEWgSW{q}zh!#u?oCaEzIa7cC+{DPS6 zK9{44Fp)@kRY#JUQ{iL%gB9xzYGr9=2RSM{O~f;`cU|m?`0V#x`|tYOik z=2s2L5&jc+0|_ej-lfN=P#02S&6KjRBO z;+A1@DSAZ}O@6UUq4BjUgHMl8x;>ga^!zn*G!XO(SwiqI^5t`>KwvR3S2TcD^Vmg` zk=EDi3qB<6XSg?kuICV8g&ESt`^Bk5AvECNY*+#;0$I09~n? z^JezR*a6Q-x5tleZI4mQ79&F)LU|pvvVoD%m7}urt_dwd7bL_T|VDS$!Yel5!Sz@?LaA*BeAu&w@amI#6b8gNq_Q z{jyaVYS8N@ncT23Rqt!h1kDfMl@~~)L|lY-)4}6>J&&>g$7QB=cTJJ1nB{WD=4FOJ zwRwdn|Xg+?Ae}dD`lAthsX9ek>Ne zPJKw|AarM|UfzlGlrgY@&?{tjU8%}s^`m||)4j_NqA*?xF`k4&5oke3ScL=vDazQX z=$~!KUrJzCs(AEGvqQHyQOIuF_DQ$Qwr0f=0r zHIxHoE_GMqGngzixtEa$GmYG0z3YOTo_YQ(NLJHHjcpGP(HOK^~D%%X8kR zP{f05RnX~Coc#XEhleL0@Oj!P7YhmL-6k6<8 zjB6!1g(Ak_7%O}imXnWN#}c9u!pqamRPr{^<7CiqJ2h=~jd$6daF&!vAhof4U1imR zw3521{`%R__J!hX94Cl$8A^V_^XaTU6E$Ek#!|6NYHYbHr7C5|_F^@BZ8BniJppAd z4KDG0(CuSQa}kFuy3=W8D*!-dTfJG*Dd1%K!-^SRDTJK#B5D~sPm#l{e)H=eV8X(o zd$9{_Bq#B_lIDa~B4$OJg;VXE*-i>>7KB5(2Y&v4G+kv-T}!h)z`@7KUhY>@4QWr&2=;B#_+ zQhbFMPu&}|zzcRuD;rVP+Um;{5%v1~#9ah9*$1Gl142Cm-)OWnq(RG{sHzWi9Ca)Z zobkwh0ZsG!t`MfzXmS5nvL5Fqgp1DwQdT^#HT?${PDI^&d);J+c(FVSO>x^#(!wn3 z#9_UblJc<&l#oE@vaRm-U?l~0U?pc(Ifur6o4tyCwsT*%T-fa|_ZyLol61GeYthFs zqc!?sPGEgebDiUob%c~Vy>eL217J&{0?y2@I^bOxEKoy*20rn*X@+fk3A}u1Zt30IqaFAgco5tA-315f?!rCeE;*-3k$eglg zGJco9#UAhX=c>77{qh;&s#0l}kqI|jTCtpQ*qy=NRaUpVb z_o)X|Y+%nr2?3ifAOwh{#D#JCxM)xj#(C$^S7ne|Zjp-nq+Q%=TMH1bN58^8t|E{f zbuS7MZPapdcfO^Nl(4!>mZ2Go++pL`+>ZR@4eu))>)Gx*^41ixMDsi5oGwR~5c7pQkTKh=YHYPDejJ~_6&i203_B0;J4XFNfBX|4`67$D@o@BlT!un3 zJ0Ic(Z0xQ!pe{u9&_@P18;P>Wx5|U)x-?z2s-dtoKep_aft*i2runHjAY>{W?JW9C z`v1%5tXuFQI@{E~x6k&9BRU6^u6Qkx@uo9u-0d)eZdSBEj+q%sF_t4db31GSg5<$C zf*dLr$*N=4Y#=FH9JqM~ms^N`gVFcc)lnINexUy%*{2ewyG8p#g^~2jNbKn=gWn2* z;glAF#vE%kHDu@%#%2-K#WdqrM<=%Ht)h`#;v@$d#c1f-9&m4$1#K*D>O_ky2RPxf zaPW?-Di-JPM)=ku@5Q_9wBJ_$8@dtw6ad>Z#*`EZ_u*WUJ&(5A{g5+Irx@4WT5a?owxNYnQusj8|IF`aJp$y$lsBSwQG*DCtAr^C4DvdBd>+QEMY4Hny zqqPx8!eSLS{w8$z$7fsYyJn>Dsk3qIs#CcfuNxO6rM9PITrDI1OHxlm|CBO4!1V0S zkmM`J_D^rN!k7P%e8D=o-o3-UpP8F}M?CrK?Ku_|mu}~84iAk|uT?6f6KG<$ju&vQ{XA~k(K6xlEfS@hlx5G;$CKR^A$DBQ6T|%Wq4g+QlU7nxq zMPo6$!PcNC2_SPJ#1G&Wrn*Oj;?og)V^bEEIVp%xr0BVsGduf|2M-|$;1Yp)qj2ic zr#3`yR~jI^Mj01EBO<1d;Ye4t7twu+YD}{#ZJm!$OQ8mGJu^Xn{cHiNW(`||^bn-R zU`awT{YSK_#rvAYM7EX+2LV5qmv+q4RD191da&-GcGmC`ExF{NfAZ0t7F2folbn}8 zPM2`VY_wpd3{iJ!|DPdryve3a6=5WRLfWw56g&PkKIjEag&Xa3-LA1^e~PATcqF0T zfrnU!L9w{;Q#sXS__yu4)y@AT_MVRyVD>RUNA>f!P;QFAE+!ArYfI9X5D=aCI1p4l zO1cHvl~xY=zrrRC%b-JU-6mL(;na4w|9dSIC)pVmCRcQ@L+!r_GDfuLir+a3gD|ke z3vybAN#g*PDHK?yF=yw@Fg5WMi)X;+Y6C67VcdozbOMAU^*YnjQ zsOBcA6f^95lUw~None3uq7R;dH$?v<7|P}-oVjI|E12>S*0F0buwd3I&-;$bF`8zC z3bKMu!+0~CNp=vD%PrQZ&x(Tn3AV+-k?7Nudp>Y72N9FW<9aF&043{C(XlG+m}70z zw2E^vzEtQRV(#lp&PEiJgk4tBuYFb-3}sT0o83AQYD;f>B&$y1Z>qP)0a+h6S1jwd z&XP3!i8{*+>Pd|K;nHWjbo$#Poh}P&8*Vj;r)VJ0nkRUJNcj z?TzsMuhQ{DK8MzJxziXT8MDQ1%y;`6>}nfv3maRA`VY;nThRytWkLv83f4_$Phq%c zBz@||^x;B4+$wdL218lJL!dYAC6zjvPFO7at~&{;S|DVzu9L(bfA15d(g^Jeki-G7 zlTt2AD9K*UI&cw~RN`=Zyr`w-g51>i?6@wyRn;V%MoQ%DaWyvCH#X%=<_ z>PIJs^AH0L4%S_b+TSF!7TAE~Lj%%>j2~p+wH1b1n<5N;f`^a3$13E)u#7OV?F3!; zj?e)7jT-2s9GR;re&(tL)P6pDN#|fbnG+!i3JfDFCk_)+$0WMdaR? zh<{Vmyi7%=o9?HjMyPDK?tqb;69$U?ShymE6tG(pnDH^QEt_&!Vv?_H@!!t_6)D8@ z?9E#B0k0}H#|J=!^2?;&9&&v2VT|OyKcF{-_YPEK80f8}CQ5~bgY)-G9uJ>ruqb`r z@Sr)(>%E{NAC?-fs+-lxrLb7&{dXL0@Tpe~QH%GcBrg6Pfsd>=#Qu34U)J0mj zFKx$`_;TV@KH485Wyj1YRg}h3wLt2RzI45IOeol<9UXW)PrYG5E5}YaZpbu|0;u~*e+a21vj=) zm=66Fd=jr6H(zg(G@1`B$Zbt~PO zd~b$pbSv#Ay><)ARF>A1-|eusER$4ZDryj5rWMkR4x^R#o=;tO)RNG#~+E&m%)-o*fo}1X!JlVTw|u>^A?Y(Z@y#0tCUqnBNr#B zUkC}39m%H9VABYK|$90!!;ga-?sAA6%47Gu-8j0}97|rDl*|6wfCb}YDPhYCD zvLW-RW_$TjaOTRIKuYDxcM$_?H>0I%@$dExea9$b<6hmr!q_DO%)YQ|I-}dW3T{0} zZCKD}4js+#Zw=%nxJl6Ecjzw}En+7rzg)i?HEn1a28JSSbgZtKwde3XS?Bxpj z#HwfH;+*X*fOh4T`K5TslrWafvd*z^JU(gm4z=R>P5gVCK&Z;p-OpvRPsS+iXQx>( zdDH!E($FK?3XV6<0nP!paxBvkPNrb#L^L&c-FwQM3a zXn>l~NgsZkNoYhMyD&B+PA6)*G!_vsRZaHR#&l{9Wn(#fTYaa6Ne0lpeN$xflf+MF zkarwbPDV!UNxjEN&^v9GPZfyI$Zo|W4i(gR+Vu|VS-*EYML@p$eN2r|5GYn96X~@N z%m}FHgHqrwWl0vJ#O=W)Gj@5#r+!cZFDmfijNiDDB(s%~684PRX!EW6Prdd1XK%Cw zHHo1EVmPNr?%xO$+RVI&jJvxR?IP^0qg!iDa@n-y6*@qtKEZ{!s)DDhmGV zgCVBc$-+igrrIk|W$o*e$G_0~In;#xd4f4jq8uxjjE*%cig5&wG<0ud2E&DcB$@qo z9QG5e<6UyrDxDTwLGmP$-IaDvOSob1Pa=H#2R>sJNlDmJG;9k(B|gVC!Z3agEJBX< zr2!b{GBngGmax&Cp?eg@;svf=U8?vAu52&gAhNEH5nt^(A(9|o4<4#&JZQ)PWSjB7 z8>w-==MU!~Jacqx1UO%-LjNI|V8W0<6*3*hz7A)69u`g0Qv~LN^wGp}?4W5%Hrq$( zL7%ARwM011r|^WtT7mbLW$WQ8(|0~^Cq7$^Ls?<&D^D;(Osc1A2>SjrLc`s%vCABq zKuFYIo}Iz2l#Q0Z#{J)&nX%^I^sk=5=DbU?jyvk2lmWMzY+fXcwnDKSk4VX&brR98 zhbvz==!xk+z|nj=*tmrY4e1;_EPyYE$Dpw}?Gg>;5$wK)0twI%A6iMb1Xy`jMa&1W zo8)OQ42C~5*nTOtBVdoPoUOE
g~4_HhjmqzX3U@)Ki}dE?${m5FKd$TBnfGwpBVgv zTZ%CRxLsh;g2}EvdS#Z0ex$x4^g7sWJSvEYVf;A_|4I##fmw+5WnY}q;vhIv9N?=R zuQ3iHSkpeKX^{`|?Zg9v>iZ+i#{lVEHO z?|PzLZQEo_8MesG^Rpo^H~959i^uh0ZTC?U7Sb8m_JAGHhfdaSu+L8<^U8<7iEpv~ z)}m&P0Vxt>+lb~S12hDy?#^>yDSkb3 zX_bn6)k!lN*^$w3{hm%wxlAuZFunCg0Ck{+uj}S>Va;0AfW(fCITm~PFXU^deLK34 zP`{?P*ZJOS;xrg=t_FGXli1Xuk1GaY9L*8qndlx$INe-E41C zWdol6ZGv0CC38`*3dU>Ql-L;%(vHqNhAfX1X9V~9s`}5bo`N&KRORxx!~{Z#p+wO9V`AsJo{ya z2vN5X(TzX4(=X)^_LT8{8wJ%b6%tE5aEjMlcT_wFVu@0cw`}ftM^f?H!F9pMoEB4+ z3#Q_3Jn=ktCJPE4eFFEwK@Ew)LqcDsb>g+7Uv+e9tPj66L+AalQfaMb2SdGyUfb~6 zeuYC*;W&5Qg~Udl-S)BfFoCCT zlfaPWdVty8A#(whHO=2YL>rXMXKz5b*h$RB{YW0|@4|F8G<^57(r&p&dThuAu zY*n4#LE8Mn2kAhQ*~J&Dfv{6a%(qDm33-|r{WTj!a?I`P$ur+k9~k1Nrz7NFcf?Yu zx1POU-cH=sbkNC2OjeKmJjxO)cSzPP(ZJ@>Wh}`i_e9(x&EXUeCXzV6OhlNJNq23z z%Z%FIHtBC;umy)@H;yA@=tHw9@8Ri2(v43EC@+4G%T$ks8EUu&Qjw*R{#@b;Mn!4v zy|^YgibeNPszoY4{C$0NLR67eBChuXOhJyS9YIR+)jFt$ zrr(s>YjVN70)>>|GjN+X;6@OJm&U0VMN;0w?VV7y1el}$XJPkB++T752^FMda8*P0 z^=z%OWtxd5R$1|z&~WC4kUnK^RE!_}OOAy*Ds9TUS)ZwS#Tj7&i`lH`7Qy{CD(Tna zOIipx5~tX&_5QEgkh-G{^R!FHWH^%*8oAAoaKVA{G-BojSmlS-SIYuWJS=m4mWg6i zTfHZD{g{=tn~;R>vo!*gvYq~PXYYMU0$~QZ;KypZzAyF8MsA+7E0@2@(w-tb;$E&- zo=Lvj5J}iY!3g|WxYYZTW>wq51N-UJhw^RG!T49J_5I7+)4^_xu5>F>a?j=8Y6~V< zG~CDt53X*xWTS=^IgsaJ1U4sy%)oi1NImR5FHy_lg_L9r6iqp9EkVDO9T^Yk{VC?U zd6qd*?Y_{=QrP|{rkB(Lxv4kOqoB5WGHrhw^onjb8R3w@L93yIjzNd0l?pWOhvm9j|3ZDy``2o*5|fMB!$(-P`tuA-9o~lB1pkL?LI3mBa}@}q)IwR7 z?d{n=oUFH_=a6BcK-=hq_HGh4%zCFRY@s-0m?kJf5H0PEjJ;SfE5YJ8ilITk&$7k1 zcZyP&Pg4}kSW*U+&vnNcAg|n31S_unGGsNhH%BL+^ zRFoyuzLPs~W?YHN7MIQfq|ebaODq#18^_Z6c_B$1!?-QGxuqeC~|(F zoCQoAS`Mz#<@L58K0+DD{8^o;Tmx9V*5w-2h&my9GYpaM*IW;BSGuD_BWz`tLUWj_ zbob$0_kt-4ZoipqJIX=j2ZzSX2jYi;oLzD;Ff^xhB0}r&eDZoR){yRGFx^w3p?i8Bujg%Kr9 zW6?ET#TA{?cPEn&up+Hf(=i1Ls@J=~Zb*BHuc^ z2kJF5QkjUvwqh{l6!l6nB6}LOLNve!o{V3-J4`j)W*hVuhHEv z`=uPq^!=yrdgm`t)hxS2$)-@OKmRv-e)Y|m8wqS@H;wvHrVNDZt!$3F;o2M(LXHN3 zxCl3e*i5Y-lkyMmA#q2bZPzPdL4wH(+?a5}fjPqNR0@s!Fe$)H zB@!#i=`FYe?Gv)e?6+7oND)*IR(c8L*p2Ut-SqG~3(B6NwR&HROMENzbYuC`_?cEg zB0>wHRW0afv=5kSCWlKEYabXOnF@nc0JQR-#Xb`ilVY%wQn#uzm8tE1?86APP~dV8 znhv03692`z+_!9&d>N<5Dqd6>5GX5lMoJ4J5-D(gv!XA>0t=&M7+J3;zTwtPXX4lfs!MXjJ`K%Ta#CV8p;*Z=; zH9<<+8T4RiGv)^Yg5v`mzBvFDROs0t6N1NR0W4WNnc`U^!Fu<4V1)L8iD4@OKLLBk z2buI)&w>aw(w5`1Q{`lMg36uA<*~?J_Ilz5`LC+fsG4u$Bo|-JLx%}_;#l;9HPUzY zNxq_$RHJP594n{pF{);AK9?OtyI?OjQ~-*(hkjeaPG(_XuGsUs1k>+v(^=G-M_t6v z?aUJ$LvXP-Hj8%uL_jhgzE)LuWCy zh!lp&@{z@8#`<@{SN3RhS@u^jd;wdXe35CSAF4byRmH2F+sShutwI@9L}W4O)DCB& zdMeyNp!MU8p%o9ciXNCeLtMGRqir_xsoem>7)mmOfJrWKAE+hcjot~$Iqg3e57Y^=B z9nm0aBWPqv<;!k_ zC&YVfF8*RcN33yef=H-fjgVpzGi}Ef2{2)90XE7*)J~jC%tW~e1@dE0N>FQb(9_Zm zTHxi(@;usR_%K;s1Vnu>GANAjvv%f z-XtWfi@6ByPAb!OhYO$$j3_5pV;cXloqA7%5`=pa+Ow=bR<2VNRfD8roHb1O&iI;`Atb_`)v2 z*GSxU71#XhVtf~ddsXG&)-bZbFu+%|s``^&E?U$;B?z`c+A%df+5fKv02!?S=RLRI zzW%nqU&->kj_rJ7s#>r8UEj!)j82DffZ#$5EdoirhZewsM&fBOk1XT;DIU0{PH{Yn zXE;6-CJACfUCJ7R&HSA}sxkx{A>g>B$jao7s_8syCw`)50&$UT-c#tIBSyDZP&O}L zUXYO6e|F@u)fvKk71p6o)4y&qp<%MCPO1F$B80kNL&!aJBGD@W8>j|%qbYo=brF5r znm@I?j1opm1%LCOY&)M0-bQ~XYD^UTIc+@GbBH$-o8X#u0a`g#Sr%(=)Zgz;Lnv)Q@EY=rGMlz|mW1 z*`UNR4hdnex084*Q%yASSEOGQz>N~Im8WCCl<8rm^p6A6NC#78^{KjQWREl>i1C!% zOOh6x!$^_y**A8i>+&VLfNZN7rcU`D=*b;6^DT7n9RvG8dU>sr9E(WzXr$I{omw_) zgyuxV=t&T7l+A`&&-Tssi4x<7Zv&&^iFy>MwVACf1}wx>IyHou!%(0h=h(S{!5g*~ zxfY``?Y{kXPd>pgFJ3-T5zwXDGn~F(G=g#M^x{m~pD8?VA-P%CfmF}9JowqmXH)AA zg##t~&v5mZ?)Ot8ydmv!G)H4wenrBe$j&Owu=^OKrx+z_tlGm-^2r_3z-A4&5RmE)7N2Pof!uLRMVVbAe7!+0ryD& z0urV|>7Fl3EjR)nibCqFUS4ath7LENwhYX8c#ywL7N$B9va&5_^r(c6l)jIWfvTg= z{B&EZd?va9RUcPZcB=?Xg4w|ucnr| zf@CrzM15gsJy535S;ME^nDZ$(?mBMc?&>O>AQiiglehDJmii!yTGsVHyZ&L|6?oEOjOoi0-| z+b(d!20BW9cJd0hdkvvq--^~2p-98H7awkR_>j2M?neDiTW%_}qLnpa#H825L3QXf zm}=leA^L{o9bv$?#uuwlsr|j%zAvBp?kY4=$eo(-yjRHBijYy#r_OPGmt2K)a22|> z#Yax$K&wtaT!q&6gUp?{D{8YN03WK~lwfbbA#NB-q`Qb#vqU*JGPPbk<6zM!vd5*6#Q7u6B%>Vqhl%q~TS@dxBtLeablzr~deRS+w<|XEu zp_M;WkA|WEC8*;zBw7x+qCco#lS1)~8OOkqqhOP$3_Gc|BR6&AnB-BH10v9%6Uzp7 z&v=(v_CzEA%}2$3Yw6Mu;4KD}+G?MUyc@xQO{fX$Umy%&G$x5fHp9B#ANw6+J$Ep? zqNVWY@zjLzlTv0gK#6>}iyAY(GcV(w-XJtZ?-T|e&`xh;l{^0Vj{~=mA9Y}wqG0DE z3wNDVii=qWR76?01dUXjT390@lBcrGXXt}=vH0s7Bvc8;-%NG@jt_q$hN_TRhKBUaU!?@lIc zK^c4Hj*rPE-#Zo%V<k+-J-AXVofj1feiUg9 zsuHKgStKAsFUhl3E}ZCVx=(9aF&&)zp}0DE957%;!U#<81K3hXZDDs*zN?4?*5QY= zWm9Ny(3iJt?#jiI2GB#Awi`EY%OgxbA41H4A{5Ob5z{73iVL zKwcIBeHpMC%!E!_KYm})up}E9>bu_l6G@Lkd}Q1+Fg{vg>EmBu#p9}cWKue!bU4{^4xOC+AO3mayK6RrpFLVDbD8)i}VW|K>!cvz&sP#S?e~O_7E9e7gv> zWRRWRj>86N;Ear!_Z|G7e07rfnDKc!r3`*Ejt?!mX)&$BvTWiFTog{m?#p60T-hv% z<{+cR@(4m08Mb2WdvR`t4+AH{D0W$AnsdvAQ2xp>b2;qlMT7idVRVp$;{MC0)vMWB zfUuvSx(A3_6Bq1n8K<+0ru~V3h`U70+;&5z?el$lqM-lqCz=&m*wc^d7|+*XjBN^u ze@_oBzT=9&Va-ZQh#Qwr(fQT8!r1wAr$}hZA3W?6Cu+0d4qzm`;=Vs&dZnCyvr88F z95ZcY>%l<3m(l$jF#c4Mp5(KgRHGVnkpVbk4fR#FqoV|C$600}j9tlZY1{owcqPhs zjV{$0{q7{I$P67Elq^I|vY{I_W`exxbB@;(hv}`+4t+^t`(I)AOBM_BB~Bv+B5G9` zu&wySeh*l1e16D&XB#JBgSz~AU(};04+R}>OmzDEkK`f6|8-vhBNTbi_jaj^a}SQC zbPWc5`4>!YOlEeV#6fx#e`Dv#0F#kMs3kOU$^ekVVjiuh9}HBA7_#u}6G(Y1uxjh! zRxDk-9ScT7A4NK&HfROdZHdFwX~r@$WNFxn3q-rh2)K(ryFT#u5wrpPL=xi0)0qM8 z?`ZCk`Fh^wNNL~o?lvK;t#VO~ewAn+?bLdd%*NY!8kv=#Av7ejcVURcfkhqr7P#wZ>_gx1$X4PXM22OOwzzB2tbsS-o198IhoORVIV;i+VRn><7)Wc)e*`d>D^ zPfmbgh)YT>GiH60KlsqEFrL_l1xGZ^5>0pKC~Vux(YUFz5;QYWWRq`T|K0m!IJTP8 z87QOmNS2RZ_hsOe2&12iu7qa-+we_T=ohxt`Mic zjbC04)V{<=Rnp!D&~9HW|Lcea1=>}wTSCgp;JiR~!c_~~m(d#B{_Z}#-4wKP(fcO{hl?x6@!*84%0m}TU?6i#4B;Ij zeIy&GXf3ib^b{9KXX=#YsZA@s-;2M!=CN#@{YivTN=}S~ei~cke;T56A;+o_ZJq;s znNxHnAxBu7io%&=!GTGg^2Sx!t?J)uKw;q$NA3L{Y!-pwL#HY(#m#{qh==o7laB1_ z;gJz<6Hb_h^@m?2r5gmt%R{U%1|o<8Lfq<}+?kZpGx`nsKl`;2dk-h`1%VKcW$fe$ z1n^j(R`9)xBeEEUF?eqvR-_Eg%S`--VfcN_ZLO8nbu7jG%W23{Li4H93rEpa5=j15 z>*=qCLant(`-C89%hl_8BS17X#9|d6!|P6-PJ$*l!V?@ce)+*YKyh$r6HFD=X4j46 zv-YbhDWzTTq1#gw0)%>L`N1u>Q=R4hF%(lY!;pE-@d`!t9RlL zSbmr=N#ThtbR?I;pPUOp#JQ2;2utEfOG0*FJxU9OlaSJ$v}(O!YvKiYk zC=TWS@>*ZO$E?|&v}D?hsR0ZdF`yQCJvXO$tzR__7k!`?t0hoZ+w7EsXY^9bt>+sDyp^Bbm;Y|yI zUeX7iT~wbOI`yvxeCNNq@@ZhZeZ44I3`hqE1zET2U2=irNvmvlGN{u$*}FvgW1R1S zUmWx`z)WN;hRgHVBCq$@WcO0#vQ~YH!<8B2ip(~JfCV`V10u&kY0@aD$uyqXkyJu= z;VpsmJCPDW&vL<(2bVB{N*DvDf@E8xG@R2T0}ZJ|mF3>&%R^@vLPxYC#xy13&-fMb zf9XLo<(l`*>A`?f^-bRI$pHp?;Q3S%s5wfr(OlBM&x<8_WBy%T3#AA_%1OsDy`2N< zRdx06#W4Wz(tWy-F=!D9{MtSL-v#otzjnXu*MJ@H*toCDpU~QB-j6}~@stvAHKFoQ zkiyeQ;F5|{gL=N9q_8(C9&8IMAw`0OW(P*JffVF`iFO$%buh*g5+?q&y+vBRQ_358 zL5|uMA>@={N+p-&eA8fJnU+dJ>R*`;C#p{w9EvD1MBc9|8>U;&MrwnjE*JQv(BHrw z=u|3)va}@VOVj4`rMEo$0;Sy1dP?wj-7RizAp^?<_<)J>Y;Pq$<2Z=we@2K^%~{tu zkE|w}qd8Bj2@fXkJ0@=%8sn;#M(Jo>W2J+zqJCJc?{A#G-o?V2@+t^XWx;J@JXzpC zcrSrnzWG>OMJCdv5ieguLVUZg3J{(BXOZifDLbQl8_DZHeXN;!OBE@NxRa}Rt`8IGurlWl$b4M9zu5^v-XXQF`j(DW%^GNG^#fB!(X4}`f zOvO1os9&y!3EO3RLU_!^W*Nd}=%r>D!baw!B+V)CxG1jps)F;am1q`t zk+&u0$leK zyw>);#Lep!CdjfCXpB<^@%>kfs7|kYhHE)IZk}0ZCt9&(*z7Dc-HeepqDbNm91x<( z1zrI8cf~WEI$H@Cvq762&b;pFw1zIjoHn=dKLq%&%<%AxV-6<5HeJRXJN*cU6 z<+0|@!bY^C3Us3KHQ?uOhW8yUdd{y43syn_RKw?Cho z^ec8jKfk~QCYXx@KD!_{RQ-~P=O34rB!{%*jOCrQlv=m}+M%egBtkEZ+u;171u>||aqAZUSeg6(k8 z7X4<6&lAdh|6Oirp*-&M+nJz8VbOT>rk^7^s_-KT$)-WbVOI^_T*ZQfy-vo_)kn8* z^x?mIOrr9Hcpu1t0@n$KY2b0JbY;Xzf9bP&WesPiGp)>#C^DxkvukM&Bu_j{eo*Ru zbPC3^lv(Ct%IfC)sYreL)5OERmGKGCu;__AXM0O05&V0rYR*dOM(?QpwOLB8P3No$5((zgVy77UPJ zbLk~Uw#KclA)BC+Dx4tcs(-Tk0Ru^uEx^R*){1(s6!PC!DSM3I2mh+u?5I6O_`B?e z@8yku(N&J8pPpvqf4^sSVh(NH@v`pi3Lu)7SLCPpE*am;vi(vf?Yj~w0m&ai9CF3v1BhA#cB17hIAcA!%L*{1B-P|+C-yS-i z22azf>J&=@C8wSWwAvhclWvj7`nV9swo+`*Jo;Z{0qcCqC*!mU3y8=FZ%4;}j__T# zDmQd`DdB|Pmmx=rMlV}mwYBmqR6|MvI(Q4JAHOSNdLf`Ce<+w%)B4)2xpScggA2KV zxEZ*VXVE2jcAN4Plh@Ek8YxNmeHfuIPPwf%VpxSU{mB$o>8{yq)31eg^?GIX*XEE;b^*_F6X}Fs+ zzn1OL5Za9rvdXWf%c7FPqjb?n^SWC$U5g`WR~1w3y3b}ZE3ePjiApLg;(8%c!l~mn zIZ8E|Vm!nVBNN+^FNZ&@y5Bu(^at+d$fO$ja4F+>$Q&KjUm`xqvYpd=Qj+r^YlVBd zQJo^T12V(+>J(3x!$Ei{|HnD?w}XG{!`4VR?SwHue1+dcw19!tB$k_xCVVs717h@G zFMKLIOfQW`IvgzyRLHM-Wbu-FPO{(8)iVkTZWpqnB|}GFv)89NS=hPXXC6|o1WjS{ zL?iug>0TxZ8!#Eglq3YGi~gMcF~Muln<*Or)Oz_k7UY7z&K2er>4(UL0fp0nmbs~+ z7Ef239SUR+Syf|})5B-dsV~Gm&o=L#ribPowYN7d#a%zS3V;15$)HqW1-M2TprX<$ zpx3v|>??x0>0?d(EzNxQ^`8@*J?p+hS84he3V2Y9Sk7IrGI@-@iea>`=(RlxMus?B zz+9CFKwt|Lf_X2cB(t0Q4OS##Ad|hrQ#Ilo*&we8<2CurEa0or zT62?6V)UTRow=Pj{hXdP3!4xyInp%2$qRuZym}S_3Sp+oVI(TTT(Ci8QA16}-`jZt z>vdkQx?!^=ekog>Jenmglnr1fM_NWkUC*>JXkyu1-z7ZeTg=1{x;{2PI zou6{Uy@2TwW&!MHx-GS5RxM2w#ZLLyU|am6^YVe2^7_Q`6lX*J6p%%pJg~L5l;43EN`b&Hmw(p_YE^EK`V{**0ZISy#)TzdJke~`)sLYIP zdPTt5=KS%6>Df?(*}G0^S-F(EP?rr^p-!fwP^o~J`$J1KG0QEj|tz{r6L-0Pc z_}$meN8LMeo-W3B&Mmp+X8Sv`8GX4DY!n4SBkJ$>gYHNcpN{=RB!-YSGe4Fc-cf+ zN;#s)rX(mbxf?!+VDuy?G1Egj8;VU2d+W13jo?%zoMuE0w$=@ZVs?Pc`B8xGiW)bd zr=(izyx=?*tC2{Fh}mJNWc3`j!hz?C0r&J>2ZcBq2?5Kl3cmZ2z;R1g61PDfo@C4yyy7R>e@!1VlI(G0($K>)LSOM66EfVVIAw$oE=O5o+f zS01HovW>__6-|E2#s=vLLjgWK6`|3Yef1oIR~K(GA`m^~&LHR5pcnZGZRR%+DyRU_ zuF;G_z7FtPKCv)~OrKJ`N;#Sd$BWW|7YiSYE;>?8Mjm6-!kY1@5MGPhd zvlW()ng$I7FXJI$O52XCVub?~)s1ipV&OadF$_t$AzEbUzj=5C!@SJW{iqVN4R!TQ&)-Z73PftovQo@4 zrutDtd*8S4V!R;njfQ~-rfDzZxSNefrr#1QhXE)u6w}o}2Q3eNt(uWUm0*}kEdFdJ zyashM8@f8)qhBMlviaKUdWQU*Q3G6Bk{W^TGxT&Gv{z`GoiiJ{PGhSF$*aX3+d-}JGG3VC2K&c#gGNJ zVhxYry!W4F^Je6q{_`Lh{u@^gZDk}PjKW$wxNn4UH#xRm3i-xIGn`XLpYJrVo;|0d3cf*!(4vB@@C|tiX&+yM^gXiJ>)t zy!IYG0kfSThMo>ngnTOqEsvVW$t(8Y{DI%mMHbFvkEFNWviOa}fz$fAG!?!8HOm>e zl1G4^&(bAzJXiG*>awt?eX;GURupY#Fun~b><${g9NI8E#-`coXc!@jt$we_26{wU znCwW1EZ;k!1*Lt!h?#VfKbdSF_ShVUdmM)zG&)@DSC^J|kQ|^IR6_Xx!8cp%a5qOJ z$8>!2cm`qM-9K&L!vYzC;_^MS=K_cjro&9GY z8lDX8hoX!hgl8vab)5IRn)AY6*%l=SHqD4+N(fJ1e@~&^ch3%gPv0Oq15p?nm zkzOgRQ!VbP7lbT0K8A~66@nDTvSi{!R7aP2D5WzB5eFb5&tprR2Wl=C#>u2Pe6p)Hg$4aArkI~R zP4YVr5|T~{9P^9jF|t!3fz9eG&toDN{WZx*-?t zTIQrzwc}O~`K@Xw$E)Js0%OgTW7ZqW_kzF(QU&o#oRbZBpbycXjwF4toG=Eq#6OWWF=X zDHFp+wS2=SgHM9>>qtmJjzzJ1Cjksd(b@a&&ji7h8#r7ZNcHH{P!!HzeIeq4bMIqvg-7f5(WH+bxt}wXxID*bb!rGPXz5TJA)uGH3|JAJqefPir zwT982uwmq883Rgoc2uXJh3sw4@<4V)@tz&b(gDn7gW5*P{gunW1t4IV68^h*{2bVz ze@fc4Wv2VE|5W{)*5VIj5=+e&1nDZ@M%@I8P5%4X9s-iDppXM}*Ly)WGpAl#7fA+m zicgGTx^#i^EE4`rkOb7XQhc`8vq`%3^44V4t`|Pn)^(rDyhpkbw_p_`9M7Ut{&N*R zGcdnD?D_v|0fNZjQ~tyO34tUI?u#NN9$SLZ%$dYyA|})U`qP_u>Or}x{%=X8G890| zl!{$iBJ8i=>wrxL2&7rdcu;=H?)fJE!vytaj`%1Vt{)j^K*j?H!vm$G3*<&IzXQx} zAeQ{b3p_W2q-T)oF1#gHZ3Tu9#SV>~rcBIZ{^V5)Q$Kds;$V&suzHvrkds&jmS>Va z)!bgv0^loqhCk{QH;?X`UjsZp-D)KdFct6eIsTnO2R6fl4X839A+^r{#Vzp|M5uni z^maC^xnHo%EV{%$qR4+yq-p{WDV$&s1GIxgoLbB(2QfqRf`;?nhxaR+SaK=-pL+XU zmDeL?N_x)Lli zbS=eTVW+F*!|c;k9VBPXt~2t$NOz`i8% zH))w#za_nr2=)ORDks9-5qQZcXXng&f9zI1-EI?Fp5iBzee|5j?^%rNHMgItVj2`C z(Vl8pxQNPiq*!mHM!oe1R9LM($h$xVKGP>qg}&pS5hb~7u}N-SLj$hYZ&uWB2-u-m zkm|4jrHrJvf!EZAPBz+d`fnL;@46s0N>!~?=1Ufe+rB_5?r$}{Uq2qMI+FG_{@N5N zAwKO_y3C*Ko_ER-EAMO@Ja*xJRScr0FMIl~8OP~3dcV#|OXvdaS3ddWZ+JssV+jO!~4`0&Oox@x?@DPiXs6{N)2b zFg1xNP=#gr`u?>pE81zR2O_l$XiW;|I#vTd@`!|}fXj+ediA~E{t2o;k_A26wL?ny zI;kVsfI=!wEu>CDOLlGXXOmP6)AdB;vv4?>+|TP`_`KZnfhx(#qqF9SiJQ^?Yw0S( z;^>+suEE_GcMBTa-6245cU|0qYjBrfA-KD{LkR8!5AL!M^v?S|cmM3aJu|&MeX8qJ z^@#3i>JyPr&}}F9)zsm6Nd9`J#(|dEdiqUPyyRHR-Hm}6Tm2r%zIvUJbBBp)Z8Cw5 zPFjLhqb~XsX-L?h1}6;ho!K1-T8*PTW%#wEK0_<_ZIk5}Hxdk>UN0(<3Y{?H0Zyv5 zNO%~=Or81i8~}uMSbGnYN!~Nj#fadYqc+vMEp3Z(PSxR7uX-ypXM#4_yvTR(NB8r6X912njv=El7rg zR+X`u!k?5u&;+Y!O8FDjM>NdWPYz^ zjAxY=)Aw=S4_^$MD0mi~&n7XZ6el$g{=ml7B}j!am|kgO^=~_8K}PL<0;GnqxtqmS z0oJb0x?uT&#d(`H#12>#MRiz5QQ4&oqX9zEZaRXEBJ*n@4MknjjIk6N zmiVMXu4<`F+|-X)6R4ldSQmfPq<%~SP7x__Hv}-O0hg88EeJy18!bHQY&Nzl5w@7G zeO^3q+&fx7=MaaBX#5UC!!jiWbgXe(kHP{^RH-KnZoeOA%tpZ70hhNPQ2jRPRy-Qm z-YHOTq9tHhe2U-PpX#eT57;L8U9O%&0L&iIY@4zOo5CZtpgke;hwn^=LoR+EA&yc2 zkFU#Si29l)jUFHHG5mvz^-)O0V^B9L05r)69>sb`i(J;Q$;cyPe!$=7?_Y&SM?581 zh%6MIzk57NP*3L?Gy$`as*C~|WqzixY6Wy7K}w%z!1w=q&ce{x1GqTtsO&TW%|I#{?&SBV%f$kryD zRH#^_jKkvi``V%2HAiu)CAT`MphYTf4I8c4k)T2?yLJedJm|ZYl-(u;nPd2>j3Y#a zH}9*1sovYUbuHw_o3E&%?e1&3@D{Nd^|8ASEZY{9d`|jhjXkrjs|ff-MY++$H^Fr?^kO#fO7v$~Zx?rC8&>Sd1t8hrX-5TBlJ`H)=4;;m^SWJ&Qi&jA z^L2K6s&^OJ#Uw|;Y}L>qjgp2^;@l&y=fu+7f1Nv|bOh)b`BXMJh~0EvnN^YJjFOBI2l1LaFEo1zRBbnk1Nm*TV&8LXL}<-5@^Y8Uzn zcA9SV(SVx!t;duv!f`WkHS|ePo7dqsOm$|qy;m6uEqXMaUc&0NoQsh<14&K&r<83E zj3vCnLb}@5HM7~f5uz+RpeNuDXa@q*vX{b@OX#XDvXo+0ZPs7B^{>(r^JkL(55Ks8m7={m6!(&rbWCKc)9CyCmUS7J1(hkzT%+I{<`XF13|VXIcOYEP7VBsMrAS zE-F?%!JsFg3@ri}FHVR1K8pvl86lMAl?c-?2xos?Qir0rfl~1&0nGr*%0__3kWh{$ zF8+rCm;=?5OWPcIL0M)%z>b+;SG*d~5LLWnq@XPx<3{iMRpdDs@t5{@^YCIlW|1HN zQK$?aS|`JD@7^X3_3q@3&MSbjJx$;;CSL{14Q^l)O}@{c&m$->v(IdOCE?>jGcr!3 zvJjM>>!zD%GHvjY3=}5h@WVuk|6?+n&6#6q&pifrsgYtjuWDEQb29;uDJO|X*cG8P z%kbDKER?ZmO9%|^#wsBW><3hkA*y)v37;f%yJ^g1mfBGrV!`#i$9=X{ZaMGP_V?y* z{{Edif0E@P>g`*=CGK3$E#&>QD+zGxyvM`!Olt8G!o5925lxFG=Ui}H*Z?lsOh=Iq z>)l5rJjCW&4~^8OJLL~6l;G=eCdG!Vzog0xr|Z0Ka;t) znh%sUz_~kIc>9Ony$3at-Q9cvr(@X(dVZyd#Ga#+s@vqNsNX3!%&hC`p4X?s?{NPr zD%-5H{0$s1Dz+rKTfNVO)WQ|rv*D19 ziQ)|$ME)2l1CW38i5V^6BuN~mGwvl9q8`gxq!>731muyzMYh&=8^d3N) zA1|6sr025Bdemd{$k4{PS!!n6zIui(?)2A37@Y|&2AiXGQ%(t@!5R|dyjpDCVmOzL zRKOoI#&sq%Z{MYn%Y59+|3-L^I;JyEEQb40VgK@7({QUrCp!>!`xEcYe<2${Aqorm zC7cM5HJ!{H!3EE(MhcCd-lm?9oF)*n1(MD$lKI$nPo678<3C?OQyaw}^JNS8bt005 zh!k%3%Q%_T&9%fU_jyOSf}tBx0mGi_z63_R;Ta&qmtp9ecP7sHKos{8b?f!!BmT|a zl{f5T#=9Stspu>_{Q_uwxkJ=9c$Fm)j>yX&&o?^oCVH$EI;vK0^j{FH6@`d^W&dDh zQ`NKcDaG(5#s{+%nJkeimB5fGiDXEgGRKg-xWcqVgc4E8ZF{m~8(nWjDzdsdgRFF6 z$di77m~GGZ^`KuIPs(hh{F08kMs}RaR}L``EJ_F^r~jUI__W0<71;5ga|BOkg-uG& zLE+OpR7g)mhhVvgSe$=?qUEGOcXL|{^}-quH$-uNJ~*h$r-~dG@@Gcj!Wxs5Y7 z`f9~P*a1>`3!4Y_)fJPKHV@^rQ53GD&t_V9%z()j$$ovrV3o`d2HY^~4BnY{`vW-W zaqg!iQ*B+aFMD01v;NjMc&c+=7#sHgcy$H3-^Xb$Hjczh{*N$^4@x)Dg$vXJy|I2hML@xQB) zvhIb=|9(91HgDLr=~RfK`82+|r8vJ^Kky^J_w@$6e?0H@vu#Bv$S|LW_Kf}-nB~~{ z&~2h(kLk)`+fNyWKHmG3dQl3M%8^DZzbz_yHd<+HonPiNX~wEz=(cUpNWH+&>1j5S zo@HevXDr|4XoK=ksDME>BH4gZ;l`qjNxNXFEJ&u`QA`EVH$uh*NL%#p7ZSke1&7i{ zskTL7?IjkbffW6dIXh}hq}?=QGOGYk9Lrrw_X}2wF`=5_jhxv+rp||%B zY}<>8r3$~SOP()^jNs&NX5+i3d-In-*d}w!-59-d{+VziahmclywXN^s6LOwT*YI` z)G0H-441dJ2QpA-J)fBnRf3nKDnioy)(p**eu)%$r2x%M;Bti&Fb1QjLJr-$2DjJ; z7!C1r17ZI|{}j33*!oXYKEJc_BxEtwefhNPaoU?l^J$hO9Js5TcQ^JWHl}!dldubD z!Ha+cRhI;rQ8m?)#BgI$yY<_RrzV6XxD;|PE=-!dz3VYIC~x&%OS8HKjB#WK3@{D`OXO{iSQO3B9!|*G;fGMP@GG<>*t{t%C_EOC^& zCuIqw(f3odo8nE<@^w%!`~4fuHD1s^RgdEXBoX^M(?J-#Q%?WCc?JfK6yo;I;EbU# zx$EF8Mm0Hj(;qcVsf87C@jpnB2|_#&_N)@ffIo3$GsV#6vQf2*U-Gh%Q95SY1UMO- z4&>|}i-5YipkH?B3VxOM4e4{%7kz{LYeGzh1GL@nT_Km(VQ;cnd-0iTx&IC}p;;=D z#c9p?3<`t#6jkwe+L!gHR9xteMB;6!uu3%7v96GDNoW|RGYYH3B5wSNCQyH>jkj_8 za*@#>8`yIJs8^WZyM;tplDg`mSIxfaf{yoe z(wE(0W;JupC*(e{C)v{G8M5Z(YO-M!bcw~>_%lvOgc&9?|5Xv&lmN+ZPbhPt=N*sG zTl>vegDICrlnBaLvf@5H^%Pbr2X2ivCXF_hkK(7O2Oj0`WiAn|jvkL<3q$gIyuH>C z1EEZwd(Q^*%vo`sEFb>_mO4(mrR?&N$1!rnqHMpG=VSUO(Qq;!P)(uX{!52T3o^5f zgRwvOC}NH~a`K63<7jE`wMf$SbSU4NtJZPen2ddqQM!yJxv)YE#k>Y?#DFozjRr_* z)+m6eDIbg|LJL?4=z{$dN{!sASYm+@*@FMdm8olUa<(&mwdi>JQDWCGzBx99e||^p zZ$@)yvT;+faPk62acbQ?;*_Fz;wW@jJcKr9m_A*h(HnTuEXULv`H0{`X^j5WdK$Ft z$oy?cK3nN*NKsm!lpf`jFsW*1d}&;QPAP?ASG{Z;4Is5QSCytN&G|Pn z+UwvXvg!X<G>CEeyydO#m;kCp z^D-01G*>+&&^P8)oD#~V4dxNT?rhR0%P7y4PDqvT^~!A0%-I_Ih6P#y+^F`2 zK~g%Z?OQ`5Q1jQ}Om9TiLqn~7IV{NHC`JYQ6;k6cJgKNu!;y|hBq*E(Ig{q~PUy#3 zxFNj8?4y3~5TvGwyW|Lfo-%&v1n^-oU;m2v=tt8#@s}pY%T{A0d(a2YzfAe-JWs;W z+^5h`#SZ(m9&J~f>Nw>3mDa)t;i(B3qQl|h`&r{5Nx$f8~paN9M z8G_!{an8?|+l`i$ibOvy+fHjj9Kf9af#CFPI^Rt*_Gc#~l?Qx+moK}$=$u;60P3FC z8)aL+nhre6EC3qjBPI7ldAgk<7UPfxA>@ghVus0-0veqGN3qQjBsh6M@emez=<9mq z&(0FRvPcHN)#63l6ubSbt)rh5fp>OPo-d3!;e^$6W&&uFFSig6Z*NJwIcY$dlJ|Il zhy(|t{)a|iIW{4WX3TF*^sAHcTBvE1t$B9j*Ofa_xUp$i6Pf)&zIHvVx7VzXazn?f zgPU&-nD5i%RI>S znU|uXnr^bCYOzcGK$bLGB{5zmdN=K=bb76X^C9YmB;ofcD$x}IFy5i=e*Hbr&zhJ} zI<5BgP^+{t5)&H~MvKY&#Zp~e9N!WP-qd2-Xd5q0T?&{C?`8#m0O{Czi?c! z^>4Xcv$RJ>+%?X-Ma*pVPcyKsY~aTiS4`sJH-d|&$Fg(NAI(Z6^3HVuQ* zR~>Xxc(4*s*M{{4viPbK&*if53)XT zLZX5{L1%?_Tu6_!outT&!~A*L5fN6QC(1YwDsc5EioNZ6Lq0Dh0>!275kyiHs_rzB zrR!#yrgM`vUTTxE_}%Akq_tw~PXo#qY$ggt< zSXo%V+EGZwGKcCC=Wt?X#iA~&_QQUxuHI?=uGDsA|TrCx|3~XIpL@S*g6>B_7UuAnm`X61MyDP-H zDq4t0-o23!iimdE2;orNQypB^V{=aKqDZ0eojdtMT_mUk$ZTWm|{I3M~ROJw3O{{`PM-(`_X)@X2V=sd_HWi5_#TtAmsJ> zAIUeD`5C!3<~)L{tN7PP+D18xadjytO^A%dQB@ag&R+zJ>umoB-)~;u-(d?a^kqYG z$(hsL*I|8Ef5{0o^fh}0*q!v)@m$G`mrF<}Ajg-a|7c&VSPg@hl;MhYcOb76GJ zQ^xtBRT5~|Z0K{T!Jcq>p`+5m@>sepFl8SiSl3OVgec(yW)d~LG`{!E;e(2D*-Ad#F=rEP> z_pi5>pOwl%`7ocLSXNzk)R~a-p<)Nsck(H)4kEplF=UPT5SD?V7z;BNebH`z`I9wb zj2oCuId0J7NhaxW!h+y@C&Ye76*rSJqlmF>vFw-b)!l}-XS!ATIsfCVtg683-F#wI zU?#~lN`>eaf-vw%S034cC28_ufh9LR->4<7GMPbqrRc{5L0)-Ll5zzQC{-`bfD~xa z{7R1gXMbtgTG(4xkkQ&ST!H~XC93vfmmrCqSo)( zp-JBUv96N|rJEwstL0aJh@b(njw%&3`}T1w`i>dmkRjf`@FH&+JWZxaYvfi7{R5NW zBMs=gG?~40RaXzEEbiBAJ|38y478gjLuGO`!y@SMEIj^XJ3C&^oAj|9GV%H!60TAg z2J=#*2JGC*9Oi4}OXjp3Vv)J*zlIG{76q-nUU-m=$tFB6?LrE^?;S5}Q1IeaSSd;W zV;O@sxrUr|LW7YCzCze(Sw)9Hh(SEJ&*sBtU-OzO4kb~!@uO;YZ^W~^CTOPV3jz{tB^VCJm39c?Y#$e{S04DhS!@fG8lS{Tzt$-n z{Ii5!$D9O4zWYeMClfCw&kF(bwPY?(D-$frRcdlLJR;xA&uq@Lzw^Ka46jf3BF(gJ zK!2j_JFpDp@QU#>Z?L(Et+3NiN;Qh7F1H*T>xLFDNJJ<3(1tUsmwqtq)>8HEJvJ>?G))SZV)%?DDxp-LN_87X7l7`#1@yaB6Wj2()jt2I3S zz3rql@sUN@gKNoxqd{cf394pBFh3aD%xkQWueT%lz@KKgO75c*Lf~M0wS$6GTuN-`iyK}Tr@+wLopio;P@LUU*N1Mwv` z@d9tYHvyQ}PaB>ozKF4Oe=FK%V}_bO(v+l8GS}h@S&ENv-5h*j@XMcvrR(Z2CQuju z2n9u!FE1soMXq~zv?B8O41qt|qStNqAphisH|;L=otAFy%LF>g!P29^P%s--Qclxd z@%O?m6@Ka9w<@_`H^>KB7CokaOQ~1ttr$w;QErlw7qV2MvGH zqL#3~L{l@+D&x#Cthh@3j<<0n@DTlBInwmUKQ@gh1!4Ek;Q@$ckEHJHfAvZ0r8{?y!PMf7*%=P$h9({KS2rAvEJfC(_o1qL5&A9V1U;Z$DxEH zw`$2ETqPxij#>^Ysyg6DxtJ2YTSyOY>;={sSWhexzjdvU%S?z}kRq`f89=wwBp`~b zRJSl+8lDWVS{35m%Iy6ey>xkwdstEcwn14>|E;%$l4>1#zbbAVqc*{ZNaa#3u0vA~ z#zfe@-Sez(41Xa|T8B(y&>)(`L6Y9+!7=d@!?}BlH0{>yp>_qD5+DM-C41~@2sk6} zf0c00WTcpL?+m2uMVZ{Skn3O9^~?*FMxESGkopzvOHJeVy}YP5C=&!5%xw+1p# zamU~>J6N3GM}#Yg@9H{8fv0e`<;)uTiS2m^b}z^(zpq>38bO$TFFCIHnfkan1kNtfguF6S2Fyi#5v&R(V%0&K|dY;N@Mt4HX--SVqNE>jRi zaMtT_eZw|nwjZc>*KCw`GKD?shdXHh2&K6>a>oB7Z8uDTz?Jrg2NIZZsEM2z|NY>T zE3BXC;gTOFpWGiKb89z+`ilqAf}V0^Q(BAW*s?R^e!uo-J_q&1f{X=t-|9M^#lROX zM#nFq&@Av4=pW(j91gBK6K?Cwr#O_z%l|-GmbWz!(KlAOa95LN`7}3Ry2#WV-d#J6 zJN^Q4ywP}fOwWhB@uJ-kX>-FRqk@kIdfQ!_bE)^*nVa|9`cRtRX(rX3n3Ku7il0wI z=Sc(BC#YY6BGfc}`7~;Ywl^8c3O^*~J4KE4KH+-B&X0UV3}P-;mirC7uC$8D;$U$? zrfE)IR=w~PtJ?DO?ok>Zo<@?PE$$gV)q{%EWUOt#u}mq=s<_lHGwvx5F`9 zS@lq={mKhO)yB55D^Hb;s`Zi#>S)~RN4|d7doI2(EaT#{Q#2$2F0x5Q|s8bheQDj9R?c^Y>f$Z-B||@ zwMJ$(SG`fyQ=!zX6Wp=f&}ctU#{M;EZ1HQROp~;_w&!rghTvpxk%HVwKBme20H^mw zp?<-G<|U(YBXJIz_dzZkKp`CTb#g10oH0iQeaXNO$}Q?xRncnw4?g*Fo?1;H%R=3` z!td|G3bX`583nq-JxQ0X2Tb661YAH_VBF8y`CvCVoMkG#b@>Nz8@)K{#BYV8P=#>& z8r}j3?KG*4`|2Mgz7hPjbiV%4g>A-qPC8b;=t=9Ndx!y#06`ljA+g#{uRn>SaH?*o zkf{pX!vv#LY`2{i+Xl4-7?d3#^Oc%xX&wrhwc#wX{x2nSgwsQ>=~0IG5y6nD77
5R$|K&n@sKBi$?xs^lYUT_N@QbX@&m;wb3bT&ON%v z!BDkH@)wEjX3rn)_>;rGgu*s^iNknX6~@FYp4loQ!sE`kvFcFKx6$A|A-9d&uAm3c;@v&rV{Ktg zC6S*kWWgI222eGaxlT?OdGsAaE=@HR>!GAj7wg$%Xt~$)LGgU0;~@s%y@ZcF4FBb# zv(6}`&`@I$=}*H7X$>IM`IR!tk~zb$jo4uL{VFY45JBmc^?dm`{W z`~_Yc+wQ^fwH3lECF|=X^rIr%%E9LWNyR#YqmYFae0@Cx^Ql{mf$w4NK^5PpuR&G* zb^Vt}S?FafGY_#V2E&{nwxx=UUxP^foEzZAcqKLH+AK>~E^!wKL0u+Rn=h~sLOz7Z z@@8z<8R&PfRUU0Pj#n-CnOAW{mVq-z)6PG{9f!aBUOSy_2#gkCPPb{rTTWkciW?O2 z!7CKWe6>;y;-8VE0yka+9vi@gU%>|1D)?3L$JpEpgp6KLgwb*>1mdplBJ+RO3r>I- zihFeTt7tLIv+M^)EqTs0VpYE^0&d;-8agG>@15Co6MGU;m0f4h$9Ty_mB>qT@e_GT zqZ5JNHc(3<9Qf~tJ)Bp|el6?g%c4eo6e21S{S0H|s_~OXsWL8eVtN;y4c3ZrPw@eo z!YKPewgs%Y`E{tNLfeF4CET|JBy=UmKCMza<;9YixZCaDzL#hN-V>&w)=`BSJIqWY zUAc30(B+)4_D~w;Wbffq@AIjLZo3J0p0^9kfP~QcVoUvM(6Xq~NRN3&G20&oKZUV8 zy5Opd30RZ%ALNK&DBYeHdqc^MGErFfqI1$^aTVwxDfsQ;&#r{RD~;wkItxuZx01_O zm&Oz8qu)97UCG1Z#n}owxD%GlixnSqp@V$pBTObM7zr0dwLYpkS{g8oEdnb%}0qf4NQM%kS<_*U0-#; zREa_zL}lLVy5T-i%r*wl+6R4nX2i5C0-0c(WgLf zilUtJnP5Lz$S%lWsgrw(b4>8iZWn?)YxJ#eN+8uBNarmtwj%-`F%1(pXv69&W1+6U z>(&#l2bq_!Ey#KK<&Y}^D_&GAh%;U5LCh&n&|ZT=sF?;I%hdNij!R2-GuAM&cF#rO zQ>@H{fFZ7L>jX6_m|o20*)&J>v>paXWdYE`ylZCQD5jAAyY2?}f*-qbd6n%53E&2e zOh#SHm7DCd!gfK}Ulqu`e*5msXYhH^ogfVX%slm#N07U&{T@e+g|C=D1erMvEoBBo zM&237fv<9ki1A_Z*FxMA@0p-_jPU5U_2cJ=G^wJH519mR{4=0sx>zex(94P$R z+QEO2!^ha2nr@2jb=9$F6$tL36S*d4Q>8d*1U@hm#17ORe2`TO^4hBX+FeEd-;(>W zRLq(O`A(tV=?m7`E&_HPgXD^W$yw0$KkBvJpRr(`l@z>Yfpp*`DuuMIO@c%tBMCkX zgmM)LZ#GI-xwSU~vJKqPIi{Jl5$4J;hp%?R+NmKMIXXB3WRY2#W_1p~U6gu1jo9l1 zSY3AoO+&2r*o{jIi{m2oES=N3u|dr2=Z0Ro9=CtQh{w)tc2J2z8F)rCw>>pu1VDU& z@x-JdQeYGDHz;xRItosmgs?m8!WctdM0NvyF|tm=Cj=wU+~>iVzpEKiV&?*uvq ztd0YP^Tqs`26LPx-w?p+6=s*|9t;mor_wcNQ=*a~cWr(rVk{l@3{E5j=l4hJRWT$} zkCV%`k90fOaN_O`924pnZLUx^823+6ajVzNYX$P!#AA3To7LqBY6|bDa3!)^1~Bc9 zCbFabB%}p{6Ya3|4%$t!Mp?yD2u5OdztLz)K5t7|(Vpb2A)X||w?6|R;E5Mwi#Phh zfE)VVFj_zd=+dvT$Nn-ECW?_+DaH49*-CQk9Y7;pU3TeUv=Dp0mNs)a}gWdE{5xbgwJGw&Qd>6gL%a{|i(%>0rW`2W&Gk_eTvr{jHL17e{3RfCI_&IO|Gw;&TA$c z0jHqatu~8eT|3InmpcO7^hJGaGS3_>7;p}Z;5ofZW#fZzdS&*t6C2vTiXEg<_7x^a zqE!=m9r|b=-3S=vC)-rwQv&OIGv-odjQwo~wtMRl}_uexP=MCPZjZxa4(e|G^{C?0e+TYfM zxISuB#AmpfDW)0+nTc=`xo)-a`A>^B4!qsTiZ!+{i3v4=wWBd@*bNRDNfR|;nQ!Np zwS@c7ZvslhMA5c;Pv&cnZ*8_VQl-s4jj1}ip}iy4+oPH~V(?bu%uv7v$E;H>M&8l% zaJ^^eb18pQC|Po9yECHM9ShxofpnFKyN_J~i%E8cLaiqe^hxt+cLzR{bLQLYblTXM zrp4doZ6y_+Irgo-;YyEl$upR|7@K1LLJd!E=>61sa@jPspk8$Ii2ISB>gsJC4x&m# zWPiETTbpZemv?Hfi5|Vc&~SFI`EAHxNIT}`mX$ZvZJ#EeR>Rib&tL=iDZh(f3h^_! zsZ&Mi-4QTz3uyjI#%f3Apy^lqyAT#%NJmbqbOM<&L6@i=h2ps(m~GSE{qFgXJxG3WURIo12m zuh2*9GV4@Mc~9c!*wXhJUk{TqHIVujkem(`0G+)2gd3Mj;a>P#*_u%4mXIq{fX)(iQ6 z-G-@2TjETw!vJSEyJKgMi$6U6b6$Ge-6Xe3PC)=;*q?OZ23R1yf1q_23^D?PbUYTs zGV^eAxr*7zGew}N5&hnTW3&Bre8QVo@>3I>6ApfqY;spsZN%x78Yx@rCE3X5?6sv! zJO;?6)@hy+Tzs(wJtSZFJY~qS1zi;M%|p58A+*yr{2=7v$3=BIP4H=j$m+TrijtL$ z-`Y9wZb$A{t^^8E*b*>-L_CFV<7eaH;h~I=Vh5J00unOBQ$~SGG@1SEaASdTAuMsM zbn4zItgXxUwq_kw342R$ihKL8=W_TcqRSlsRT2-`%rWEkQ9VShxKcTJ~EZCPRb8M@IWyY6$j{a3VyS<~ z5r>S$IZ(uKZGlDeo-HqOq3Ok}I9R4{ZH^9b7o-&7`XhJZHi@1^3pqf#?QZ;KqAA9s z+)<)bV9o(aSNno=yo(y~Qr|*d_S4QDWfgPRD3!^9oTFG6h?5UM``U3>7BrO#nqf?A zEZDf7zuz%NmgNAeG5q(_g7i|R3)^*U@7qc26?I*}Nlc9EnFHr-=*%McvS=T-Q zVJiIQ#Q+7;9zyLq7Tj?esTy}aE;`5LuF@;#Wq2|@)g3sAaE4(w#Ayh9n1Ra4Qi15Y zE>xL)$wmWD{yf%^OQaYXf((T1baR?|^V6YUq6G##1VYIxUkeQv+w;ivYDG6Grpb*n z4#st8=QLzAED9&)%#k%G=>ILWp)JVoPv}XyUtBx=eU?vmDG%#IF!OR4cwxS!|B@;D-ZD*y|EftgwqKM2f^E2Iz+9aePhi5O)URO%zDkwT%c`-cQ4=^jPf-Ui;n|0^f}x_ObgSD zDwG4ngrwdL+vkxK;T5c*wP7RfDoq{3Orowe8&*ksKgL=$n6@iGI3?NdnOgh!Zo-|U z8z2v6w9~Htud$JjfZWeCrtZG>q}6v~;~Wwaq1xVVOnlqT;SkT{dhLFEWCy zmQR+HTq1h6#l6(T$)@jl`}meCdFnKSVxeg-wf+~08i)a(WA!?-rQt%RogjNVKI zh2yE(fMFr~iI=;X&>+_4JlLS;3}EDRB(zWK4cFQgQuSK=l7jqCWYO|}+Om5d;RDx! z#$!EyT^<6eqK2!44&%4ew#|n@rE5v)fd!wQPe?aGvgrg4ItXUhysupoTh$aGI9C)_ zU%TnV{bGCkfDGna+VBt!zkPdJ#I;}*EA4;*>#O`fS*(;e`4H#@9|q}Cr2q5HMmfhr z3t9eEuqJHf?L4C!;3lyZDEsJrDNS_jUQn(ZU$Q%*xf35S|Gc_OR3$yK!q zA1Mg}5(cKi5|ld%$v%Wy@4x;&hzsOJ3XBgf8(9o<7mlx`OARv6qx3BrMWN+aEyHA2 z>kzbm$R>?;RsN$#Jm%MCRVylx_cV)_YK9yXy(_nXm)MCt+kpa>C&vgeINvdr*2lH9 z)TyGnJY=ZLptkTD$*627EFT4WffDpT?Qd$L!q+*pK`eA(YzQ;Jcyy!lsHFxb&bw4@ zWx1VW!hN$#Z691634HbmW=eoZO;a0{rDpiVCc~sA9jFZBzBn$|=ax&|d+w=K>gMlc3NL%Z@D6Ko5?$$Dy9SPD#V13KWaN*Fmjq>8e_>X^M3Ce`=b{t6Wa ebmi=`lR)UB4y;>AS!sPJ;3F@sB2^<{67qjwQ4FjA literal 57089 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
  • m`3t!*3(D_*`~|n& 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 !oCZ#Hy0fN7PniVvQ&1N{EclUyHVit{b*I^7j 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 i56}?u|9!#jzh Date: Thu, 27 Oct 2016 18:45:50 +0100 Subject: [PATCH 27/86] Changed some icons to use svg --- openlp/core/lib/__init__.py | 19 ++++++++++++------- openlp/core/ui/exceptiondialog.py | 2 +- openlp/core/ui/filerenamedialog.py | 2 +- openlp/core/ui/firsttimelanguagedialog.py | 2 +- openlp/core/ui/firsttimewizard.py | 2 +- openlp/core/ui/formattingtagdialog.py | 2 +- openlp/core/ui/generaltab.py | 2 +- openlp/core/ui/plugindialog.py | 2 +- openlp/core/ui/printservicedialog.py | 2 +- openlp/core/ui/projector/editform.py | 2 +- openlp/core/ui/serviceitemeditdialog.py | 2 +- openlp/core/ui/settingsdialog.py | 2 +- openlp/core/ui/settingsform.py | 2 +- openlp/core/ui/shortcutlistdialog.py | 2 +- openlp/core/ui/starttimedialog.py | 2 +- openlp/core/ui/themelayoutdialog.py | 2 +- openlp/core/ui/themewizard.py | 2 +- openlp/plugins/alerts/forms/alertdialog.py | 2 +- openlp/plugins/bibles/forms/booknamedialog.py | 2 +- .../plugins/bibles/forms/editbibledialog.py | 2 +- openlp/plugins/bibles/forms/languagedialog.py | 2 +- .../plugins/custom/forms/editcustomdialog.py | 2 +- .../custom/forms/editcustomslidedialog.py | 2 +- openlp/plugins/songs/forms/authorsdialog.py | 2 +- openlp/plugins/songs/forms/editsongdialog.py | 2 +- openlp/plugins/songs/forms/editversedialog.py | 2 +- .../plugins/songs/forms/mediafilesdialog.py | 2 +- openlp/plugins/songs/forms/songbookdialog.py | 2 +- .../songs/forms/songmaintenancedialog.py | 2 +- openlp/plugins/songs/forms/topicsdialog.py | 2 +- .../songusage/forms/songusagedeletedialog.py | 2 +- .../songusage/forms/songusagedetaildialog.py | 2 +- .../openlp_core_ui/test_settingsform.py | 12 ++++++------ 33 files changed, 49 insertions(+), 44 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index d00d85b54..24399a915 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -119,7 +119,7 @@ def str_to_bool(string_value): return str(string_value).strip().lower() in ('true', 'yes', 'y') -def build_icon(icon): +def build_icon(icon, size=None): """ Build a QIcon instance from an existing QIcon, a resource location, or a physical file location. If the icon is a QIcon instance, that icon is simply returned. If not, it builds a QIcon instance from the resource or file name. @@ -127,18 +127,23 @@ def build_icon(icon): :param icon: The icon to build. This can be a QIcon, a resource string in the form ``:/resource/file.png``, or a file location like ``/path/to/file.png``. However, the **recommended** way is to specify a resource string. + :param size: + The size of the icon to generate :return: The build icon. """ - button_icon = QtGui.QIcon() if isinstance(icon, QtGui.QIcon): - button_icon = icon - elif isinstance(icon, str): + return icon + button_icon = QtGui.QIcon() + if isinstance(icon, str): if icon.startswith(':/'): - button_icon.addPixmap(QtGui.QPixmap(icon), QtGui.QIcon.Normal, QtGui.QIcon.Off) + pix_map = QtGui.QPixmap(icon) else: - button_icon.addPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(icon)), QtGui.QIcon.Normal, QtGui.QIcon.Off) + pix_map = QtGui.QPixmap.fromImage(QtGui.QImage(icon)) elif isinstance(icon, QtGui.QImage): - button_icon.addPixmap(QtGui.QPixmap.fromImage(icon), QtGui.QIcon.Normal, QtGui.QIcon.Off) + pix_map = QtGui.QPixmap.fromImage(icon) + if size: + pix_map = pix_map.scaled(size, size, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) + button_icon.addPixmap(pix_map, QtGui.QIcon.Normal, QtGui.QIcon.Off) return button_icon diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index f01cf5b26..36e039cee 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -38,7 +38,7 @@ class Ui_ExceptionDialog(object): Set up the UI. """ exception_dialog.setObjectName('exception_dialog') - exception_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + exception_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) self.exception_layout = QtWidgets.QVBoxLayout(exception_dialog) self.exception_layout.setObjectName('exception_layout') self.message_layout = QtWidgets.QHBoxLayout() diff --git a/openlp/core/ui/filerenamedialog.py b/openlp/core/ui/filerenamedialog.py index ede60bcfb..cc4574279 100644 --- a/openlp/core/ui/filerenamedialog.py +++ b/openlp/core/ui/filerenamedialog.py @@ -37,7 +37,7 @@ class Ui_FileRenameDialog(object): Set up the UI """ file_rename_dialog.setObjectName('file_rename_dialog') - file_rename_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + file_rename_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) file_rename_dialog.resize(300, 10) self.dialog_layout = QtWidgets.QGridLayout(file_rename_dialog) self.dialog_layout.setObjectName('dialog_layout') diff --git a/openlp/core/ui/firsttimelanguagedialog.py b/openlp/core/ui/firsttimelanguagedialog.py index dd1389ba2..f32ec9076 100644 --- a/openlp/core/ui/firsttimelanguagedialog.py +++ b/openlp/core/ui/firsttimelanguagedialog.py @@ -38,7 +38,7 @@ class Ui_FirstTimeLanguageDialog(object): Set up the UI. """ language_dialog.setObjectName('language_dialog') - language_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + language_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) language_dialog.resize(300, 50) self.dialog_layout = QtWidgets.QVBoxLayout(language_dialog) self.dialog_layout.setContentsMargins(8, 8, 8, 8) diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py index 7b93c1680..63937ebb2 100644 --- a/openlp/core/ui/firsttimewizard.py +++ b/openlp/core/ui/firsttimewizard.py @@ -55,7 +55,7 @@ class UiFirstTimeWizard(object): :param first_time_wizard: The wizard form """ first_time_wizard.setObjectName('first_time_wizard') - first_time_wizard.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + first_time_wizard.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) first_time_wizard.resize(550, 386) first_time_wizard.setModal(True) first_time_wizard.setOptions(QtWidgets.QWizard.IndependentPages | QtWidgets.QWizard.NoBackButtonOnStartPage | diff --git a/openlp/core/ui/formattingtagdialog.py b/openlp/core/ui/formattingtagdialog.py index 19412921d..83ec18115 100644 --- a/openlp/core/ui/formattingtagdialog.py +++ b/openlp/core/ui/formattingtagdialog.py @@ -38,7 +38,7 @@ class Ui_FormattingTagDialog(object): Set up the UI """ formatting_tag_dialog.setObjectName('formatting_tag_dialog') - formatting_tag_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + formatting_tag_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) formatting_tag_dialog.resize(725, 548) self.list_data_grid_layout = QtWidgets.QVBoxLayout(formatting_tag_dialog) self.list_data_grid_layout.setContentsMargins(8, 8, 8, 8) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 463aad73f..629e55e0f 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -44,7 +44,7 @@ class GeneralTab(SettingsTab): self.logo_file = ':/graphics/openlp-splash-screen.png' self.logo_background_color = '#ffffff' self.screens = ScreenList() - self.icon_path = ':/icon/openlp-logo-16x16.png' + self.icon_path = ':/icon/openlp-logo.svg' general_translated = translate('OpenLP.GeneralTab', 'General') super(GeneralTab, self).__init__(parent, 'Core', general_translated) diff --git a/openlp/core/ui/plugindialog.py b/openlp/core/ui/plugindialog.py index ad461cd44..cd41d77a8 100644 --- a/openlp/core/ui/plugindialog.py +++ b/openlp/core/ui/plugindialog.py @@ -38,7 +38,7 @@ class Ui_PluginViewDialog(object): Set up the UI """ plugin_view_dialog.setObjectName('plugin_view_dialog') - plugin_view_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + plugin_view_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) plugin_view_dialog.setWindowModality(QtCore.Qt.ApplicationModal) self.plugin_layout = QtWidgets.QVBoxLayout(plugin_view_dialog) self.plugin_layout.setObjectName('plugin_layout') diff --git a/openlp/core/ui/printservicedialog.py b/openlp/core/ui/printservicedialog.py index c658d1496..f82bfecd4 100644 --- a/openlp/core/ui/printservicedialog.py +++ b/openlp/core/ui/printservicedialog.py @@ -50,7 +50,7 @@ class Ui_PrintServiceDialog(object): Set up the UI """ print_service_dialog.setObjectName('print_service_dialog') - print_service_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + print_service_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) print_service_dialog.resize(664, 594) self.main_layout = QtWidgets.QVBoxLayout(print_service_dialog) self.main_layout.setSpacing(0) diff --git a/openlp/core/ui/projector/editform.py b/openlp/core/ui/projector/editform.py index f4cf8a774..f15d5b550 100644 --- a/openlp/core/ui/projector/editform.py +++ b/openlp/core/ui/projector/editform.py @@ -47,7 +47,7 @@ class Ui_ProjectorEditForm(object): Create the interface layout. """ edit_projector_dialog.setObjectName('edit_projector_dialog') - edit_projector_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo-32x32.png')) + edit_projector_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) edit_projector_dialog.setMinimumWidth(400) edit_projector_dialog.setModal(True) # Define the basic layout diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index bbff73f3d..6dc45a847 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -38,7 +38,7 @@ class Ui_ServiceItemEditDialog(object): Set up the UI """ serviceItemEditDialog.setObjectName('serviceItemEditDialog') - serviceItemEditDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + serviceItemEditDialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) self.dialog_layout = QtWidgets.QGridLayout(serviceItemEditDialog) self.dialog_layout.setContentsMargins(8, 8, 8, 8) self.dialog_layout.setSpacing(8) diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py index 3b6c4bc00..97c4c7233 100644 --- a/openlp/core/ui/settingsdialog.py +++ b/openlp/core/ui/settingsdialog.py @@ -38,7 +38,7 @@ class Ui_SettingsDialog(object): Set up the UI """ settings_dialog.setObjectName('settings_dialog') - settings_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + settings_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) settings_dialog.resize(800, 700) self.dialog_layout = QtWidgets.QGridLayout(settings_dialog) self.dialog_layout.setObjectName('dialog_layout') diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 42558b830..4b605e162 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -89,7 +89,7 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties): # add the tab to get it to display in the correct part of the screen self.stacked_layout.addWidget(tab_widget) if is_visible: - list_item = QtWidgets.QListWidgetItem(build_icon(tab_widget.icon_path), tab_widget.tab_title_visible) + list_item = QtWidgets.QListWidgetItem(build_icon(tab_widget.icon_path, 16), tab_widget.tab_title_visible) list_item.setData(QtCore.Qt.UserRole, tab_widget.tab_title) self.setting_list_widget.addItem(list_item) diff --git a/openlp/core/ui/shortcutlistdialog.py b/openlp/core/ui/shortcutlistdialog.py index ed1156025..4de2d4861 100644 --- a/openlp/core/ui/shortcutlistdialog.py +++ b/openlp/core/ui/shortcutlistdialog.py @@ -72,7 +72,7 @@ class Ui_ShortcutListDialog(object): Set up the UI """ shortcutListDialog.setObjectName('shortcutListDialog') - shortcutListDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + shortcutListDialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) shortcutListDialog.resize(500, 438) self.shortcut_list_layout = QtWidgets.QVBoxLayout(shortcutListDialog) self.shortcut_list_layout.setObjectName('shortcut_list_layout') diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 42287596c..e20d625d0 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -38,7 +38,7 @@ class Ui_StartTimeDialog(object): Set up the UI """ StartTimeDialog.setObjectName('StartTimeDialog') - StartTimeDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + StartTimeDialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) StartTimeDialog.resize(350, 10) self.dialog_layout = QtWidgets.QGridLayout(StartTimeDialog) self.dialog_layout.setObjectName('dialog_layout') diff --git a/openlp/core/ui/themelayoutdialog.py b/openlp/core/ui/themelayoutdialog.py index 5289e1cc2..119611f33 100644 --- a/openlp/core/ui/themelayoutdialog.py +++ b/openlp/core/ui/themelayoutdialog.py @@ -38,7 +38,7 @@ class Ui_ThemeLayoutDialog(object): Set up the UI """ themeLayoutDialog.setObjectName('themeLayoutDialogDialog') - themeLayoutDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + themeLayoutDialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) self.preview_layout = QtWidgets.QVBoxLayout(themeLayoutDialog) self.preview_layout.setObjectName('preview_layout') self.preview_area = QtWidgets.QWidget(themeLayoutDialog) diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 427e9836b..95262cf8f 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -40,7 +40,7 @@ class Ui_ThemeWizard(object): Set up the UI """ theme_wizard.setObjectName('OpenLP.ThemeWizard') - theme_wizard.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + theme_wizard.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) theme_wizard.setModal(True) theme_wizard.setOptions(QtWidgets.QWizard.IndependentPages | QtWidgets.QWizard.NoBackButtonOnStartPage | QtWidgets.QWizard.HaveCustomButton1) diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index 81af23ae1..83df7a09c 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -39,7 +39,7 @@ class Ui_AlertDialog(object): """ alert_dialog.setObjectName('alert_dialog') alert_dialog.resize(400, 300) - alert_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + alert_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) self.alert_dialog_layout = QtWidgets.QGridLayout(alert_dialog) self.alert_dialog_layout.setObjectName('alert_dialog_layout') self.alert_text_layout = QtWidgets.QFormLayout() diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index 6679dc1f3..18adde74b 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -30,7 +30,7 @@ from openlp.core.lib.ui import create_button_box class Ui_BookNameDialog(object): def setupUi(self, book_name_dialog): book_name_dialog.setObjectName('book_name_dialog') - book_name_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + book_name_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) book_name_dialog.resize(400, 271) self.book_name_layout = QtWidgets.QVBoxLayout(book_name_dialog) self.book_name_layout.setSpacing(8) diff --git a/openlp/plugins/bibles/forms/editbibledialog.py b/openlp/plugins/bibles/forms/editbibledialog.py index f1e833637..73ff81239 100644 --- a/openlp/plugins/bibles/forms/editbibledialog.py +++ b/openlp/plugins/bibles/forms/editbibledialog.py @@ -32,7 +32,7 @@ from openlp.plugins.bibles.lib.db import BiblesResourcesDB class Ui_EditBibleDialog(object): def setupUi(self, edit_bible_dialog): edit_bible_dialog.setObjectName('edit_bible_dialog') - edit_bible_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + edit_bible_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) edit_bible_dialog.resize(520, 400) edit_bible_dialog.setModal(True) self.dialog_layout = QtWidgets.QVBoxLayout(edit_bible_dialog) diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py index ea5c291a0..554c7e35d 100644 --- a/openlp/plugins/bibles/forms/languagedialog.py +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -30,7 +30,7 @@ from openlp.core.lib.ui import create_button_box class Ui_LanguageDialog(object): def setupUi(self, language_dialog): language_dialog.setObjectName('language_dialog') - language_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + language_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) language_dialog.resize(400, 165) self.language_layout = QtWidgets.QVBoxLayout(language_dialog) self.language_layout.setSpacing(8) diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index b686e5522..d25ff337b 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -34,7 +34,7 @@ class Ui_CustomEditDialog(object): :param custom_edit_dialog: The Dialog """ custom_edit_dialog.setObjectName('custom_edit_dialog') - custom_edit_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + custom_edit_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) custom_edit_dialog.resize(450, 350) self.dialog_layout = QtWidgets.QVBoxLayout(custom_edit_dialog) self.dialog_layout.setObjectName('dialog_layout') diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index 5f46c6f28..d08679eee 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -31,7 +31,7 @@ from openlp.core.ui.lib import SpellTextEdit class Ui_CustomSlideEditDialog(object): def setupUi(self, custom_slide_edit_dialog): custom_slide_edit_dialog.setObjectName('custom_slide_edit_dialog') - custom_slide_edit_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + custom_slide_edit_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) custom_slide_edit_dialog.resize(350, 300) self.dialog_layout = QtWidgets.QVBoxLayout(custom_slide_edit_dialog) self.slide_text_edit = SpellTextEdit(self) diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index 666baffec..7b2995480 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -36,7 +36,7 @@ class Ui_AuthorsDialog(object): Set up the UI for the dialog. """ authors_dialog.setObjectName('authors_dialog') - authors_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + authors_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) authors_dialog.resize(300, 10) authors_dialog.setModal(True) self.dialog_layout = QtWidgets.QVBoxLayout(authors_dialog) diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 46e37c1cd..b23fe1189 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -36,7 +36,7 @@ class Ui_EditSongDialog(object): """ def setupUi(self, edit_song_dialog): edit_song_dialog.setObjectName('edit_song_dialog') - edit_song_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + edit_song_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) edit_song_dialog.resize(900, 600) edit_song_dialog.setModal(True) self.dialog_layout = QtWidgets.QVBoxLayout(edit_song_dialog) diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 6819f3ca6..13dce97fb 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -31,7 +31,7 @@ from openlp.plugins.songs.lib import VerseType class Ui_EditVerseDialog(object): def setupUi(self, edit_verse_dialog): edit_verse_dialog.setObjectName('edit_verse_dialog') - edit_verse_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + edit_verse_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) edit_verse_dialog.resize(400, 400) edit_verse_dialog.setModal(True) self.dialog_layout = QtWidgets.QVBoxLayout(edit_verse_dialog) diff --git a/openlp/plugins/songs/forms/mediafilesdialog.py b/openlp/plugins/songs/forms/mediafilesdialog.py index 4309eb91f..2b9bcceab 100644 --- a/openlp/plugins/songs/forms/mediafilesdialog.py +++ b/openlp/plugins/songs/forms/mediafilesdialog.py @@ -35,7 +35,7 @@ class Ui_MediaFilesDialog(object): Set up the user interface. """ media_files_dialog.setObjectName('media_files_dialog') - media_files_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + media_files_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) media_files_dialog.setWindowModality(QtCore.Qt.ApplicationModal) media_files_dialog.resize(400, 300) media_files_dialog.setModal(True) diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 7e1c04d20..10ed154b4 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -35,7 +35,7 @@ class Ui_SongBookDialog(object): Set up the user interface. """ song_book_dialog.setObjectName('song_book_dialog') - song_book_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + song_book_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) song_book_dialog.resize(300, 10) self.dialog_layout = QtWidgets.QVBoxLayout(song_book_dialog) self.dialog_layout.setObjectName('dialog_layout') diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index cd224267b..c0c532688 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -37,7 +37,7 @@ class Ui_SongMaintenanceDialog(object): Set up the user interface for the song maintenance dialog """ song_maintenance_dialog.setObjectName('song_maintenance_dialog') - song_maintenance_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + song_maintenance_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) song_maintenance_dialog.setWindowModality(QtCore.Qt.ApplicationModal) song_maintenance_dialog.resize(10, 350) self.dialog_layout = QtWidgets.QGridLayout(song_maintenance_dialog) diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 1ed3ac61b..90c19238d 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -35,7 +35,7 @@ class Ui_TopicsDialog(object): Set up the user interface for the topics dialog. """ topics_dialog.setObjectName('topics_dialog') - topics_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + topics_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) topics_dialog.resize(300, 10) self.dialog_layout = QtWidgets.QVBoxLayout(topics_dialog) self.dialog_layout.setObjectName('dialog_layout') diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py index 40fabe3f7..6f3f72651 100644 --- a/openlp/plugins/songusage/forms/songusagedeletedialog.py +++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py @@ -38,7 +38,7 @@ class Ui_SongUsageDeleteDialog(object): :param song_usage_delete_dialog: """ song_usage_delete_dialog.setObjectName('song_usage_delete_dialog') - song_usage_delete_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + song_usage_delete_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) song_usage_delete_dialog.resize(291, 243) self.vertical_layout = QtWidgets.QVBoxLayout(song_usage_delete_dialog) self.vertical_layout.setSpacing(8) diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index b665e74c2..e9e4a6bbe 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -38,7 +38,7 @@ class Ui_SongUsageDetailDialog(object): :param song_usage_detail_dialog: """ song_usage_detail_dialog.setObjectName('song_usage_detail_dialog') - song_usage_detail_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) + song_usage_detail_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg')) song_usage_detail_dialog.resize(609, 413) self.vertical_layout = QtWidgets.QVBoxLayout(song_usage_detail_dialog) self.vertical_layout.setSpacing(8) diff --git a/tests/functional/openlp_core_ui/test_settingsform.py b/tests/functional/openlp_core_ui/test_settingsform.py index 051bc7af1..3f6f0aaad 100644 --- a/tests/functional/openlp_core_ui/test_settingsform.py +++ b/tests/functional/openlp_core_ui/test_settingsform.py @@ -48,7 +48,7 @@ class TestSettingsForm(TestCase): general_tab = MagicMock() general_tab.tab_title = 'mock' general_tab.tab_title_visible = 'Mock' - general_tab.icon_path = ':/icon/openlp-logo-16x16.png' + general_tab.icon_path = ':/icon/openlp-logo.svg' # WHEN: We insert the general tab with patch.object(settings_form.stacked_layout, 'addWidget') as mocked_add_widget, \ @@ -86,14 +86,14 @@ class TestSettingsForm(TestCase): general_tab = QtWidgets.QWidget(None) general_tab.tab_title = 'mock-general' general_tab.tab_title_visible = 'Mock General' - general_tab.icon_path = ':/icon/openlp-logo-16x16.png' + general_tab.icon_path = ':/icon/openlp-logo.svg' mocked_general_save = MagicMock() general_tab.save = mocked_general_save settings_form.insert_tab(general_tab, is_visible=True) themes_tab = QtWidgets.QWidget(None) themes_tab.tab_title = 'mock-themes' themes_tab.tab_title_visible = 'Mock Themes' - themes_tab.icon_path = ':/icon/openlp-logo-16x16.png' + themes_tab.icon_path = ':/icon/openlp-logo.svg' mocked_theme_save = MagicMock() themes_tab.save = mocked_theme_save settings_form.insert_tab(themes_tab, is_visible=False) @@ -114,7 +114,7 @@ class TestSettingsForm(TestCase): general_tab = QtWidgets.QWidget(None) general_tab.tab_title = 'mock' general_tab.tab_title_visible = 'Mock' - general_tab.icon_path = ':/icon/openlp-logo-16x16.png' + general_tab.icon_path = ':/icon/openlp-logo.svg' settings_form.insert_tab(general_tab, is_visible=True) with patch.object(settings_form.stacked_layout, 'count') as mocked_count: @@ -133,14 +133,14 @@ class TestSettingsForm(TestCase): general_tab = QtWidgets.QWidget(None) general_tab.tab_title = 'mock-general' general_tab.tab_title_visible = 'Mock General' - general_tab.icon_path = ':/icon/openlp-logo-16x16.png' + general_tab.icon_path = ':/icon/openlp-logo.svg' mocked_general_cancel = MagicMock() general_tab.cancel = mocked_general_cancel settings_form.insert_tab(general_tab, is_visible=True) themes_tab = QtWidgets.QWidget(None) themes_tab.tab_title = 'mock-themes' themes_tab.tab_title_visible = 'Mock Themes' - themes_tab.icon_path = ':/icon/openlp-logo-16x16.png' + themes_tab.icon_path = ':/icon/openlp-logo.svg' mocked_theme_cancel = MagicMock() themes_tab.cancel = mocked_theme_cancel settings_form.insert_tab(themes_tab, is_visible=False) From a9c482e7888302b96ee02bc9f90c951c928e22cc Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Thu, 27 Oct 2016 18:48:18 +0100 Subject: [PATCH 28/86] Added a script to automatically clean up the resources folder --- scripts/clean_up_resources.py | 99 +++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 scripts/clean_up_resources.py diff --git a/scripts/clean_up_resources.py b/scripts/clean_up_resources.py new file mode 100755 index 000000000..ce4cc8f6d --- /dev/null +++ b/scripts/clean_up_resources.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### + +import fnmatch +import os + +from lxml import etree + +resource_path = os.path.join('..', 'resources', 'images') +resource_file_path = os.path.join(resource_path, 'openlp-2.qrc') +src_directory = os.path.join('..', 'openlp') + +RESOURCES_TO_IGNORE = [ + 'openlp.svg', + 'OpenLP.ico', + 'openlp-2.qrc', + 'openlp-logo-16x16.png', + 'openlp-logo-32x32.png', + 'openlp-logo-48x48.png', + 'openlp-logo-64x64.png', + 'openlp-logo-128x128.png', + 'README.txt' +] + +tree = etree.parse(resource_file_path) +root = tree.getroot() + +print('Looking for unused resources listed in openlp-2.qrc') +print('----------------------------------------------------------------') +resources = root.findall('.//file') +for current_dir, dirs, files in os.walk(src_directory): + for file_name in files: + if not fnmatch.fnmatch(file_name, '*.py'): + continue + file_path = os.path.join(current_dir, file_name) + with open(file_path) as source_file: + file_contents = source_file.read() + # Create a copy of the resources list so that we don't change the list while we're iterating through it! + for resource in list(resources): + if resource.text in file_contents: + resources.remove(resource) +if resources: + print('Unused resources listed in openlp-2.qrc:') + print(*(x.text for x in resources), sep='\n') + print('----------------------------------------------------------------') + remove = None + while remove != 'yes' and remove != 'no': + remove = input('Would you like to remove these files from openlp-2.qrc? (yes/no)') + if remove == 'yes': + for resource in resources: + parent = resource.find('..') + parent.remove(resource) + tree.write(resource_file_path, encoding='utf8') +else: + print('No unused resources listed in openlp-2.qrc') +print('----------------------------------------------------------------') + +print('\nLooking for resource files which are not lited in openlp-2.qrc') +print('----------------------------------------------------------------') +resources = [x.text for x in root.findall('.//file')] +removable_resources = [] +for resource_name in os.listdir(resource_path): + if resource_name not in RESOURCES_TO_IGNORE and resource_name not in resources: + removable_resources.append(resource_name) +if removable_resources: + print('Resource files not listed in openlp-2.qrc:') + print(*removable_resources, sep='\n') + print('----------------------------------------------------------------') + remove = None + while remove != 'yes' and remove != 'no': + remove = input('Would you like to delete these files from the resource folder? (yes/no)') + print('----------------------------------------------------------------') + if remove == 'yes': + for resource in removable_resources: + resource_file = os.path.join(resource_path, resource) + print('Removing {file}'.format(file=resource_file)) + os.remove(resource_file) +else: + print('All resource files are listed!') From a2e36b447fdf21e3c9949c5127b1c1e9a7ad36b9 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Thu, 27 Oct 2016 18:49:44 +0100 Subject: [PATCH 29/86] Ran said script --- resources/images/about-new.bmp | Bin 77334 -> 0 bytes resources/images/bibles_upgrade_alert.png | Bin 762 -> 0 bytes resources/images/custom_delete.png | Bin 666 -> 0 bytes resources/images/custom_edit.png | Bin 668 -> 0 bytes resources/images/custom_new.png | Bin 579 -> 0 bytes resources/images/general_search_clear.png | Bin 644 -> 0 bytes resources/images/image_clapperboard.png | Bin 191834 -> 0 bytes resources/images/image_delete.png | Bin 666 -> 0 bytes resources/images/image_load.png | Bin 531 -> 0 bytes resources/images/import_load.png | Bin 531 -> 0 bytes resources/images/import_move_to_list.png | Bin 862 -> 0 bytes resources/images/import_remove.png | Bin 666 -> 0 bytes resources/images/import_selectall.png | Bin 784 -> 0 bytes resources/images/messagebox_critical.png | Bin 740 -> 0 bytes resources/images/messagebox_info.png | Bin 795 -> 0 bytes resources/images/messagebox_warning.png | Bin 762 -> 0 bytes resources/images/openlp-2.qrc | 32 +- resources/images/openlp-about-logo.svg | 323 ------------ .../images/openlp-default-dualdisplay.svg | 489 ------------------ resources/images/openlp-logo-256x256.png | Bin 51349 -> 0 bytes resources/images/openlp-logo-420x420.png | Bin 70795 -> 0 bytes resources/images/openlp-splash-screen.svg | 296 ----------- resources/images/openlp.org.ico | Bin 10134 -> 0 bytes resources/images/presentation_delete.png | Bin 666 -> 0 bytes resources/images/presentation_load.png | Bin 531 -> 0 bytes resources/images/projector_connectors.png | Bin 8853 -> 0 bytes resources/images/projector_spacer.png | Bin 170 -> 0 bytes resources/images/projector_view.png | Bin 694 -> 0 bytes resources/images/service_delete.png | Bin 666 -> 0 bytes resources/images/service_edit.png | Bin 726 -> 0 bytes resources/images/service_new.png | Bin 579 -> 0 bytes resources/images/service_open.png | Bin 531 -> 0 bytes resources/images/service_save.png | Bin 563 -> 0 bytes resources/images/slide_close.png | Bin 813 -> 0 bytes resources/images/song_edit.png | Bin 726 -> 0 bytes resources/images/song_export.png | Bin 638 -> 0 bytes resources/images/song_new.png | Bin 579 -> 0 bytes resources/images/system_add.png | Bin 761 -> 0 bytes resources/images/system_live.png | Bin 720 -> 0 bytes resources/images/system_preview.png | Bin 815 -> 0 bytes resources/images/theme_delete.png | Bin 666 -> 0 bytes resources/images/theme_export.png | Bin 638 -> 0 bytes resources/images/theme_import.png | Bin 628 -> 0 bytes resources/images/tools_alert.png | Bin 762 -> 0 bytes resources/images/video_delete.png | Bin 666 -> 0 bytes resources/images/video_load.png | Bin 531 -> 0 bytes resources/images/wizard_createprojector.png | Bin 149097 -> 0 bytes 47 files changed, 6 insertions(+), 1134 deletions(-) delete mode 100644 resources/images/about-new.bmp delete mode 100644 resources/images/bibles_upgrade_alert.png delete mode 100644 resources/images/custom_delete.png delete mode 100644 resources/images/custom_edit.png delete mode 100644 resources/images/custom_new.png delete mode 100644 resources/images/general_search_clear.png delete mode 100644 resources/images/image_clapperboard.png delete mode 100644 resources/images/image_delete.png delete mode 100644 resources/images/image_load.png delete mode 100644 resources/images/import_load.png delete mode 100644 resources/images/import_move_to_list.png delete mode 100644 resources/images/import_remove.png delete mode 100644 resources/images/import_selectall.png delete mode 100644 resources/images/messagebox_critical.png delete mode 100644 resources/images/messagebox_info.png delete mode 100644 resources/images/messagebox_warning.png delete mode 100644 resources/images/openlp-about-logo.svg delete mode 100644 resources/images/openlp-default-dualdisplay.svg delete mode 100644 resources/images/openlp-logo-256x256.png delete mode 100644 resources/images/openlp-logo-420x420.png delete mode 100644 resources/images/openlp-splash-screen.svg delete mode 100644 resources/images/openlp.org.ico delete mode 100644 resources/images/presentation_delete.png delete mode 100644 resources/images/presentation_load.png delete mode 100644 resources/images/projector_connectors.png delete mode 100644 resources/images/projector_spacer.png delete mode 100644 resources/images/projector_view.png delete mode 100644 resources/images/service_delete.png delete mode 100644 resources/images/service_edit.png delete mode 100644 resources/images/service_new.png delete mode 100644 resources/images/service_open.png delete mode 100644 resources/images/service_save.png delete mode 100644 resources/images/slide_close.png delete mode 100644 resources/images/song_edit.png delete mode 100644 resources/images/song_export.png delete mode 100644 resources/images/song_new.png delete mode 100644 resources/images/system_add.png delete mode 100644 resources/images/system_live.png delete mode 100644 resources/images/system_preview.png delete mode 100644 resources/images/theme_delete.png delete mode 100644 resources/images/theme_export.png delete mode 100644 resources/images/theme_import.png delete mode 100644 resources/images/tools_alert.png delete mode 100644 resources/images/video_delete.png delete mode 100644 resources/images/video_load.png delete mode 100644 resources/images/wizard_createprojector.png diff --git a/resources/images/about-new.bmp b/resources/images/about-new.bmp deleted file mode 100644 index b523f6b60c8a4ed31af99aa0972f888be0aae965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77334 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 s|?9jsO4v diff --git a/resources/images/custom_delete.png b/resources/images/custom_delete.png deleted file mode 100644 index ef8e685e2edc2bd322bc20b3930b3b8a4a956692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)EpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< diff --git a/resources/images/custom_edit.png b/resources/images/custom_edit.png deleted file mode 100644 index d79aa515177ef7252c144f87900e3c77b9449d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 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 Ao&W#< diff --git a/resources/images/image_load.png b/resources/images/image_load.png deleted file mode 100644 index eb211e2332d811f9cfcba08c7b5353298b1b02fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH})6 z^6MbX=%g{b0w^e1;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6j0HV0G|-o z|Ns93nQ-9LaT|o%Z#%Z%R!rHXoV{N;=b&cc5yP})hUKTM>dphjom;PZ)a>)_xfL?` zL1@dtj0s2brk*HT`lMpTv&t1u>ZWb3o4%!W*5>YQZ>B8WK6U%U8GBwYIQnVfp|?wp zzFB(g&9Y-}Rvv%1_SD<;r-A7G#xo!GT>iNK+Lr@2K0bc(^x5+l&tJTF`ReuSH*em& zef##^yLa#3zyAORAHm?$r%#{3;LDdUU%}uT2z>wk{l||VKY#xG_3PK~-@pI-`SbVh z-+%x90X@i}$DaW7A!kXDUoeBbjh+3kKY#ym=`)D|1$#VQ977}|Sr0mTF$apU9C-Cl zzp1lBVaFF6xtq+KP1ekLB}U1i9-K1Y4qq^5cyC_3>rTxQ-%05{ar?Kv&3d$_=YFhp z_Sz3$K3Lu?n>%yrhWkEF&#$N@sHAQ6RC_J%|MqFV7uRE!|Ni!!d&litp4W03 xB2RwV@}1{G@bb&@4By{A;bNGi!c-u0+-L1P+nfHmzkGcoSayYs+V7sKKq@G6j0HV0G|-o z|Ns93nQ-9LaT|o%Z#%Z%R!rHXoV{N;=b&cc5yP})hUKTM>dphjom;PZ)a>)_xfL?` zL1@dtj0s2brk*HT`lMpTv&t1u>ZWb3o4%!W*5>YQZ>B8WK6U%U8GBwYIQnVfp|?wp zzFB(g&9Y-}Rvv%1_SD<;r-A7G#xo!GT>iNK+Lr@2K0bc(^x5+l&tJTF`ReuSH*em& zef##^yLa#3zyAORAHm?$r%#{3;LDdUU%}uT2z>wk{l||VKY#xG_3PK~-@pI-`SbVh z-+%x90X@i}$DaW7A!kXDUoeBbjh+3kKY#ym=`)D|1$#VQ977}|Sr0mTF$apU9C-Cl zzp1lBVaFF6xtq+KP1ekLB}U1i9-K1Y4qq^5cyC_3>rTxQ-%05{ar?Kv&3d$_=YFhp z_Sz3$K3Lu?n>%yrhWkEF&#$N@sHAQ6RC_J%|MqFV7uRE!|Ni!!d&litp4W03 xB2RwV@}1{G@bb&@4By{A;bNGi!c-u0+)=>P)60+m=mEULo}(6DE|o@Zn-E{+#%FBN6by>iN&WA))_C@EKH8?PsO`9y;M64pgk+G zo4(KY^=oW**AUeLtBE#EEYk$bC)G`2e1dcXlWsAycerd)^&Wu9d5P0&wb^L>f^vQ! zG8UuNGFlnXkR*z3tmp&*ekWwL9Qe_)0)eZnJ=$f>#Hl0v@F7v zuf#Z2=f%-o!IdkQ^!ztB5_xqAkpb_8=v?E}e|GukQ7l#SRydGZXRdfqM3|k$=$f~p oro44E|HtiCRwA;~*#1|)1JnysG2#JYp8x;=07*qoM6N<$f~BjP$^ZZW diff --git a/resources/images/import_remove.png b/resources/images/import_remove.png deleted file mode 100644 index ef8e685e2edc2bd322bc20b3930b3b8a4a956692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)EpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< diff --git a/resources/images/import_selectall.png b/resources/images/import_selectall.png deleted file mode 100644 index 0f0d9f152d0eb2e57437237bab322b6e4712f0a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmEaP)<9MLk?fT*2VVRzu4#O}cO;h4H zW@BSRYqgpm85z;p+1VF^sXKP&^l0b$FTd3S0PlSfFsd4hht*tFt zSXjszV@wiu%b$%r%RS$I(*MVmZ-3qcus8QAB}qbme?M^?V~jynF+qKG1a@bOG)>9p^M?(rwZw5uxm?Ct%l+l6++4iH zPd{8hkABTD56(HPwVB}o1MfYJMuU32PUF=}3Z;*ks2pdzGl~6sI}1tE^uTu?Fo>dv za=FaiJAX1@UUBmLC4wM#AlW&Gb1pLo-Zrq-vUdL-J3B8qb@n?%0<5+4dOdo*UbY`H zs8*|p2+d}be4)sv6Q@~UU#HXQWT_%T5Cjwo1w@3gv9WzXk|a3ih@yz0p`k;{@9wHf zk|g_p<>lpXMC9bk%1Y|J&w1~Ssv1=dy!Y~^rV|kl_}$&z#^&bc8o+A|F^K=DHTx9+ O0000>-t_Ikyz9;tqrg_ z0BwAHJQD5cdH#NK(pq0z6B0-^MZw{8Vs|zqtP(Hz`(#K324@J z{nhsLv?sH=>h;yuqIx_yH4SG~6?R3TWSUsH9A+-ZWiH3Ph6ba$vojYA2D@y4KM)9n zzR%8jZHj^rg8E1V$>HGq=m_5JvYVT{>FD6}@DP{ZkK*%TWwU&Y#V~eu04ScH z-wr4m26k0N2tlDxK$c}>Sw>Y=WTz9^<)UzQ_Gf^Z&Ejipq-kyr$?YbeN+ApbcOXF1 z%nVXxCD!rrZ=r7hHd)5uauJHfkbOQbG8x`>b@46|;VPfU<@Zw;kAo1m1LTSdiiW|~ z@G$9QlJ&km(iudJ{X4wFqL`8+fPfa>-Bs_pubzD`YfzD!Jb`42rC8Oc8x96SjI zgI#vuqPn`e@x|a^odu^STU)Lx%aU$8RJ~s6leK~y-6rISra6k!<0|1-PerrFopQtalmJpXEVZ)+2CK(I3hyja2zK9Z~|}vaF?Hx0G0q`h{#$OAR<&ioT4ap1_FU$RaF&T z*R#5=XH`{I0)fD=D2knB_*$+a?2~1=SJSjqu3%B$h(hOXjnetsqx4{OhH?dqG)+s% zvfK;6w+dMWIAvMxWsI@F_$+xl?$E)myEK=`(wE2&>h7DOmJ1K*>C0JSjIlDrx%#;v ziejgxX{n)!ujD*_gIX@XBKdxpbX_OL7+vb0p_4b?Qroo&8k>rerfI42I)V*=%kTI1 zG)c|PXRZ&S#^ZyH=a4rEiy0l0-!hnv^!yzHVAeOxk3@dtz~!s$w(v;Z6m$qS{x2k-&%-bb)H>{_uHx}ax1bpo z4j-sPBoc`ONb&%d6h(<0J0xQNb|9KI;PceNuTH}QYajyhO_;I zQv-zdAaNZ*LVJ)JFOJY_b#bFe|57<`7HRn10$q7LNmrkIpcfxwlsAk2S9vqX#BKJR Z{{SIx#*gQc%w_-p002ovPDHLkV1jdYXIKCL diff --git a/resources/images/messagebox_warning.png b/resources/images/messagebox_warning.png deleted file mode 100644 index 331aa268725a4edff3fa6cab7dfaf5af24708c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 zcmVz8xpUII{8&=iH{wnUDxx6o*XQpr9@S zFA7f~5wyArj)7engn2gzstbkiqQW4^o2U%CF~JzoO$Y@oEjOFGxwX#D=9!*z-Y(o0 zQwbk<`S`x?dETGrWkiIXV2m*U4FEj(r*8lvv=^C(b_IaeKp-$7%W^`Nt(9kFmQEb*nE7Psy^?IqR ztBayjPKwQXiHJy&qz3@_5)S~tZnyVDm%lIP5+5is35raDTrL;6T(06>jn7at{N)#b z6NTa?0O;-Qt@Qi-eRcKC_36+(fN|S~@H}|_-^lXUJE&`DvkeRkTqt;90$|BxGRLp` z`_FAAgHTsr1Ed20I-3=AHY>#hx%don>+f;v=GF56+8JZu1VM0DR8;s+oj!Xq`ROt= zB~%pnI#Td;q)OJLXMdu$eUO)BITH*9=a|Ri@x7aV`>56uZi>(Ll#p-S-98`QF5Pu? z_YC6M`lSYE%SBUFRn<|4v#}`^ewD>Op@g67c8A+32*R;4RaJ9_VQ3cj;Fel`NG<2K z4it!wpY0ZJYUYhH+a;BVtcGD|0MIfrGV&yqO2ufONT<`uv9Yli0FE#K41f(l8-N-B s|?9jsO4v diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 867e4dd7a..c3e1bbce1 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -33,7 +33,6 @@ bibles_search_combined.png bibles_search_text.png bibles_search_reference.png - bibles_upgrade_alert.png bibles_search_clear.png bibles_search_unlock.png bibles_search_lock.png @@ -71,7 +70,6 @@ general_back.png - slide_close.png slide_next.png slide_blank.png slide_desktop.png @@ -83,12 +81,6 @@ media_playback_next.png - openlp-logo-16x16.png - openlp-logo-32x32.png - openlp-logo-48x48.png - openlp-logo-64x64.png - openlp-logo-128x128.png - openlp-logo-256x256.png openlp-logo.svg @@ -97,11 +89,7 @@ openlp-about-logo.png - import_selectall.png - import_move_to_list.png - import_remove.png - import_load.png - + export_load.png @@ -113,8 +101,7 @@ wizard_firsttime.bmp wizard_createtheme.bmp wizard_duplicateremoval.bmp - wizard_createprojector.png - + service_collapse_all.png service_expand_all.png @@ -155,10 +142,7 @@ multimedia-player.png - messagebox_critical.png - messagebox_info.png - messagebox_warning.png - + network_server.png network_ssl.png @@ -170,10 +154,8 @@ tools_add.png - tools_alert.png - + - theme_delete.png theme_new.png theme_edit.png @@ -201,12 +183,10 @@ projector_power_on_tiled.png projector_show.png projector_show_tiled.png - projector_spacer.png projector_warmup.png - projector_view.png - + android_app_qr.png ios_app_qr.png - + \ No newline at end of file diff --git a/resources/images/openlp-about-logo.svg b/resources/images/openlp-about-logo.svg deleted file mode 100644 index d4f9c2dbe..000000000 --- a/resources/images/openlp-about-logo.svg +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/openlp-default-dualdisplay.svg b/resources/images/openlp-default-dualdisplay.svg deleted file mode 100644 index 40ebedeac..000000000 --- a/resources/images/openlp-default-dualdisplay.svg +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/openlp-logo-256x256.png b/resources/images/openlp-logo-256x256.png deleted file mode 100644 index 0fcf37a7c6ee6b1b98d62560bb8f519fc05f9998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51349 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

    A|jGpsEt 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/openlp.org.ico b/resources/images/openlp.org.ico deleted file mode 100644 index f11e7680970d124c7fdd1b3915cc13d1def2911d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10134 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 Ao&W#< diff --git a/resources/images/presentation_load.png b/resources/images/presentation_load.png deleted file mode 100644 index eb211e2332d811f9cfcba08c7b5353298b1b02fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH})6 z^6MbX=%g{b0w^e1;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6j0HV0G|-o z|Ns93nQ-9LaT|o%Z#%Z%R!rHXoV{N;=b&cc5yP})hUKTM>dphjom;PZ)a>)_xfL?` zL1@dtj0s2brk*HT`lMpTv&t1u>ZWb3o4%!W*5>YQZ>B8WK6U%U8GBwYIQnVfp|?wp zzFB(g&9Y-}Rvv%1_SD<;r-A7G#xo!GT>iNK+Lr@2K0bc(^x5+l&tJTF`ReuSH*em& zef##^yLa#3zyAORAHm?$r%#{3;LDdUU%}uT2z>wk{l||VKY#xG_3PK~-@pI-`SbVh z-+%x90X@i}$DaW7A!kXDUoeBbjh+3kKY#ym=`)D|1$#VQ977}|Sr0mTF$apU9C-Cl zzp1lBVaFF6xtq+KP1ekLB}U1i9-K1Y4qq^5cyC_3>rTxQ-%05{ar?Kv&3d$_=YFhp z_Sz3$K3Lu?n>%yrhWkEF&#$N@sHAQ6RC_J%|MqFV7uRE!|Ni!!d&litp4W03 xB2RwV@}1{G@bb&@4By{A;bNGi!c-u0+E(j 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 XFutHc`9y>{00000NkvXXu0mjfaclIX diff --git a/resources/images/projector_spacer.png b/resources/images/projector_spacer.png deleted file mode 100644 index ca5a54a04af8bc1b5e6b64c0f3821d01664d0393..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPq7nh&}t6oLdYM_v0iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$0r;B5V#p&b(3D(64B0WqT3=Av+42-SztBQcK44$rjF6*2U FngGWaD7pXu diff --git a/resources/images/projector_view.png b/resources/images/projector_view.png deleted file mode 100644 index e4d7e971bb1c0dd5a01739f7b440015e10139cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)0z*ke zK~y-)-IF~`Q(+i|&v*NOxgQm*6{EG-NU%zbwGEKaQ31gPc3jJfmCGLLEU})M%uQ(f}<8ili|@X-oRuA6xo!KPS8B;AlM4llQ#mo!$fdU%GX3qQ=3l zV2vFRYdkhO`sZ+GM<)Pa^vczjJ*T@B&N=zzttOXkeZ6PYYvbdO0HDJksO4%)BNs-R z1VYX;#xBk;%%fN=p5jEXy4}sCwbhk6N~MVJgb%wNjR(>NgnhUG-^`1FhC6GnlfSlU4%kpvM0 zP^k{_xw)Ceg@v3bif)U=0##8!>nT*mkXZWE_8=U7W{5_kcXw82y;e1i)WVV6W)zCPh3?Oso{UDAZZO%2d=0iU-E zc(rAm*}vC01wtO{)vBSY>jSxbe(;!8>+|gs(MUyPWetEpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< diff --git a/resources/images/service_edit.png b/resources/images/service_edit.png deleted file mode 100644 index 84e345d22430175e80c4ea1f1f17e6790649ee35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00!&;00!&<9(6c100007bV*G`2iOY{ z7a2C-AH01400LG?L_t(|+KrK2NK3O( zt1}KT&;|T(yOCwtC`po#_0k7ph9JvdOL^V;h3l;{2P{)smPaJXL|`(R!U9vMn@q;+ zw^z~I)5VRZcy?}fbNa00YRQt%#X%S&(MZ=zpTpfZ^$5qeH`waqS#O@X&Ms zw`tRn7yOwXN}hd>GX8`M)jn289%?QISxBuwU-kf#VSyA%jF1G>A++hoT)FFEUQwwo zQP5J$P~{x}4q!3nf{-NOa}u0>i0#f8pNHMtJT-@T(?Mned04GhfF)xm>J5w%nu5@m zs~QJ+*X_i1bdD|CavAj%l9rZ+#bN;VxXK$hi6FoGM6#-0&DYi+BPO7z*s9d>{0vUq8c z&G}94mG91_zoj3m9VHsT2!GA?={D6)mHkfz06td>m_bcrSPcMDDeJM*+y>fjK<#^t z=uU*oi<@Nt)FU+;02V?7_3H~3cIR1VuFMcTS6l_&FA2GV;y{3lgxXDZuxrZSS;?#* z=QUvpn-9RT!7#-`zX5oG|B7vHE(aR6zHX6znI;PO!UTD_B~KNw&}=sMyujCO=T4U( z2yTeTTYCpkegjtzCeCEM0NlE6vV;ClKoWLfLST%sZMP!-L1P+nfHmzkGcoSayYs+V7sKKq@G6j0HV0G|-o z|Ns93nQ-9LaT|o%Z#%Z%R!rHXoV{N;=b&cc5yP})hUKTM>dphjom;PZ)a>)_xfL?` zL1@dtj0s2brk*HT`lMpTv&t1u>ZWb3o4%!W*5>YQZ>B8WK6U%U8GBwYIQnVfp|?wp zzFB(g&9Y-}Rvv%1_SD<;r-A7G#xo!GT>iNK+Lr@2K0bc(^x5+l&tJTF`ReuSH*em& zef##^yLa#3zyAORAHm?$r%#{3;LDdUU%}uT2z>wk{l||VKY#xG_3PK~-@pI-`SbVh z-+%x90X@i}$DaW7A!kXDUoeBbjh+3kKY#ym=`)D|1$#VQ977}|Sr0mTF$apU9C-Cl zzp1lBVaFF6xtq+KP1ekLB}U1i9-K1Y4qq^5cyC_3>rTxQ-%05{ar?Kv&3d$_=YFhp z_Sz3$K3Lu?n>%yrhWkEF&#$N@sHAQ6RC_J%|MqFV7uRE!|Ni!!d&litp4W03 xB2RwV@}1{G@bb&@4By{A;bNGi!c-u0+XvKK@k7Ytwo{YB(9F? z;2_0Ku;{F~yQsL?!9iy?1;;|c4%SjZ%{70TwwHKcBH=J-%EN&+{;d zhN(E7P<- zOhP?!y}wyJm`;b*`kqJvqBiX|nL~L2fd*Ux1d!eYF6Tbg5P<9ZC&&uF5~UDVJ~Kya z$B9GKW9yGCk1)gXRIvtRXipPk@<6(R{ z10;&Qkze=csdPHpgO1qUX}3Wtm&>>~JBMXkI4Be#D>XTZ+DDB(A$cT#*xhj)kQiey zO%sM;K-YE1@`TY9(UZv}-m29|6TcYK$LKUNox!$kO4I`&Fl}aA7Py>1;e44jn~%EA z#v7jv1002ovPDHLkV1jI` B^11*3 diff --git a/resources/images/slide_close.png b/resources/images/slide_close.png deleted file mode 100644 index 2c2f99eb46be90636f98984936190752350370af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)E-4*}<0=h{= zK~#9!WzSn^)dc{@@z4K%&e_h+uIFq=%jRlhi`pDHEu;s75`r%D5=B@K77|LMhcYtB zu_)9aeCwfntVjt2>7mQOAXr+9^^#1|9GtD`ZtZrqbGCB}A8nt9-{Tj40h@h9LxO!V z9temQ$rQNw4io<8j=*th8yKhw!#7%Y@2*Yv^ax`yi{s-m!^7olE_Z&Nw~vw86c}Jj z6W_OP-`>~P->3c$VnnTx?4w_de8rShOxK5(ZQP zN|Z|!OC5~hy?t0~b6;C=n z)zxm_N=G8;IHwSVh$J|ijD%uMd4=Yrnr+*49Xe*Zv@SC@uH(%k>N`8dd%G=7PDs_) zOYq`*G)E4Q?%sk^EO23`--RVK`hNN^?k3WC<(delcw71NvYRrn(QjIEF!*z;P z2uhTT6iX}?Q+l6#4nX_Phs8U3RT`;kCQ?HTF$&>1CPG%%bL18opHJB{Fr;&U2HSaeDWsC5=5FFCVs!)oxmmJTNUXBK&;g!bWF-JV!{;2kpSPBY zt%j7V5fT=NZ_tEgE_}eDQKnIe0AT%Feu*)BAN9$KbX`#*QJ}75wan!|7&yquoBWFk r1U3tiK&qRTdZHuDlvzL)B>?yjfS~`FyINaO00000NkvXXu0mjf;$wU` diff --git a/resources/images/song_edit.png b/resources/images/song_edit.png deleted file mode 100644 index 84e345d22430175e80c4ea1f1f17e6790649ee35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00!&;00!&<9(6c100007bV*G`2iOY{ z7a2C-AH01400LG?L_t(|+KrK2NK3O( zt1}KT&;|T(yOCwtC`po#_0k7ph9JvdOL^V;h3l;{2P{)smPaJXL|`(R!U9vMn@q;+ zw^z~I)5VRZcy?}fbNa00YRQt%#X%S&(MZ=zpTpfZ^$5qeH`waqS#O@X&Ms zw`tRn7yOwXN}hd>GX8`M)jn289%?QISxBuwU-kf#VSyA%jF1G>A++hoT)FFEUQwwo zQP5J$P~{x}4q!3nf{-NOa}u0>i0#f8pNHMtJT-@T(?Mned04GhfF)xm>J5w%nu5@m zs~QJ+*X_i1bdD|CavAj%l9rZ+#bN;alHwszNK zl@DM)L<{{x!FClwAP}T9eqQMG#<`CObPj93CE$%jMpcN~I?N3Mh^z zlL{iJNI)sVFr?Gz;JPl3x|6i}Q@rxoC@gVo%rRBG)k z+C_w3uU9LV%cEpOyiMRXVjMRD5kaY&(wgORNxfd@`ucingmgNMWm)~>b9!e=*yn4xxX0r+W++1YQ zbzSj1Pv-Nv1VJE+#X^?LrG#N9K@do{+m-p;mk(b)_kqWN5)njXB`}-aDd0Gc3@$I_ z{ilz8;2EGJawPEDoy|hu_az8|Edddc$#fciEq`mQI&YCh1O+@;Dc_Zta5eL9iCS*p Y57qJ{2^`p;;{X5v07*qoM6N<$f@DS=zyJUM diff --git a/resources/images/song_new.png b/resources/images/song_new.png deleted file mode 100644 index 8431237bd374e68931a13df798bc0996452f705f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmV-J0=)f+P)VxXK$hi6FoGM6#-0&DYi+BPO7z*s9d>{0vUq8c z&G}94mG91_zoj3m9VHsT2!GA?={D6)mHkfz06td>m_bcrSPcMDDeJM*+y>fjK<#^t z=uU*oi<@Nt)FU+;02V?7_3H~3cIR1VuFMcTS6l_&FA2GV;y{3lgxXDZuxrZSS;?#* z=QUvpn-9RT!7#-`zX5oG|B7vHE(aR6zHX6znI;PO!UTD_B~KNw&}=sMyujCO=T4U( z2yTeTTYCpkegjtzCeCEM0NlE6vV;ClKoWLfLST%sZMP!bWclW8C_=Zb~GH-P80Ef&5mFX!vysop{R z^^U%jo0#tI?95(hZAGzA0EpnaE`DroVs&jTU#XP)J}oVM`3G>LtE;1_srmD*?ru9` zS=ig%!Pw|10AONr5)IibwANTzT{+m^{dMQ#!uv%4U;yap=}BeMnZ;}E?Y8GtuwU9o z+4DkYp68)l+K2CXxO(}Dold2vd!O{mFb6DUe@jbq%CGte0)Uv|`^Ny^_fW1>K*V4s zG&MG6^~S*vfL9g(L}Rf5As9Q`Kf%l(7VzsF6pKY@ZNLnG81XYP#NzRLAs{07;>P+q z-o1GXtu<=38no6S;N|3tuy0^6@^l2Tc+3s2pd48U{2)t25JEr*aiX-245d@~w#z|0WL zD3>eYiHSr4$z%e|d?Ld@7%m8WtegilFP(74yjQR5yu~*prBQPW_00000NkvXXu0mjfdy-ED diff --git a/resources/images/system_live.png b/resources/images/system_live.png deleted file mode 100644 index cb2be2258ad636e049e7903049b6f0a662191bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmV;>0x$iEP)XC`teT0$oW& zK~#9!#ZpUa6HyfYGI#Q7I!z)-lh~$dv?i^#L0yO-*e-m56(0!VKM<_H!~Oy3TCiQY zbfYd5L1GXJLSvJW(B{!L>6m2NyeG}|+`*J=T#6rj+?jjs`ObIFz4-62^gkkz2wPo! zeRXtnbir3vmbs>t`0j3jt7_`o%F4?z5F`*LCqqw_Vdb*bY8^1g z!MR}X*sR53fh@~V6y?(R`1rHFfYt5s+z>$lvMdr!cDr3+-`pF3Ddh3EuZvu1e*RkU zgx7m-Noua;f<1f~J)rNIIsy_4RdZrZy4q2QU$ufYC7!2m~-PG9ubB z3-o9<`z38w-rnA3^?Kb*rs<pF6|E##|o zsC9^iE3+6@hT(8Hgn&pkG)>#eX0vZB00doRDHx4L&(l+$a=Bcm_KJHxnaO8{TtiI~ z%`k~oNO*@5)nqdHovP;m)GhcsB%+PjBN{}Ge}Uhla5FU+K$&>}0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00VXa00VXbebs`@00007bV*G`2igM+ z4<92IW@u0V00OT`L_t(I%axK%Ya~?^hM!v>UDaLP+Fex{qhTPp5Me@g$tpN5j5{~M z&HM)q2yOz|I9mlF&L4>XATZg91PKI(EF=WPk%kzIOuAD^ch^VXs=8IzMd-u3!8z$?H@VVFRbK#{>TheSeB!lc3&jHw=009XK3 zRUwQqxC%ZQLOX@C3H)#gWS}MFIZ%VD5W1kM=5GNrQ;P5vmraehm@@b99YjZhz5-&f zCM3;->pTIWkZuF5-?|65uFLnsGrYth`DKEkU!sdC=_uynCMAkf(j>-E1q}m|e1g9u z?g2M9H~e_K+P4YtEW*J)RTMx>zD5W?*KmT@n zd;81VAiS>E09#vI@2{_~e{C4XW7l;%ZnujN0^7FHTDPMp`ba7D9C-1s9{|Gl{ReAnYmZk}R^DD+UF|xK tBaV-cM~8=pe;phg9E?VzA)sdqe*@Z{U&e+k@d5w<002ovPDHLkV1g~WY25$- diff --git a/resources/images/theme_delete.png b/resources/images/theme_delete.png deleted file mode 100644 index ef8e685e2edc2bd322bc20b3930b3b8a4a956692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)EpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< diff --git a/resources/images/theme_export.png b/resources/images/theme_export.png deleted file mode 100644 index d26519b7f362ef306c29e5d55e08d15ae1323b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hRBP)alHwszNK zl@DM)L<{{x!FClwAP}T9eqQMG#<`CObPj93CE$%jMpcN~I?N3Mh^z zlL{iJNI)sVFr?Gz;JPl3x|6i}Q@rxoC@gVo%rRBG)k z+C_w3uU9LV%cEpOyiMRXVjMRD5kaY&(wgORNxfd@`ucingmgNMWm)~>b9!e=*yn4xxX0r+W++1YQ zbzSj1Pv-Nv1VJE+#X^?LrG#N9K@do{+m-p;mk(b)_kqWN5)njXB`}-aDd0Gc3@$I_ z{ilz8;2EGJawPEDoy|hu_az8|Edddc$#fciEq`mQI&YCh1O+@;Dc_Zta5eL9iCS*p Y57qJ{2^`p;;{X5v07*qoM6N<$f@DS=zyJUM diff --git a/resources/images/theme_import.png b/resources/images/theme_import.png deleted file mode 100644 index 0ee7892692c346a987d8d9df3a905465f4aa3601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n2LP)o5qwr=?b48Q_wRfMv&X%)2+RVZT=(E(#S_Vc?ewXta#xY8Y-^v=2GoU5xu z1OTPf17L&ytBF&1Y|Q8Lx4(jb@pw$#^VsZkSXo&?DTPuh8w7yX8gF%VPZ#N|z~`eQ zI-8rUt*tSgPRSHzUo|^+g8`J*+^bgi9AM|*;GmR@wH9kFl}d$&?KWwe zqP4y=i;{(+S8hHlrO;ZVwJrg(a)3|!`}-veylfInNFvYB#9Vf#26!Kn&u7cmMkd1bzK&V1#uh`1Oe@K`%dpg3q|v6 zZ*OyWc!=kD^!xo=;bj3Qi4nk-6(~imR%0+2*b|9dH(DI=mJ_qN?Ujw zgrQw7my#q&i9kf;$Mv;+_4>`1o5?!EslqwmzhVAs(Ro?m1o$R}3;PYi<1e$QX`AB! O0000z8xpUII{8&=iH{wnUDxx6o*XQpr9@S zFA7f~5wyArj)7engn2gzstbkiqQW4^o2U%CF~JzoO$Y@oEjOFGxwX#D=9!*z-Y(o0 zQwbk<`S`x?dETGrWkiIXV2m*U4FEj(r*8lvv=^C(b_IaeKp-$7%W^`Nt(9kFmQEb*nE7Psy^?IqR ztBayjPKwQXiHJy&qz3@_5)S~tZnyVDm%lIP5+5is35raDTrL;6T(06>jn7at{N)#b z6NTa?0O;-Qt@Qi-eRcKC_36+(fN|S~@H}|_-^lXUJE&`DvkeRkTqt;90$|BxGRLp` z`_FAAgHTsr1Ed20I-3=AHY>#hx%don>+f;v=GF56+8JZu1VM0DR8;s+oj!Xq`ROt= zB~%pnI#Td;q)OJLXMdu$eUO)BITH*9=a|Ri@x7aV`>56uZi>(Ll#p-S-98`QF5Pu? z_YC6M`lSYE%SBUFRn<|4v#}`^ewD>Op@g67c8A+32*R;4RaJ9_VQ3cj;Fel`NG<2K z4it!wpY0ZJYUYhH+a;BVtcGD|0MIfrGV&yqO2ufONT<`uv9Yli0FE#K41f(l8-N-B s|?9jsO4v diff --git a/resources/images/video_delete.png b/resources/images/video_delete.png deleted file mode 100644 index ef8e685e2edc2bd322bc20b3930b3b8a4a956692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)EpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< diff --git a/resources/images/video_load.png b/resources/images/video_load.png deleted file mode 100644 index eb211e2332d811f9cfcba08c7b5353298b1b02fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 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
    vjP;&^G) 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 C?P6QrH<&R#T05%T!)i7DzbCAwZ#TYs-hL9 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ư>yj$)05Z6W52^WKf;Nz-y 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 From 7db45b7ce6f710f8051acea96985eaaebe6514a7 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Thu, 27 Oct 2016 21:37:33 +0100 Subject: [PATCH 30/86] Found some more appropiate sized images. Removed some duplicates --- openlp/plugins/songs/forms/songexportform.py | 2 +- openlp/plugins/songs/forms/songimportform.py | 2 +- openlp/plugins/songs/forms/songreviewwidget.py | 2 +- resources/images/bibles_search_clear.png | Bin 3911 -> 802 bytes resources/images/bibles_search_combined.png | Bin 2705 -> 720 bytes resources/images/openlp-2.qrc | 6 ++---- resources/images/song_delete.png | Bin 666 -> 0 bytes resources/images/wizard_importsong.bmp | Bin 172254 -> 0 bytes .../{wizard_exportsong.bmp => wizard_song.bmp} | Bin 9 files changed, 5 insertions(+), 7 deletions(-) delete mode 100644 resources/images/song_delete.png delete mode 100644 resources/images/wizard_importsong.bmp rename resources/images/{wizard_exportsong.bmp => wizard_song.bmp} (100%) diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 27f317963..b0d044b2d 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -51,7 +51,7 @@ class SongExportForm(OpenLPWizard): :param parent: The QWidget-derived parent of the wizard. :param plugin: The songs plugin. """ - super(SongExportForm, self).__init__(parent, plugin, 'song_export_wizard', ':/wizards/wizard_exportsong.bmp') + super(SongExportForm, self).__init__(parent, plugin, 'song_export_wizard', ':/wizards/wizard_song.bmp') self.stop_export_flag = False Registry().register_function('openlp_stop_wizard', self.stop_export) diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 2539973da..b25021ca9 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -52,7 +52,7 @@ class SongImportForm(OpenLPWizard, RegistryProperties): :param parent: The QWidget-derived parent of the wizard. :param plugin: The songs plugin. """ - super(SongImportForm, self).__init__(parent, plugin, 'songImportWizard', ':/wizards/wizard_importsong.bmp') + super(SongImportForm, self).__init__(parent, plugin, 'songImportWizard', ':/wizards/wizard_song.bmp') self.clipboard = self.main_window.clipboard def setupUi(self, image): diff --git a/openlp/plugins/songs/forms/songreviewwidget.py b/openlp/plugins/songs/forms/songreviewwidget.py index c8873f028..2e5814626 100644 --- a/openlp/plugins/songs/forms/songreviewwidget.py +++ b/openlp/plugins/songs/forms/songreviewwidget.py @@ -182,7 +182,7 @@ class SongReviewWidget(QtWidgets.QWidget): self.song_vertical_layout.addWidget(self.song_group_box) self.song_remove_button = QtWidgets.QPushButton(self) self.song_remove_button.setObjectName('song_remove_button') - self.song_remove_button.setIcon(build_icon(':/songs/song_delete.png')) + self.song_remove_button.setIcon(build_icon(':/general/general_delete.png')) self.song_remove_button.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.song_vertical_layout.addWidget(self.song_remove_button, alignment=QtCore.Qt.AlignHCenter) diff --git a/resources/images/bibles_search_clear.png b/resources/images/bibles_search_clear.png index 551ce7c9698b5d9e1bd41d4518ba6202424d99e5..19a1665baf0a3d62cc5f72801c02ee31d832ef03 100644 GIT binary patch literal 802 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 V;&nfp2<-p>002ovPDHLkV1jvnSoZ(` diff --git a/resources/images/bibles_search_combined.png b/resources/images/bibles_search_combined.png index 161b3fcd606719e4335798b5af7f1fecb9e070ea..8fc16c88686ec6249b0a26761aedc0aec882aa2e 100644 GIT binary patch delta 672 zcmV;R0$=@+70?ACiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZyk3jwLoK~#9!l~YfM5>Xic&5W)(YLR#mcEJ#~&4>k|jR-tNU4(?f zLpQqy9inRy9rjRr=+d65`(E7DL#wCgvh;_=rHIVQE-B9WjBBp~csmIV^0Qj*D}Sd~K#{{RzALbvHx~^ z84}YGi9{%?5b^u{6i!pa;V`Bl^UJN(wfg~O|x!`a1uVhdP2e*-&jKB2m^ENV9lgO7Ib zhX8@Q{(FqzA5Wb=i-W;+Y`uC4&&(?7^%1=RB8pN*qmfh6w1AW0%(+X@f3=a%Jww-6 zz?UBycNarE9!ITK6JzXlwXXp74%?aMkA!i%jMjF$&GPGO?8(C{YqgrJ(P*$jp}_k6 zK6}1rx!DE~Bp!wRGtKLUu`5rSnC=}NW%H=Y+_|HrxbF$a#wP3?`VDRjw zX)^x)Mete~Z=~3B0xOkDWZQ3No_3%Dn8m;Gjo%$%3cmq`yeHklOn15f0000nkE5yf>>L zBrHn0u!XK5y0AdAnXE3K2vF#(gIE5(GY_7C~Z>^ee{G$K!gMwO6Ly`5C48-bPS}# zhwQK?pY>nqL%x@;j4;HAOyjq4B`q}->FMbk0rV;zQkswet?nfFk&zLCQ7WLK`?{r? zz@@#vKQ$76GR8@4@-ZHP=y{{T$0K0222i7Kf;G?t0s&Z+wd2%~m=9Cpv(}(tf>)u% z&#_fVC>+3@}6yo<2R0t(S0EYFc%$+I}AQBe^rDJh_&7^KJ5Xq98vX=gyu*b5j%JmE@!~`x?y5nKNOv zTH*8gkgtBrzG$k7^%N3{5fBtg>p_mnAnASWkBPi~1!e7UYpPdYw6 zt}VP`kX z<}X;F=MJn_tIurZ9VC~X zolWq3pEk_;_3N={(IOgvB)H*`+@MM&nw-GNlP4?Rcy;Z^AYy=LpVlK-hr@w2Pd)YD z@7NeEbBBQ05|~a@t2Jg7TDEK%Lr}uaETNO@a&uTMZEspFQ*QtN5vo76u z_}!(SESwpg$kJzwGk&ui4imKL1@S<17)6sXl>|6e2#8MZ0aXpWM_v{DXr*bcLm)osf+m*%r_b0K{N-waY7~o^)0F^`#Kb~23SvIB2 zn%19`KqwFhk5#|$?H7GFf80^Es{77~w-**S4~1d#?1f?>p~NK6o2@4ve_Ypp`M&;s zGjs$1K{F&KgpeV!nsY3xla$h=Jut4cdvG{(cjs%K?-r!BrhN7jeeT+?2hnNqBGr9> zz$J;fGar>pgGq<_q8P9(&St zCvDx*TzqwZ0E6}>SUo?SuntInxX|rcSy`Oe^a4SP%J;FoV33x+p$R=eU;zMqB+>Fg z;O4&X_nclnuNjL!;>4Hsj3JO!4~zGg$ZL5*cq6PS2_r8nsik`uol zK#$V)rn~;OTmC9+UVIyKW@Tghi=D7$y@y;}&{jfh@S^fQArKwci9A7n0^I*3?E&-f z+^f{>ob@D{hc;sG+76^!?0EjA8%VYN2_fIb=<*pC6mx?cHoxCb55yW13t&934@@8& zAu%|oq5>KDpF&gr8XVl(hu*Ff)EsI=TKG6Hat%muT9QMI*X!lBnq_jb@DZ6(8AS{d zfkL&@B#G4gH7-8eos92Gl@xn%6`J|F=YA#q$1c=MR2)X znnZu>D9uf@a7i(y1S4NW!5=l$4e# z5_8ajO(>jMh;Qzxz}~%XH2TI7?%1h7gjmCM(zdp?njRpr2L;aY(aLd25->?{ui|i^ ztgH-Wvnz0W^l5y5cwQcMR~BPiwHxjJ7KGYsL1D=8en)aZlmy}ckG>QzmCvW<0Si?~ zM2?6&t8(97R5BMgeQU66kp-Jp7vkCH$Kkd96~T@-Kq)CH(VIO1-{0TQEr);?0s=Z3 zJc*hrITTLnP;U|u53zvvlW)rhsV7i8tO+cQ)(w1m%`Idc|3Cl`2f zo1B0VKBmxrlH9X!B7&>GyA;nY`wQ-RXCOQpg3aGfpxWwU%@Ze1;QICJSg~RS3JMB% zmBQci1jg$ZuH2IFx_lS8T$)5(UEP&Ed-fa!&>~ms=6`6+|IU;sU8P?3b6J33+#-l@ z!mh3^G&D5e)US?U>$*Z9*oyqJ)%e+O{*AkCO@Ksy=nWE~XLK$dK73e{Z)s^E35J_8 zN&$+Ci|7?y2`x%8yb|d)8{?cOvk4W4cc8q5;BRYdYh?pSZ)k07Y;3QrtgMZIZ&Nx-@X01|%oUW0 z%tN?;ga-jKo=L*vS%5y@`>6j{D;D}Ls0vjhdn2hh^c>dCC26%(O^h6FJ%Js#xGEZrWL?#|fE5n70f5&H*H>12_L3H(zg^k{0K@ji^8|KEq zu3fthsP8V*^5iDq9|{2>LEubolHmcp$LU0W)xwYCT0GBCBp`X(_GGEA_Ujs;XC%N0_j!ESCcQ|4u-E zLWsz;OWvOgX+8&Ad(6kRUn5M`ziQG<$$kjW&bVZ2* z&r*4rmN#R5svh7A#yL4++_)Js>338TAZY1xj&tYEy}M(_4(|RMm3DJZsW!=oxsdVg zEbxyhEmdmcWBhL=OiM??<#yyM$1mVGr%OQoQ=hHW&JcS@1OiOd2$7(GpAG?&1QpUg f1PN0qn5O&(UUTW@CzQg300000NkvXXu0mjf13?MZ diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index c3e1bbce1..ebff58a0a 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -23,8 +23,7 @@ topic_maintenance.png song_author_edit.png song_book_edit.png - song_delete.png - + image_group.png image_new_group.png @@ -95,8 +94,7 @@ openlp-osx-wizard.png - wizard_exportsong.bmp - wizard_importsong.bmp + wizard_song.bmp wizard_importbible.bmp wizard_firsttime.bmp wizard_createtheme.bmp diff --git a/resources/images/song_delete.png b/resources/images/song_delete.png deleted file mode 100644 index ef8e685e2edc2bd322bc20b3930b3b8a4a956692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)EpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< diff --git a/resources/images/wizard_importsong.bmp b/resources/images/wizard_importsong.bmp deleted file mode 100644 index 948422dcc4d845b05342bcd6dcf732a286aba486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172254 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%0D7|v^>o33f~x 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 diff --git a/resources/images/wizard_exportsong.bmp b/resources/images/wizard_song.bmp similarity index 100% rename from resources/images/wizard_exportsong.bmp rename to resources/images/wizard_song.bmp From ec19cc5f078eb33a579a7dddf18481ac3a75c86f Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 30 Oct 2016 08:29:22 +0000 Subject: [PATCH 31/86] Modified some resources and added test --- openlp/core/lib/__init__.py | 15 +- openlp/core/ui/settingsform.py | 2 +- resources/images/openlp-logo.svg | 347 ++++--------------- tests/functional/openlp_core_lib/test_lib.py | 38 +- 4 files changed, 99 insertions(+), 303 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 24399a915..284724552 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -119,7 +119,7 @@ def str_to_bool(string_value): return str(string_value).strip().lower() in ('true', 'yes', 'y') -def build_icon(icon, size=None): +def build_icon(icon): """ Build a QIcon instance from an existing QIcon, a resource location, or a physical file location. If the icon is a QIcon instance, that icon is simply returned. If not, it builds a QIcon instance from the resource or file name. @@ -127,23 +127,18 @@ def build_icon(icon, size=None): :param icon: The icon to build. This can be a QIcon, a resource string in the form ``:/resource/file.png``, or a file location like ``/path/to/file.png``. However, the **recommended** way is to specify a resource string. - :param size: - The size of the icon to generate :return: The build icon. """ if isinstance(icon, QtGui.QIcon): return icon + pix_map = None button_icon = QtGui.QIcon() if isinstance(icon, str): - if icon.startswith(':/'): - pix_map = QtGui.QPixmap(icon) - else: - pix_map = QtGui.QPixmap.fromImage(QtGui.QImage(icon)) + pix_map = QtGui.QPixmap(icon) elif isinstance(icon, QtGui.QImage): pix_map = QtGui.QPixmap.fromImage(icon) - if size: - pix_map = pix_map.scaled(size, size, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) - button_icon.addPixmap(pix_map, QtGui.QIcon.Normal, QtGui.QIcon.Off) + if pix_map: + button_icon.addPixmap(pix_map, QtGui.QIcon.Normal, QtGui.QIcon.Off) return button_icon diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 4b605e162..42558b830 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -89,7 +89,7 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties): # add the tab to get it to display in the correct part of the screen self.stacked_layout.addWidget(tab_widget) if is_visible: - list_item = QtWidgets.QListWidgetItem(build_icon(tab_widget.icon_path, 16), tab_widget.tab_title_visible) + list_item = QtWidgets.QListWidgetItem(build_icon(tab_widget.icon_path), tab_widget.tab_title_visible) list_item.setData(QtCore.Qt.UserRole, tab_widget.tab_title) self.setting_list_widget.addItem(list_item) diff --git a/resources/images/openlp-logo.svg b/resources/images/openlp-logo.svg index c5e7985e1..d1ff61bec 100644 --- a/resources/images/openlp-logo.svg +++ b/resources/images/openlp-logo.svg @@ -1,6 +1,4 @@ - - + id="svg5740" + height="467.39178" + width="467.39178"> + style="stop-color:#ffffff;stop-opacity:0.25098041;" /> + style="stop-color:#ffffff;stop-opacity:0;" /> + style="stop-color:#cdcdff;stop-opacity:1;" /> + style="stop-color:#ebebff;stop-opacity:1;" /> + style="stop-color:#000d26;stop-opacity:1;" /> + style="stop-color:#507fda;stop-opacity:1;" /> - + color-interpolation-filters="sRGB" + id="filter6926"> + id="feGaussianBlur6928" + stdDeviation="3.5771872" /> - - - - - - - - - - - - - - - + xlink:href="#linearGradient3195" /> - + + y1="276.68851" + x1="470.25891" + gradientTransform="matrix(0.7247086,0,0,0.7843464,-109.42065,-2.1325924)" + gradientUnits="userSpaceOnUse" + id="linearGradient4057" + xlink:href="#linearGradient3208" /> - @@ -273,92 +88,56 @@ image/svg+xml + + id="layer1" /> + id="layer5" /> + id="layer3" /> + id="layer2" /> + id="layer6"> + transform="translate(9.8817328,9.8817328)" + id="g4018"> - + + id="path6317" + d="M 833.03006,395.26932 A 357.71872,357.71872 0 0 1 475.31134,752.98804 357.71872,357.71872 0 0 1 117.59262,395.26932 357.71872,357.71872 0 0 1 475.31134,37.550598 357.71872,357.71872 0 0 1 833.03006,395.26932 Z" + transform="matrix(0.6317287,0,0,0.6317287,-64.581662,-12.716988)" /> + id="path6327" /> + id="path3203" /> diff --git a/tests/functional/openlp_core_lib/test_lib.py b/tests/functional/openlp_core_lib/test_lib.py index 145be21f4..db95044fd 100644 --- a/tests/functional/openlp_core_lib/test_lib.py +++ b/tests/functional/openlp_core_lib/test_lib.py @@ -189,16 +189,14 @@ class TestLib(TestCase): """ Test the build_icon() function with a QIcon instance """ - with patch('openlp.core.lib.QtGui') as MockedQtGui: - # GIVEN: A mocked QIcon - MockedQtGui.QIcon = MagicMock - mocked_icon = MockedQtGui.QIcon() + # GIVEN: An icon QIcon + icon = QtGui.QIcon() - # WHEN: We pass a QIcon instance in - result = build_icon(mocked_icon) + # WHEN: We pass a QIcon instance in + result = build_icon(icon) - # THEN: The result should be our mocked QIcon - self.assertIs(mocked_icon, result, 'The result should be the mocked QIcon') + # THEN: The result should be the same icon as we passed in + self.assertIs(icon, result, 'The result should be the same icon as we passed in') def test_build_icon_with_resource(self): """ @@ -223,6 +221,30 @@ class TestLib(TestCase): self.assertIsInstance(result, MagicMock, 'The result should be a MagicMock, because we mocked it out') def test_image_to_byte(self): + """ + Test the image_to_byte() function + """ + with patch('openlp.core.lib.QtCore') as MockedQtCore: + # GIVEN: A set of mocked-out Qt classes + mocked_byte_array = MagicMock() + MockedQtCore.QByteArray.return_value = mocked_byte_array + mocked_buffer = MagicMock() + MockedQtCore.QBuffer.return_value = mocked_buffer + MockedQtCore.QIODevice.WriteOnly = 'writeonly' + mocked_image = MagicMock() + + # WHEN: We convert an image to a byte array + result = image_to_byte(mocked_image, base_64=False) + + # THEN: We should receive the mocked_buffer + MockedQtCore.QByteArray.assert_called_with() + MockedQtCore.QBuffer.assert_called_with(mocked_byte_array) + mocked_buffer.open.assert_called_with('writeonly') + mocked_image.save.assert_called_with(mocked_buffer, "PNG") + self.assertFalse(mocked_byte_array.toBase64.called) + self.assertEqual(mocked_byte_array, result, 'The mocked out byte array should be returned') + + def test_image_to_byte_base_64(self): """ Test the image_to_byte() function """ From 87fede54dcf6947095023d4617f908ebbc9b0a2f Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Tue, 1 Nov 2016 19:17:57 +0000 Subject: [PATCH 32/86] Fixes #1623711* --- openlp/plugins/bibles/lib/manager.py | 4 +- .../openlp_plugins/bibles/test_manager.py | 69 +++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 tests/functional/openlp_plugins/bibles/test_manager.py diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 4ce1ace43..fbb6fb6e7 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -131,7 +131,7 @@ class BibleManager(OpenLPMixin, RegistryProperties): name = bible.get_name() # Remove corrupted files. if name is None: - bible.session.close() + bible.session.close_all() delete_file(os.path.join(self.path, filename)) continue log.debug('Bible Name: "{name}"'.format(name=name)) @@ -178,7 +178,7 @@ class BibleManager(OpenLPMixin, RegistryProperties): """ log.debug('BibleManager.delete_bible("{name}")'.format(name=name)) bible = self.db_cache[name] - bible.session.close() + bible.session.close_all() bible.session = None return delete_file(os.path.join(bible.path, bible.file)) diff --git a/tests/functional/openlp_plugins/bibles/test_manager.py b/tests/functional/openlp_plugins/bibles/test_manager.py new file mode 100644 index 000000000..d18d3cfc6 --- /dev/null +++ b/tests/functional/openlp_plugins/bibles/test_manager.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +""" +This module contains tests for the manager submodule of the Bibles plugin. +""" +from unittest import TestCase +from unittest.mock import MagicMock, patch + +from openlp.plugins.bibles.lib.manager import BibleManager + + +class TestManager(TestCase): + """ + Test the functions in the :mod:`manager` module. + """ + + def setUp(self): + app_location_patcher = patch('openlp.plugins.bibles.lib.manager.AppLocation') + self.addCleanup(app_location_patcher.stop) + app_location_patcher.start() + log_patcher = patch('openlp.plugins.bibles.lib.manager.log') + self.addCleanup(log_patcher.stop) + self.mocked_log = log_patcher.start() + settings_patcher = patch('openlp.plugins.bibles.lib.manager.Settings') + self.addCleanup(settings_patcher.stop) + settings_patcher.start() + + def test_delete_bible(self): + """ + Test the BibleManager delete_bible method + """ + # GIVEN: An instance of BibleManager and a mocked bible + with patch.object(BibleManager, 'reload_bibles'), \ + patch('openlp.plugins.bibles.lib.manager.os.path.join', side_effect=lambda x, y: '{}/{}'.format(x, y)),\ + patch('openlp.plugins.bibles.lib.manager.delete_file', return_value=True) as mocked_delete_file: + instance = BibleManager(MagicMock()) + # We need to keep a reference to the mock for close_all as it gets set to None later on! + mocked_close_all = MagicMock() + mocked_bible = MagicMock(file='KJV.sqlite', path='bibles', **{'session.close_all': mocked_close_all}) + instance.db_cache = {'KJV': mocked_bible} + + # WHEN: Calling delete_bible with 'KJV' + result = instance.delete_bible('KJV') + + # THEN: The session should have been closed and set to None, the bible should be deleted, and the result of + # the deletion returned. + self.assertTrue(result) + mocked_close_all.assert_called_once_with() + self.assertIsNone(mocked_bible.session) + mocked_delete_file.assert_called_once_with('bibles/KJV.sqlite') From 053da160a38e5aa02591be53028394ba95a0944a Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Tue, 1 Nov 2016 19:22:39 +0000 Subject: [PATCH 33/86] Diverged branches? From 3d07ec5a09d43d161a108aefd73237dc1f78ef0d Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Wed, 2 Nov 2016 19:24:33 +0000 Subject: [PATCH 34/86] Regen resources From 94fca706ff35ef0ef280722c55ebe5e5e05b3967 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Thu, 10 Nov 2016 07:09:04 +0000 Subject: [PATCH 35/86] Move no results functionality to the ListWidgetWithDnD --- openlp/core/lib/mediamanageritem.py | 30 -------------- openlp/core/ui/lib/listwidgetwithdnd.py | 41 +++++++++++++++++-- openlp/plugins/bibles/lib/mediaitem.py | 22 ++-------- openlp/plugins/custom/lib/mediaitem.py | 2 - openlp/plugins/songs/lib/mediaitem.py | 1 - .../openlp_plugins/bibles/test_mediaitem.py | 4 -- 6 files changed, 42 insertions(+), 58 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 2edea93cf..378020812 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -397,8 +397,6 @@ class MediaManagerItem(QtWidgets.QWidget, RegistryProperties): # Decide if we have to show the context menu or not. if item is None: return - if not item.flags() & QtCore.Qt.ItemIsSelectable: - return self.menu.exec(self.list_view.mapToGlobal(point)) def get_file_list(self): @@ -638,34 +636,6 @@ class MediaManagerItem(QtWidgets.QWidget, RegistryProperties): """ return item - def check_search_result(self): - """ - Checks if the list_view is empty and adds a "No Search Results" item. - """ - if self.list_view.count(): - return - message = translate('OpenLP.MediaManagerItem', 'No Search Results') - item = QtWidgets.QListWidgetItem(message) - item.setFlags(QtCore.Qt.NoItemFlags) - font = QtGui.QFont() - font.setItalic(True) - item.setFont(font) - self.list_view.addItem(item) - - def check_search_result_search_while_typing_short(self): - """ - This is used in Bible "Search while typing" if the search is shorter than the min required len. - """ - if self.list_view.count(): - return - message = translate('OpenLP.MediaManagerItem', 'Search is too short to be used in: "Search while typing"') - item = QtWidgets.QListWidgetItem(message) - item.setFlags(QtCore.Qt.NoItemFlags) - font = QtGui.QFont() - font.setItalic(True) - item.setFont(font) - self.list_view.addItem(item) - def _get_id_of_item_to_generate(self, item, remote_item): """ Utility method to check items being submitted for slide generation. diff --git a/openlp/core/ui/lib/listwidgetwithdnd.py b/openlp/core/ui/lib/listwidgetwithdnd.py index 43ec741d0..23bdbcd2d 100644 --- a/openlp/core/ui/lib/listwidgetwithdnd.py +++ b/openlp/core/ui/lib/listwidgetwithdnd.py @@ -26,7 +26,10 @@ import os from PyQt5 import QtCore, QtGui, QtWidgets -from openlp.core.common import Registry +from openlp.core.common import Registry, translate + +NO_RESULTS = translate('OpenLP.ListWidgetWithDnD', 'No Search Results') +SHORT_RESULTS = translate('OpenLP.ListWidgetWithDnD', 'Please type more text to use \'Search As You Type\'') class ListWidgetWithDnD(QtWidgets.QListWidget): @@ -37,8 +40,9 @@ class ListWidgetWithDnD(QtWidgets.QListWidget): """ Initialise the list widget """ - super(ListWidgetWithDnD, self).__init__(parent) + super().__init__(parent) self.mime_data_text = name + self.no_results_text = NO_RESULTS def activateDnD(self): """ @@ -48,6 +52,19 @@ class ListWidgetWithDnD(QtWidgets.QListWidget): self.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop) Registry().register_function(('%s_dnd' % self.mime_data_text), self.parent().load_file) + def clear(self, search_while_typing=False): + """ + Re-implement clear, so that we can customise feedback when using 'Search as you type' + + :param search_while_typing: True if we want to display the customised message + :return: None + """ + if search_while_typing: + self.no_results_text = SHORT_RESULTS + else: + self.no_results_text = NO_RESULTS + super().clear() + def mouseMoveEvent(self, event): """ Drag and drop event does not care what data is selected as the recipient will use events to request the data @@ -102,6 +119,24 @@ class ListWidgetWithDnD(QtWidgets.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': files, 'target': self.itemAt(event.pos())}) + Registry().execute('{mime_data}_dnd'.format(mime_data=self.mime_data_text), + {'files': files, 'target': self.itemAt(event.pos())}) else: event.ignore() + + def paintEvent(self, event): + """ + Re-implement paintEvent so that we can add 'No Results' text when the listWidget is empty. + + :param event: A QPaintEvent + :return: None + """ + super().paintEvent(event) + if not self.count(): + viewport = self.viewport() + painter = QtGui.QPainter(viewport) + font = QtGui.QFont() + font.setItalic(True) + painter.setFont(font) + painter.drawText(QtCore.QRect(0, 0, viewport.width(), viewport.height()), + (QtCore.Qt.AlignHCenter | QtCore.Qt.TextWordWrap), self.no_results_text) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index fc92b8f7a..f9329d503 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -75,21 +75,16 @@ class BibleMediaItem(MediaManagerItem): self.has_search = True self.search_results = {} self.second_search_results = {} - self.check_search_result() Registry().register_function('bibles_load_list', self.reload_bibles) def __check_second_bible(self, bible, second_bible): """ Check if the first item is a second bible item or not. """ - bitem = self.list_view.item(0) - if not bitem.flags() & QtCore.Qt.ItemIsSelectable: - # The item is the "No Search Results" item. - self.list_view.clear() + if not self.list_view.count(): self.display_results(bible, second_bible) return - else: - item_second_bible = self._decode_qt_object(bitem, 'second_bible') + item_second_bible = self._decode_qt_object(self.list_view.item(0), 'second_bible') if item_second_bible and second_bible or not item_second_bible and not second_bible: self.display_results(bible, second_bible) elif critical_error_message_box( @@ -551,14 +546,12 @@ class BibleMediaItem(MediaManagerItem): def on_clear_button_clicked(self): # Clear the list, then set the "No search Results" message, then clear the text field and give it focus. self.list_view.clear() - self.check_search_result() self.quick_search_edit.clear() self.quick_search_edit.setFocus() def on_advanced_clear_button_clicked(self): # The same as the on_clear_button_clicked, but gives focus to Book name field in "Select" (advanced). self.list_view.clear() - self.check_search_result() self.advanced_book_combo_box.setFocus() def on_lock_button_toggled(self, checked): @@ -692,7 +685,6 @@ class BibleMediaItem(MediaManagerItem): elif self.search_results: self.display_results(bible, second_bible) self.advancedSearchButton.setEnabled(True) - self.check_search_result() self.application.set_normal_cursor() def on_quick_reference_search(self): @@ -886,7 +878,6 @@ class BibleMediaItem(MediaManagerItem): elif self.search_results: self.display_results(bible, second_bible) self.quickSearchButton.setEnabled(True) - self.check_search_result() self.application.set_normal_cursor() def on_quick_search_while_typing(self): @@ -917,7 +908,6 @@ class BibleMediaItem(MediaManagerItem): self.__check_second_bible(bible, second_bible) elif self.search_results: self.display_results(bible, second_bible) - self.check_search_result() self.application.set_normal_cursor() def on_search_text_edit_changed(self): @@ -956,17 +946,13 @@ class BibleMediaItem(MediaManagerItem): if len(text) == 0: if not self.quickLockButton.isChecked(): self.list_view.clear() - self.check_search_result() else: if limit == 3 and (len(text) < limit or len(count_space_digit_reference) == 0): if not self.quickLockButton.isChecked(): self.list_view.clear() - self.check_search_result() - elif (limit == 8 and (len(text) < limit or len(count_spaces_two_chars_text) == 0 or - len(count_two_chars_text) < 2)): + elif (limit == 8 and len(text) < limit ): if not self.quickLockButton.isChecked(): - self.list_view.clear() - self.check_search_result_search_while_typing_short() + self.list_view.clear(search_while_typing=True) else: """ Start search if no chars are entered or deleted for 0.2 s diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 2b999da19..e3b730294 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -131,7 +131,6 @@ class CustomMediaItem(MediaManagerItem): # Called to redisplay the custom list screen edith from a search # or from the exit of the Custom edit dialog. If remote editing is # active trigger it and clean up so it will not update again. - self.check_search_result() def on_new_click(self): """ @@ -268,7 +267,6 @@ class CustomMediaItem(MediaManagerItem): CustomSlide.theme_name.like(search_keywords), order_by_ref=CustomSlide.title) self.load_list(search_results) - self.check_search_result() def on_search_text_edit_changed(self, text): """ diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index b89858019..1d060f484 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -232,7 +232,6 @@ class SongMediaItem(MediaManagerItem): search_results = self.plugin.manager.get_all_objects( Song, and_(Song.ccli_number.like(search_string), Song.ccli_number != '')) self.display_results_cclinumber(search_results) - self.check_search_result() def search_entire(self, search_keywords): search_string = '%{text}%'.format(text=clean_string(search_keywords)) diff --git a/tests/functional/openlp_plugins/bibles/test_mediaitem.py b/tests/functional/openlp_plugins/bibles/test_mediaitem.py index 28a755fd6..d4a6eee39 100644 --- a/tests/functional/openlp_plugins/bibles/test_mediaitem.py +++ b/tests/functional/openlp_plugins/bibles/test_mediaitem.py @@ -155,7 +155,6 @@ class TestMediaItem(TestCase, TestMixin): self.media_item.list_view = MagicMock() self.media_item.search_results = MagicMock() self.media_item.display_results = MagicMock() - self.media_item.check_search_result = MagicMock() self.app.set_normal_cursor = MagicMock() # WHEN: on_quick_search_button is called @@ -169,7 +168,6 @@ class TestMediaItem(TestCase, TestMixin): self.assertEqual(1, self.media_item.quickLockButton.isChecked.call_count, 'Lock Should had been called once') self.assertEqual(1, self.media_item.display_results.call_count, 'Display results Should had been called once') self.assertEqual(2, self.media_item.quickSearchButton.setEnabled.call_count, 'Disable and Enable the button') - self.assertEqual(1, self.media_item.check_search_result.call_count, 'Check results Should had been called once') self.assertEqual(1, self.app.set_normal_cursor.call_count, 'Normal cursor should had been called once') def test_on_clear_button_clicked(self): @@ -178,7 +176,6 @@ class TestMediaItem(TestCase, TestMixin): """ # GIVEN: Mocked list_view, check_search_results & quick_search_edit. self.media_item.list_view = MagicMock() - self.media_item.check_search_result = MagicMock() self.media_item.quick_search_edit = MagicMock() # WHEN: on_clear_button_clicked is called @@ -186,7 +183,6 @@ class TestMediaItem(TestCase, TestMixin): # THEN: Search result should be reset and search field should receive focus. self.media_item.list_view.clear.assert_called_once_with(), - self.media_item.check_search_result.assert_called_once_with(), self.media_item.quick_search_edit.clear.assert_called_once_with(), self.media_item.quick_search_edit.setFocus.assert_called_once_with() From 426cd13fd0bfc3b1a0ed42d5ccda728ac2d522c4 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Fri, 11 Nov 2016 19:19:59 +0000 Subject: [PATCH 36/86] fix if statment --- openlp/plugins/bibles/lib/mediaitem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index f9329d503..0ad45d055 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -950,7 +950,7 @@ class BibleMediaItem(MediaManagerItem): if limit == 3 and (len(text) < limit or len(count_space_digit_reference) == 0): if not self.quickLockButton.isChecked(): self.list_view.clear() - elif (limit == 8 and len(text) < limit ): + elif limit == 8 and (len(text) < limit or len(count_two_chars_text) < 2): if not self.quickLockButton.isChecked(): self.list_view.clear(search_while_typing=True) else: From 7a2df5eab39d22efed8e9e996fdafde7b5914898 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Fri, 11 Nov 2016 20:50:47 +0000 Subject: [PATCH 37/86] Added test! --- .../test_listwidgetwithdnd.py | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py diff --git a/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py b/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py new file mode 100644 index 000000000..ee6df9fb4 --- /dev/null +++ b/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +""" +This module contains tests for the openlp.core.lib.listwidgetwithdnd module +""" +from unittest import TestCase + +from openlp.core.ui.lib.listwidgetwithdnd import ListWidgetWithDnD, NO_RESULTS, SHORT_RESULTS +from unittest.mock import MagicMock, patch + + +class TestListWidgetWithDnD(TestCase): + """ + Test the :class:`~openlp.core.lib.listwidgetwithdnd.ListWidgetWithDnD` class + """ + def test_clear(self): + """ + Test the clear method when called without any arguments. + """ + # GIVEN: An instance of ListWidgetWithDnD + widget = ListWidgetWithDnD() + + # WHEN: Calling clear with out any arguments + widget.clear() + + # THEN: The results text should be the standard 'no results' text. + self.assertEqual(widget.no_results_text, NO_RESULTS) + + def test_clear_search_while_typing(self): + """ + Test the clear method when called with the search_while_typing argument set to True + """ + # GIVEN: An instance of ListWidgetWithDnD + widget = ListWidgetWithDnD() + + # WHEN: Calling clear with search_while_typing set to True + widget.clear(search_while_typing=True) + + # THEN: The results text should be the 'short results' text. + self.assertEqual(widget.no_results_text, SHORT_RESULTS) + + def test_paint_event(self): + """ + Test the paintEvent method when the list is not empty + """ + # GIVEN: An instance of ListWidgetWithDnD with a mocked out count methode which returns 1 + # (i.e the list has an item) + widget = ListWidgetWithDnD() + with patch('openlp.core.ui.lib.listwidgetwithdnd.QtWidgets.QListWidget.paintEvent') as mocked_paint_event, \ + patch.object(widget, 'count', return_value=1), \ + patch.object(widget, 'viewport') as mocked_viewport: + mocked_event = MagicMock() + + # WHEN: Calling paintEvent + widget.paintEvent(mocked_event) + + # THEN: The overridden paintEvnet should have been called + mocked_paint_event.assert_called_once_with(mocked_event) + self.assertFalse(mocked_viewport.called) + + def test_paint_event_no_items(self): + """ + Test the paintEvent method when the list is empty + """ + # GIVEN: An instance of ListWidgetWithDnD with a mocked out count methode which returns 0 + # (i.e the list is empty) + widget = ListWidgetWithDnD() + mocked_painter_instance = MagicMock() + mocked_qrect = MagicMock() + with patch('openlp.core.ui.lib.listwidgetwithdnd.QtWidgets.QListWidget.paintEvent') as mocked_paint_event, \ + patch.object(widget, 'count', return_value=0), \ + patch.object(widget, 'viewport'), \ + patch('openlp.core.ui.lib.listwidgetwithdnd.QtGui.QPainter', + return_value=mocked_painter_instance) as mocked_qpainter, \ + patch('openlp.core.ui.lib.listwidgetwithdnd.QtCore.QRect', return_value=mocked_qrect): + mocked_event = MagicMock() + + # WHEN: Calling paintEvent + widget.paintEvent(mocked_event) + + # THEN: The overridden paintEvnet should have been called, and some text should be drawn. + mocked_paint_event.assert_called_once_with(mocked_event) + mocked_qpainter.assert_called_once_with(widget.viewport()) + mocked_painter_instance.drawText.assert_called_once_with(mocked_qrect, 4100, 'No Search Results') From 80793f9412e1b88f3cb8709ba47c192824f7ac16 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Fri, 11 Nov 2016 21:23:03 +0000 Subject: [PATCH 38/86] Modified SaveEdit, so that it saves the chosen search type --- openlp/core/lib/mediamanageritem.py | 2 +- openlp/core/lib/searchedit.py | 21 ++++++--------- openlp/plugins/bibles/lib/mediaitem.py | 16 +++-------- openlp/plugins/custom/lib/mediaitem.py | 5 ---- openlp/plugins/songs/lib/mediaitem.py | 5 ---- .../openlp_core_lib/test_searchedit.py | 27 +++++++++++++------ 6 files changed, 32 insertions(+), 44 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 2edea93cf..0eaeff476 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -266,7 +266,7 @@ class MediaManagerItem(QtWidgets.QWidget, RegistryProperties): self.search_text_layout.setObjectName('search_text_layout') self.search_text_label = QtWidgets.QLabel(self.search_widget) self.search_text_label.setObjectName('search_text_label') - self.search_text_edit = SearchEdit(self.search_widget) + self.search_text_edit = SearchEdit(self.search_widget, self.settings_section) self.search_text_edit.setObjectName('search_text_edit') self.search_text_label.setBuddy(self.search_text_edit) self.search_text_layout.addRow(self.search_text_label, self.search_text_edit) diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py index 41e54957d..1fcc0e618 100644 --- a/openlp/core/lib/searchedit.py +++ b/openlp/core/lib/searchedit.py @@ -26,6 +26,7 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.lib import build_icon from openlp.core.lib.ui import create_widget_action +from openlp.core.common import Settings log = logging.getLogger(__name__) @@ -37,11 +38,12 @@ class SearchEdit(QtWidgets.QLineEdit): searchTypeChanged = QtCore.pyqtSignal(QtCore.QVariant) cleared = QtCore.pyqtSignal() - def __init__(self, parent): + def __init__(self, parent, settings_section): """ Constructor. """ - super(SearchEdit, self).__init__(parent) + super().__init__(parent) + self.settings_section = settings_section self._current_search_type = -1 self.clear_button = QtWidgets.QToolButton(self) self.clear_button.setIcon(build_icon(':/system/clear_shortcut.png')) @@ -100,14 +102,10 @@ class SearchEdit(QtWidgets.QLineEdit): menu = self.menu_button.menu() for action in menu.actions(): if identifier == action.data(): - # setPlaceholderText has been implemented in Qt 4.7 and in at least PyQt 4.9 (I am not sure, if it was - # implemented in PyQt 4.8). - try: - self.setPlaceholderText(action.placeholder_text) - except AttributeError: - pass + self.setPlaceholderText(action.placeholder_text) self.menu_button.setDefaultAction(action) self._current_search_type = identifier + Settings().setValue('{section}/last search type'.format(section=self.settings_section), identifier) self.searchTypeChanged.emit(identifier) return True @@ -130,14 +128,10 @@ class SearchEdit(QtWidgets.QLineEdit): (2, ":/songs/authors.png", "Authors", "Search Authors...") """ menu = QtWidgets.QMenu(self) - first = None for identifier, icon, title, placeholder in items: action = create_widget_action( menu, text=title, icon=icon, data=identifier, triggers=self._on_menu_action_triggered) action.placeholder_text = placeholder - if first is None: - first = action - self._current_search_type = identifier if not hasattr(self, 'menu_button'): self.menu_button = QtWidgets.QToolButton(self) self.menu_button.setIcon(build_icon(':/system/clear_shortcut.png')) @@ -146,7 +140,8 @@ class SearchEdit(QtWidgets.QLineEdit): self.menu_button.setStyleSheet('QToolButton { border: none; padding: 0px 10px 0px 0px; }') self.menu_button.resize(QtCore.QSize(28, 18)) self.menu_button.setMenu(menu) - self.menu_button.setDefaultAction(first) + self.set_current_search_type( + Settings().value('{section}/last search type'.format(section=self.settings_section))) self.menu_button.show() self._update_style_sheet() diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index fc92b8f7a..1d25aa7b5 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -199,7 +199,7 @@ class BibleMediaItem(MediaManagerItem): self.quick_search_label = QtWidgets.QLabel(self.quickTab) self.quick_search_label.setObjectName('quick_search_label') self.quickLayout.addWidget(self.quick_search_label, 0, 0, QtCore.Qt.AlignRight) - self.quick_search_edit = SearchEdit(self.quickTab) + self.quick_search_edit = SearchEdit(self.quickTab, self.settings_section) self.quick_search_edit.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Fixed) self.quick_search_edit.setObjectName('quick_search_edit') self.quick_search_label.setBuddy(self.quick_search_edit) @@ -333,8 +333,8 @@ class BibleMediaItem(MediaManagerItem): translate('BiblesPlugin.MediaItem', 'Text Search'), translate('BiblesPlugin.MediaItem', 'Search Text...')) ]) - text = self.settings_section - self.quick_search_edit.set_current_search_type(Settings().value('{text}/last search type'.format(text=text))) + if Settings().value(self.settings_section + '/reset to combined quick search'): + self.quick_search_edit.set_current_search_type(BibleSearch.Combined) self.config_update() log.debug('bible manager initialise complete') @@ -444,15 +444,7 @@ class BibleMediaItem(MediaManagerItem): only updated when we are doing reference or combined search, in text search the completion list is removed. """ log.debug('update_auto_completer') - # Save the current search type to the configuration. If setting for automatically resetting the search type to - # Combined is enabled, use that otherwise use the currently selected search type. - # Note: This setting requires a restart to take effect. - if Settings().value(self.settings_section + '/reset to combined quick search'): - Settings().setValue('{section}/last search type'.format(section=self.settings_section), - BibleSearch.Combined) - else: - Settings().setValue('{section}/last search type'.format(section=self.settings_section), - self.quick_search_edit.current_search_type()) + # TODO: Move this else where? # Save the current bible to the configuration. Settings().setValue('{section}/quick bible'.format(section=self.settings_section), self.quickVersionComboBox.currentText()) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 2b999da19..e5d58f76e 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -105,8 +105,6 @@ class CustomMediaItem(MediaManagerItem): [(CustomSearch.Titles, ':/songs/song_search_title.png', translate('SongsPlugin.MediaItem', 'Titles'), translate('SongsPlugin.MediaItem', 'Search Titles...')), (CustomSearch.Themes, ':/slides/slide_theme.png', UiStrings().Themes, UiStrings().SearchThemes)]) - text = '{section}/last search type'.format(section=self.settings_section) - self.search_text_edit.set_current_search_type(Settings().value(text)) self.load_list(self.plugin.db_manager.get_all_objects(CustomSlide, order_by_ref=CustomSlide.title)) self.config_update() @@ -250,9 +248,6 @@ class CustomMediaItem(MediaManagerItem): """ Search the plugin database """ - # Save the current search type to the configuration. - Settings().setValue('{section}/last search type'.format(section=self.settings_section), - self.search_text_edit.current_search_type()) # Reload the list considering the new search type. search_type = self.search_text_edit.current_search_type() search_keywords = '%{search}%'.format(search=self.whitespace.sub(' ', self.search_text_edit.displayText())) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index b89858019..02c5d526b 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -166,14 +166,9 @@ class SongMediaItem(MediaManagerItem): translate('SongsPlugin.MediaItem', 'CCLI number'), translate('SongsPlugin.MediaItem', 'Search CCLI number...')) ]) - self.search_text_edit.set_current_search_type( - Settings().value('{section}/last search type'.format(section=self.settings_section))) self.config_update() def on_search_text_button_clicked(self): - # Save the current search type to the configuration. - Settings().setValue('{section}/last search type'.format(section=self.settings_section), - self.search_text_edit.current_search_type()) # Reload the list considering the new search type. search_keywords = str(self.search_text_edit.displayText()) search_type = self.search_text_edit.current_search_type() diff --git a/tests/interfaces/openlp_core_lib/test_searchedit.py b/tests/interfaces/openlp_core_lib/test_searchedit.py index a4c4472f5..b25549097 100644 --- a/tests/interfaces/openlp_core_lib/test_searchedit.py +++ b/tests/interfaces/openlp_core_lib/test_searchedit.py @@ -23,6 +23,7 @@ Module to test the EditCustomForm. """ from unittest import TestCase +from unittest.mock import MagicMock, call, patch from PyQt5 import QtCore, QtGui, QtTest, QtWidgets @@ -58,7 +59,12 @@ class TestSearchEdit(TestCase, TestMixin): self.main_window = QtWidgets.QMainWindow() Registry().register('main_window', self.main_window) - self.search_edit = SearchEdit(self.main_window) + settings_patcher = patch( + 'openlp.core.lib.searchedit.Settings', return_value=MagicMock(**{'value.return_value': SearchTypes.First})) + self.addCleanup(settings_patcher.stop) + self.mocked_settings = settings_patcher.start() + + self.search_edit = SearchEdit(self.main_window,'settings_section') # To complete set up we have to set the search types. self.search_edit.set_search_types(SEARCH_TYPES) @@ -78,8 +84,11 @@ class TestSearchEdit(TestCase, TestMixin): # WHEN: - # THEN: The first search type should be the first one in the list. - assert self.search_edit.current_search_type() == SearchTypes.First, "The first search type should be selected." + # THEN: The first search type should be the first one in the list. The selected type should be saved in the + # settings + self.assertEqual(self.search_edit.current_search_type(), SearchTypes.First, + "The first search type should be selected.") + self.mocked_settings().setValue.assert_called_once_with('settings_section/last search type', 0) def test_set_current_search_type(self): """ @@ -90,11 +99,13 @@ class TestSearchEdit(TestCase, TestMixin): result = self.search_edit.set_current_search_type(SearchTypes.Second) # THEN: - assert result, "The call should return success (True)." - assert self.search_edit.current_search_type() == SearchTypes.Second,\ - "The search type should be SearchTypes.Second" - assert self.search_edit.placeholderText() == SECOND_PLACEHOLDER_TEXT,\ - "The correct placeholder text should be 'Second Placeholder Text'." + self.assertTrue(result, "The call should return success (True).") + self.assertEqual(self.search_edit.current_search_type(), SearchTypes.Second, + "The search type should be SearchTypes.Second") + self.assertEqual(self.search_edit.placeholderText(), SECOND_PLACEHOLDER_TEXT, + "The correct placeholder text should be 'Second Placeholder Text'.") + self.mocked_settings().setValue.assert_has_calls( + [call('settings_section/last search type', 0), call('settings_section/last search type', 1)]) def test_clear_button_visibility(self): """ From 9f90b890766279a34f12f9022f164a311e5d1baf Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Fri, 11 Nov 2016 21:28:11 +0000 Subject: [PATCH 39/86] PEP fixes --- tests/interfaces/openlp_core_lib/test_searchedit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/interfaces/openlp_core_lib/test_searchedit.py b/tests/interfaces/openlp_core_lib/test_searchedit.py index b25549097..464c6217d 100644 --- a/tests/interfaces/openlp_core_lib/test_searchedit.py +++ b/tests/interfaces/openlp_core_lib/test_searchedit.py @@ -64,7 +64,7 @@ class TestSearchEdit(TestCase, TestMixin): self.addCleanup(settings_patcher.stop) self.mocked_settings = settings_patcher.start() - self.search_edit = SearchEdit(self.main_window,'settings_section') + self.search_edit = SearchEdit(self.main_window, 'settings_section') # To complete set up we have to set the search types. self.search_edit.set_search_types(SEARCH_TYPES) From 906f9af54b018789705279eec9beca954836f7b2 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 12 Nov 2016 08:34:55 +0000 Subject: [PATCH 40/86] removed TODO comment --- openlp/plugins/bibles/lib/mediaitem.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1d25aa7b5..9e65ec78b 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -444,7 +444,6 @@ class BibleMediaItem(MediaManagerItem): only updated when we are doing reference or combined search, in text search the completion list is removed. """ log.debug('update_auto_completer') - # TODO: Move this else where? # Save the current bible to the configuration. Settings().setValue('{section}/quick bible'.format(section=self.settings_section), self.quickVersionComboBox.currentText()) From 6a3982bab93e87bfe5e4a675893d4072b91a9fd3 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 12 Nov 2016 10:00:36 +0000 Subject: [PATCH 41/86] Moved over to using UiStrings --- openlp/core/common/uistrings.py | 2 ++ openlp/core/ui/lib/listwidgetwithdnd.py | 11 ++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/openlp/core/common/uistrings.py b/openlp/core/common/uistrings.py index 3c8477864..e23fc3f40 100644 --- a/openlp/core/common/uistrings.py +++ b/openlp/core/common/uistrings.py @@ -112,6 +112,7 @@ class UiStrings(object): self.NFSp = translate('OpenLP.Ui', 'No Files Selected', 'Plural') self.NISs = translate('OpenLP.Ui', 'No Item Selected', 'Singular') self.NISp = translate('OpenLP.Ui', 'No Items Selected', 'Plural') + self.NoResults = translate('OpenLP.Ui', 'No Search Results') self.OLP = translate('OpenLP.Ui', 'OpenLP') self.OLPV2 = "{name} {version}".format(name=self.OLP, version="2") self.OLPV2x = "{name} {version}".format(name=self.OLP, version="2.4") @@ -139,6 +140,7 @@ class UiStrings(object): self.Settings = translate('OpenLP.Ui', 'Settings') self.SaveService = translate('OpenLP.Ui', 'Save Service') self.Service = translate('OpenLP.Ui', 'Service') + self.ShortResults = translate('OpenLP.Ui', 'Please type more text to use \'Search As You Type\'') self.Split = translate('OpenLP.Ui', 'Optional &Split') self.SplitToolTip = translate('OpenLP.Ui', 'Split a slide into two only if it does not fit on the screen as one slide.') diff --git a/openlp/core/ui/lib/listwidgetwithdnd.py b/openlp/core/ui/lib/listwidgetwithdnd.py index 23bdbcd2d..de601fa13 100644 --- a/openlp/core/ui/lib/listwidgetwithdnd.py +++ b/openlp/core/ui/lib/listwidgetwithdnd.py @@ -26,10 +26,7 @@ import os from PyQt5 import QtCore, QtGui, QtWidgets -from openlp.core.common import Registry, translate - -NO_RESULTS = translate('OpenLP.ListWidgetWithDnD', 'No Search Results') -SHORT_RESULTS = translate('OpenLP.ListWidgetWithDnD', 'Please type more text to use \'Search As You Type\'') +from openlp.core.common import Registry, UiStrings class ListWidgetWithDnD(QtWidgets.QListWidget): @@ -42,7 +39,7 @@ class ListWidgetWithDnD(QtWidgets.QListWidget): """ super().__init__(parent) self.mime_data_text = name - self.no_results_text = NO_RESULTS + self.no_results_text = UiStrings().NoResults def activateDnD(self): """ @@ -60,9 +57,9 @@ class ListWidgetWithDnD(QtWidgets.QListWidget): :return: None """ if search_while_typing: - self.no_results_text = SHORT_RESULTS + self.no_results_text = UiStrings().ShortResults else: - self.no_results_text = NO_RESULTS + self.no_results_text = UiStrings().NoResults super().clear() def mouseMoveEvent(self, event): From f031df36374e3dfec7eaf1dfeae6807f463d03ff Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 12 Nov 2016 11:19:52 +0000 Subject: [PATCH 42/86] Fixed Tests --- openlp/core/ui/lib/listwidgetwithdnd.py | 2 +- .../openlp_core_ui_lib/test_listwidgetwithdnd.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/lib/listwidgetwithdnd.py b/openlp/core/ui/lib/listwidgetwithdnd.py index de601fa13..daf374ea9 100644 --- a/openlp/core/ui/lib/listwidgetwithdnd.py +++ b/openlp/core/ui/lib/listwidgetwithdnd.py @@ -85,7 +85,7 @@ class ListWidgetWithDnD(QtWidgets.QListWidget): """ if event.mimeData().hasUrls(): event.accept() - else: + else: event.ignore() def dragMoveEvent(self, event): diff --git a/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py b/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py index ee6df9fb4..f6cc8b446 100644 --- a/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py +++ b/tests/functional/openlp_core_ui_lib/test_listwidgetwithdnd.py @@ -24,7 +24,8 @@ This module contains tests for the openlp.core.lib.listwidgetwithdnd module """ from unittest import TestCase -from openlp.core.ui.lib.listwidgetwithdnd import ListWidgetWithDnD, NO_RESULTS, SHORT_RESULTS +from openlp.core.common.uistrings import UiStrings +from openlp.core.ui.lib.listwidgetwithdnd import ListWidgetWithDnD from unittest.mock import MagicMock, patch @@ -43,7 +44,7 @@ class TestListWidgetWithDnD(TestCase): widget.clear() # THEN: The results text should be the standard 'no results' text. - self.assertEqual(widget.no_results_text, NO_RESULTS) + self.assertEqual(widget.no_results_text, UiStrings().NoResults) def test_clear_search_while_typing(self): """ @@ -56,7 +57,7 @@ class TestListWidgetWithDnD(TestCase): widget.clear(search_while_typing=True) # THEN: The results text should be the 'short results' text. - self.assertEqual(widget.no_results_text, SHORT_RESULTS) + self.assertEqual(widget.no_results_text, UiStrings().ShortResults) def test_paint_event(self): """ From 9133c078c71118d0da07e37f63f4161d06490c15 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 12 Nov 2016 11:50:06 +0000 Subject: [PATCH 43/86] Pep againbzr pushbzr push --- openlp/core/ui/lib/listwidgetwithdnd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/lib/listwidgetwithdnd.py b/openlp/core/ui/lib/listwidgetwithdnd.py index daf374ea9..de601fa13 100644 --- a/openlp/core/ui/lib/listwidgetwithdnd.py +++ b/openlp/core/ui/lib/listwidgetwithdnd.py @@ -85,7 +85,7 @@ class ListWidgetWithDnD(QtWidgets.QListWidget): """ if event.mimeData().hasUrls(): event.accept() - else: + else: event.ignore() def dragMoveEvent(self, event): From f83d9ad5203ab0da414113ec23fae4d4280419d0 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Sun, 20 Nov 2016 21:24:11 +0100 Subject: [PATCH 44/86] Insert real button label in text to make sure it shows correct text. --- openlp/core/__init__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 15de367e2..4f99cb46e 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -39,7 +39,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets from openlp.core.common import Registry, OpenLPMixin, AppLocation, LanguageManager, Settings, UiStrings, \ check_directory_exists, is_macosx, is_win, translate -from openlp.core.common.versionchecker import VersionThread, get_application_version +from openlp.core.common.versionchecker import VersionThread, get_application_version, clean_button_text from openlp.core.lib import ScreenList from openlp.core.resources import qInitResources from openlp.core.ui import SplashScreen @@ -184,6 +184,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): data_folder_path = AppLocation.get_data_path() if not os.path.exists(data_folder_path): log.critical('Database was not found in: {path}'.format(path=data_folder_path)) + yes_button = clean_button_text(self.buttonText(QtWidgets.QMessageBox.Yes)) + no_button = clean_button_text(self.buttonText(QtWidgets.QMessageBox.Yes)) status = QtWidgets.QMessageBox.critical(None, translate('OpenLP', 'Data Directory Error'), translate('OpenLP', 'OpenLP data folder was not found in:\n\n{path}' '\n\nThe location of the data folder was ' @@ -194,11 +196,11 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): 'location back to the default settings, ' 'or you can try to make the current location ' 'available.\n\n Do you want to reset the ' - 'default data location?\n\n Click "No" to close' - 'OpenLP so you can try to fix the the problem.' - '\n Click "Yes" to reset the default data ' - 'location and start OpenLP.') - .format(path=data_folder_path), + 'default data location?\n\n Click "{no}" to ' + 'close OpenLP so you can try to fix the the ' + 'problem.\n Click "{yes}" to reset the default ' + 'data location and start OpenLP.') + .format(path=data_folder_path, yes=yes_button, no=no_button), QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No), QtWidgets.QMessageBox.No) From 5e600f44176527ba0840997008e4b6c01e52a775 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 21 Nov 2016 21:21:31 +0100 Subject: [PATCH 45/86] Change the text for missing data path text. --- openlp/core/__init__.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 4f99cb46e..5de5e69de 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -39,7 +39,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets from openlp.core.common import Registry, OpenLPMixin, AppLocation, LanguageManager, Settings, UiStrings, \ check_directory_exists, is_macosx, is_win, translate -from openlp.core.common.versionchecker import VersionThread, get_application_version, clean_button_text +from openlp.core.common.versionchecker import VersionThread, get_application_version from openlp.core.lib import ScreenList from openlp.core.resources import qInitResources from openlp.core.ui import SplashScreen @@ -183,24 +183,20 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): """ data_folder_path = AppLocation.get_data_path() if not os.path.exists(data_folder_path): - log.critical('Database was not found in: {path}'.format(path=data_folder_path)) - yes_button = clean_button_text(self.buttonText(QtWidgets.QMessageBox.Yes)) - no_button = clean_button_text(self.buttonText(QtWidgets.QMessageBox.Yes)) + log.critical('Database was not found in: ' + data_folder_path) status = QtWidgets.QMessageBox.critical(None, translate('OpenLP', 'Data Directory Error'), translate('OpenLP', 'OpenLP data folder was not found in:\n\n{path}' '\n\nThe location of the data folder was ' - 'previously changed from the OpenLP\'s\n' + 'previously changed from the OpenLP\'s ' 'default location. If the data was stored on ' - 'removable device, that device\nneeds to be ' - 'made available.\n\n You may reset the data ' - 'location back to the default settings, ' + 'removable device, that device needs to be ' + 'made available.\n\nYou may reset the data ' + 'location back to the default location, ' 'or you can try to make the current location ' - 'available.\n\n Do you want to reset the ' - 'default data location?\n\n Click "{no}" to ' - 'close OpenLP so you can try to fix the the ' - 'problem.\n Click "{yes}" to reset the default ' - 'data location and start OpenLP.') - .format(path=data_folder_path, yes=yes_button, no=no_button), + 'available.\n\nDo you want to reset to the ' + 'default data location? If not, OpenLP will be ' + 'closed so you can try to fix the the problem.') + .format(path=data_folder_path), QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No), QtWidgets.QMessageBox.No) @@ -404,8 +400,12 @@ def main(args=None): Registry.create() Registry().register('application', application) application.setApplicationVersion(get_application_version()['version']) - # If user answers "No" to already running or missing db dialogue, shutdown OpenLP. - if application.is_already_running() or application.is_data_path_missing(): + # Check if an instance of OpenLP is already running. Quit if there is a running instance and the user only wants one + if application.is_already_running(): + sys.exit() + # If the custom data path is missing and the user wants to restore the data path, quit OpenLP. + if application.is_data_path_missing(): + application.shared_memory.detach() sys.exit() # Remove/convert obsolete settings. Settings().remove_obsolete_settings() From b31d5ad08eded0e179838304bb90fc6d882ac6c9 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 21 Nov 2016 21:56:48 +0100 Subject: [PATCH 46/86] pep8 fix --- openlp/core/lib/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 69c3d30b3..e0a4ba541 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -322,8 +322,8 @@ def create_separated_list(string_list): elif list_length == 2: list_to_string = translate('OpenLP.core.lib', '{one} and {two}').format(one=string_list[0], two=string_list[1]) elif list_length > 2: - list_to_string = translate('OpenLP.core.lib', '{first}, and {last}').format(first=', '.join(string_list[:-1]), - last=string_list[-1]) + list_to_string = translate('OpenLP.core.lib', '{first} and {last}').format(first=', '.join(string_list[:-1]), + last=string_list[-1]) else: list_to_string = '' return list_to_string From 8275f1139a4af3183b210117ffaa9765f03652b6 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Mon, 21 Nov 2016 22:07:01 +0100 Subject: [PATCH 47/86] Change tests to reflect change. --- tests/functional/openlp_core_lib/test_lib.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/functional/openlp_core_lib/test_lib.py b/tests/functional/openlp_core_lib/test_lib.py index 05c2b8a28..884d05be5 100644 --- a/tests/functional/openlp_core_lib/test_lib.py +++ b/tests/functional/openlp_core_lib/test_lib.py @@ -666,8 +666,8 @@ class TestLib(TestCase): string_result = create_separated_list(string_list) # THEN: We should have "Author 1, Author 2, and Author 3" - assert string_result == 'Author 1, Author 2, and Author 3', 'The string should be u\'Author 1, ' \ - 'Author 2, and Author 3\'.' + self.assertEqual(string_result, 'Author 1, Author 2 and Author 3', 'The string should be "Author 1, ' + 'Author 2, and Author 3".') def test_create_separated_list_empty_list(self): """ @@ -683,7 +683,7 @@ class TestLib(TestCase): string_result = create_separated_list(string_list) # THEN: We shoud have an emptry string. - assert string_result == '', 'The string sould be empty.' + self.assertEqual(string_result, '', 'The string sould be empty.') def test_create_separated_list_with_one_item(self): """ @@ -696,7 +696,7 @@ class TestLib(TestCase): string_result = create_separated_list(string_list) # THEN: We should have "Author 1" - assert string_result == 'Author 1', 'The string should be u\'Author 1\'.' + self.assertEqual(string_result, 'Author 1', 'The string should be "Author 1".') def test_create_separated_list_with_two_items(self): """ @@ -709,7 +709,7 @@ class TestLib(TestCase): string_result = create_separated_list(string_list) # THEN: We should have "Author 1 and Author 2" - assert string_result == 'Author 1 and Author 2', 'The string should be u\'Author 1 and Author 2\'.' + self.assertEqual(string_result, 'Author 1 and Author 2', 'The string should be "Author 1 and Author 2".') def test_create_separated_list_with_three_items(self): """ @@ -721,6 +721,6 @@ class TestLib(TestCase): # WHEN: We get a string build from the entries it the list and a seperator. string_result = create_separated_list(string_list) - # THEN: We should have "Author 1, Author 2, and Author 3" - assert string_result == 'Author 1, Author 2, and Author 3', 'The string should be u\'Author 1, ' \ - 'Author 2, and Author 3\'.' + # THEN: We should have "Author 1, Author 2 and Author 3" + self.assertEqual(string_result, 'Author 1, Author 2 and Author 3', 'The string should be "Author 1, ' + 'Author 2, and Author 3".') From 826bfd02ddcc1dbe0b1cbb5322cf428f2f507a31 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 24 Nov 2016 23:48:51 +0200 Subject: [PATCH 48/86] Add a WordProject Bible importer --- openlp/core/ui/lib/wizard.py | 1 + .../plugins/bibles/forms/bibleimportform.py | 43 +- .../bibles/lib/importers/wordproject.py | 169 +++++ openlp/plugins/bibles/lib/manager.py | 7 +- openlp/plugins/bibles/lib/mediaitem.py | 1 + openlp/plugins/media/lib/mediaitem.py | 3 +- .../bibles/test_wordprojectimport.py | 691 ++++++++++++++++++ 7 files changed, 912 insertions(+), 3 deletions(-) create mode 100644 openlp/plugins/bibles/lib/importers/wordproject.py create mode 100644 tests/functional/openlp_plugins/bibles/test_wordprojectimport.py diff --git a/openlp/core/ui/lib/wizard.py b/openlp/core/ui/lib/wizard.py index 5f2321f48..68efc43c1 100644 --- a/openlp/core/ui/lib/wizard.py +++ b/openlp/core/ui/lib/wizard.py @@ -46,6 +46,7 @@ class WizardStrings(object): OSIS = 'OSIS' ZEF = 'Zefania' SWORD = 'Sword' + WordProject = 'WordProject' # These strings should need a good reason to be retranslated elsewhere. FinishedImport = translate('OpenLP.Ui', 'Finished import.') FormatLabel = translate('OpenLP.Ui', 'Format:') diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index e1e062155..d7eae281f 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -125,6 +125,7 @@ class BibleImportForm(OpenLPWizard): self.csv_verses_button.clicked.connect(self.on_csv_verses_browse_button_clicked) self.open_song_browse_button.clicked.connect(self.on_open_song_browse_button_clicked) self.zefania_browse_button.clicked.connect(self.on_zefania_browse_button_clicked) + self.wordproject_browse_button.clicked.connect(self.on_wordproject_browse_button_clicked) self.web_update_button.clicked.connect(self.on_web_update_button_clicked) self.sword_browse_button.clicked.connect(self.on_sword_browse_button_clicked) self.sword_zipbrowse_button.clicked.connect(self.on_sword_zipbrowse_button_clicked) @@ -143,7 +144,7 @@ class BibleImportForm(OpenLPWizard): self.format_label = QtWidgets.QLabel(self.select_page) self.format_label.setObjectName('FormatLabel') self.format_combo_box = QtWidgets.QComboBox(self.select_page) - self.format_combo_box.addItems(['', '', '', '', '', '']) + self.format_combo_box.addItems(['', '', '', '', '', '', '']) self.format_combo_box.setObjectName('FormatComboBox') self.format_layout.addRow(self.format_label, self.format_combo_box) self.spacer = QtWidgets.QSpacerItem(10, 0, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) @@ -355,6 +356,25 @@ class BibleImportForm(OpenLPWizard): self.sword_disabled_label.setObjectName('SwordDisabledLabel') self.sword_layout.addWidget(self.sword_disabled_label) self.select_stack.addWidget(self.sword_widget) + self.wordproject_widget = QtWidgets.QWidget(self.select_page) + self.wordproject_widget.setObjectName('WordProjectWidget') + self.wordproject_layout = QtWidgets.QFormLayout(self.wordproject_widget) + self.wordproject_layout.setContentsMargins(0, 0, 0, 0) + self.wordproject_layout.setObjectName('WordProjectLayout') + self.wordproject_file_label = QtWidgets.QLabel(self.wordproject_widget) + self.wordproject_file_label.setObjectName('WordProjectFileLabel') + self.wordproject_file_layout = QtWidgets.QHBoxLayout() + self.wordproject_file_layout.setObjectName('WordProjectFileLayout') + self.wordproject_file_edit = QtWidgets.QLineEdit(self.wordproject_widget) + self.wordproject_file_edit.setObjectName('WordProjectFileEdit') + self.wordproject_file_layout.addWidget(self.wordproject_file_edit) + self.wordproject_browse_button = QtWidgets.QToolButton(self.wordproject_widget) + self.wordproject_browse_button.setIcon(self.open_icon) + self.wordproject_browse_button.setObjectName('WordProjectBrowseButton') + self.wordproject_file_layout.addWidget(self.wordproject_browse_button) + self.wordproject_layout.addRow(self.wordproject_file_label, self.wordproject_file_layout) + self.wordproject_layout.setItem(5, QtWidgets.QFormLayout.LabelRole, self.spacer) + self.select_stack.addWidget(self.wordproject_widget) self.select_page_layout.addLayout(self.select_stack) self.addPage(self.select_page) # License Page @@ -400,6 +420,7 @@ class BibleImportForm(OpenLPWizard): self.format_combo_box.setItemText(BibleFormat.OSIS, WizardStrings.OSIS) self.format_combo_box.setItemText(BibleFormat.CSV, WizardStrings.CSV) self.format_combo_box.setItemText(BibleFormat.OpenSong, WizardStrings.OS) + self.format_combo_box.setItemText(BibleFormat.WordProject, WizardStrings.WordProject) self.format_combo_box.setItemText(BibleFormat.WebDownload, translate('BiblesPlugin.ImportWizardForm', 'Web Download')) self.format_combo_box.setItemText(BibleFormat.Zefania, WizardStrings.ZEF) @@ -410,6 +431,7 @@ class BibleImportForm(OpenLPWizard): self.open_song_file_label.setText(translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) self.web_source_label.setText(translate('BiblesPlugin.ImportWizardForm', 'Location:')) self.zefania_file_label.setText(translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) + self.wordproject_file_label.setText(translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) self.web_update_label.setText(translate('BiblesPlugin.ImportWizardForm', 'Click to download bible list')) self.web_update_button.setText(translate('BiblesPlugin.ImportWizardForm', 'Download bible list')) self.web_source_combo_box.setItemText(WebDownload.Crosswalk, translate('BiblesPlugin.ImportWizardForm', @@ -504,6 +526,12 @@ class BibleImportForm(OpenLPWizard): critical_error_message_box(UiStrings().NFSs, WizardStrings.YouSpecifyFile % WizardStrings.ZEF) self.zefania_file_edit.setFocus() return False + elif self.field('source_format') == BibleFormat.WordProject: + if not self.field('wordproject_file'): + critical_error_message_box(UiStrings().NFSs, + WizardStrings.YouSpecifyFile % WizardStrings.WordProject) + self.wordproject_file_edit.setFocus() + return False elif self.field('source_format') == BibleFormat.WebDownload: # If count is 0 the bible list has not yet been downloaded if self.web_translation_combo_box.count() == 0: @@ -627,6 +655,14 @@ class BibleImportForm(OpenLPWizard): self.get_file_name(WizardStrings.OpenTypeFile % WizardStrings.ZEF, self.zefania_file_edit, 'last directory import') + def on_wordproject_browse_button_clicked(self): + """ + Show the file open dialog for the WordProject file. + """ + # TODO: Verify format() with variable template + self.get_file_name(WizardStrings.OpenTypeFile % WizardStrings.WordProject, self.wordproject_file_edit, + 'last directory import') + def on_web_update_button_clicked(self): """ Download list of bibles from Crosswalk, BibleServer and BibleGateway. @@ -707,6 +743,7 @@ class BibleImportForm(OpenLPWizard): self.select_page.registerField('csv_versefile', self.csv_verses_edit) self.select_page.registerField('opensong_file', self.open_song_file_edit) self.select_page.registerField('zefania_file', self.zefania_file_edit) + self.select_page.registerField('wordproject_file', self.wordproject_file_edit) self.select_page.registerField('web_location', self.web_source_combo_box) self.select_page.registerField('web_biblename', self.web_translation_combo_box) self.select_page.registerField('sword_folder_path', self.sword_folder_edit) @@ -799,6 +836,10 @@ class BibleImportForm(OpenLPWizard): # Import a Zefania bible. importer = self.manager.import_bible(BibleFormat.Zefania, name=license_version, filename=self.field('zefania_file')) + elif bible_type == BibleFormat.WordProject: + # Import a WordProject bible. + importer = self.manager.import_bible(BibleFormat.WordProject, name=license_version, + filename=self.field('wordproject_file')) elif bible_type == BibleFormat.SWORD: # Import a SWORD bible. if self.sword_tab_widget.currentIndex() == self.sword_tab_widget.indexOf(self.sword_folder_tab): diff --git a/openlp/plugins/bibles/lib/importers/wordproject.py b/openlp/plugins/bibles/lib/importers/wordproject.py new file mode 100644 index 000000000..f48749fc6 --- /dev/null +++ b/openlp/plugins/bibles/lib/importers/wordproject.py @@ -0,0 +1,169 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +import os +import re +import logging +from codecs import open as copen +from tempfile import TemporaryDirectory +from zipfile import ZipFile + +from bs4 import BeautifulSoup, Tag, NavigableString + +from openlp.plugins.bibles.lib.bibleimport import BibleImport + +BOOK_NUMBER_PATTERN = re.compile(r'\[(\d+)\]') +REPLACE_SPACES = re.compile(r'\s{2,}') + +log = logging.getLogger(__name__) + + +class WordProjectBible(BibleImport): + """ + `WordProject `_ Bible format importer class. + """ + def _cleanup(self): + """ + Clean up after ourselves + """ + self.tmp.cleanup() + + def _unzip_file(self): + """ + Unzip the file to a temporary directory + """ + self.tmp = TemporaryDirectory() + zip_file = ZipFile(os.path.abspath(self.filename)) + zip_file.extractall(self.tmp.name) + self.base_dir = os.path.join(self.tmp.name, os.path.splitext(os.path.basename(self.filename))[0]) + + def process_books(self): + """ + Extract and create the bible books from the parsed html + + :param bible_data: parsed xml + :return: None + """ + with copen(os.path.join(self.base_dir, 'index.htm'), encoding='utf-8', errors='ignore') as index_file: + page = index_file.read() + soup = BeautifulSoup(page, 'lxml') + bible_books = soup.find('div', 'textOptions').find_all('li') + book_count = len(bible_books) + for li_book in bible_books: + log.debug(li_book) + if self.stop_import_flag: + break + # Sometimes the structure is "[1] Genesis", and sometimes it's "[1] Genesis" + if isinstance(li_book.contents[0], NavigableString) and str(li_book.contents[0]).strip(): + book_string = str(li_book.contents[0]) + book_name = str(li_book.a.contents[0]) + elif li_book.a: + book_string, book_name = str(li_book.a.contents[0]).split(' ', 1) + book_link = li_book.a['href'] + book_id = int(BOOK_NUMBER_PATTERN.search(book_string).group(1)) + book_name = book_name.strip() + db_book = self.find_and_create_book(book_name, book_count, self.language_id, book_id) + self.process_chapters(db_book, book_id, book_link) + self.session.commit() + + def process_chapters(self, db_book, book_id, book_link): + """ + Extract the chapters, and do some initial processing of the verses + + :param book: An OpenLP bible database book object + :param chapters: parsed chapters + :return: None + """ + log.debug(book_link) + book_file = os.path.join(self.base_dir, os.path.normpath(book_link)) + with copen(book_file, encoding='utf-8', errors='ignore') as f: + page = f.read() + soup = BeautifulSoup(page, 'lxml') + header_div = soup.find('div', 'textHeader') + chapters_p = header_div.find('p') + if not chapters_p: + chapters_p = soup.p + log.debug(chapters_p) + for item in chapters_p.contents: + if self.stop_import_flag: + break + if isinstance(item, Tag) and item.name in ['a', 'span']: + chapter_number = int(item.string.strip()) + self.set_current_chapter(db_book.name, chapter_number) + self.process_verses(db_book, book_id, chapter_number) + + def process_verses(self, db_book, book_number, chapter_number): + """ + Get the verses for a particular book + """ + chapter_file_name = os.path.join(self.base_dir, '{:02d}'.format(book_number), '{}.htm'.format(chapter_number)) + with copen(chapter_file_name, encoding='utf-8', errors='ignore') as chapter_file: + page = chapter_file.read() + soup = BeautifulSoup(page, 'lxml') + text_body = soup.find('div', 'textBody') + if text_body: + verses_p = text_body.find('p') + else: + verses_p = soup.find_all('p')[2] + verse_number = 0 + verse_text = '' + for item in verses_p.contents: + if self.stop_import_flag: + break + if isinstance(item, Tag) and 'verse' in item.get('class', []): + if verse_number > 0: + self.process_verse(db_book, chapter_number, verse_number, verse_text.strip()) + verse_number = int(item.string.strip()) + verse_text = '' + elif isinstance(item, NavigableString): + verse_text += str(item) + elif isinstance(item, Tag) and item.name in ['span', 'a']: + verse_text += str(item.string) + else: + log.warning('Can\'t store %s', item) + self.process_verse(db_book, chapter_number, verse_number, verse_text.strip()) + + def process_verse(self, db_book, chapter_number, verse_number, verse_text): + """ + Process a verse element + :param book: A database Book object + :param chapter_number: The chapter number to add the verses to (int) + :param element: The verse element to process. (etree element type) + :param use_milestones: set to True to process a 'milestone' verse. Defaults to False + :return: None + """ + if verse_text: + log.debug('%s %s:%s %s', db_book.name, chapter_number, verse_number, verse_text.strip()) + self.create_verse(db_book.id, chapter_number, verse_number, verse_text.strip()) + + def do_import(self, bible_name=None): + """ + Loads a Bible from file. + """ + self.log_debug('Starting WordProject import from "{name}"'.format(name=self.filename)) + self._unzip_file() + self.language_id = self.get_language_id(None, bible_name=self.filename) + result = False + if self.language_id: + self.process_books() + result = True + self._cleanup() + return result diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index fbb6fb6e7..084e24270 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -31,6 +31,7 @@ from .importers.http import HTTPBible from .importers.opensong import OpenSongBible from .importers.osis import OSISBible from .importers.zefania import ZefaniaBible +from .importers.wordproject import WordProjectBible try: from .importers.sword import SwordBible except: @@ -50,6 +51,7 @@ class BibleFormat(object): WebDownload = 3 Zefania = 4 SWORD = 5 + WordProject = 6 @staticmethod def get_class(bible_format): @@ -70,6 +72,8 @@ class BibleFormat(object): return ZefaniaBible elif bible_format == BibleFormat.SWORD: return SwordBible + elif bible_format == BibleFormat.WordProject: + return WordProjectBible else: return None @@ -84,7 +88,8 @@ class BibleFormat(object): BibleFormat.OpenSong, BibleFormat.WebDownload, BibleFormat.Zefania, - BibleFormat.SWORD + BibleFormat.SWORD, + BibleFormat.WordProject ] diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 9a04e5360..c9b5c6b1e 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -425,6 +425,7 @@ class BibleMediaItem(MediaManagerItem): verse_count = self.plugin.manager.get_verse_count_by_book_ref_id(bible, book_ref_id, 1) if verse_count == 0: self.advancedSearchButton.setEnabled(False) + log.warning('Not enough chapters in %s', book_ref_id) critical_error_message_box(message=translate('BiblesPlugin.MediaItem', 'Bible not fully loaded.')) else: self.advancedSearchButton.setEnabled(True) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index dc196fb59..00fccb657 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -150,7 +150,8 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties): triggers=self.on_replace_click) if 'webkit' not in get_media_players()[0]: self.replace_action.setDisabled(True) - self.replace_action_context.setDisabled(True) + if hasattr(self, 'replace_action_context'): + self.replace_action_context.setDisabled(True) self.reset_action = self.toolbar.add_toolbar_action('reset_action', icon=':/system/system_close.png', visible=False, triggers=self.on_reset_click) self.media_widget = QtWidgets.QWidget(self) diff --git a/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py b/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py new file mode 100644 index 000000000..45a77c50f --- /dev/null +++ b/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py @@ -0,0 +1,691 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +""" +This module contains tests for the WordProject Bible importer. +""" + +import os +import json +from unittest import TestCase + +from openlp.plugins.bibles.lib.importers.wordproject import WordProjectBible +from openlp.plugins.bibles.lib.db import BibleDB + +from tests.functional import MagicMock, patch, call + +TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..', 'resources', 'bibles')) +INDEX_PAGE = """ + + + + + The Holy Bible in the English language with audio narration - KJV + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    +
    +

    WordProject

    +
    +
    +
    + + +
    +
    + +
    + +facebook + +twitter + +google + +linkin

    +
    + +
    + + +
    +
    +
    + +
    +
    +
    +

    Top + +

    + +
    +
    +
    + + + + + + + + +""" +CHAPTER_PAGE = """ + + + + + Creation of the world, Genesis Chapter 1 + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    WordProject

    +
    +
    +
    + + +
    +
    + +
    + +facebook + +twitter + +google + +linkin

    +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +

    Genesis

    + +

    Chapter: + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 + +

    +
    + + + +
    +
    +

    Chapter 1

    + + +

    1 In the beginning God created the heaven and the earth. +
    2 And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters. +
    3 And God said, Let there be light: and there was light. +
    4 And God saw the light, that it was good: and God divided the light from the darkness. +
    5 And God called the light Day, and the darkness he called Night. And the evening and the morning were the first day. +
    6 And God said, Let there be a firmament in the midst of the waters, and let it divide the waters from the waters. +
    7 And God made the firmament, and divided the waters which were under the firmament from the waters which were above the firmament: and it was so. +
    8 And God called the firmament Heaven. And the evening and the morning were the second day. +
    9 And God said, Let the waters under the heaven be gathered together unto one place, and let the dry land appear: and it was so. +
    10 And God called the dry land Earth; and the gathering together of the waters called he Seas: and God saw that it was good. +
    11 And God said, Let the earth bring forth grass, the herb yielding seed, and the fruit tree yielding fruit after his kind, whose seed is in itself, upon the earth: and it was so. +
    12 And the earth brought forth grass, and herb yielding seed after his kind, and the tree yielding fruit, whose seed was in itself, after his kind: and God saw that it was good. +
    13 And the evening and the morning were the third day. +
    14 And God said, Let there be lights in the firmament of the heaven to divide the day from the night; and let them be for signs, and for seasons, and for days, and years: +
    15 And let them be for lights in the firmament of the heaven to give light upon the earth: and it was so. +
    16 And God made two great lights; the greater light to rule the day, and the lesser light to rule the night: he made the stars also. +
    17 And God set them in the firmament of the heaven to give light upon the earth, +
    18 And to rule over the day and over the night, and to divide the light from the darkness: and God saw that it was good. +
    19 And the evening and the morning were the fourth day. +
    20 And God said, Let the waters bring forth abundantly the moving creature that hath life, and fowl that may fly above the earth in the open firmament of heaven. +
    21 And God created great whales, and every living creature that moveth, which the waters brought forth abundantly, after their kind, and every winged fowl after his kind: and God saw that it was good. +
    22 And God blessed them, saying, Be fruitful, and multiply, and fill the waters in the seas, and let fowl multiply in the earth. +
    23 And the evening and the morning were the fifth day. +
    24 And God said, Let the earth bring forth the living creature after his kind, cattle, and creeping thing, and beast of the earth after his kind: and it was so. +
    25 And God made the beast of the earth after his kind, and cattle after their kind, and every thing that creepeth upon the earth after his kind: and God saw that it was good. +
    26 And God said, Let us make man in our image, after our likeness: and let them have dominion over the fish of the sea, and over the fowl of the air, and over the cattle, and over all the earth, and over every creeping thing that creepeth upon the earth. +
    27 So God created man in his own image, in the image of God created he him; male and female created he them. +
    28 And God blessed them, and God said unto them, Be fruitful, and multiply, and replenish the earth, and subdue it: and have dominion over the fish of the sea, and over the fowl of the air, and over every living thing that moveth upon the earth. +
    29 And God said, Behold, I have given you every herb bearing seed, which is upon the face of all the earth, and every tree, in the which is the fruit of a tree yielding seed; to you it shall be for meat. +
    30 And to every beast of the earth, and to every fowl of the air, and to every thing that creepeth upon the earth, wherein there is life, I have given every green herb for meat: and it was so. +
    31 And God saw every thing that he had made, and, behold, it was very good. And the evening and the morning were the sixth day. +

    + +
    +
    +
    +
    +
    + +
    +
    +
    +

     printer  +  arrowup  + +  arrowright 

    + +
    +
    +
    + + + + + + + + +""" + + +class TestWordProjectImport(TestCase): + """ + Test the functions in the :mod:`wordprojectimport` module. + """ + + def setUp(self): + self.registry_patcher = patch('openlp.plugins.bibles.lib.bibleimport.Registry') + self.addCleanup(self.registry_patcher.stop) + self.registry_patcher.start() + self.manager_patcher = patch('openlp.plugins.bibles.lib.db.Manager') + self.addCleanup(self.manager_patcher.stop) + self.manager_patcher.start() + + @patch('openlp.plugins.bibles.lib.importers.wordproject.os') + @patch('openlp.plugins.bibles.lib.importers.wordproject.copen') + def test_process_books(self, mocked_open, mocked_os): + """ + Test the process_books() method + """ + # GIVEN: A WordProject importer and a bunch of mocked things + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + importer.base_dir = '' + importer.stop_import_flag = False + importer.language_id = 'en' + mocked_open.return_value.__enter__.return_value.read.return_value = INDEX_PAGE + mocked_os.path.join.side_effect = lambda *x: ''.join(x) + + # WHEN: process_books() is called + with patch.object(importer, 'find_and_create_book') as mocked_find_and_create_book, \ + patch.object(importer, 'process_chapters') as mocked_process_chapters, \ + patch.object(importer, 'session') as mocked_session: + importer.process_books() + + # THEN: The right methods should have been called + mocked_os.path.join.assert_called_once_with('', 'index.htm') + mocked_open.assert_called_once_with('index.htm', encoding='utf-8', errors='ignore') + assert mocked_find_and_create_book.call_count == 66, 'There should be 66 books' + assert mocked_process_chapters.call_count == 66, 'There should be 66 books' + assert mocked_session.commit.call_count == 66, 'There should be 66 books' + + @patch('openlp.plugins.bibles.lib.importers.wordproject.os') + @patch('openlp.plugins.bibles.lib.importers.wordproject.copen') + def test_process_chapters(self, mocked_open, mocked_os): + """ + Test the process_chapters() method + """ + # GIVEN: A WordProject importer and a bunch of mocked things + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + importer.base_dir = '' + importer.stop_import_flag = False + importer.language_id = 'en' + mocked_open.return_value.__enter__.return_value.read.return_value = CHAPTER_PAGE + mocked_os.path.join.side_effect = lambda *x: ''.join(x) + mocked_os.path.normpath.side_effect = lambda x: x + mocked_db_book = MagicMock() + mocked_db_book.name = 'Genesis' + book_id = 1 + book_link = '01/1.htm' + + # WHEN: process_chapters() is called + with patch.object(importer, 'set_current_chapter') as mocked_set_current_chapter, \ + patch.object(importer, 'process_verses') as mocked_process_verses: + importer.process_chapters(mocked_db_book, book_id, book_link) + + # THEN: The right methods should have been called + expected_set_current_chapter_calls = [call('Genesis', ch) for ch in range(1, 51)] + expected_process_verses_calls = [call(mocked_db_book, 1, ch) for ch in range(1, 51)] + mocked_os.path.join.assert_called_once_with('', '01/1.htm') + mocked_open.assert_called_once_with('01/1.htm', encoding='utf-8', errors='ignore') + assert mocked_set_current_chapter.call_args_list == expected_set_current_chapter_calls + assert mocked_process_verses.call_args_list == expected_process_verses_calls + + @patch('openlp.plugins.bibles.lib.importers.wordproject.os') + @patch('openlp.plugins.bibles.lib.importers.wordproject.copen') + def test_process_verses(self, mocked_open, mocked_os): + """ + Test the process_verses() method + """ + # GIVEN: A WordProject importer and a bunch of mocked things + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + importer.base_dir = '' + importer.stop_import_flag = False + importer.language_id = 'en' + mocked_open.return_value.__enter__.return_value.read.return_value = CHAPTER_PAGE + mocked_os.path.join.side_effect = lambda *x: '/'.join(x) + mocked_db_book = MagicMock() + mocked_db_book.name = 'Genesis' + book_number = 1 + chapter_number = 1 + + # WHEN: process_verses() is called + with patch.object(importer, 'process_verse') as mocked_process_verse: + importer.process_verses(mocked_db_book, book_number, chapter_number) + + # THEN: All the right methods should have been called + mocked_os.path.join.assert_called_once_with('', '01', '1.htm') + mocked_open.assert_called_once_with('/01/1.htm', encoding='utf-8', errors='ignore') + assert mocked_process_verse.call_count == 31 + + def test_process_verse(self): + """ + Test the process_verse() method + """ + # GIVEN: An importer and a mocked method + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + mocked_db_book = MagicMock() + mocked_db_book.id = 1 + chapter_number = 1 + verse_number = 1 + verse_text = ' In the beginning, God created the heavens and the earth ' + + # WHEN: process_verse() is called + with patch.object(importer, 'create_verse') as mocked_create_verse: + importer.process_verse(mocked_db_book, chapter_number, verse_number, verse_text) + + # THEN: The create_verse() method should have been called + mocked_create_verse.assert_called_once_with(1, 1, 1, 'In the beginning, God created the heavens and the earth') + + def test_process_verse_no_text(self): + """ + Test the process_verse() method when there's no text + """ + # GIVEN: An importer and a mocked method + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + mocked_db_book = MagicMock() + mocked_db_book.id = 1 + chapter_number = 1 + verse_number = 1 + verse_text = '' + + # WHEN: process_verse() is called + with patch.object(importer, 'create_verse') as mocked_create_verse: + importer.process_verse(mocked_db_book, chapter_number, verse_number, verse_text) + + # THEN: The create_verse() method should NOT have been called + assert mocked_create_verse.call_count == 0 + + def test_do_import(self): + """ + Test the do_import() method + """ + # GIVEN: An importer and mocked methods + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + + # WHEN: do_import() is called + with patch.object(importer, '_unzip_file') as mocked_unzip_file, \ + patch.object(importer, 'get_language_id') as mocked_get_language_id, \ + patch.object(importer, 'process_books') as mocked_process_books, \ + patch.object(importer, '_cleanup') as mocked_cleanup: + mocked_get_language_id.return_value = 1 + result = importer.do_import() + + # THEN: The correct methods should have been called + mocked_unzip_file.assert_called_once_with() + mocked_get_language_id.assert_called_once_with(None, bible_name='kj.zip') + mocked_process_books.assert_called_once_with() + mocked_cleanup.assert_called_once_with() + assert result is True + + def test_do_import_no_language(self): + """ + Test the do_import() method when the language is not available + """ + # GIVEN: An importer and mocked methods + importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip') + + # WHEN: do_import() is called + with patch.object(importer, '_unzip_file') as mocked_unzip_file, \ + patch.object(importer, 'get_language_id') as mocked_get_language_id, \ + patch.object(importer, 'process_books') as mocked_process_books, \ + patch.object(importer, '_cleanup') as mocked_cleanup: + mocked_get_language_id.return_value = None + result = importer.do_import() + + # THEN: The correct methods should have been called + mocked_unzip_file.assert_called_once_with() + mocked_get_language_id.assert_called_once_with(None, bible_name='kj.zip') + assert mocked_process_books.call_count == 0 + mocked_cleanup.assert_called_once_with() + assert result is False From 846476c4ad00c92caa97c5974cadc9adb1ae051a Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 25 Nov 2016 15:58:33 +0200 Subject: [PATCH 49/86] Stop wizards from resizing themselves based on the contents of comboboxes --- openlp/core/ui/lib/wizard.py | 1 + .../plugins/bibles/forms/bibleimportform.py | 33 ++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/openlp/core/ui/lib/wizard.py b/openlp/core/ui/lib/wizard.py index 68efc43c1..06225a376 100644 --- a/openlp/core/ui/lib/wizard.py +++ b/openlp/core/ui/lib/wizard.py @@ -96,6 +96,7 @@ class OpenLPWizard(QtWidgets.QWizard, RegistryProperties): super(OpenLPWizard, self).__init__(parent) self.plugin = plugin self.with_progress_page = add_progress_page + self.setFixedWidth(640) self.setObjectName(name) self.open_icon = build_icon(':/general/general_open.png') self.delete_icon = build_icon(':/general/general_delete.png') diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index d7eae281f..564474271 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -162,6 +162,7 @@ class BibleImportForm(OpenLPWizard): self.osis_file_layout = QtWidgets.QHBoxLayout() self.osis_file_layout.setObjectName('OsisFileLayout') self.osis_file_edit = QtWidgets.QLineEdit(self.osis_widget) + self.osis_file_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.osis_file_edit.setObjectName('OsisFileEdit') self.osis_file_layout.addWidget(self.osis_file_edit) self.osis_browse_button = QtWidgets.QToolButton(self.osis_widget) @@ -181,6 +182,7 @@ class BibleImportForm(OpenLPWizard): self.csv_books_layout = QtWidgets.QHBoxLayout() self.csv_books_layout.setObjectName('CsvBooksLayout') self.csv_books_edit = QtWidgets.QLineEdit(self.csv_widget) + self.csv_books_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.csv_books_edit.setObjectName('CsvBooksEdit') self.csv_books_layout.addWidget(self.csv_books_edit) self.csv_books_button = QtWidgets.QToolButton(self.csv_widget) @@ -193,6 +195,7 @@ class BibleImportForm(OpenLPWizard): self.csv_verses_layout = QtWidgets.QHBoxLayout() self.csv_verses_layout.setObjectName('CsvVersesLayout') self.csv_verses_edit = QtWidgets.QLineEdit(self.csv_widget) + self.csv_verses_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.csv_verses_edit.setObjectName('CsvVersesEdit') self.csv_verses_layout.addWidget(self.csv_verses_edit) self.csv_verses_button = QtWidgets.QToolButton(self.csv_widget) @@ -212,6 +215,7 @@ class BibleImportForm(OpenLPWizard): self.open_song_file_layout = QtWidgets.QHBoxLayout() self.open_song_file_layout.setObjectName('OpenSongFileLayout') self.open_song_file_edit = QtWidgets.QLineEdit(self.open_song_widget) + self.open_song_file_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.open_song_file_edit.setObjectName('OpenSongFileEdit') self.open_song_file_layout.addWidget(self.open_song_file_edit) self.open_song_browse_button = QtWidgets.QToolButton(self.open_song_widget) @@ -301,55 +305,58 @@ class BibleImportForm(OpenLPWizard): self.sword_widget = QtWidgets.QWidget(self.select_page) self.sword_widget.setObjectName('SwordWidget') self.sword_layout = QtWidgets.QVBoxLayout(self.sword_widget) + self.sword_layout.setContentsMargins(0, 0, 0, 0) self.sword_layout.setObjectName('SwordLayout') self.sword_tab_widget = QtWidgets.QTabWidget(self.sword_widget) self.sword_tab_widget.setObjectName('SwordTabWidget') self.sword_folder_tab = QtWidgets.QWidget(self.sword_tab_widget) self.sword_folder_tab.setObjectName('SwordFolderTab') - self.sword_folder_tab_layout = QtWidgets.QGridLayout(self.sword_folder_tab) + self.sword_folder_tab_layout = QtWidgets.QFormLayout(self.sword_folder_tab) self.sword_folder_tab_layout.setObjectName('SwordTabFolderLayout') self.sword_folder_label = QtWidgets.QLabel(self.sword_folder_tab) self.sword_folder_label.setObjectName('SwordSourceLabel') - self.sword_folder_tab_layout.addWidget(self.sword_folder_label, 0, 0) self.sword_folder_label.setObjectName('SwordFolderLabel') self.sword_folder_edit = QtWidgets.QLineEdit(self.sword_folder_tab) + self.sword_folder_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.sword_folder_edit.setObjectName('SwordFolderEdit') self.sword_browse_button = QtWidgets.QToolButton(self.sword_folder_tab) self.sword_browse_button.setIcon(self.open_icon) self.sword_browse_button.setObjectName('SwordBrowseButton') - self.sword_folder_tab_layout.addWidget(self.sword_folder_edit, 0, 1) - self.sword_folder_tab_layout.addWidget(self.sword_browse_button, 0, 2) + self.sword_folder_layout = QtWidgets.QHBoxLayout() + self.sword_folder_layout.addWidget(self.sword_folder_edit) + self.sword_folder_layout.addWidget(self.sword_browse_button) + self.sword_folder_tab_layout.addRow(self.sword_folder_label, self.sword_folder_layout) self.sword_bible_label = QtWidgets.QLabel(self.sword_folder_tab) self.sword_bible_label.setObjectName('SwordBibleLabel') - self.sword_folder_tab_layout.addWidget(self.sword_bible_label, 1, 0) self.sword_bible_combo_box = QtWidgets.QComboBox(self.sword_folder_tab) self.sword_bible_combo_box.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) self.sword_bible_combo_box.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically) self.sword_bible_combo_box.setObjectName('SwordBibleComboBox') - self.sword_folder_tab_layout.addWidget(self.sword_bible_combo_box, 1, 1) + self.sword_folder_tab_layout.addRow(self.sword_bible_label, self.sword_bible_combo_box) self.sword_tab_widget.addTab(self.sword_folder_tab, '') self.sword_zip_tab = QtWidgets.QWidget(self.sword_tab_widget) self.sword_zip_tab.setObjectName('SwordZipTab') - self.sword_zip_layout = QtWidgets.QGridLayout(self.sword_zip_tab) + self.sword_zip_layout = QtWidgets.QFormLayout(self.sword_zip_tab) self.sword_zip_layout.setObjectName('SwordZipLayout') self.sword_zipfile_label = QtWidgets.QLabel(self.sword_zip_tab) self.sword_zipfile_label.setObjectName('SwordZipFileLabel') self.sword_zipfile_edit = QtWidgets.QLineEdit(self.sword_zip_tab) + self.sword_zipfile_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.sword_zipfile_edit.setObjectName('SwordZipFileEdit') self.sword_zipbrowse_button = QtWidgets.QToolButton(self.sword_zip_tab) self.sword_zipbrowse_button.setIcon(self.open_icon) self.sword_zipbrowse_button.setObjectName('SwordZipBrowseButton') + self.sword_zipfile_layout = QtWidgets.QHBoxLayout() + self.sword_zipfile_layout.addWidget(self.sword_zipfile_edit) + self.sword_zipfile_layout.addWidget(self.sword_zipbrowse_button) + self.sword_zip_layout.addRow(self.sword_zipfile_label, self.sword_zipfile_layout) self.sword_zipbible_label = QtWidgets.QLabel(self.sword_folder_tab) self.sword_zipbible_label.setObjectName('SwordZipBibleLabel') self.sword_zipbible_combo_box = QtWidgets.QComboBox(self.sword_zip_tab) self.sword_zipbible_combo_box.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) self.sword_zipbible_combo_box.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically) self.sword_zipbible_combo_box.setObjectName('SwordZipBibleComboBox') - self.sword_zip_layout.addWidget(self.sword_zipfile_label, 0, 0) - self.sword_zip_layout.addWidget(self.sword_zipfile_edit, 0, 1) - self.sword_zip_layout.addWidget(self.sword_zipbrowse_button, 0, 2) - self.sword_zip_layout.addWidget(self.sword_zipbible_label, 1, 0) - self.sword_zip_layout.addWidget(self.sword_zipbible_combo_box, 1, 1) + self.sword_zip_layout.addRow(self.sword_zipbible_label, self.sword_zipbible_combo_box) self.sword_tab_widget.addTab(self.sword_zip_tab, '') self.sword_layout.addWidget(self.sword_tab_widget) self.sword_disabled_label = QtWidgets.QLabel(self.sword_widget) @@ -366,6 +373,7 @@ class BibleImportForm(OpenLPWizard): self.wordproject_file_layout = QtWidgets.QHBoxLayout() self.wordproject_file_layout.setObjectName('WordProjectFileLayout') self.wordproject_file_edit = QtWidgets.QLineEdit(self.wordproject_widget) + self.wordproject_file_edit.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) self.wordproject_file_edit.setObjectName('WordProjectFileEdit') self.wordproject_file_layout.addWidget(self.wordproject_file_edit) self.wordproject_browse_button = QtWidgets.QToolButton(self.wordproject_widget) @@ -490,6 +498,7 @@ class BibleImportForm(OpenLPWizard): """ Validate the current page before moving on to the next page. """ + log.debug(self.size()) if self.currentPage() == self.welcome_page: return True elif self.currentPage() == self.select_page: From d0ed37e1d592ae5a41585e028a7a8a74c662d5a4 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 25 Nov 2016 16:17:34 +0200 Subject: [PATCH 50/86] Move contents of html files into actual html files --- .../bibles/test_wordprojectimport.py | 475 +----------------- .../resources/bibles/wordproject_chapter.htm | 248 +++++++++ tests/resources/bibles/wordproject_index.htm | 222 ++++++++ 3 files changed, 472 insertions(+), 473 deletions(-) create mode 100644 tests/resources/bibles/wordproject_chapter.htm create mode 100644 tests/resources/bibles/wordproject_index.htm diff --git a/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py b/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py index 45a77c50f..622f83fa8 100644 --- a/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py +++ b/tests/functional/openlp_plugins/bibles/test_wordprojectimport.py @@ -34,479 +34,8 @@ from tests.functional import MagicMock, patch, call TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'bibles')) -INDEX_PAGE = """ - - - - - The Holy Bible in the English language with audio narration - KJV - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -

    WordProject

    -
    -
    -
    - - -
    -
    - -
    - -facebook - -twitter - -google - -linkin

    -
    - -
    - - -
    -
    -
    - -
    -
    -
    -

    Top - -

    - -
    -
    -
    - - - - - - - - -""" -CHAPTER_PAGE = """ - - - - - Creation of the world, Genesis Chapter 1 - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -

    WordProject

    -
    -
    -
    - - -
    -
    - -
    - -facebook - -twitter - -google - -linkin

    -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -

    Genesis

    - -

    Chapter: - -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 - -

    -
    - - - -
    -
    -

    Chapter 1

    - - -

    1 In the beginning God created the heaven and the earth. -
    2 And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters. -
    3 And God said, Let there be light: and there was light. -
    4 And God saw the light, that it was good: and God divided the light from the darkness. -
    5 And God called the light Day, and the darkness he called Night. And the evening and the morning were the first day. -
    6 And God said, Let there be a firmament in the midst of the waters, and let it divide the waters from the waters. -
    7 And God made the firmament, and divided the waters which were under the firmament from the waters which were above the firmament: and it was so. -
    8 And God called the firmament Heaven. And the evening and the morning were the second day. -
    9 And God said, Let the waters under the heaven be gathered together unto one place, and let the dry land appear: and it was so. -
    10 And God called the dry land Earth; and the gathering together of the waters called he Seas: and God saw that it was good. -
    11 And God said, Let the earth bring forth grass, the herb yielding seed, and the fruit tree yielding fruit after his kind, whose seed is in itself, upon the earth: and it was so. -
    12 And the earth brought forth grass, and herb yielding seed after his kind, and the tree yielding fruit, whose seed was in itself, after his kind: and God saw that it was good. -
    13 And the evening and the morning were the third day. -
    14 And God said, Let there be lights in the firmament of the heaven to divide the day from the night; and let them be for signs, and for seasons, and for days, and years: -
    15 And let them be for lights in the firmament of the heaven to give light upon the earth: and it was so. -
    16 And God made two great lights; the greater light to rule the day, and the lesser light to rule the night: he made the stars also. -
    17 And God set them in the firmament of the heaven to give light upon the earth, -
    18 And to rule over the day and over the night, and to divide the light from the darkness: and God saw that it was good. -
    19 And the evening and the morning were the fourth day. -
    20 And God said, Let the waters bring forth abundantly the moving creature that hath life, and fowl that may fly above the earth in the open firmament of heaven. -
    21 And God created great whales, and every living creature that moveth, which the waters brought forth abundantly, after their kind, and every winged fowl after his kind: and God saw that it was good. -
    22 And God blessed them, saying, Be fruitful, and multiply, and fill the waters in the seas, and let fowl multiply in the earth. -
    23 And the evening and the morning were the fifth day. -
    24 And God said, Let the earth bring forth the living creature after his kind, cattle, and creeping thing, and beast of the earth after his kind: and it was so. -
    25 And God made the beast of the earth after his kind, and cattle after their kind, and every thing that creepeth upon the earth after his kind: and God saw that it was good. -
    26 And God said, Let us make man in our image, after our likeness: and let them have dominion over the fish of the sea, and over the fowl of the air, and over the cattle, and over all the earth, and over every creeping thing that creepeth upon the earth. -
    27 So God created man in his own image, in the image of God created he him; male and female created he them. -
    28 And God blessed them, and God said unto them, Be fruitful, and multiply, and replenish the earth, and subdue it: and have dominion over the fish of the sea, and over the fowl of the air, and over every living thing that moveth upon the earth. -
    29 And God said, Behold, I have given you every herb bearing seed, which is upon the face of all the earth, and every tree, in the which is the fruit of a tree yielding seed; to you it shall be for meat. -
    30 And to every beast of the earth, and to every fowl of the air, and to every thing that creepeth upon the earth, wherein there is life, I have given every green herb for meat: and it was so. -
    31 And God saw every thing that he had made, and, behold, it was very good. And the evening and the morning were the sixth day. -

    - -
    -
    -
    -
    -
    - -
    -
    -
    -

     printer  -  arrowup  - -  arrowright 

    - -
    -
    -
    - - - - - - - - -""" +INDEX_PAGE = open(os.path.join(TEST_PATH, 'wordproject_index.htm')).read() +CHAPTER_PAGE = open(os.path.join(TEST_PATH, 'wordproject_chapter.htm')).read() class TestWordProjectImport(TestCase): diff --git a/tests/resources/bibles/wordproject_chapter.htm b/tests/resources/bibles/wordproject_chapter.htm new file mode 100644 index 000000000..fb9b8a272 --- /dev/null +++ b/tests/resources/bibles/wordproject_chapter.htm @@ -0,0 +1,248 @@ + + + + + Creation of the world, Genesis Chapter 1 + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    WordProject

    +
    +
    +
    + + +
    +
    + +
    + +facebook + +twitter + +google + +linkin

    +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +

    Genesis

    + +

    Chapter: + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 + +

    +
    + + + +
    +
    +

    Chapter 1

    + + +

    1 In the beginning God created the heaven and the earth. +
    2 And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters. +
    3 And God said, Let there be light: and there was light. +
    4 And God saw the light, that it was good: and God divided the light from the darkness. +
    5 And God called the light Day, and the darkness he called Night. And the evening and the morning were the first day. +
    6 And God said, Let there be a firmament in the midst of the waters, and let it divide the waters from the waters. +
    7 And God made the firmament, and divided the waters which were under the firmament from the waters which were above the firmament: and it was so. +
    8 And God called the firmament Heaven. And the evening and the morning were the second day. +
    9 And God said, Let the waters under the heaven be gathered together unto one place, and let the dry land appear: and it was so. +
    10 And God called the dry land Earth; and the gathering together of the waters called he Seas: and God saw that it was good. +
    11 And God said, Let the earth bring forth grass, the herb yielding seed, and the fruit tree yielding fruit after his kind, whose seed is in itself, upon the earth: and it was so. +
    12 And the earth brought forth grass, and herb yielding seed after his kind, and the tree yielding fruit, whose seed was in itself, after his kind: and God saw that it was good. +
    13 And the evening and the morning were the third day. +
    14 And God said, Let there be lights in the firmament of the heaven to divide the day from the night; and let them be for signs, and for seasons, and for days, and years: +
    15 And let them be for lights in the firmament of the heaven to give light upon the earth: and it was so. +
    16 And God made two great lights; the greater light to rule the day, and the lesser light to rule the night: he made the stars also. +
    17 And God set them in the firmament of the heaven to give light upon the earth, +
    18 And to rule over the day and over the night, and to divide the light from the darkness: and God saw that it was good. +
    19 And the evening and the morning were the fourth day. +
    20 And God said, Let the waters bring forth abundantly the moving creature that hath life, and fowl that may fly above the earth in the open firmament of heaven. +
    21 And God created great whales, and every living creature that moveth, which the waters brought forth abundantly, after their kind, and every winged fowl after his kind: and God saw that it was good. +
    22 And God blessed them, saying, Be fruitful, and multiply, and fill the waters in the seas, and let fowl multiply in the earth. +
    23 And the evening and the morning were the fifth day. +
    24 And God said, Let the earth bring forth the living creature after his kind, cattle, and creeping thing, and beast of the earth after his kind: and it was so. +
    25 And God made the beast of the earth after his kind, and cattle after their kind, and every thing that creepeth upon the earth after his kind: and God saw that it was good. +
    26 And God said, Let us make man in our image, after our likeness: and let them have dominion over the fish of the sea, and over the fowl of the air, and over the cattle, and over all the earth, and over every creeping thing that creepeth upon the earth. +
    27 So God created man in his own image, in the image of God created he him; male and female created he them. +
    28 And God blessed them, and God said unto them, Be fruitful, and multiply, and replenish the earth, and subdue it: and have dominion over the fish of the sea, and over the fowl of the air, and over every living thing that moveth upon the earth. +
    29 And God said, Behold, I have given you every herb bearing seed, which is upon the face of all the earth, and every tree, in the which is the fruit of a tree yielding seed; to you it shall be for meat. +
    30 And to every beast of the earth, and to every fowl of the air, and to every thing that creepeth upon the earth, wherein there is life, I have given every green herb for meat: and it was so. +
    31 And God saw every thing that he had made, and, behold, it was very good. And the evening and the morning were the sixth day. +

    + +
    +
    +
    +
    +
    + +
    +
    +
    +

     printer  +  arrowup  + +  arrowright 

    + +
    +
    +
    + + + + + + + + + diff --git a/tests/resources/bibles/wordproject_index.htm b/tests/resources/bibles/wordproject_index.htm new file mode 100644 index 000000000..861ca2dda --- /dev/null +++ b/tests/resources/bibles/wordproject_index.htm @@ -0,0 +1,222 @@ + + + + + The Holy Bible in the English language with audio narration - KJV + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    WordProject

    +
    +
    +
    + + +
    +
    + +
    + +facebook + +twitter + +google + +linkin

    +
    + +
    + + +
    +
    +
    + +
    +
    +
    +

    Top + +

    + +
    +
    +
    + + + + + + + + From ef7f0b13892bcee190fd9189ad412a27726b37d8 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 25 Nov 2016 16:21:27 +0200 Subject: [PATCH 51/86] Fix pep8 --- openlp/plugins/bibles/forms/bibleimportform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 564474271..ae39d821b 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -538,7 +538,7 @@ class BibleImportForm(OpenLPWizard): elif self.field('source_format') == BibleFormat.WordProject: if not self.field('wordproject_file'): critical_error_message_box(UiStrings().NFSs, - WizardStrings.YouSpecifyFile % WizardStrings.WordProject) + WizardStrings.YouSpecifyFile % WizardStrings.WordProject) self.wordproject_file_edit.setFocus() return False elif self.field('source_format') == BibleFormat.WebDownload: From 595fd90d45691e508504c0286456531c5ec6dad5 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 14:06:54 +0100 Subject: [PATCH 52/86] Fix some errors on windows --- tests/functional/openlp_core_ui/test_maindisplay.py | 1 + .../openlp_plugins/presentations/test_powerpointcontroller.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/functional/openlp_core_ui/test_maindisplay.py b/tests/functional/openlp_core_ui/test_maindisplay.py index 5aa0f42a4..1ac6160a6 100644 --- a/tests/functional/openlp_core_ui/test_maindisplay.py +++ b/tests/functional/openlp_core_ui/test_maindisplay.py @@ -270,6 +270,7 @@ class TestMainDisplay(TestCase, TestMixin): service_item = MagicMock() service_item.theme_data = MagicMock() service_item.theme_data.background_type = 'video' + service_item.theme_data.theme_name = 'name' mocked_plugin = MagicMock() display.plugin_manager = PluginManager() display.plugin_manager.plugins = [mocked_plugin] diff --git a/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py b/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py index 3666eac40..824951a66 100644 --- a/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py +++ b/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py @@ -137,7 +137,7 @@ class TestPowerpointDocument(TestCase, TestMixin): instance.goto_slide(42) # THEN: mocked_critical_error_message_box should have been called - mocked_critical_error_message_box.assert_called_with('Error', 'An error occurred in the Powerpoint ' + mocked_critical_error_message_box.assert_called_with('Error', 'An error occurred in the PowerPoint ' 'integration and the presentation will be stopped.' ' Restart the presentation if you wish to ' 'present it.') From ceffeae39c6faf70b061944a86bb590c4da39b9e Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 14:07:21 +0100 Subject: [PATCH 53/86] Added appveyor conf file. --- appveyor.yml | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..8d3f61477 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,66 @@ +version: 2.5.0.{build} + +init: + - choco install -y --force bzr + - set PATH=C:\Program Files (x86)\Bazaar;%PATH% + - bzr --version + +clone_script: + - bzr checkout --lightweight lp:openlp openlp + +environment: + PYTHON: C:\\Python34 + +install: + # Install dependencies from pypi + - %PYTHON%\python.exe -m pip install sqlalchemy alembic chardet beautifulsoup4 Mako nose mock pyodbc==3.0.10 psycopg2 pypiwin32 pyenchant + # Install mysql dependency + - %PYTHON%\python.exe -m pip install http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df + # Download and install lxml and pyicu (originally from http://www.lfd.uci.edu/~gohlke/pythonlibs/) + - curl -L "https://www.dropbox.com/s/7dwwna459j6qvbp/lxml-3.6.4-cp34-cp34m-win32.whl?dl=1" -o lxml-3.6.4-cp34-cp34m-win32.whl + - %PYTHON%\python.exe -m pip install lxml-3.6.4-cp34-cp34m-win32.whl + - curl -L "https://www.dropbox.com/s/ib1yq4xq7o1dma7/PyICU-1.9.5-cp34-cp34m-win32.whl?dl=1" -o PyICU-1.9.5-cp34-cp34m-win32.whl + - %PYTHON%\python.exe -m pip install PyICU-1.9.5-cp34-cp34m-win32.whl + # Download and install PyQt5 + - curl -L -O http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe + - PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe /S + # Download and install Inno Setup - used for packaging + - curl -L -O http://www.jrsoftware.org/download.php/is-unicode.exe + - is-unicode.exe /VERYSILENT /SUPPRESSMSGBOXES /SP- + # Download and unpack portable-bundle + - curl -L "https://www.dropbox.com/s/omr8mw9kamnml3l/portable-setup.7z?dl=1" -o portable-setup.7z + - 7z x portable-setup.7z + # Download and unpack mupdf + - curl -O http://mupdf.com/downloads/archive/mupdf-1.9a-windows.zip + - 7z x mupdf-1.9a-windows.zip + - cp mupdf-1.9a-windows/mupdf.exe openlp/mupdf.exe + # Download and unpack mediainfo + - curl -O https://mediaarea.net/download/binary/mediainfo/0.7.90/MediaInfo_CLI_0.7.90_Windows_i386.zip + - mkdir MediaInfo + - 7z x -o MediaInfo MediaInfo_CLI_0.7.90_Windows_i386.zip + - cp MediaInfo\\MediaInfo.exe openlp\\MediaInfo.exe + # Disabled portable installers - can't figure out how to make them silent + # - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Installer/PortableApps.comInstaller_3.4.4.paf.exe + # - PortableApps.comInstaller_3.4.4.paf.exe /S + # - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Launcher/PortableApps.comLauncher_2.2.1.paf.exe + # - PortableApps.comLauncher_2.2.1.paf.exe /S + # - curl -L -O http://downloads.sourceforge.net/project/portableapps/NSIS%20Portable/NSISPortable_3.0_English.paf.exe + # - NSISPortable_3.0_English.paf.exe /S + + +build: off + +test_script: + - cd openlp + - %PYTHON%\\python.exe -m nose -v tests + +after_test: + # This is where we create a package using PyInstaller + # First download and unpack PyInstaller + - curl -L -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip + - 7z x develop.zip + # Then get the packaging repo + - bzr checkout --lightweight lp:~tomasgroth/openlp/packaging-appveyor packaging + - cd packaging + - %PYTHON%\python.exe windows/windows-builder.py -v -u -t -c windows\\config.ini -b ..\\openlp + From 7017f82b3617890cd632d16b9c6b37f2a87113f8 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 14:17:32 +0100 Subject: [PATCH 54/86] Workaround for 7z extraction --- appveyor.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 8d3f61477..189d94151 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -37,7 +37,9 @@ install: # Download and unpack mediainfo - curl -O https://mediaarea.net/download/binary/mediainfo/0.7.90/MediaInfo_CLI_0.7.90_Windows_i386.zip - mkdir MediaInfo - - 7z x -o MediaInfo MediaInfo_CLI_0.7.90_Windows_i386.zip + - cd MediaInfo + - 7z x ../MediaInfo_CLI_0.7.90_Windows_i386.zip + - cd.. - cp MediaInfo\\MediaInfo.exe openlp\\MediaInfo.exe # Disabled portable installers - can't figure out how to make them silent # - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Installer/PortableApps.comInstaller_3.4.4.paf.exe From 8595a2171f6feb4751b81577f922b47c6a588f60 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 14:54:29 +0100 Subject: [PATCH 55/86] Another test fix for windows. --- tests/functional/openlp_core_ui/test_maindisplay.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/functional/openlp_core_ui/test_maindisplay.py b/tests/functional/openlp_core_ui/test_maindisplay.py index 1ac6160a6..751263e06 100644 --- a/tests/functional/openlp_core_ui/test_maindisplay.py +++ b/tests/functional/openlp_core_ui/test_maindisplay.py @@ -271,6 +271,7 @@ class TestMainDisplay(TestCase, TestMixin): service_item.theme_data = MagicMock() service_item.theme_data.background_type = 'video' service_item.theme_data.theme_name = 'name' + service_item._raw_frames = [] mocked_plugin = MagicMock() display.plugin_manager = PluginManager() display.plugin_manager.plugins = [mocked_plugin] From ccdc88c4cbcb60a567c7eb913d56c4f3d9423ed5 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 29 Nov 2016 17:44:32 +0200 Subject: [PATCH 56/86] Change the name of the help menu to try to fix the double-help-menu problem --- openlp/core/common/settings.py | 6 +++--- openlp/core/ui/mainwindow.py | 11 +++++------ openlp/plugins/media/lib/mediaitem.py | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/openlp/core/common/settings.py b/openlp/core/common/settings.py index 8f70fafff..132e9652a 100644 --- a/openlp/core/common/settings.py +++ b/openlp/core/common/settings.py @@ -216,8 +216,8 @@ class Settings(QtCore.QSettings): ('advanced/default color', 'core/logo background color', []), # Default image renamed + moved to general > 2.4. ('advanced/default image', 'core/logo file', []), # Default image renamed + moved to general after 2.4. ('shortcuts/escapeItem', 'shortcuts/desktopScreenEnable', []), # Escape item was removed in 2.6. - ('shortcuts/offlineHelpItem', 'shortcuts/HelpItem', []), # Online and Offline help were combined in 2.6. - ('shortcuts/onlineHelpItem', 'shortcuts/HelpItem', []) # Online and Offline help were combined in 2.6. + ('shortcuts/offlineHelpItem', 'shortcuts/userManualItem', []), # Online and Offline help were combined in 2.6. + ('shortcuts/onlineHelpItem', 'shortcuts/userManualItem', []) # Online and Offline help were combined in 2.6. ] @staticmethod @@ -276,7 +276,7 @@ class Settings(QtCore.QSettings): 'shortcuts/fileSaveItem': [QtGui.QKeySequence(QtGui.QKeySequence.Save)], 'shortcuts/fileOpenItem': [QtGui.QKeySequence(QtGui.QKeySequence.Open)], 'shortcuts/goLive': [], - 'shortcuts/HelpItem': [QtGui.QKeySequence(QtGui.QKeySequence.HelpContents)], + 'shortcuts/userManualItem': [QtGui.QKeySequence(QtGui.QKeySequence.HelpContents)], 'shortcuts/importThemeItem': [], 'shortcuts/importBibleItem': [], 'shortcuts/listViewBiblesDeleteItem': [QtGui.QKeySequence(QtGui.QKeySequence.Delete)], diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index b8bd126dd..e6d0634b4 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -312,10 +312,9 @@ class Ui_MainWindow(object): elif is_macosx(): self.local_help_file = os.path.join(AppLocation.get_directory(AppLocation.AppDir), '..', 'Resources', 'OpenLP.help') - self.on_help_item = create_action(main_window, 'HelpItem', - icon=':/system/system_help_contents.png', - can_shortcuts=True, - category=UiStrings().Help, triggers=self.on_help_clicked) + self.user_manual_item = create_action(main_window, 'userManualItem', icon=':/system/system_help_contents.png', + can_shortcuts=True, category=UiStrings().Help, + triggers=self.on_help_clicked) self.web_site_item = create_action(main_window, 'webSiteItem', can_shortcuts=True, category=UiStrings().Help) # Shortcuts not connected to buttons or menu entries. self.search_shortcut_action = create_action(main_window, @@ -354,7 +353,7 @@ class Ui_MainWindow(object): add_actions(self.tools_menu, (self.tools_open_data_folder, None)) add_actions(self.tools_menu, (self.tools_first_time_wizard, None)) add_actions(self.tools_menu, [self.update_theme_images]) - add_actions(self.help_menu, (self.on_help_item, None, self.web_site_item, self.about_item)) + add_actions(self.help_menu, (self.user_manual_item, None, self.web_site_item, self.about_item)) add_actions(self.menu_bar, (self.file_menu.menuAction(), self.view_menu.menuAction(), self.tools_menu.menuAction(), self.settings_menu.menuAction(), self.help_menu.menuAction())) add_actions(self, [self.search_shortcut_action]) @@ -450,7 +449,7 @@ class Ui_MainWindow(object): 'from here.')) self.about_item.setText(translate('OpenLP.MainWindow', '&About')) self.about_item.setStatusTip(translate('OpenLP.MainWindow', 'More information about OpenLP.')) - self.on_help_item.setText(translate('OpenLP.MainWindow', '&User Manual')) + self.user_manual_item.setText(translate('OpenLP.MainWindow', '&User Manual')) self.search_shortcut_action.setText(UiStrings().Search) self.search_shortcut_action.setToolTip( translate('OpenLP.MainWindow', 'Jump to the search box of the current active plugin.')) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index dc196fb59..2344bc6d6 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -150,7 +150,7 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties): triggers=self.on_replace_click) if 'webkit' not in get_media_players()[0]: self.replace_action.setDisabled(True) - self.replace_action_context.setDisabled(True) + # self.replace_action_context.setDisabled(True) self.reset_action = self.toolbar.add_toolbar_action('reset_action', icon=':/system/system_close.png', visible=False, triggers=self.on_reset_click) self.media_widget = QtWidgets.QWidget(self) From 1f4c8e742ee88087cea3aceadabf771514239a98 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 21:37:39 +0100 Subject: [PATCH 57/86] More work on appveyor --- scripts/appveyor-webhook.py | 102 +++++++++++++++++++++++++++ appveyor.yml => scripts/appveyor.yml | 27 +++---- 2 files changed, 113 insertions(+), 16 deletions(-) create mode 100755 scripts/appveyor-webhook.py rename appveyor.yml => scripts/appveyor.yml (70%) diff --git a/scripts/appveyor-webhook.py b/scripts/appveyor-webhook.py new file mode 100755 index 000000000..841c5b532 --- /dev/null +++ b/scripts/appveyor-webhook.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### + +import json +import urllib +import urllib.request +import datetime +import sys +from subprocess import Popen, PIPE + +token = 'xx' +webhook_url = 'https://ci.appveyor.com/api/subversion/webhook?id=x' +branch = 'lp:openlp' + +webhook_element = \ +{ + "commit": { + "author": { + "email": "open@contributer", + "name": "OpenLP Contributor" + }, + "id": None, + "message": "Building " + branch, + "timestamp": datetime.datetime.now().isoformat() + }, + "config": None, + "repository": { + "name": "repo_name", + "url": "repo_url" + } +} + + +def get_version(): + """ + Get the version of the branch. + """ + bzr = Popen(('bzr', 'tags'), stdout=PIPE) + output = bzr.communicate()[0] + code = bzr.wait() + if code != 0: + raise Exception('Error running bzr tags') + lines = output.splitlines() + if len(lines) == 0: + tag = '0.0.0' + revision = '0' + else: + tag, revision = lines[-1].decode('utf-8').split() + bzr = Popen(('bzr', 'log', '--line', '-r', '-1'), stdout=PIPE) + output, error = bzr.communicate() + code = bzr.wait() + if code != 0: + raise Exception('Error running bzr log') + latest = output.decode('utf-8').split(':')[0] + version_string = latest == revision and tag or '%s-bzr%s' % (tag, latest) + # Save decimal version in case we need to do a portable build. + version = latest == revision and tag or '%s.%s' % (tag, latest) + return version_string, version + + +def get_yml(): + f = open('appveyor.yml') + yml_text = f.read() + f.close() + yml_text = yml_text.replace('BRANCHNAME', branch) + return yml_text + + +def hook(token, webhook_url): + webhook_element['config'] = get_yml() + webhook_element['commit']['message'] = 'Building ' + branch + version_string, version = get_version() + webhook_element['commit']['id'] = version_string + request = urllib.request.Request(webhook_url) + print(json.dumps(webhook_element)) + request.add_header('Content-Type','application/json;charset=utf-8') + request.add_header('Authorization', 'Bearer ' + token) + responce = urllib.request.urlopen(request, json.dumps(webhook_element).encode('utf-8')) + print(responce.read().decode('utf-8')) + + +hook(token, webhook_url) diff --git a/appveyor.yml b/scripts/appveyor.yml similarity index 70% rename from appveyor.yml rename to scripts/appveyor.yml index 189d94151..490464044 100644 --- a/appveyor.yml +++ b/scripts/appveyor.yml @@ -6,21 +6,21 @@ init: - bzr --version clone_script: - - bzr checkout --lightweight lp:openlp openlp + - bzr checkout --lightweight BRANCHNAME openlp environment: PYTHON: C:\\Python34 install: # Install dependencies from pypi - - %PYTHON%\python.exe -m pip install sqlalchemy alembic chardet beautifulsoup4 Mako nose mock pyodbc==3.0.10 psycopg2 pypiwin32 pyenchant + - "%PYTHON%\\python.exe -m pip install sqlalchemy alembic chardet beautifulsoup4 Mako nose mock pyodbc==3.0.10 psycopg2 pypiwin32 pyenchant" # Install mysql dependency - - %PYTHON%\python.exe -m pip install http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df + - "%PYTHON%\\python.exe -m pip install http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df" # Download and install lxml and pyicu (originally from http://www.lfd.uci.edu/~gohlke/pythonlibs/) - curl -L "https://www.dropbox.com/s/7dwwna459j6qvbp/lxml-3.6.4-cp34-cp34m-win32.whl?dl=1" -o lxml-3.6.4-cp34-cp34m-win32.whl - - %PYTHON%\python.exe -m pip install lxml-3.6.4-cp34-cp34m-win32.whl + - "%PYTHON%\\python.exe -m pip install lxml-3.6.4-cp34-cp34m-win32.whl" - curl -L "https://www.dropbox.com/s/ib1yq4xq7o1dma7/PyICU-1.9.5-cp34-cp34m-win32.whl?dl=1" -o PyICU-1.9.5-cp34-cp34m-win32.whl - - %PYTHON%\python.exe -m pip install PyICU-1.9.5-cp34-cp34m-win32.whl + - "%PYTHON%\\python.exe -m pip install PyICU-1.9.5-cp34-cp34m-win32.whl" # Download and install PyQt5 - curl -L -O http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe - PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe /S @@ -37,9 +37,7 @@ install: # Download and unpack mediainfo - curl -O https://mediaarea.net/download/binary/mediainfo/0.7.90/MediaInfo_CLI_0.7.90_Windows_i386.zip - mkdir MediaInfo - - cd MediaInfo - - 7z x ../MediaInfo_CLI_0.7.90_Windows_i386.zip - - cd.. + - 7z x -oMediaInfo MediaInfo_CLI_0.7.90_Windows_i386.zip - cp MediaInfo\\MediaInfo.exe openlp\\MediaInfo.exe # Disabled portable installers - can't figure out how to make them silent # - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Installer/PortableApps.comInstaller_3.4.4.paf.exe @@ -54,15 +52,12 @@ build: off test_script: - cd openlp - - %PYTHON%\\python.exe -m nose -v tests + - "%PYTHON%\\python.exe -m nose -v tests" after_test: # This is where we create a package using PyInstaller - # First download and unpack PyInstaller - - curl -L -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip + # First get PyInstaller + - curl -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip - 7z x develop.zip - # Then get the packaging repo - - bzr checkout --lightweight lp:~tomasgroth/openlp/packaging-appveyor packaging - - cd packaging - - %PYTHON%\python.exe windows/windows-builder.py -v -u -t -c windows\\config.ini -b ..\\openlp - + # Build the bundle + - "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp" From 1bb2e9e2781b2060f8e3ef2c137add272e01fee8 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 21:57:33 +0100 Subject: [PATCH 58/86] Another fix for tests on windows. --- tests/functional/openlp_core_ui/test_maindisplay.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/openlp_core_ui/test_maindisplay.py b/tests/functional/openlp_core_ui/test_maindisplay.py index 751263e06..8b10f6e0f 100644 --- a/tests/functional/openlp_core_ui/test_maindisplay.py +++ b/tests/functional/openlp_core_ui/test_maindisplay.py @@ -271,7 +271,7 @@ class TestMainDisplay(TestCase, TestMixin): service_item.theme_data = MagicMock() service_item.theme_data.background_type = 'video' service_item.theme_data.theme_name = 'name' - service_item._raw_frames = [] + service_item.theme_data.background_filename = 'background_filename' mocked_plugin = MagicMock() display.plugin_manager = PluginManager() display.plugin_manager.plugins = [mocked_plugin] From bbda32b949e88848bb9772f678504423e337fceb Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Tue, 29 Nov 2016 22:08:32 +0100 Subject: [PATCH 59/86] use revision number for appveyor id --- scripts/appveyor-webhook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/appveyor-webhook.py b/scripts/appveyor-webhook.py index 841c5b532..e28fac6b3 100755 --- a/scripts/appveyor-webhook.py +++ b/scripts/appveyor-webhook.py @@ -72,7 +72,7 @@ def get_version(): if code != 0: raise Exception('Error running bzr log') latest = output.decode('utf-8').split(':')[0] - version_string = latest == revision and tag or '%s-bzr%s' % (tag, latest) + version_string = latest == revision and tag or 'r%s' % latest # Save decimal version in case we need to do a portable build. version = latest == revision and tag or '%s.%s' % (tag, latest) return version_string, version @@ -93,7 +93,7 @@ def hook(token, webhook_url): webhook_element['commit']['id'] = version_string request = urllib.request.Request(webhook_url) print(json.dumps(webhook_element)) - request.add_header('Content-Type','application/json;charset=utf-8') + request.add_header('Content-Type', 'application/json;charset=utf-8') request.add_header('Authorization', 'Bearer ' + token) responce = urllib.request.urlopen(request, json.dumps(webhook_element).encode('utf-8')) print(responce.read().decode('utf-8')) From 955fdc50ac486e4bc0d2ee4b5a054e6c80822545 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 29 Nov 2016 23:57:27 +0200 Subject: [PATCH 60/86] Fix bug #1645867 by setting an application attribute related to OpenGL Fixes: https://launchpad.net/bugs/1645867, https://launchpad.net/bugs/1591749 --- openlp/core/__init__.py | 1 + openlp/core/ui/themewizard.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 5de5e69de..cb298e11b 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -375,6 +375,7 @@ def main(args=None): application.setOrganizationName('OpenLP') application.setOrganizationDomain('openlp.org') application.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) + application.setAttribute(QtCore.Qt.AA_DontCreateNativeWidgetSiblings, True) if args and args.portable: application.setApplicationName('OpenLPPortable') Settings.setDefaultFormat(Settings.IniFormat) diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 95262cf8f..7eac787d9 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -44,9 +44,9 @@ class Ui_ThemeWizard(object): theme_wizard.setModal(True) theme_wizard.setOptions(QtWidgets.QWizard.IndependentPages | QtWidgets.QWizard.NoBackButtonOnStartPage | QtWidgets.QWizard.HaveCustomButton1) + theme_wizard.setFixedWidth(640) if is_macosx(): theme_wizard.setPixmap(QtWidgets.QWizard.BackgroundPixmap, QtGui.QPixmap(':/wizards/openlp-osx-wizard.png')) - theme_wizard.resize(646, 400) else: theme_wizard.setWizardStyle(QtWidgets.QWizard.ModernStyle) self.spacer = QtWidgets.QSpacerItem(10, 0, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) From 105edf36c36092c98a3e5e602b43ffe8c2cce148 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Wed, 30 Nov 2016 21:54:06 +0100 Subject: [PATCH 61/86] More appveyor adjustments --- scripts/appveyor-webhook.py | 79 ++++++++++++++++++++++++++----------- scripts/appveyor.yml | 66 +++++++++++++++++-------------- 2 files changed, 92 insertions(+), 53 deletions(-) diff --git a/scripts/appveyor-webhook.py b/scripts/appveyor-webhook.py index e28fac6b3..573aa1045 100755 --- a/scripts/appveyor-webhook.py +++ b/scripts/appveyor-webhook.py @@ -21,34 +21,40 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +This script is used to trigger a build at appveyor. Since the code is not hosted +on github the normal triggering mechanisms can't be use. The project is +registered as subversion repository. A webhook is used to trigger new builds. +The appveyor.yml used for the build is send to appveyor when calling the hook. +""" import json import urllib import urllib.request import datetime import sys +import time from subprocess import Popen, PIPE -token = 'xx' -webhook_url = 'https://ci.appveyor.com/api/subversion/webhook?id=x' -branch = 'lp:openlp' +appveyor_build_url = 'https://ci.appveyor.com/project/TomasGroth/openlp/build' +appveyor_api_url = 'https://ci.appveyor.com/api/projects/TomasGroth/openlp' webhook_element = \ -{ - "commit": { - "author": { - "email": "open@contributer", - "name": "OpenLP Contributor" + { + 'commit': { + 'author': { + 'email': 'open@contributer', + 'name': 'OpenLP Contributor' + }, + 'id': None, + 'message': None, + 'timestamp': datetime.datetime.now().isoformat() }, - "id": None, - "message": "Building " + branch, - "timestamp": datetime.datetime.now().isoformat() - }, - "config": None, - "repository": { - "name": "repo_name", - "url": "repo_url" + 'config': None, + 'repository': { + 'name': 'repo_name', + 'url': 'repo_url' + } } -} def get_version(): @@ -78,7 +84,10 @@ def get_version(): return version_string, version -def get_yml(): +def get_yml(branch): + """ + Returns the content of appveyor.yml and inserts the branch to be build + """ f = open('appveyor.yml') yml_text = f.read() f.close() @@ -86,17 +95,39 @@ def get_yml(): return yml_text -def hook(token, webhook_url): - webhook_element['config'] = get_yml() +def hook(webhook_url, yml): + """ + Activate the webhook to start the build + """ + webhook_element['config'] = yml webhook_element['commit']['message'] = 'Building ' + branch version_string, version = get_version() webhook_element['commit']['id'] = version_string request = urllib.request.Request(webhook_url) - print(json.dumps(webhook_element)) request.add_header('Content-Type', 'application/json;charset=utf-8') - request.add_header('Authorization', 'Bearer ' + token) responce = urllib.request.urlopen(request, json.dumps(webhook_element).encode('utf-8')) - print(responce.read().decode('utf-8')) + if responce.getcode() != 204: + print('An error happened when calling the webhook! Return code: %d' % responce.getcode()) + print(responce.read().decode('utf-8')) -hook(token, webhook_url) +def get_appveyor_build_url(branch): + """ + Get the url of the build. + """ + # Wait 10 seconds to make sure the hook has been triggered + time.sleep(10) + responce = urllib.request.urlopen(appveyor_api_url) + json_str = responce.read().decode('utf-8') + build_json = json.loads(json_str) + build_url = '%s/%s' % (appveyor_build_url, build_json['build']['version']) + print('Check this URL for build status: %s' % build_url) + + +if len(sys.argv) != 3: + print('Usage: %s ' % sys.argv[0]) +else: + webhook_url = sys.argv[1] + branch = sys.argv[2] + hook(webhook_url, get_yml(branch)) + get_appveyor_build_url(branch) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index 490464044..4784ed50d 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -1,4 +1,4 @@ -version: 2.5.0.{build} +version: OpenLP-win-ci-b{build} init: - choco install -y --force bzr @@ -6,39 +6,54 @@ init: - bzr --version clone_script: - - bzr checkout --lightweight BRANCHNAME openlp + - bzr checkout --lightweight BRANCHNAME openlp-branch environment: PYTHON: C:\\Python34 install: # Install dependencies from pypi - - "%PYTHON%\\python.exe -m pip install sqlalchemy alembic chardet beautifulsoup4 Mako nose mock pyodbc==3.0.10 psycopg2 pypiwin32 pyenchant" + - "%PYTHON%\\python.exe -m pip install sqlalchemy alembic chardet beautifulsoup4 Mako nose mock pyodbc psycopg2 pypiwin32 pyenchant" # Install mysql dependency - "%PYTHON%\\python.exe -m pip install http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df" # Download and install lxml and pyicu (originally from http://www.lfd.uci.edu/~gohlke/pythonlibs/) - - curl -L "https://www.dropbox.com/s/7dwwna459j6qvbp/lxml-3.6.4-cp34-cp34m-win32.whl?dl=1" -o lxml-3.6.4-cp34-cp34m-win32.whl - - "%PYTHON%\\python.exe -m pip install lxml-3.6.4-cp34-cp34m-win32.whl" - - curl -L "https://www.dropbox.com/s/ib1yq4xq7o1dma7/PyICU-1.9.5-cp34-cp34m-win32.whl?dl=1" -o PyICU-1.9.5-cp34-cp34m-win32.whl - - "%PYTHON%\\python.exe -m pip install PyICU-1.9.5-cp34-cp34m-win32.whl" + - "%PYTHON%\\python.exe -m pip install https://get.openlp.org/win-sdk/lxml-3.6.4-cp34-cp34m-win32.whl" + - "%PYTHON%\\python.exe -m pip install https://get.openlp.org/win-sdk/PyICU-1.9.5-cp34-cp34m-win32.whl" # Download and install PyQt5 - curl -L -O http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe - PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe /S - # Download and install Inno Setup - used for packaging - - curl -L -O http://www.jrsoftware.org/download.php/is-unicode.exe - - is-unicode.exe /VERYSILENT /SUPPRESSMSGBOXES /SP- - # Download and unpack portable-bundle - - curl -L "https://www.dropbox.com/s/omr8mw9kamnml3l/portable-setup.7z?dl=1" -o portable-setup.7z - - 7z x portable-setup.7z # Download and unpack mupdf - curl -O http://mupdf.com/downloads/archive/mupdf-1.9a-windows.zip - 7z x mupdf-1.9a-windows.zip - - cp mupdf-1.9a-windows/mupdf.exe openlp/mupdf.exe + - cp mupdf-1.9a-windows/mupdf.exe openlp-branch/mupdf.exe # Download and unpack mediainfo - curl -O https://mediaarea.net/download/binary/mediainfo/0.7.90/MediaInfo_CLI_0.7.90_Windows_i386.zip - mkdir MediaInfo - 7z x -oMediaInfo MediaInfo_CLI_0.7.90_Windows_i386.zip - - cp MediaInfo\\MediaInfo.exe openlp\\MediaInfo.exe + - cp MediaInfo\\MediaInfo.exe openlp-branch\\MediaInfo.exe + + +build: off + +test_script: + - cd openlp-branch + - "%PYTHON%\\python.exe -m nose -v tests" + # Go back to the user root folder + - cd.. + +after_test: + # This is where we create a package using PyInstaller + # First get PyInstaller + - curl -L -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip + - 7z x develop.zip + # Install PyInstaller dependencies + - "%PYTHON%\\python.exe -m pip install future" + # Download and install Inno Setup - used for packaging + - curl -L -O http://www.jrsoftware.org/download.php/is-unicode.exe + - is-unicode.exe /VERYSILENT /SUPPRESSMSGBOXES /SP- + # Download and unpack portable-bundle + - curl -O https://get.openlp.org/win-sdk/portable-setup.7z + - 7z x portable-setup.7z # Disabled portable installers - can't figure out how to make them silent # - curl -L -O http://downloads.sourceforge.net/project/portableapps/PortableApps.com%20Installer/PortableApps.comInstaller_3.4.4.paf.exe # - PortableApps.comInstaller_3.4.4.paf.exe /S @@ -46,18 +61,11 @@ install: # - PortableApps.comLauncher_2.2.1.paf.exe /S # - curl -L -O http://downloads.sourceforge.net/project/portableapps/NSIS%20Portable/NSISPortable_3.0_English.paf.exe # - NSISPortable_3.0_English.paf.exe /S - - -build: off - -test_script: - - cd openlp - - "%PYTHON%\\python.exe -m nose -v tests" - -after_test: - # This is where we create a package using PyInstaller - # First get PyInstaller - - curl -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip - - 7z x develop.zip + # Get the packaging code + - bzr checkout --lightweight lp:~tomasgroth/openlp/packaging-appveyor packaging # Build the bundle - - "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp" + - cd packaging + - "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp-branch" + +artifacts: + - path: openlp-branch\dist\*.exe From 19a450fab5e7556c609d7909d4d01c9b5dd8bbe1 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Thu, 1 Dec 2016 09:10:51 +0100 Subject: [PATCH 62/86] Use the standard packaging repo. --- scripts/appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index 4784ed50d..43647bf71 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -62,7 +62,7 @@ after_test: # - curl -L -O http://downloads.sourceforge.net/project/portableapps/NSIS%20Portable/NSISPortable_3.0_English.paf.exe # - NSISPortable_3.0_English.paf.exe /S # Get the packaging code - - bzr checkout --lightweight lp:~tomasgroth/openlp/packaging-appveyor packaging + - bzr checkout --lightweight lp:openlp/packaging packaging # Build the bundle - cd packaging - "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp-branch" From 23a4fcb665f7a559dad46b377bd8f687d896d573 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Fri, 9 Dec 2016 22:22:47 +0100 Subject: [PATCH 63/86] rewrite the appveyor.yml --- scripts/appveyor.yml | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index 43647bf71..e60473cc5 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -37,17 +37,19 @@ build: off test_script: - cd openlp-branch - - "%PYTHON%\\python.exe -m nose -v tests" + #- "%PYTHON%\\python.exe -m nose -v tests" # Go back to the user root folder - cd.. after_test: # This is where we create a package using PyInstaller # First get PyInstaller - - curl -L -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip - - 7z x develop.zip + #- curl -L -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip + - curl -L -O https://github.com/pyinstaller/pyinstaller/releases/download/v3.2/PyInstaller-3.2.zip + - 7z x PyInstaller-3.2.zip + #- mv pyinstaller-develop PyInstaller-3.2 # Install PyInstaller dependencies - - "%PYTHON%\\python.exe -m pip install future" + - "%PYTHON%\\python.exe -m pip install future pefile" # Download and install Inno Setup - used for packaging - curl -L -O http://www.jrsoftware.org/download.php/is-unicode.exe - is-unicode.exe /VERYSILENT /SUPPRESSMSGBOXES /SP- @@ -62,10 +64,28 @@ after_test: # - curl -L -O http://downloads.sourceforge.net/project/portableapps/NSIS%20Portable/NSISPortable_3.0_English.paf.exe # - NSISPortable_3.0_English.paf.exe /S # Get the packaging code - - bzr checkout --lightweight lp:openlp/packaging packaging + #- bzr checkout --lightweight lp:openlp/packaging packaging + - bzr checkout --lightweight lp:~raoul-snyman/openlp/pyinstaller-change packaging + #- curl -L http://bazaar.launchpad.net/~openlp-core/openlp/packaging/tarball -o packaging.tar.gz + #- 7z e packaging.tar.gz + #- 7z x packaging.tar + #- mv ~openlp-core/openlp/packaging packaging + # If this is trunk we should also build the manual + # Download and install HTML Help Workshop + #- curl -L "http://go.microsoft.com/fwlink/p/?linkid=14188" -o htmlhelp.exe + #- htmlhelp.exe /Q + # Install sphinx + - "%PYTHON%\\python.exe -m pip install sphinx" + # Get the documentation code + #- bzr checkout --lightweight lp:openlp/documentation documentation + - curl -L http://bazaar.launchpad.net/~openlp-core/openlp/documentation/tarball -o documentation.tar.gz + - 7z e documentation.tar.gz + - 7z x documentation.tar + - mv ~openlp-core/openlp/documentation documentation # Build the bundle - cd packaging - - "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp-branch" + #- "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation" + - "%PYTHON%\\python.exe builders/windows-builder.py -v --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation --portable" artifacts: - path: openlp-branch\dist\*.exe From 79934596ac47c5e90a89b9eb7f963db1e2d3f351 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 13 Dec 2016 00:14:45 +0200 Subject: [PATCH 64/86] Fix the problem with the Library/Media Manager icons not showing up. --- openlp/core/ui/lib/mediadockmanager.py | 2 +- openlp/core/ui/mainwindow.py | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/openlp/core/ui/lib/mediadockmanager.py b/openlp/core/ui/lib/mediadockmanager.py index ad786b3a0..1a7676465 100644 --- a/openlp/core/ui/lib/mediadockmanager.py +++ b/openlp/core/ui/lib/mediadockmanager.py @@ -54,7 +54,7 @@ class MediaDockManager(object): match = True break if not match: - self.media_dock.addItem(media_item, visible_title['title']) + self.media_dock.addItem(media_item, media_item.plugin.icon, visible_title['title']) def remove_dock(self, media_item): """ diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 92b29d16f..55153e29d 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -52,19 +52,18 @@ from openlp.core.ui.lib.mediadockmanager import MediaDockManager log = logging.getLogger(__name__) MEDIA_MANAGER_STYLE = """ -QToolBox { - padding-bottom: 2px; -} -QToolBox::tab { +::tab { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 palette(button), stop: 1.0 palette(mid)); border: 1px solid palette(mid); - border-radius: 3px; + margin-top: 0; + margin-bottom: 0; + text-align: left; } -QToolBox::tab:selected { +::tab:selected { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 palette(light), stop: 1.0 palette(button)); - border: 1px solid palette(mid); + border: 1px solid palette(highlight); font-weight: bold; } """ From 19a00b44e06f4f771910f3bfc58dabb92aabfed4 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 13 Dec 2016 00:16:23 +0200 Subject: [PATCH 65/86] Update the version number to 2.5.0 just for any dev builds that might happen --- openlp/.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/.version b/openlp/.version index 6b4950e3d..437459cd9 100644 --- a/openlp/.version +++ b/openlp/.version @@ -1 +1 @@ -2.4 +2.5.0 From 97dfafba4e23747e64b76f3c2bf2c134b8e0c860 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 13 Dec 2016 08:04:27 +0200 Subject: [PATCH 66/86] Make the tabs in the media library prettier --- openlp/core/ui/mainwindow.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 55153e29d..fb53bf126 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -55,14 +55,13 @@ MEDIA_MANAGER_STYLE = """ ::tab { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 palette(button), stop: 1.0 palette(mid)); - border: 1px solid palette(mid); + border: 0; + border-radius: 2px; margin-top: 0; margin-bottom: 0; text-align: left; } ::tab:selected { - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 palette(light), stop: 1.0 palette(button)); border: 1px solid palette(highlight); font-weight: bold; } From c818c3ce8c5fb7aa4f4fbbb6b6aea1cf406aa1e4 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 13 Dec 2016 16:55:11 +0200 Subject: [PATCH 67/86] Added a test --- .../openlp_core_ui/test_aboutform.py | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/tests/functional/openlp_core_ui/test_aboutform.py b/tests/functional/openlp_core_ui/test_aboutform.py index 612c6b887..381ed83c8 100644 --- a/tests/functional/openlp_core_ui/test_aboutform.py +++ b/tests/functional/openlp_core_ui/test_aboutform.py @@ -32,16 +32,30 @@ from tests.helpers.testmixin import TestMixin class TestFirstTimeForm(TestCase, TestMixin): - def test_on_volunteer_button_clicked(self): + @patch('openlp.core.ui.aboutform.webbrowser') + def test_on_volunteer_button_clicked(self, mocked_webbrowser): """ Test that clicking on the "Volunteer" button opens a web page. """ # GIVEN: A new About dialog and a mocked out webbrowser module - with patch('openlp.core.ui.aboutform.webbrowser') as mocked_webbrowser: - about_form = AboutForm(None) + about_form = AboutForm(None) - # WHEN: The "Volunteer" button is "clicked" - about_form.on_volunteer_button_clicked() + # WHEN: The "Volunteer" button is "clicked" + about_form.on_volunteer_button_clicked() - # THEN: A web browser is opened - mocked_webbrowser.open_new.assert_called_with('http://openlp.org/en/contribute') + # THEN: A web browser is opened + mocked_webbrowser.open_new.assert_called_with('http://openlp.org/en/contribute') + + @patch('openlp.core.ui.aboutform.get_application_version') + def test_about_form_build_number(self, mocked_get_application_version): + """ + Test that the build number is added to the about form + """ + # GIVEN: A mocked out get_application_version function + mocked_get_application_version.return_value = {'version': '3.1.5', 'build': '3000'} + + # WHEN: The about form is created + about_form = AboutForm(None) + + # THEN: The build number should be in the text + assert about_form.about_text_edit.plainText().split('\n')[0] == '' From f17204aa19d3937929c52632529cc2c1689e2bf3 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 13 Dec 2016 21:43:27 +0200 Subject: [PATCH 68/86] Fix a problem with the test --- tests/functional/openlp_core_ui/test_aboutform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/openlp_core_ui/test_aboutform.py b/tests/functional/openlp_core_ui/test_aboutform.py index 381ed83c8..60c4c2c68 100644 --- a/tests/functional/openlp_core_ui/test_aboutform.py +++ b/tests/functional/openlp_core_ui/test_aboutform.py @@ -58,4 +58,4 @@ class TestFirstTimeForm(TestCase, TestMixin): about_form = AboutForm(None) # THEN: The build number should be in the text - assert about_form.about_text_edit.plainText().split('\n')[0] == '' + assert about_form.about_text_edit.toPlainText().split('\n')[0] == '' From ddb92c3cd5d32997f32e89c1f09a31cd52527c03 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 13 Dec 2016 21:50:34 +0200 Subject: [PATCH 69/86] Fix a problem with the test --- tests/functional/openlp_core_ui/test_aboutform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/openlp_core_ui/test_aboutform.py b/tests/functional/openlp_core_ui/test_aboutform.py index 60c4c2c68..47a685f9d 100644 --- a/tests/functional/openlp_core_ui/test_aboutform.py +++ b/tests/functional/openlp_core_ui/test_aboutform.py @@ -58,4 +58,4 @@ class TestFirstTimeForm(TestCase, TestMixin): about_form = AboutForm(None) # THEN: The build number should be in the text - assert about_form.about_text_edit.toPlainText().split('\n')[0] == '' + assert 'OpenLP 3.1.5 build 3000' in about_form.about_text_edit.toPlainText() From 3639785151ef57223c991766925ef66c36fba15f Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 15 Dec 2016 16:11:42 +0200 Subject: [PATCH 70/86] Fix bug #1642684 by rather just setting the edit text to a blank string Fixes: https://launchpad.net/bugs/1642684 --- openlp/plugins/songs/forms/editsongform.py | 19 ++++++------ .../openlp_plugins/songs/test_editsongform.py | 31 +++++++++++++++++++ 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index a17c9fb5f..271dadce7 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -118,13 +118,13 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): objects = self.manager.get_all_objects(cls) objects.sort(key=get_key) combo.clear() - combo.addItem('') for obj in objects: row = combo.count() combo.addItem(obj.name) cache.append(obj.name) combo.setItemData(row, obj.id) set_case_insensitive_completer(cache, combo) + combo.setEditText('') def _add_author_to_list(self, author, author_type): """ @@ -360,7 +360,6 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): authors = self.manager.get_all_objects(Author) authors.sort(key=get_author_key) self.authors_combo_box.clear() - self.authors_combo_box.addItem('') self.authors = [] for author in authors: row = self.authors_combo_box.count() @@ -368,6 +367,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): self.authors_combo_box.setItemData(row, author.id) self.authors.append(author.display_name) set_case_insensitive_completer(self.authors, self.authors_combo_box) + self.authors_combo_box.setEditText('') # Types self.author_types_combo_box.clear() @@ -398,11 +398,11 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): return get_natural_key(theme) self.theme_combo_box.clear() - self.theme_combo_box.addItem('') self.themes = theme_list self.themes.sort(key=get_theme_key) self.theme_combo_box.addItems(theme_list) set_case_insensitive_completer(self.themes, self.theme_combo_box) + self.theme_combo_box.setEditText('') def load_media_files(self): """ @@ -442,7 +442,6 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): self.load_songbooks() self.load_media_files() self.theme_combo_box.setEditText('') - self.theme_combo_box.setCurrentIndex(0) # it's a new song to preview is not possible self.preview_button.setVisible(False) @@ -591,7 +590,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): self.manager.save_object(author) self._add_author_to_list(author, author_type) self.load_authors() - self.authors_combo_box.setCurrentIndex(0) + self.authors_combo_box.setEditText('') else: return elif item > 0: @@ -602,7 +601,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): message=translate('SongsPlugin.EditSongForm', 'This author is already in the list.')) else: self._add_author_to_list(author, author_type) - self.authors_combo_box.setCurrentIndex(0) + self.authors_combo_box.setEditText('') else: QtWidgets.QMessageBox.warning( self, UiStrings().NISs, @@ -666,7 +665,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): topic_item.setData(QtCore.Qt.UserRole, topic.id) self.topics_list_view.addItem(topic_item) self.load_topics() - self.topics_combo_box.setCurrentIndex(0) + self.topics_combo_box.setEditText('') else: return elif item > 0: @@ -679,7 +678,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): topic_item = QtWidgets.QListWidgetItem(str(topic.name)) topic_item.setData(QtCore.Qt.UserRole, topic.id) self.topics_list_view.addItem(topic_item) - self.topics_combo_box.setCurrentIndex(0) + self.topics_combo_box.setEditText('') else: QtWidgets.QMessageBox.warning( self, UiStrings().NISs, @@ -709,7 +708,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): self.manager.save_object(songbook) self.add_songbook_entry_to_list(songbook.id, songbook.name, self.songbook_entry_edit.text()) self.load_songbooks() - self.songbooks_combo_box.setCurrentIndex(0) + self.songbooks_combo_box.setEditText('') self.songbook_entry_edit.clear() else: return @@ -721,7 +720,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties): message=translate('SongsPlugin.EditSongForm', 'This Songbook is already in the list.')) else: self.add_songbook_entry_to_list(songbook.id, songbook.name, self.songbook_entry_edit.text()) - self.songbooks_combo_box.setCurrentIndex(0) + self.songbooks_combo_box.setEditText('') self.songbook_entry_edit.clear() else: QtWidgets.QMessageBox.warning( diff --git a/tests/functional/openlp_plugins/songs/test_editsongform.py b/tests/functional/openlp_plugins/songs/test_editsongform.py index 184c59717..ba53fa525 100644 --- a/tests/functional/openlp_plugins/songs/test_editsongform.py +++ b/tests/functional/openlp_plugins/songs/test_editsongform.py @@ -76,3 +76,34 @@ class TestEditSongForm(TestCase, TestMixin): # THEN they should be valid self.assertTrue(valid, "The tags list should be valid") + + @patch('openlp.plugins.songs.forms.editsongform.set_case_insensitive_completer') + def test_load_objects(self, mocked_set_case_insensitive_completer): + """ + Test the _load_objects() method + """ + # GIVEN: A song edit form and some mocked stuff + mocked_class = MagicMock() + mocked_class.name = 'Author' + mocked_combo = MagicMock() + mocked_combo.count.return_value = 0 + mocked_cache = MagicMock() + mocked_object = MagicMock() + mocked_object.name = 'Charles' + mocked_object.id = 1 + mocked_manager = MagicMock() + mocked_manager.get_all_objects.return_value = [mocked_object] + self.edit_song_form.manager = mocked_manager + + # WHEN: _load_objects() is called + self.edit_song_form._load_objects(mocked_class, mocked_combo, mocked_cache) + + # THEN: All the correct methods should have been called + self.edit_song_form.manager.get_all_objects.assert_called_once_with(mocked_class) + mocked_combo.clear.assert_called_once_with() + mocked_combo.count.assert_called_once_with() + mocked_combo.addItem.assert_called_once_with('Charles') + mocked_cache.append.assert_called_once_with('Charles') + mocked_combo.setItemData.assert_called_once_with(0, 1) + mocked_set_case_insensitive_completer.assert_called_once_with(mocked_cache, mocked_combo) + mocked_combo.setEditText.assert_called_once_with('') From dcfd0a83a6e7a0dd183987bf1b536a1419063435 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Thu, 15 Dec 2016 17:33:03 +0100 Subject: [PATCH 71/86] Updates to the appveyor. Only build docs if building trunk. --- scripts/appveyor-webhook.py | 10 +++++++--- scripts/appveyor.yml | 38 ++++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/scripts/appveyor-webhook.py b/scripts/appveyor-webhook.py index 573aa1045..45438645d 100755 --- a/scripts/appveyor-webhook.py +++ b/scripts/appveyor-webhook.py @@ -42,7 +42,7 @@ webhook_element = \ { 'commit': { 'author': { - 'email': 'open@contributer', + 'email': 'contributer@openlp', 'name': 'OpenLP Contributor' }, 'id': None, @@ -92,6 +92,10 @@ def get_yml(branch): yml_text = f.read() f.close() yml_text = yml_text.replace('BRANCHNAME', branch) + if 'openlp-core/openlp/trunk' in branch: + yml_text = yml_text.replace('BUILD_DOCS', '$TRUE') + else: + yml_text = yml_text.replace('BUILD_DOCS', '$FALSE') return yml_text @@ -115,8 +119,6 @@ def get_appveyor_build_url(branch): """ Get the url of the build. """ - # Wait 10 seconds to make sure the hook has been triggered - time.sleep(10) responce = urllib.request.urlopen(appveyor_api_url) json_str = responce.read().decode('utf-8') build_json = json.loads(json_str) @@ -130,4 +132,6 @@ else: webhook_url = sys.argv[1] branch = sys.argv[2] hook(webhook_url, get_yml(branch)) + # Wait 5 seconds to make sure the hook has been triggered + time.sleep(5) get_appveyor_build_url(branch) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index e60473cc5..bdc23f303 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -44,10 +44,8 @@ test_script: after_test: # This is where we create a package using PyInstaller # First get PyInstaller - #- curl -L -O https://github.com/pyinstaller/pyinstaller/archive/develop.zip - curl -L -O https://github.com/pyinstaller/pyinstaller/releases/download/v3.2/PyInstaller-3.2.zip - 7z x PyInstaller-3.2.zip - #- mv pyinstaller-develop PyInstaller-3.2 # Install PyInstaller dependencies - "%PYTHON%\\python.exe -m pip install future pefile" # Download and install Inno Setup - used for packaging @@ -64,28 +62,38 @@ after_test: # - curl -L -O http://downloads.sourceforge.net/project/portableapps/NSIS%20Portable/NSISPortable_3.0_English.paf.exe # - NSISPortable_3.0_English.paf.exe /S # Get the packaging code - #- bzr checkout --lightweight lp:openlp/packaging packaging - - bzr checkout --lightweight lp:~raoul-snyman/openlp/pyinstaller-change packaging - #- curl -L http://bazaar.launchpad.net/~openlp-core/openlp/packaging/tarball -o packaging.tar.gz - #- 7z e packaging.tar.gz - #- 7z x packaging.tar - #- mv ~openlp-core/openlp/packaging packaging + - curl -L http://bazaar.launchpad.net/~openlp-core/openlp/packaging/tarball -o packaging.tar.gz + - 7z e packaging.tar.gz + - 7z x packaging.tar + - mv ~openlp-core/openlp/packaging packaging # If this is trunk we should also build the manual # Download and install HTML Help Workshop #- curl -L "http://go.microsoft.com/fwlink/p/?linkid=14188" -o htmlhelp.exe #- htmlhelp.exe /Q # Install sphinx - - "%PYTHON%\\python.exe -m pip install sphinx" + - ps: >- + If (BUILD_DOCS) { + &"$env:PYTHON\python.exe" -m pip install sphinx + Invoke-WebRequest -Uri "http://bazaar.launchpad.net/~openlp-core/openlp/documentation/tarball" -OutFile documentation.tar.gz + 7z e documentation.tar.gz + 7z x documentation.tar + mv ~openlp-core/openlp/documentation documentation + cd packaging + &"$env:PYTHON\python.exe" builders/windows-builder.py --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation --portable + } else { + cd packaging + &"$env:PYTHON\python.exe" builders/windows-builder.py --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch --portable + } # Get the documentation code #- bzr checkout --lightweight lp:openlp/documentation documentation - - curl -L http://bazaar.launchpad.net/~openlp-core/openlp/documentation/tarball -o documentation.tar.gz - - 7z e documentation.tar.gz - - 7z x documentation.tar - - mv ~openlp-core/openlp/documentation documentation + #- curl -L http://bazaar.launchpad.net/~openlp-core/openlp/documentation/tarball -o documentation.tar.gz + #- 7z e documentation.tar.gz + #- 7z x documentation.tar + #- mv ~openlp-core/openlp/documentation documentation # Build the bundle - - cd packaging + #- cd packaging #- "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation" - - "%PYTHON%\\python.exe builders/windows-builder.py -v --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation --portable" + #- "%PYTHON%\\python.exe builders/windows-builder.py --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation --portable" artifacts: - path: openlp-branch\dist\*.exe From 47ab1ce1a7de7f43e8515357514897aeb0940942 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 15 Dec 2016 19:45:46 +0200 Subject: [PATCH 72/86] Hide the splash screen when the backup dialog shows and when the exception form shows --- openlp/core/__init__.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index cb298e11b..ad06f3629 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -129,21 +129,21 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): application_stylesheet += WIN_REPAIR_STYLESHEET if application_stylesheet: self.setStyleSheet(application_stylesheet) - show_splash = Settings().value('core/show splash') - if show_splash: + can_show_splash = Settings().value('core/show splash') + if can_show_splash: self.splash = SplashScreen() self.splash.show() # make sure Qt really display the splash screen self.processEvents() # Check if OpenLP has been upgrade and if a backup of data should be created - self.backup_on_upgrade(has_run_wizard) + self.backup_on_upgrade(has_run_wizard, can_show_splash) # start the main app window self.main_window = MainWindow() Registry().execute('bootstrap_initialise') Registry().execute('bootstrap_post_set_up') Registry().initialise = False self.main_window.show() - if show_splash: + if can_show_splash: # now kill the splashscreen self.splash.finish(self.main_window) log.debug('Splashscreen closed') @@ -224,13 +224,20 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): self.exception_form = ExceptionForm() self.exception_form.exception_text_edit.setPlainText(''.join(format_exception(exc_type, value, traceback))) self.set_normal_cursor() + is_splash_visible = False + if hasattr(self, 'splash') and self.splash.isVisible(): + is_splash_visible = True + self.splash.hide() self.exception_form.exec() + if is_splash_visible: + self.splash.show() - def backup_on_upgrade(self, has_run_wizard): + def backup_on_upgrade(self, has_run_wizard, can_show_splash): """ Check if OpenLP has been upgraded, and ask if a backup of data should be made :param has_run_wizard: OpenLP has been run before + :param can_show_splash: Should OpenLP show the splash screen """ data_version = Settings().value('core/application version') openlp_version = get_application_version()['version'] @@ -239,6 +246,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): Settings().setValue('core/application version', openlp_version) # If data_version is different from the current version ask if we should backup the data folder elif data_version != openlp_version: + if self.splash.isVisible(): + self.splash.hide() if QtWidgets.QMessageBox.question(None, translate('OpenLP', 'Backup'), translate('OpenLP', 'OpenLP has been upgraded, do you want to create\n' 'a backup of the old data folder?'), @@ -261,6 +270,8 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication): # Update the version in the settings Settings().setValue('core/application version', openlp_version) + if can_show_splash: + self.splash.show() def process_events(self): """ From acb8bc2ba1864fbbe6ddfe27c65b52d911ab925f Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Thu, 15 Dec 2016 19:24:11 +0100 Subject: [PATCH 73/86] clean up appveyor.yml --- scripts/appveyor.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index bdc23f303..89621d150 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -3,7 +3,6 @@ version: OpenLP-win-ci-b{build} init: - choco install -y --force bzr - set PATH=C:\Program Files (x86)\Bazaar;%PATH% - - bzr --version clone_script: - bzr checkout --lightweight BRANCHNAME openlp-branch @@ -32,7 +31,6 @@ install: - 7z x -oMediaInfo MediaInfo_CLI_0.7.90_Windows_i386.zip - cp MediaInfo\\MediaInfo.exe openlp-branch\\MediaInfo.exe - build: off test_script: @@ -67,10 +65,6 @@ after_test: - 7z x packaging.tar - mv ~openlp-core/openlp/packaging packaging # If this is trunk we should also build the manual - # Download and install HTML Help Workshop - #- curl -L "http://go.microsoft.com/fwlink/p/?linkid=14188" -o htmlhelp.exe - #- htmlhelp.exe /Q - # Install sphinx - ps: >- If (BUILD_DOCS) { &"$env:PYTHON\python.exe" -m pip install sphinx @@ -84,16 +78,6 @@ after_test: cd packaging &"$env:PYTHON\python.exe" builders/windows-builder.py --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch --portable } - # Get the documentation code - #- bzr checkout --lightweight lp:openlp/documentation documentation - #- curl -L http://bazaar.launchpad.net/~openlp-core/openlp/documentation/tarball -o documentation.tar.gz - #- 7z e documentation.tar.gz - #- 7z x documentation.tar - #- mv ~openlp-core/openlp/documentation documentation - # Build the bundle - #- cd packaging - #- "%PYTHON%\\python.exe windows/windows-builder.py -v -u -t -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation" - #- "%PYTHON%\\python.exe builders/windows-builder.py --skip-update --skip-translations -c windows/config-appveyor.ini -b ../openlp-branch -d ../documentation --portable" artifacts: - path: openlp-branch\dist\*.exe From 936e6c8816034c897feba9456430a0567aeb94dc Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Thu, 15 Dec 2016 20:26:18 +0100 Subject: [PATCH 74/86] enable running tests --- scripts/appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index 89621d150..27b4cfc98 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -35,7 +35,8 @@ build: off test_script: - cd openlp-branch - #- "%PYTHON%\\python.exe -m nose -v tests" + # Run the tests + - "%PYTHON%\\python.exe -m nose -v tests" # Go back to the user root folder - cd.. From 95eb290226ffe2d26a063502d07df1faf531398b Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 15 Dec 2016 22:36:04 +0200 Subject: [PATCH 75/86] Make the tab style affect only the media library tabs, not everything else too --- openlp/core/ui/mainwindow.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index ab92914a5..ec585790c 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -52,7 +52,7 @@ from openlp.core.ui.lib.mediadockmanager import MediaDockManager log = logging.getLogger(__name__) MEDIA_MANAGER_STYLE = """ -::tab { +::tab#media_tool_box { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 palette(button), stop: 1.0 palette(mid)); border: 0; @@ -61,10 +61,8 @@ MEDIA_MANAGER_STYLE = """ margin-bottom: 0; text-align: left; } -::tab:selected { - border: 1px solid palette(highlight); - font-weight: bold; -} +/* This is here to make the tabs on KDE with the Breeze theme work */ +::tab:selected {} """ PROGRESSBAR_STYLE = """ From c86d669346c832c0d9a049717f956e0b16f6af52 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 15 Dec 2016 23:29:29 +0200 Subject: [PATCH 76/86] Added a test --- .../openlp_core_ui/test_shortcutlistdialog.py | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tests/functional/openlp_core_ui/test_shortcutlistdialog.py diff --git a/tests/functional/openlp_core_ui/test_shortcutlistdialog.py b/tests/functional/openlp_core_ui/test_shortcutlistdialog.py new file mode 100644 index 000000000..2f39cb34a --- /dev/null +++ b/tests/functional/openlp_core_ui/test_shortcutlistdialog.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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.shortcutlistdialog package. +""" +from PyQt5 import QtCore, QtGui, QtWidgets + +from openlp.core.ui.shortcutlistdialog import CaptureShortcutButton, ShortcutTreeWidget + +from tests.interfaces import MagicMock, patch + + +def test_key_press_event(): + """ + Test the keyPressEvent method + """ + # GIVEN: A checked button and a mocked event + button = CaptureShortcutButton() + button.setChecked(True) + mocked_event = MagicMock() + mocked_event.key.return_value = QtCore.Qt.Key_Space + + # WHEN: keyPressEvent is called with an event that should be ignored + button.keyPressEvent(mocked_event) + + # THEN: The ignore() method on the event should have been called + mocked_event.ignore.assert_called_once_with() + + +def test_keyboard_search(): + """ + Test the keyboardSearch method of the ShortcutTreeWidget + """ + # GIVEN: A ShortcutTreeWidget + widget = ShortcutTreeWidget() + + # WHEN: keyboardSearch() is called + widget.keyboardSearch('') + + # THEN: Nothing happens + assert True From 77e048f6de2982f71ee039da9b9fe3fafdcfc910 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 16 Dec 2016 00:01:15 +0200 Subject: [PATCH 77/86] Fix the tests --- tests/functional/test_init.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/functional/test_init.py b/tests/functional/test_init.py index 825de57f3..504489416 100644 --- a/tests/functional/test_init.py +++ b/tests/functional/test_init.py @@ -102,7 +102,7 @@ class TestInit(TestCase, TestMixin): mocked_question.return_value = QtWidgets.QMessageBox.No # WHEN: We check if a backup should be created - self.openlp.backup_on_upgrade(old_install) + self.openlp.backup_on_upgrade(old_install, False) # THEN: It should not ask if we want to create a backup self.assertEqual(Settings().value('core/application version'), '2.2.0', 'Version should be the same!') @@ -120,14 +120,18 @@ class TestInit(TestCase, TestMixin): 'build': 'bzr000' } Settings().setValue('core/application version', '2.0.5') + self.openlp.splash = MagicMock() + self.openlp.splash.isVisible.return_value = True with patch('openlp.core.get_application_version') as mocked_get_application_version,\ patch('openlp.core.QtWidgets.QMessageBox.question') as mocked_question: mocked_get_application_version.return_value = MOCKED_VERSION mocked_question.return_value = QtWidgets.QMessageBox.No # WHEN: We check if a backup should be created - self.openlp.backup_on_upgrade(old_install) + self.openlp.backup_on_upgrade(old_install, True) # THEN: It should ask if we want to create a backup self.assertEqual(Settings().value('core/application version'), '2.2.0', 'Version should be upgraded!') self.assertEqual(mocked_question.call_count, 1, 'A question should have been asked!') + self.openlp.splash.hide.assert_called_once_with() + self.openlp.splash.show.assert_called_once_with() From 4008ed008feabd4ab6c8d785bbf39f58c47cb79b Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 20 Dec 2016 21:20:54 +0000 Subject: [PATCH 78/86] Move url size --- openlp/core/lib/webpagereader.py | 182 -------------- openlp/core/ui/firsttimeform.py | 28 +-- openlp/plugins/bibles/lib/importers/http.py | 2 +- .../openlp_core_lib/test_webpagereader.py | 229 ------------------ .../openlp_core_ui/test_first_time.py | 2 +- 5 files changed, 6 insertions(+), 437 deletions(-) delete mode 100644 openlp/core/lib/webpagereader.py delete mode 100644 tests/functional/openlp_core_lib/test_webpagereader.py diff --git a/openlp/core/lib/webpagereader.py b/openlp/core/lib/webpagereader.py deleted file mode 100644 index 52c98bbaf..000000000 --- a/openlp/core/lib/webpagereader.py +++ /dev/null @@ -1,182 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2016 OpenLP Developers # -# --------------------------------------------------------------------------- # -# 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 # -############################################################################### -""" -The :mod:`openlp.core.utils` module provides the utility libraries for OpenLP. -""" -import logging -import socket -import sys -import time -import urllib.error -import urllib.parse -import urllib.request -from http.client import HTTPException -from random import randint - -from openlp.core.common import Registry - -log = logging.getLogger(__name__ + '.__init__') - -USER_AGENTS = { - 'win32': [ - 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36', - 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36', - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36' - ], - 'darwin': [ - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) ' - 'Chrome/26.0.1410.43 Safari/537.31', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/536.11 (KHTML, like Gecko) ' - 'Chrome/20.0.1132.57 Safari/536.11', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) ' - 'Chrome/20.0.1132.47 Safari/536.11', - ], - 'linux2': [ - 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 ' - 'Chrome/25.0.1364.160 Safari/537.22', - 'Mozilla/5.0 (X11; CrOS armv7l 2913.260.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.99 ' - 'Safari/537.11', - 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/26.0.1389.0 Safari/537.27' - ], - 'default': [ - 'Mozilla/5.0 (X11; NetBSD amd64; rv:18.0) Gecko/20130120 Firefox/18.0' - ] -} -CONNECTION_TIMEOUT = 30 -CONNECTION_RETRIES = 2 - - -class HTTPRedirectHandlerFixed(urllib.request.HTTPRedirectHandler): - """ - Special HTTPRedirectHandler used to work around http://bugs.python.org/issue22248 - (Redirecting to urls with special chars) - """ - def redirect_request(self, req, fp, code, msg, headers, new_url): - # - """ - Test if the new_url can be decoded to ascii - - :param req: - :param fp: - :param code: - :param msg: - :param headers: - :param new_url: - :return: - """ - try: - new_url.encode('latin1').decode('ascii') - fixed_url = new_url - except Exception: - # The url could not be decoded to ascii, so we do some url encoding - fixed_url = urllib.parse.quote(new_url.encode('latin1').decode('utf-8', 'replace'), safe='/:') - return super(HTTPRedirectHandlerFixed, self).redirect_request(req, fp, code, msg, headers, fixed_url) - - -def _get_user_agent(): - """ - Return a user agent customised for the platform the user is on. - """ - browser_list = USER_AGENTS.get(sys.platform, None) - if not browser_list: - browser_list = USER_AGENTS['default'] - random_index = randint(0, len(browser_list) - 1) - return browser_list[random_index] - - -def get_web_page(url, header=None, update_openlp=False): - """ - Attempts to download the webpage at url and returns that page or None. - - :param url: The URL to be downloaded. - :param header: An optional HTTP header to pass in the request to the web server. - :param update_openlp: Tells OpenLP to update itself if the page is successfully downloaded. - Defaults to False. - """ - # TODO: Add proxy usage. Get proxy info from OpenLP settings, add to a - # proxy_handler, build into an opener and install the opener into urllib2. - # http://docs.python.org/library/urllib2.html - if not url: - return None - # This is needed to work around http://bugs.python.org/issue22248 and https://bugs.launchpad.net/openlp/+bug/1251437 - opener = urllib.request.build_opener(HTTPRedirectHandlerFixed()) - urllib.request.install_opener(opener) - req = urllib.request.Request(url) - if not header or header[0].lower() != 'user-agent': - user_agent = _get_user_agent() - req.add_header('User-Agent', user_agent) - if header: - req.add_header(header[0], header[1]) - log.debug('Downloading URL = %s' % url) - retries = 0 - while retries <= CONNECTION_RETRIES: - retries += 1 - time.sleep(0.1) - try: - page = urllib.request.urlopen(req, timeout=CONNECTION_TIMEOUT) - log.debug('Downloaded page {text}'.format(text=page.geturl())) - break - except urllib.error.URLError as err: - log.exception('URLError on {text}'.format(text=url)) - log.exception('URLError: {text}'.format(text=err.reason)) - page = None - if retries > CONNECTION_RETRIES: - raise - except socket.timeout: - log.exception('Socket timeout: {text}'.format(text=url)) - page = None - if retries > CONNECTION_RETRIES: - raise - except socket.gaierror: - log.exception('Socket gaierror: {text}'.format(text=url)) - page = None - if retries > CONNECTION_RETRIES: - raise - except ConnectionRefusedError: - log.exception('ConnectionRefused: {text}'.format(text=url)) - page = None - if retries > CONNECTION_RETRIES: - raise - break - except ConnectionError: - log.exception('Connection error: {text}'.format(text=url)) - page = None - if retries > CONNECTION_RETRIES: - raise - except HTTPException: - log.exception('HTTPException error: {text}'.format(text=url)) - page = None - if retries > CONNECTION_RETRIES: - raise - except: - # Don't know what's happening, so reraise the original - raise - if update_openlp: - Registry().get('application').process_events() - if not page: - log.exception('{text} could not be downloaded'.format(text=url)) - return None - log.debug(page) - return page - - -__all__ = ['get_web_page'] diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index 974ef90db..b59f31211 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -39,7 +39,7 @@ from openlp.core.common import Registry, RegistryProperties, AppLocation, Settin translate, clean_button_text, trace_error_handler from openlp.core.lib import PluginStatus, build_icon from openlp.core.lib.ui import critical_error_message_box -from openlp.core.lib.webpagereader import get_web_page, CONNECTION_RETRIES, CONNECTION_TIMEOUT +from openlp.core.common.httputils import get_web_page, get_url_file_size, CONNECTION_RETRIES, CONNECTION_TIMEOUT from .firsttimewizard import UiFirstTimeWizard, FirstTimePage log = logging.getLogger(__name__) @@ -455,26 +455,6 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): if item: item.setIcon(build_icon(os.path.join(gettempdir(), 'openlp', screenshot))) - def _get_file_size(self, url): - """ - Get the size of a file. - - :param url: The URL of the file we want to download. - """ - retries = 0 - while True: - try: - site = urllib.request.urlopen(url, timeout=CONNECTION_TIMEOUT) - meta = site.info() - return int(meta.get("Content-Length")) - except urllib.error.URLError: - if retries > CONNECTION_RETRIES: - raise - else: - retries += 1 - time.sleep(0.1) - continue - def _download_progress(self, count, block_size): """ Calculate and display the download progress. @@ -510,7 +490,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): item = self.songs_list_widget.item(i) if item.checkState() == QtCore.Qt.Checked: filename, sha256 = item.data(QtCore.Qt.UserRole) - size = self._get_file_size('{path}{name}'.format(path=self.songs_url, name=filename)) + size = get_url_file_size('{path}{name}'.format(path=self.songs_url, name=filename)) self.max_progress += size # Loop through the Bibles list and increase for each selected item iterator = QtWidgets.QTreeWidgetItemIterator(self.bibles_tree_widget) @@ -519,7 +499,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): item = iterator.value() if item.parent() and item.checkState(0) == QtCore.Qt.Checked: filename, sha256 = item.data(0, QtCore.Qt.UserRole) - size = self._get_file_size('{path}{name}'.format(path=self.bibles_url, name=filename)) + size = get_url_file_size('{path}{name}'.format(path=self.bibles_url, name=filename)) self.max_progress += size iterator += 1 # Loop through the themes list and increase for each selected item @@ -528,7 +508,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): item = self.themes_list_widget.item(i) if item.checkState() == QtCore.Qt.Checked: filename, sha256 = item.data(QtCore.Qt.UserRole) - size = self._get_file_size('{path}{name}'.format(path=self.themes_url, name=filename)) + size = get_url_file_size('{path}{name}'.format(path=self.themes_url, name=filename)) self.max_progress += size except urllib.error.URLError: trace_error_handler(log) diff --git a/openlp/plugins/bibles/lib/importers/http.py b/openlp/plugins/bibles/lib/importers/http.py index d41187d93..071ab0119 100644 --- a/openlp/plugins/bibles/lib/importers/http.py +++ b/openlp/plugins/bibles/lib/importers/http.py @@ -32,7 +32,7 @@ from bs4 import BeautifulSoup, NavigableString, Tag from openlp.core.common import Registry, RegistryProperties, translate from openlp.core.lib.ui import critical_error_message_box -from openlp.core.lib.webpagereader import get_web_page +from openlp.core.common.httputils import get_web_page from openlp.plugins.bibles.lib import SearchResults from openlp.plugins.bibles.lib.bibleimport import BibleImport from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, Book diff --git a/tests/functional/openlp_core_lib/test_webpagereader.py b/tests/functional/openlp_core_lib/test_webpagereader.py deleted file mode 100644 index 6e33fca51..000000000 --- a/tests/functional/openlp_core_lib/test_webpagereader.py +++ /dev/null @@ -1,229 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2016 OpenLP Developers # -# --------------------------------------------------------------------------- # -# 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 # -############################################################################### -""" -Functional tests to test the AppLocation class and related methods. -""" -from unittest import TestCase - -from openlp.core.lib.webpagereader import _get_user_agent, get_web_page - -from tests.functional import MagicMock, patch - - -class TestUtils(TestCase): - """ - A test suite to test out various methods around the AppLocation class. - """ - def test_get_user_agent_linux(self): - """ - Test that getting a user agent on Linux returns a user agent suitable for Linux - """ - with patch('openlp.core.lib.webpagereader.sys') as mocked_sys: - - # GIVEN: The system is Linux - mocked_sys.platform = 'linux2' - - # WHEN: We call _get_user_agent() - user_agent = _get_user_agent() - - # THEN: The user agent is a Linux (or ChromeOS) user agent - result = 'Linux' in user_agent or 'CrOS' in user_agent - self.assertTrue(result, 'The user agent should be a valid Linux user agent') - - def test_get_user_agent_windows(self): - """ - Test that getting a user agent on Windows returns a user agent suitable for Windows - """ - with patch('openlp.core.lib.webpagereader.sys') as mocked_sys: - - # GIVEN: The system is Linux - mocked_sys.platform = 'win32' - - # WHEN: We call _get_user_agent() - user_agent = _get_user_agent() - - # THEN: The user agent is a Linux (or ChromeOS) user agent - self.assertIn('Windows', user_agent, 'The user agent should be a valid Windows user agent') - - def test_get_user_agent_macos(self): - """ - Test that getting a user agent on OS X returns a user agent suitable for OS X - """ - with patch('openlp.core.lib.webpagereader.sys') as mocked_sys: - - # GIVEN: The system is Linux - mocked_sys.platform = 'darwin' - - # WHEN: We call _get_user_agent() - user_agent = _get_user_agent() - - # THEN: The user agent is a Linux (or ChromeOS) user agent - self.assertIn('Mac OS X', user_agent, 'The user agent should be a valid OS X user agent') - - def test_get_user_agent_default(self): - """ - Test that getting a user agent on a non-Linux/Windows/OS X platform returns the default user agent - """ - with patch('openlp.core.lib.webpagereader.sys') as mocked_sys: - - # GIVEN: The system is Linux - mocked_sys.platform = 'freebsd' - - # WHEN: We call _get_user_agent() - user_agent = _get_user_agent() - - # THEN: The user agent is a Linux (or ChromeOS) user agent - self.assertIn('NetBSD', user_agent, 'The user agent should be the default user agent') - - def test_get_web_page_no_url(self): - """ - Test that sending a URL of None to the get_web_page method returns None - """ - # GIVEN: A None url - test_url = None - - # WHEN: We try to get the test URL - result = get_web_page(test_url) - - # THEN: None should be returned - self.assertIsNone(result, 'The return value of get_web_page should be None') - - def test_get_web_page(self): - """ - Test that the get_web_page method works correctly - """ - with patch('openlp.core.lib.webpagereader.urllib.request.Request') as MockRequest, \ - patch('openlp.core.lib.webpagereader.urllib.request.urlopen') as mock_urlopen, \ - patch('openlp.core.lib.webpagereader._get_user_agent') as mock_get_user_agent, \ - patch('openlp.core.common.Registry') as MockRegistry: - # GIVEN: Mocked out objects and a fake URL - mocked_request_object = MagicMock() - MockRequest.return_value = mocked_request_object - mocked_page_object = MagicMock() - mock_urlopen.return_value = mocked_page_object - mock_get_user_agent.return_value = 'user_agent' - fake_url = 'this://is.a.fake/url' - - # WHEN: The get_web_page() method is called - returned_page = get_web_page(fake_url) - - # THEN: The correct methods are called with the correct arguments and a web page is returned - MockRequest.assert_called_with(fake_url) - mocked_request_object.add_header.assert_called_with('User-Agent', 'user_agent') - self.assertEqual(1, mocked_request_object.add_header.call_count, - 'There should only be 1 call to add_header') - mock_get_user_agent.assert_called_with() - mock_urlopen.assert_called_with(mocked_request_object, timeout=30) - mocked_page_object.geturl.assert_called_with() - self.assertEqual(0, MockRegistry.call_count, 'The Registry() object should have never been called') - self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') - - def test_get_web_page_with_header(self): - """ - Test that adding a header to the call to get_web_page() adds the header to the request - """ - with patch('openlp.core.lib.webpagereader.urllib.request.Request') as MockRequest, \ - patch('openlp.core.lib.webpagereader.urllib.request.urlopen') as mock_urlopen, \ - patch('openlp.core.lib.webpagereader._get_user_agent') as mock_get_user_agent: - # GIVEN: Mocked out objects, a fake URL and a fake header - mocked_request_object = MagicMock() - MockRequest.return_value = mocked_request_object - mocked_page_object = MagicMock() - mock_urlopen.return_value = mocked_page_object - mock_get_user_agent.return_value = 'user_agent' - fake_url = 'this://is.a.fake/url' - fake_header = ('Fake-Header', 'fake value') - - # WHEN: The get_web_page() method is called - returned_page = get_web_page(fake_url, header=fake_header) - - # THEN: The correct methods are called with the correct arguments and a web page is returned - MockRequest.assert_called_with(fake_url) - mocked_request_object.add_header.assert_called_with(fake_header[0], fake_header[1]) - self.assertEqual(2, mocked_request_object.add_header.call_count, - 'There should only be 2 calls to add_header') - mock_get_user_agent.assert_called_with() - mock_urlopen.assert_called_with(mocked_request_object, timeout=30) - mocked_page_object.geturl.assert_called_with() - self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') - - def test_get_web_page_with_user_agent_in_headers(self): - """ - Test that adding a user agent in the header when calling get_web_page() adds that user agent to the request - """ - with patch('openlp.core.lib.webpagereader.urllib.request.Request') as MockRequest, \ - patch('openlp.core.lib.webpagereader.urllib.request.urlopen') as mock_urlopen, \ - patch('openlp.core.lib.webpagereader._get_user_agent') as mock_get_user_agent: - # GIVEN: Mocked out objects, a fake URL and a fake header - mocked_request_object = MagicMock() - MockRequest.return_value = mocked_request_object - mocked_page_object = MagicMock() - mock_urlopen.return_value = mocked_page_object - fake_url = 'this://is.a.fake/url' - user_agent_header = ('User-Agent', 'OpenLP/2.2.0') - - # WHEN: The get_web_page() method is called - returned_page = get_web_page(fake_url, header=user_agent_header) - - # THEN: The correct methods are called with the correct arguments and a web page is returned - MockRequest.assert_called_with(fake_url) - mocked_request_object.add_header.assert_called_with(user_agent_header[0], user_agent_header[1]) - self.assertEqual(1, mocked_request_object.add_header.call_count, - 'There should only be 1 call to add_header') - self.assertEqual(0, mock_get_user_agent.call_count, '_get_user_agent should not have been called') - mock_urlopen.assert_called_with(mocked_request_object, timeout=30) - mocked_page_object.geturl.assert_called_with() - self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') - - def test_get_web_page_update_openlp(self): - """ - Test that passing "update_openlp" as true to get_web_page calls Registry().get('app').process_events() - """ - with patch('openlp.core.lib.webpagereader.urllib.request.Request') as MockRequest, \ - patch('openlp.core.lib.webpagereader.urllib.request.urlopen') as mock_urlopen, \ - patch('openlp.core.lib.webpagereader._get_user_agent') as mock_get_user_agent, \ - patch('openlp.core.lib.webpagereader.Registry') as MockRegistry: - # GIVEN: Mocked out objects, a fake URL - mocked_request_object = MagicMock() - MockRequest.return_value = mocked_request_object - mocked_page_object = MagicMock() - mock_urlopen.return_value = mocked_page_object - mock_get_user_agent.return_value = 'user_agent' - mocked_registry_object = MagicMock() - mocked_application_object = MagicMock() - mocked_registry_object.get.return_value = mocked_application_object - MockRegistry.return_value = mocked_registry_object - fake_url = 'this://is.a.fake/url' - - # WHEN: The get_web_page() method is called - returned_page = get_web_page(fake_url, update_openlp=True) - - # THEN: The correct methods are called with the correct arguments and a web page is returned - MockRequest.assert_called_with(fake_url) - mocked_request_object.add_header.assert_called_with('User-Agent', 'user_agent') - self.assertEqual(1, mocked_request_object.add_header.call_count, - 'There should only be 1 call to add_header') - mock_urlopen.assert_called_with(mocked_request_object, timeout=30) - mocked_page_object.geturl.assert_called_with() - mocked_registry_object.get.assert_called_with('application') - mocked_application_object.process_events.assert_called_with() - self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') diff --git a/tests/functional/openlp_core_ui/test_first_time.py b/tests/functional/openlp_core_ui/test_first_time.py index d8067dfbe..f23bf4db6 100644 --- a/tests/functional/openlp_core_ui/test_first_time.py +++ b/tests/functional/openlp_core_ui/test_first_time.py @@ -31,7 +31,7 @@ import urllib.parse from tests.functional import patch from tests.helpers.testmixin import TestMixin -from openlp.core.lib.webpagereader import CONNECTION_RETRIES, get_web_page +from openlp.core.common.httputils import CONNECTION_RETRIES, get_web_page class TestFirstTimeWizard(TestMixin, TestCase): From 95e70465de6737ddd4377b871874187bdb67c25f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 20 Dec 2016 21:21:17 +0000 Subject: [PATCH 79/86] Add files --- openlp/core/common/httputils.py | 203 ++++++++++++++ .../openlp_core_common/test_httputils.py | 247 ++++++++++++++++++ 2 files changed, 450 insertions(+) create mode 100644 openlp/core/common/httputils.py create mode 100644 tests/functional/openlp_core_common/test_httputils.py diff --git a/openlp/core/common/httputils.py b/openlp/core/common/httputils.py new file mode 100644 index 000000000..cab3ffb49 --- /dev/null +++ b/openlp/core/common/httputils.py @@ -0,0 +1,203 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +""" +The :mod:`openlp.core.utils` module provides the utility libraries for OpenLP. +""" +import logging +import socket +import sys +import time +import urllib.error +import urllib.parse +import urllib.request +from http.client import HTTPException +from random import randint + +from openlp.core.common import Registry + +log = logging.getLogger(__name__ + '.__init__') + +USER_AGENTS = { + 'win32': [ + 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36', + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36', + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36' + ], + 'darwin': [ + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) ' + 'Chrome/26.0.1410.43 Safari/537.31', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/536.11 (KHTML, like Gecko) ' + 'Chrome/20.0.1132.57 Safari/536.11', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) ' + 'Chrome/20.0.1132.47 Safari/536.11', + ], + 'linux2': [ + 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 ' + 'Chrome/25.0.1364.160 Safari/537.22', + 'Mozilla/5.0 (X11; CrOS armv7l 2913.260.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.99 ' + 'Safari/537.11', + 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/26.0.1389.0 Safari/537.27' + ], + 'default': [ + 'Mozilla/5.0 (X11; NetBSD amd64; rv:18.0) Gecko/20130120 Firefox/18.0' + ] +} +CONNECTION_TIMEOUT = 30 +CONNECTION_RETRIES = 2 + + +class HTTPRedirectHandlerFixed(urllib.request.HTTPRedirectHandler): + """ + Special HTTPRedirectHandler used to work around http://bugs.python.org/issue22248 + (Redirecting to urls with special chars) + """ + def redirect_request(self, req, fp, code, msg, headers, new_url): + # + """ + Test if the new_url can be decoded to ascii + + :param req: + :param fp: + :param code: + :param msg: + :param headers: + :param new_url: + :return: + """ + try: + new_url.encode('latin1').decode('ascii') + fixed_url = new_url + except Exception: + # The url could not be decoded to ascii, so we do some url encoding + fixed_url = urllib.parse.quote(new_url.encode('latin1').decode('utf-8', 'replace'), safe='/:') + return super(HTTPRedirectHandlerFixed, self).redirect_request(req, fp, code, msg, headers, fixed_url) + + +def get_user_agent(): + """ + Return a user agent customised for the platform the user is on. + """ + browser_list = USER_AGENTS.get(sys.platform, None) + if not browser_list: + browser_list = USER_AGENTS['default'] + random_index = randint(0, len(browser_list) - 1) + return browser_list[random_index] + + +def get_web_page(url, header=None, update_openlp=False): + """ + Attempts to download the webpage at url and returns that page or None. + + :param url: The URL to be downloaded. + :param header: An optional HTTP header to pass in the request to the web server. + :param update_openlp: Tells OpenLP to update itself if the page is successfully downloaded. + Defaults to False. + """ + # TODO: Add proxy usage. Get proxy info from OpenLP settings, add to a + # proxy_handler, build into an opener and install the opener into urllib2. + # http://docs.python.org/library/urllib2.html + if not url: + return None + # This is needed to work around http://bugs.python.org/issue22248 and https://bugs.launchpad.net/openlp/+bug/1251437 + opener = urllib.request.build_opener(HTTPRedirectHandlerFixed()) + urllib.request.install_opener(opener) + req = urllib.request.Request(url) + if not header or header[0].lower() != 'user-agent': + user_agent = get_user_agent() + req.add_header('User-Agent', user_agent) + if header: + req.add_header(header[0], header[1]) + log.debug('Downloading URL = %s' % url) + retries = 0 + while retries <= CONNECTION_RETRIES: + retries += 1 + time.sleep(0.1) + try: + page = urllib.request.urlopen(req, timeout=CONNECTION_TIMEOUT) + log.debug('Downloaded page {text}'.format(text=page.geturl())) + break + except urllib.error.URLError as err: + log.exception('URLError on {text}'.format(text=url)) + log.exception('URLError: {text}'.format(text=err.reason)) + page = None + if retries > CONNECTION_RETRIES: + raise + except socket.timeout: + log.exception('Socket timeout: {text}'.format(text=url)) + page = None + if retries > CONNECTION_RETRIES: + raise + except socket.gaierror: + log.exception('Socket gaierror: {text}'.format(text=url)) + page = None + if retries > CONNECTION_RETRIES: + raise + except ConnectionRefusedError: + log.exception('ConnectionRefused: {text}'.format(text=url)) + page = None + if retries > CONNECTION_RETRIES: + raise + break + except ConnectionError: + log.exception('Connection error: {text}'.format(text=url)) + page = None + if retries > CONNECTION_RETRIES: + raise + except HTTPException: + log.exception('HTTPException error: {text}'.format(text=url)) + page = None + if retries > CONNECTION_RETRIES: + raise + except: + # Don't know what's happening, so reraise the original + raise + if update_openlp: + Registry().get('application').process_events() + if not page: + log.exception('{text} could not be downloaded'.format(text=url)) + return None + log.debug(page) + return page + + +def get_url_file_size(url): + """ + Get the size of a file. + + :param url: The URL of the file we want to download. + """ + retries = 0 + while True: + try: + site = urllib.request.urlopen(url, timeout=CONNECTION_TIMEOUT) + meta = site.info() + return int(meta.get("Content-Length")) + except urllib.error.URLError: + if retries > CONNECTION_RETRIES: + raise + else: + retries += 1 + time.sleep(0.1) + continue + + +__all__ = ['get_web_page'] diff --git a/tests/functional/openlp_core_common/test_httputils.py b/tests/functional/openlp_core_common/test_httputils.py new file mode 100644 index 000000000..7a8d478c5 --- /dev/null +++ b/tests/functional/openlp_core_common/test_httputils.py @@ -0,0 +1,247 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2016 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +""" +Functional tests to test the AppLocation class and related methods. +""" +from unittest import TestCase + +from openlp.core.common.httputils import get_user_agent, get_web_page, get_url_file_size + +from tests.functional import MagicMock, patch + + +class TestHttpUtils(TestCase): + """ + A test suite to test out various methods around the AppLocation class. + """ + def test_get_user_agent_linux(self): + """ + Test that getting a user agent on Linux returns a user agent suitable for Linux + """ + with patch('openlp.core.common.httputils.sys') as mocked_sys: + + # GIVEN: The system is Linux + mocked_sys.platform = 'linux2' + + # WHEN: We call get_user_agent() + user_agent = get_user_agent() + + # THEN: The user agent is a Linux (or ChromeOS) user agent + result = 'Linux' in user_agent or 'CrOS' in user_agent + self.assertTrue(result, 'The user agent should be a valid Linux user agent') + + def test_get_user_agent_windows(self): + """ + Test that getting a user agent on Windows returns a user agent suitable for Windows + """ + with patch('openlp.core.common.httputils.sys') as mocked_sys: + + # GIVEN: The system is Linux + mocked_sys.platform = 'win32' + + # WHEN: We call get_user_agent() + user_agent = get_user_agent() + + # THEN: The user agent is a Linux (or ChromeOS) user agent + self.assertIn('Windows', user_agent, 'The user agent should be a valid Windows user agent') + + def test_get_user_agent_macos(self): + """ + Test that getting a user agent on OS X returns a user agent suitable for OS X + """ + with patch('openlp.core.common.httputils.sys') as mocked_sys: + + # GIVEN: The system is Linux + mocked_sys.platform = 'darwin' + + # WHEN: We call get_user_agent() + user_agent = get_user_agent() + + # THEN: The user agent is a Linux (or ChromeOS) user agent + self.assertIn('Mac OS X', user_agent, 'The user agent should be a valid OS X user agent') + + def test_get_user_agent_default(self): + """ + Test that getting a user agent on a non-Linux/Windows/OS X platform returns the default user agent + """ + with patch('openlp.core.common.httputils.sys') as mocked_sys: + + # GIVEN: The system is Linux + mocked_sys.platform = 'freebsd' + + # WHEN: We call get_user_agent() + user_agent = get_user_agent() + + # THEN: The user agent is a Linux (or ChromeOS) user agent + self.assertIn('NetBSD', user_agent, 'The user agent should be the default user agent') + + def test_get_web_page_no_url(self): + """ + Test that sending a URL of None to the get_web_page method returns None + """ + # GIVEN: A None url + test_url = None + + # WHEN: We try to get the test URL + result = get_web_page(test_url) + + # THEN: None should be returned + self.assertIsNone(result, 'The return value of get_web_page should be None') + + def test_get_web_page(self): + """ + Test that the get_web_page method works correctly + """ + with patch('openlp.core.common.httputils.urllib.request.Request') as MockRequest, \ + patch('openlp.core.common.httputils.urllib.request.urlopen') as mock_urlopen, \ + patch('openlp.core.common.httputils.get_user_agent') as mock_get_user_agent, \ + patch('openlp.core.common.Registry') as MockRegistry: + # GIVEN: Mocked out objects and a fake URL + mocked_request_object = MagicMock() + MockRequest.return_value = mocked_request_object + mocked_page_object = MagicMock() + mock_urlopen.return_value = mocked_page_object + mock_get_user_agent.return_value = 'user_agent' + fake_url = 'this://is.a.fake/url' + + # WHEN: The get_web_page() method is called + returned_page = get_web_page(fake_url) + + # THEN: The correct methods are called with the correct arguments and a web page is returned + MockRequest.assert_called_with(fake_url) + mocked_request_object.add_header.assert_called_with('User-Agent', 'user_agent') + self.assertEqual(1, mocked_request_object.add_header.call_count, + 'There should only be 1 call to add_header') + mock_get_user_agent.assert_called_with() + mock_urlopen.assert_called_with(mocked_request_object, timeout=30) + mocked_page_object.geturl.assert_called_with() + self.assertEqual(0, MockRegistry.call_count, 'The Registry() object should have never been called') + self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') + + def test_get_web_page_with_header(self): + """ + Test that adding a header to the call to get_web_page() adds the header to the request + """ + with patch('openlp.core.common.httputils.urllib.request.Request') as MockRequest, \ + patch('openlp.core.common.httputils.urllib.request.urlopen') as mock_urlopen, \ + patch('openlp.core.common.httputils.get_user_agent') as mock_get_user_agent: + # GIVEN: Mocked out objects, a fake URL and a fake header + mocked_request_object = MagicMock() + MockRequest.return_value = mocked_request_object + mocked_page_object = MagicMock() + mock_urlopen.return_value = mocked_page_object + mock_get_user_agent.return_value = 'user_agent' + fake_url = 'this://is.a.fake/url' + fake_header = ('Fake-Header', 'fake value') + + # WHEN: The get_web_page() method is called + returned_page = get_web_page(fake_url, header=fake_header) + + # THEN: The correct methods are called with the correct arguments and a web page is returned + MockRequest.assert_called_with(fake_url) + mocked_request_object.add_header.assert_called_with(fake_header[0], fake_header[1]) + self.assertEqual(2, mocked_request_object.add_header.call_count, + 'There should only be 2 calls to add_header') + mock_get_user_agent.assert_called_with() + mock_urlopen.assert_called_with(mocked_request_object, timeout=30) + mocked_page_object.geturl.assert_called_with() + self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') + + def test_get_web_page_with_user_agent_in_headers(self): + """ + Test that adding a user agent in the header when calling get_web_page() adds that user agent to the request + """ + with patch('openlp.core.common.httputils.urllib.request.Request') as MockRequest, \ + patch('openlp.core.common.httputils.urllib.request.urlopen') as mock_urlopen, \ + patch('openlp.core.common.httputils.get_user_agent') as mock_get_user_agent: + # GIVEN: Mocked out objects, a fake URL and a fake header + mocked_request_object = MagicMock() + MockRequest.return_value = mocked_request_object + mocked_page_object = MagicMock() + mock_urlopen.return_value = mocked_page_object + fake_url = 'this://is.a.fake/url' + user_agent_header = ('User-Agent', 'OpenLP/2.2.0') + + # WHEN: The get_web_page() method is called + returned_page = get_web_page(fake_url, header=user_agent_header) + + # THEN: The correct methods are called with the correct arguments and a web page is returned + MockRequest.assert_called_with(fake_url) + mocked_request_object.add_header.assert_called_with(user_agent_header[0], user_agent_header[1]) + self.assertEqual(1, mocked_request_object.add_header.call_count, + 'There should only be 1 call to add_header') + self.assertEqual(0, mock_get_user_agent.call_count, 'get_user_agent should not have been called') + mock_urlopen.assert_called_with(mocked_request_object, timeout=30) + mocked_page_object.geturl.assert_called_with() + self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') + + def test_get_web_page_update_openlp(self): + """ + Test that passing "update_openlp" as true to get_web_page calls Registry().get('app').process_events() + """ + with patch('openlp.core.common.httputils.urllib.request.Request') as MockRequest, \ + patch('openlp.core.common.httputils.urllib.request.urlopen') as mock_urlopen, \ + patch('openlp.core.common.httputils.get_user_agent') as mock_get_user_agent, \ + patch('openlp.core.common.httputils.Registry') as MockRegistry: + # GIVEN: Mocked out objects, a fake URL + mocked_request_object = MagicMock() + MockRequest.return_value = mocked_request_object + mocked_page_object = MagicMock() + mock_urlopen.return_value = mocked_page_object + mock_get_user_agent.return_value = 'user_agent' + mocked_registry_object = MagicMock() + mocked_application_object = MagicMock() + mocked_registry_object.get.return_value = mocked_application_object + MockRegistry.return_value = mocked_registry_object + fake_url = 'this://is.a.fake/url' + + # WHEN: The get_web_page() method is called + returned_page = get_web_page(fake_url, update_openlp=True) + + # THEN: The correct methods are called with the correct arguments and a web page is returned + MockRequest.assert_called_with(fake_url) + mocked_request_object.add_header.assert_called_with('User-Agent', 'user_agent') + self.assertEqual(1, mocked_request_object.add_header.call_count, + 'There should only be 1 call to add_header') + mock_urlopen.assert_called_with(mocked_request_object, timeout=30) + mocked_page_object.geturl.assert_called_with() + mocked_registry_object.get.assert_called_with('application') + mocked_application_object.process_events.assert_called_with() + self.assertEqual(mocked_page_object, returned_page, 'The returned page should be the mock object') + + def test_get_url_file_size(self): + """ + Test that passing "update_openlp" as true to get_web_page calls Registry().get('app').process_events() + """ + with patch('openlp.core.common.httputils.urllib.request.urlopen') as mock_urlopen, \ + patch('openlp.core.common.httputils.get_user_agent') as mock_get_user_agent: + # GIVEN: Mocked out objects, a fake URL + mocked_page_object = MagicMock() + mock_urlopen.return_value = mocked_page_object + mock_get_user_agent.return_value = 'user_agent' + fake_url = 'this://is.a.fake/url' + + # WHEN: The get_url_file_size() method is called + size = get_url_file_size(fake_url) + + # THEN: The correct methods are called with the correct arguments and a web page is returned + mock_urlopen.assert_called_with(fake_url, timeout=30) From a368a1d69566ce94988333534ed27088120762b2 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 20 Dec 2016 21:59:40 +0000 Subject: [PATCH 80/86] Move urg_get_file --- openlp/core/common/httputils.py | 52 +++++++++++++++++++++++++++++- openlp/core/ui/firsttimeform.py | 57 +++------------------------------ 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/openlp/core/common/httputils.py b/openlp/core/common/httputils.py index cab3ffb49..638e8a98a 100644 --- a/openlp/core/common/httputils.py +++ b/openlp/core/common/httputils.py @@ -22,7 +22,9 @@ """ The :mod:`openlp.core.utils` module provides the utility libraries for OpenLP. """ +import hashlib import logging +import os import socket import sys import time @@ -32,7 +34,7 @@ import urllib.request from http.client import HTTPException from random import randint -from openlp.core.common import Registry +from openlp.core.common import Registry, trace_error_handler log = logging.getLogger(__name__ + '.__init__') @@ -200,4 +202,52 @@ def get_url_file_size(url): continue +def url_get_file(callback, url, f_path, sha256=None): + """" + Download a file given a URL. The file is retrieved in chunks, giving the ability to cancel the download at any + point. Returns False on download error. + + :param url: URL to download + :param f_path: Destination file + """ + block_count = 0 + block_size = 4096 + retries = 0 + while True: + try: + filename = open(f_path, "wb") + url_file = urllib.request.urlopen(url, timeout=CONNECTION_TIMEOUT) + if sha256: + hasher = hashlib.sha256() + # Download until finished or canceled. + while not callback.was_cancelled: + data = url_file.read(block_size) + if not data: + break + filename.write(data) + if sha256: + hasher.update(data) + block_count += 1 + callback._download_progress(block_count, block_size) + filename.close() + if sha256 and hasher.hexdigest() != sha256: + log.error('sha256 sums did not match for file: {file}'.format(file=f_path)) + os.remove(f_path) + return False + except (urllib.error.URLError, socket.timeout) as err: + trace_error_handler(log) + filename.close() + os.remove(f_path) + if retries > CONNECTION_RETRIES: + return False + else: + retries += 1 + time.sleep(0.1) + continue + break + # Delete file if cancelled, it may be a partial file. + if callback.was_cancelled: + os.remove(f_path) + return True + __all__ = ['get_web_page'] diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index b59f31211..d331bf843 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -22,7 +22,6 @@ """ This module contains the first time wizard. """ -import hashlib import logging import os import socket @@ -39,7 +38,7 @@ from openlp.core.common import Registry, RegistryProperties, AppLocation, Settin translate, clean_button_text, trace_error_handler from openlp.core.lib import PluginStatus, build_icon from openlp.core.lib.ui import critical_error_message_box -from openlp.core.common.httputils import get_web_page, get_url_file_size, CONNECTION_RETRIES, CONNECTION_TIMEOUT +from openlp.core.common.httputils import get_web_page, get_url_file_size, url_get_file, CONNECTION_TIMEOUT from .firsttimewizard import UiFirstTimeWizard, FirstTimePage log = logging.getLogger(__name__) @@ -395,54 +394,6 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): self.was_cancelled = True self.close() - def url_get_file(self, url, f_path, sha256=None): - """" - Download a file given a URL. The file is retrieved in chunks, giving the ability to cancel the download at any - point. Returns False on download error. - - :param url: URL to download - :param f_path: Destination file - """ - block_count = 0 - block_size = 4096 - retries = 0 - while True: - try: - filename = open(f_path, "wb") - url_file = urllib.request.urlopen(url, timeout=CONNECTION_TIMEOUT) - if sha256: - hasher = hashlib.sha256() - # Download until finished or canceled. - while not self.was_cancelled: - data = url_file.read(block_size) - if not data: - break - filename.write(data) - if sha256: - hasher.update(data) - block_count += 1 - self._download_progress(block_count, block_size) - filename.close() - if sha256 and hasher.hexdigest() != sha256: - log.error('sha256 sums did not match for file: {file}'.format(file=f_path)) - os.remove(f_path) - return False - except (urllib.error.URLError, socket.timeout) as err: - trace_error_handler(log) - filename.close() - os.remove(f_path) - if retries > CONNECTION_RETRIES: - return False - else: - retries += 1 - time.sleep(0.1) - continue - break - # Delete file if cancelled, it may be a partial file. - if self.was_cancelled: - os.remove(f_path) - return True - def _build_theme_screenshots(self): """ This method builds the theme screenshots' icons for all items in the ``self.themes_list_widget``. @@ -616,7 +567,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): self._increment_progress_bar(self.downloading.format(name=filename), 0) self.previous_size = 0 destination = os.path.join(songs_destination, str(filename)) - if not self.url_get_file('{path}{name}'.format(path=self.songs_url, name=filename), + if not url_get_file(self, '{path}{name}'.format(path=self.songs_url, name=filename), destination, sha256): missed_files.append('Song: {name}'.format(name=filename)) # Download Bibles @@ -628,7 +579,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): # TODO: Tested at home self._increment_progress_bar(self.downloading.format(name=bible), 0) self.previous_size = 0 - if not self.url_get_file('{path}{name}'.format(path=self.bibles_url, name=bible), + if not url_get_file(self, '{path}{name}'.format(path=self.bibles_url, name=bible), os.path.join(bibles_destination, bible), sha256): missed_files.append('Bible: {name}'.format(name=bible)) @@ -643,7 +594,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): self.previous_size = 0 if not self.url_get_file('{path}{name}'.format(path=self.themes_url, name=theme), os.path.join(themes_destination, theme), - sha256): + sha256, self): missed_files.append('Theme: {name}'.format(name=theme)) if missed_files: file_list = '' From 8570fb5e8cf50aeb37a63870af7bdc6abed03246 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 21 Dec 2016 09:41:57 +0000 Subject: [PATCH 81/86] Fix tests --- openlp/core/common/httputils.py | 2 ++ .../openlp_core_common/test_httputils.py | 19 ++++++++++++++++++- .../openlp_core_ui/test_firsttimeform.py | 18 ------------------ 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/openlp/core/common/httputils.py b/openlp/core/common/httputils.py index 638e8a98a..b3cb50ef3 100644 --- a/openlp/core/common/httputils.py +++ b/openlp/core/common/httputils.py @@ -207,8 +207,10 @@ def url_get_file(callback, url, f_path, sha256=None): Download a file given a URL. The file is retrieved in chunks, giving the ability to cancel the download at any point. Returns False on download error. + :param callback: the class which needs to be updated :param url: URL to download :param f_path: Destination file + :param sha256: The check sum value to be checked against the download value """ block_count = 0 block_size = 4096 diff --git a/tests/functional/openlp_core_common/test_httputils.py b/tests/functional/openlp_core_common/test_httputils.py index 7a8d478c5..8709e9cfb 100644 --- a/tests/functional/openlp_core_common/test_httputils.py +++ b/tests/functional/openlp_core_common/test_httputils.py @@ -22,9 +22,11 @@ """ Functional tests to test the AppLocation class and related methods. """ +import socket +import os from unittest import TestCase -from openlp.core.common.httputils import get_user_agent, get_web_page, get_url_file_size +from openlp.core.common.httputils import get_user_agent, get_web_page, get_url_file_size, url_get_file from tests.functional import MagicMock, patch @@ -245,3 +247,18 @@ class TestHttpUtils(TestCase): # THEN: The correct methods are called with the correct arguments and a web page is returned mock_urlopen.assert_called_with(fake_url, timeout=30) + + @patch('openlp.core.ui.firsttimeform.urllib.request.urlopen') + def test_socket_timeout(self, mocked_urlopen): + """ + Test socket timeout gets caught + """ + # GIVEN: Mocked urlopen to fake a network disconnect in the middle of a download + mocked_urlopen.side_effect = socket.timeout() + + # WHEN: Attempt to retrieve a file + url_get_file(url='http://localhost/test', f_path=self.tempfile) + + # THEN: socket.timeout should have been caught + # NOTE: Test is if $tmpdir/tempfile is still there, then test fails since ftw deletes bad downloaded files + self.assertFalse(os.path.exists(self.tempfile), 'FTW url_get_file should have caught socket.timeout') \ No newline at end of file diff --git a/tests/functional/openlp_core_ui/test_firsttimeform.py b/tests/functional/openlp_core_ui/test_firsttimeform.py index 5dd1430cd..ec26f60fe 100644 --- a/tests/functional/openlp_core_ui/test_firsttimeform.py +++ b/tests/functional/openlp_core_ui/test_firsttimeform.py @@ -23,7 +23,6 @@ Package to test the openlp.core.ui.firsttimeform package. """ import os -import socket import tempfile import urllib from unittest import TestCase @@ -236,20 +235,3 @@ class TestFirstTimeForm(TestCase, TestMixin): # THEN: the critical_error_message_box should have been called self.assertEquals(mocked_message_box.mock_calls[1][1][0], 'Network Error 407', 'first_time_form should have caught Network Error') - - @patch('openlp.core.ui.firsttimeform.urllib.request.urlopen') - def test_socket_timeout(self, mocked_urlopen): - """ - Test socket timeout gets caught - """ - # GIVEN: Mocked urlopen to fake a network disconnect in the middle of a download - first_time_form = FirstTimeForm(None) - first_time_form.initialize(MagicMock()) - mocked_urlopen.side_effect = socket.timeout() - - # WHEN: Attempt to retrieve a file - first_time_form.url_get_file(url='http://localhost/test', f_path=self.tempfile) - - # THEN: socket.timeout should have been caught - # NOTE: Test is if $tmpdir/tempfile is still there, then test fails since ftw deletes bad downloaded files - self.assertFalse(os.path.exists(self.tempfile), 'FTW url_get_file should have caught socket.timeout') From a69df60978644d47365f7d98e0db059377c288ea Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 21 Dec 2016 09:47:33 +0000 Subject: [PATCH 82/86] Fix tests again --- .../openlp_core_common/test_httputils.py | 18 ++++++++++++++---- .../openlp_core_ui/test_firsttimeform.py | 3 ++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/tests/functional/openlp_core_common/test_httputils.py b/tests/functional/openlp_core_common/test_httputils.py index 8709e9cfb..6bf7aaa4c 100644 --- a/tests/functional/openlp_core_common/test_httputils.py +++ b/tests/functional/openlp_core_common/test_httputils.py @@ -22,19 +22,29 @@ """ Functional tests to test the AppLocation class and related methods. """ -import socket import os +import tempfile +import socket from unittest import TestCase from openlp.core.common.httputils import get_user_agent, get_web_page, get_url_file_size, url_get_file from tests.functional import MagicMock, patch +from tests.helpers.testmixin import TestMixin -class TestHttpUtils(TestCase): +class TestHttpUtils(TestCase, TestMixin): + """ - A test suite to test out various methods around the AppLocation class. + A test suite to test out various http helper functions. """ + def setUp(self): + self.tempfile = os.path.join(tempfile.gettempdir(), 'testfile') + + def tearDown(self): + if os.path.isfile(self.tempfile): + os.remove(self.tempfile) + def test_get_user_agent_linux(self): """ Test that getting a user agent on Linux returns a user agent suitable for Linux @@ -257,7 +267,7 @@ class TestHttpUtils(TestCase): mocked_urlopen.side_effect = socket.timeout() # WHEN: Attempt to retrieve a file - url_get_file(url='http://localhost/test', f_path=self.tempfile) + url_get_file(MagicMock(), url='http://localhost/test', f_path=self.tempfile) # THEN: socket.timeout should have been caught # NOTE: Test is if $tmpdir/tempfile is still there, then test fails since ftw deletes bad downloaded files diff --git a/tests/functional/openlp_core_ui/test_firsttimeform.py b/tests/functional/openlp_core_ui/test_firsttimeform.py index ec26f60fe..ec77a3134 100644 --- a/tests/functional/openlp_core_ui/test_firsttimeform.py +++ b/tests/functional/openlp_core_ui/test_firsttimeform.py @@ -224,7 +224,8 @@ class TestFirstTimeForm(TestCase, TestMixin): # GIVEN: Initial setup and mocks first_time_form = FirstTimeForm(None) first_time_form.initialize(MagicMock()) - mocked_get_web_page.side_effect = urllib.error.HTTPError(url='http//localhost', + mocked_get_web_page.side_effect = urllib.error.HTTPError(MagicMock(), + url='http//localhost', code=407, msg='Network proxy error', hdrs=None, From 5896e053bc5c5705fff8b58e6058052f10f027fa Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 21 Dec 2016 09:52:05 +0000 Subject: [PATCH 83/86] Fix tests again --- tests/functional/openlp_core_ui/test_firsttimeform.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/functional/openlp_core_ui/test_firsttimeform.py b/tests/functional/openlp_core_ui/test_firsttimeform.py index ec77a3134..ec26f60fe 100644 --- a/tests/functional/openlp_core_ui/test_firsttimeform.py +++ b/tests/functional/openlp_core_ui/test_firsttimeform.py @@ -224,8 +224,7 @@ class TestFirstTimeForm(TestCase, TestMixin): # GIVEN: Initial setup and mocks first_time_form = FirstTimeForm(None) first_time_form.initialize(MagicMock()) - mocked_get_web_page.side_effect = urllib.error.HTTPError(MagicMock(), - url='http//localhost', + mocked_get_web_page.side_effect = urllib.error.HTTPError(url='http//localhost', code=407, msg='Network proxy error', hdrs=None, From 7bd645bc7212fc83dfe9781eda289cd2126864c3 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 21 Dec 2016 10:00:14 +0000 Subject: [PATCH 84/86] pep8 --- openlp/core/ui/firsttimeform.py | 6 +++--- tests/functional/openlp_core_common/test_httputils.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index d331bf843..10456b979 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -568,7 +568,7 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): self.previous_size = 0 destination = os.path.join(songs_destination, str(filename)) if not url_get_file(self, '{path}{name}'.format(path=self.songs_url, name=filename), - destination, sha256): + destination, sha256): missed_files.append('Song: {name}'.format(name=filename)) # Download Bibles bibles_iterator = QtWidgets.QTreeWidgetItemIterator(self.bibles_tree_widget) @@ -580,8 +580,8 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): self._increment_progress_bar(self.downloading.format(name=bible), 0) self.previous_size = 0 if not url_get_file(self, '{path}{name}'.format(path=self.bibles_url, name=bible), - os.path.join(bibles_destination, bible), - sha256): + os.path.join(bibles_destination, bible), + sha256): missed_files.append('Bible: {name}'.format(name=bible)) bibles_iterator += 1 # Download themes diff --git a/tests/functional/openlp_core_common/test_httputils.py b/tests/functional/openlp_core_common/test_httputils.py index 6bf7aaa4c..98b24a994 100644 --- a/tests/functional/openlp_core_common/test_httputils.py +++ b/tests/functional/openlp_core_common/test_httputils.py @@ -271,4 +271,4 @@ class TestHttpUtils(TestCase, TestMixin): # THEN: socket.timeout should have been caught # NOTE: Test is if $tmpdir/tempfile is still there, then test fails since ftw deletes bad downloaded files - self.assertFalse(os.path.exists(self.tempfile), 'FTW url_get_file should have caught socket.timeout') \ No newline at end of file + self.assertFalse(os.path.exists(self.tempfile), 'FTW url_get_file should have caught socket.timeout') From 7323b3797d222391b0ac3b6b022f3ee82fc6f944 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 21 Dec 2016 10:20:35 +0000 Subject: [PATCH 85/86] missed one --- openlp/core/ui/firsttimeform.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index 10456b979..3f56f4089 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -592,9 +592,9 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): # TODO: Tested at home self._increment_progress_bar(self.downloading.format(name=theme), 0) self.previous_size = 0 - if not self.url_get_file('{path}{name}'.format(path=self.themes_url, name=theme), + if not self.url_get_file(self, '{path}{name}'.format(path=self.themes_url, name=theme), os.path.join(themes_destination, theme), - sha256, self): + sha256): missed_files.append('Theme: {name}'.format(name=theme)) if missed_files: file_list = '' From 0643ecdd103e3a13a7506399a663008e947eef0d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 21 Dec 2016 12:46:35 +0000 Subject: [PATCH 86/86] Remove extra self --- openlp/core/ui/firsttimeform.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index 3f56f4089..8fd7a4f52 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -592,9 +592,9 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties): # TODO: Tested at home self._increment_progress_bar(self.downloading.format(name=theme), 0) self.previous_size = 0 - if not self.url_get_file(self, '{path}{name}'.format(path=self.themes_url, name=theme), - os.path.join(themes_destination, theme), - sha256): + if not url_get_file(self, '{path}{name}'.format(path=self.themes_url, name=theme), + os.path.join(themes_destination, theme), + sha256): missed_files.append('Theme: {name}'.format(name=theme)) if missed_files: file_list = ''