diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index a3de729a7..1df2a13ad 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -413,7 +413,7 @@ class BiblesTab(SettingsTab): self.settings.endGroup() def save(self): - self.self.settings.beginGroup(self.settings_section) + self.settings.beginGroup(self.settings_section) self.settings.setValue('is verse number visible', self.is_verse_number_visible) self.settings.setValue('display new chapter', self.show_new_chapters) self.settings.setValue('display brackets', self.display_style) diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index a902f37b4..af1d03bcf 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -25,7 +25,6 @@ for the Custom Slides plugin, which is inserted into the configuration dialog. from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.core.lib.settingstab import SettingsTab @@ -82,23 +81,21 @@ class CustomTab(SettingsTab): Load the settings into the dialog """ - settings = Settings() - settings.beginGroup(self.settings_section) - self.display_footer = settings.value('display footer') - self.update_load = settings.value('add custom from service') + self.settings.beginGroup(self.settings_section) + self.display_footer = self.settings.value('display footer') + self.update_load = self.settings.value('add custom from service') self.display_footer_check_box.setChecked(self.display_footer) self.add_from_service_checkbox.setChecked(self.update_load) - settings.endGroup() + self.settings.endGroup() def save(self): """ Save the Dialog settings """ - settings = Settings() - settings.beginGroup(self.settings_section) - settings.setValue('display footer', self.display_footer) - settings.setValue('add custom from service', self.update_load) - settings.endGroup() + self.settings.beginGroup(self.settings_section) + self.settings.setValue('display footer', self.display_footer) + self.settings.setValue('add custom from service', self.update_load) + self.settings.endGroup() if self.tab_visited: self.settings_form.register_post_process('custom_config_updated') self.tab_visited = False diff --git a/openlp/plugins/images/lib/imagetab.py b/openlp/plugins/images/lib/imagetab.py index 6be1c92bd..1315a06b2 100644 --- a/openlp/plugins/images/lib/imagetab.py +++ b/openlp/plugins/images/lib/imagetab.py @@ -22,7 +22,6 @@ from PyQt5 import QtWidgets from openlp.core.common.i18n import UiStrings, translate -from openlp.core.common.settings import Settings from openlp.core.lib.settingstab import SettingsTab from openlp.core.widgets.buttons import ColorButton @@ -67,17 +66,15 @@ class ImageTab(SettingsTab): self.background_color = color def load(self): - settings = Settings() - settings.beginGroup(self.settings_section) - self.background_color = settings.value('background color') + self.settings.beginGroup(self.settings_section) + self.background_color = self.settings.value('background color') self.initial_color = self.background_color - settings.endGroup() + self.settings.endGroup() self.background_color_button.color = self.background_color def save(self): - settings = Settings() - settings.beginGroup(self.settings_section) - settings.setValue('background color', self.background_color) - settings.endGroup() + self.settings.beginGroup(self.settings_section) + self.settings.setValue('background color', self.background_color) + self.settings.endGroup() if self.initial_color != self.background_color: self.settings_form.register_post_process('images_config_updated') diff --git a/openlp/plugins/planningcenter/forms/selectplanform.py b/openlp/plugins/planningcenter/forms/selectplanform.py index 64a826616..73dcb5746 100644 --- a/openlp/plugins/planningcenter/forms/selectplanform.py +++ b/openlp/plugins/planningcenter/forms/selectplanform.py @@ -30,7 +30,6 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import translate from openlp.core.common.registry import Registry -from openlp.core.common.settings import Settings from openlp.plugins.bibles.lib import parse_reference from openlp.plugins.planningcenter.forms.selectplandialog import Ui_SelectPlanDialog from openlp.plugins.planningcenter.lib.customimport import PlanningCenterCustomImport @@ -49,8 +48,8 @@ class SelectPlanForm(QtWidgets.QDialog, Ui_SelectPlanDialog): QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint) self.plugin = plugin # create an Planning Center API Object - application_id = Settings().value("planningcenter/application_id") - secret = Settings().value("planningcenter/secret") + application_id = Registry().get('settings').value("planningcenter/application_id") + secret = Registry().get('settings').value("planningcenter/secret") self.planning_center_api = PlanningCenterAPI(application_id, secret) self.setup_ui(self) self.service_type_combo_box.currentIndexChanged.connect(self.on_service_type_combobox_changed) diff --git a/openlp/plugins/planningcenter/lib/planningcentertab.py b/openlp/plugins/planningcenter/lib/planningcentertab.py index dd1e07eaf..189ad7eab 100644 --- a/openlp/plugins/planningcenter/lib/planningcentertab.py +++ b/openlp/plugins/planningcenter/lib/planningcentertab.py @@ -25,7 +25,6 @@ the settings tab for the PlanningCenter plugin from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.core.lib.settingstab import SettingsTab from openlp.plugins.planningcenter.lib.planningcenter_api import PlanningCenterAPI @@ -105,11 +104,10 @@ below. Personal Access Tokens are created by doing the following: """ Load the settings into the UI. """ - settings = Settings() - settings.beginGroup(self.settings_section) - self.application_id = settings.value('application_id') - self.secret = settings.value('secret') - settings.endGroup() + self.settings.beginGroup(self.settings_section) + self.application_id = self.settings.value('application_id') + self.secret = self.settings.value('secret') + self.settings.endGroup() self.application_id_line_edit.setText(self.application_id) self.secret_line_edit.setText(self.secret) @@ -117,11 +115,10 @@ below. Personal Access Tokens are created by doing the following: """ Save the changes on exit of the Settings dialog. """ - settings = Settings() - settings.beginGroup(self.settings_section) - settings.setValue('application_id', self.application_id_line_edit.text()) - settings.setValue('secret', self.secret_line_edit.text()) - settings.endGroup() + self.settings.beginGroup(self.settings_section) + self.settings.setValue('application_id', self.application_id_line_edit.text()) + self.settings.setValue('secret', self.secret_line_edit.text()) + self.settings.endGroup() def on_test_credentials_button_clicked(self): """ diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index dd9192e95..140d04aa6 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -25,7 +25,6 @@ from pathlib import Path from PyQt5 import QtCore from openlp.core.common.registry import Registry -from openlp.core.common.settings import Settings from openlp.core.lib import ServiceItemContext from openlp.core.ui import HideMode from openlp.plugins.presentations.lib.pdfcontroller import PDF_CONTROLLER_FILETYPES @@ -416,7 +415,7 @@ class MessageListener(object): is_live = message[1] if is_live: ret = self.live_handler.next() - if Settings().value('core/click live slide to unblank'): + if Registry().get('settings').value('core/click live slide to unblank'): Registry().execute('slidecontroller_live_unblank') return ret else: @@ -431,7 +430,7 @@ class MessageListener(object): is_live = message[1] if is_live: ret = self.live_handler.previous() - if Settings().value('core/click live slide to unblank'): + if Registry().get('settings').value('core/click live slide to unblank'): Registry().execute('slidecontroller_live_unblank') return ret else: diff --git a/openlp/plugins/presentations/lib/pdfcontroller.py b/openlp/plugins/presentations/lib/pdfcontroller.py index 0321e9518..0a54cb68c 100644 --- a/openlp/plugins/presentations/lib/pdfcontroller.py +++ b/openlp/plugins/presentations/lib/pdfcontroller.py @@ -24,8 +24,8 @@ from shutil import which from subprocess import CalledProcessError, check_output from openlp.core.common import check_binary_exists, is_win +from openlp.core.common.registry import Registry from openlp.core.common.applocation import AppLocation -from openlp.core.common.settings import Settings from openlp.core.display.screens import ScreenList from openlp.plugins.presentations.lib.presentationcontroller import PresentationController, PresentationDocument @@ -117,8 +117,8 @@ class PdfController(PresentationController): self.gsbin = None self.also_supports = [] # Use the user defined program if given - if Settings().value('presentations/enable_pdf_program'): - program_path = Settings().value('presentations/pdf_program') + if Registry().get('settings').value('presentations/enable_pdf_program'): + program_path = Registry().get('settings').value('presentations/pdf_program') program_type = self.process_check_binary(program_path) if program_type == 'gs': self.gsbin = program_path diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index dee57abfe..2af547627 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -29,7 +29,6 @@ import logging from openlp.core.common import is_win, trace_error_handler from openlp.core.common.i18n import UiStrings from openlp.core.common.registry import Registry -from openlp.core.common.settings import Settings from openlp.core.display.screens import ScreenList from openlp.core.lib.ui import critical_error_message_box, translate from openlp.plugins.presentations.lib.presentationcontroller import PresentationController, PresentationDocument @@ -328,7 +327,7 @@ class PowerpointDocument(PresentationDocument): log.exception('Caught exception while in start_presentation') trace_error_handler(log) self.show_error_msg() - if ppt_window and not Settings().value('presentations/powerpoint control window'): + if ppt_window and not Registry().get('settings').value('presentations/powerpoint control window'): try: ppt_window.Top = size.y() * 72 / dpi ppt_window.Height = size.height() * 72 / dpi @@ -422,7 +421,7 @@ class PowerpointDocument(PresentationDocument): """ log.debug('goto_slide') try: - if Settings().value('presentations/powerpoint slide click advance') \ + if Registry().get('settings').value('presentations/powerpoint slide click advance') \ and self.get_slide_number() == slide_no: click_index = self.presentation.SlideShowWindow.View.GetClickIndex() click_count = self.presentation.SlideShowWindow.View.GetClickCount() diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 0f9fdd1cc..0afb2d94f 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -28,7 +28,6 @@ from openlp.core.common import md5_hash from openlp.core.common.applocation import AppLocation from openlp.core.common.path import create_paths from openlp.core.common.registry import Registry -from openlp.core.common.settings import Settings from openlp.core.lib import create_thumb, validate_thumb @@ -97,6 +96,7 @@ class PresentationDocument(object): :rtype: None """ self.controller = controller + self.settings = Registry().get('settings') self._setup(document_path) def _setup(self, document_path): @@ -143,7 +143,7 @@ class PresentationDocument(object): """ # TODO: Can be removed when the upgrade path to OpenLP 3.0 is no longer needed, also ensure code in # get_temp_folder and PresentationPluginapp_startup is removed - if Settings().value('presentations/thumbnail_scheme') == 'md5': + if self.settings.value('presentations/thumbnail_scheme') == 'md5': folder = md5_hash(bytes(self.file_path)) else: folder = self.file_path.name @@ -158,7 +158,7 @@ class PresentationDocument(object): """ # TODO: Can be removed when the upgrade path to OpenLP 3.0 is no longer needed, also ensure code in # get_thumbnail_folder and PresentationPluginapp_startup is removed - if Settings().value('presentations/thumbnail_scheme') == 'md5': + if self.settings.value('presentations/thumbnail_scheme') == 'md5': folder = md5_hash(bytes(self.file_path)) else: folder = self.file_path.name @@ -445,7 +445,7 @@ class PresentationController(object): """ Return whether the controller is currently enabled """ - if Settings().value(self.settings_section + '/' + self.name) == QtCore.Qt.Checked: + if Registry().get('settings').value(self.settings_section + '/' + self.name) == QtCore.Qt.Checked: return self.is_available() else: return False diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index b17bf0635..5f76d36d5 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -22,7 +22,6 @@ from PyQt5 import QtWidgets from openlp.core.common.i18n import UiStrings, translate -from openlp.core.common.settings import Settings from openlp.core.lib.settingstab import SettingsTab from openlp.core.lib.ui import critical_error_message_box from openlp.core.widgets.edits import PathEdit @@ -139,21 +138,21 @@ class PresentationTab(SettingsTab): for key in self.controllers: controller = self.controllers[key] checkbox = self.presenter_check_boxes[controller.name] - checkbox.setChecked(Settings().value(self.settings_section + '/' + controller.name)) + checkbox.setChecked(self.settings.value(self.settings_section + '/' + controller.name)) if controller.name == 'Powerpoint' and controller.is_available(): powerpoint_available = True - self.override_app_check_box.setChecked(Settings().value(self.settings_section + '/override app')) + self.override_app_check_box.setChecked(self.settings.value(self.settings_section + '/override app')) # Load PowerPoint settings - self.ppt_slide_click_check_box.setChecked(Settings().value(self.settings_section + - '/powerpoint slide click advance')) + self.ppt_slide_click_check_box.setChecked(self.settings.value(self.settings_section + + '/powerpoint slide click advance')) self.ppt_slide_click_check_box.setEnabled(powerpoint_available) - self.ppt_window_check_box.setChecked(Settings().value(self.settings_section + '/powerpoint control window')) + self.ppt_window_check_box.setChecked(self.settings.value(self.settings_section + '/powerpoint control window')) self.ppt_window_check_box.setEnabled(powerpoint_available) # load pdf-program settings - enable_pdf_program = Settings().value(self.settings_section + '/enable_pdf_program') + enable_pdf_program = self.settings.value(self.settings_section + '/enable_pdf_program') self.pdf_program_check_box.setChecked(enable_pdf_program) self.program_path_edit.setEnabled(enable_pdf_program) - self.program_path_edit.path = Settings().value(self.settings_section + '/pdf_program') + self.program_path_edit.path = self.settings.value(self.settings_section + '/pdf_program') def save(self): """ @@ -168,25 +167,25 @@ class PresentationTab(SettingsTab): if controller.is_available(): checkbox = self.presenter_check_boxes[controller.name] setting_key = self.settings_section + '/' + controller.name - if Settings().value(setting_key) != checkbox.checkState(): + if self.settings.value(setting_key) != checkbox.checkState(): changed = True - Settings().setValue(setting_key, checkbox.checkState()) + self.settings.setValue(setting_key, checkbox.checkState()) if checkbox.isChecked(): controller.start_process() else: controller.kill() setting_key = self.settings_section + '/override app' - if Settings().value(setting_key) != self.override_app_check_box.checkState(): - Settings().setValue(setting_key, self.override_app_check_box.checkState()) + if self.settings.value(setting_key) != self.override_app_check_box.checkState(): + self.settings.setValue(setting_key, self.override_app_check_box.checkState()) changed = True # Save powerpoint settings setting_key = self.settings_section + '/powerpoint slide click advance' - if Settings().value(setting_key) != self.ppt_slide_click_check_box.checkState(): - Settings().setValue(setting_key, self.ppt_slide_click_check_box.checkState()) + if self.settings.value(setting_key) != self.ppt_slide_click_check_box.checkState(): + self.settings.setValue(setting_key, self.ppt_slide_click_check_box.checkState()) changed = True setting_key = self.settings_section + '/powerpoint control window' - if Settings().value(setting_key) != self.ppt_window_check_box.checkState(): - Settings().setValue(setting_key, self.ppt_window_check_box.checkState()) + if self.settings.value(setting_key) != self.ppt_window_check_box.checkState(): + self.settings.setValue(setting_key, self.ppt_window_check_box.checkState()) changed = True # Save pdf-settings pdf_program_path = self.program_path_edit.path @@ -194,11 +193,11 @@ class PresentationTab(SettingsTab): # If the given program is blank disable using the program if pdf_program_path is None: enable_pdf_program = 0 - if pdf_program_path != Settings().value(self.settings_section + '/pdf_program'): - Settings().setValue(self.settings_section + '/pdf_program', pdf_program_path) + if pdf_program_path != self.settings.value(self.settings_section + '/pdf_program'): + self.settings.setValue(self.settings_section + '/pdf_program', pdf_program_path) changed = True - if enable_pdf_program != Settings().value(self.settings_section + '/enable_pdf_program'): - Settings().setValue(self.settings_section + '/enable_pdf_program', enable_pdf_program) + if enable_pdf_program != self.settings.value(self.settings_section + '/enable_pdf_program'): + self.settings.setValue(self.settings_section + '/enable_pdf_program', enable_pdf_program) changed = True if changed: self.settings_form.register_post_process('mediaitem_suffix_reset') diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index cdd16756d..0cdbf83b2 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -22,7 +22,7 @@ from PyQt5 import QtWidgets from openlp.core.common.i18n import UiStrings, translate -from openlp.core.common.settings import Settings +from openlp.core.common.registry import Registry from openlp.core.lib.ui import create_button_box from openlp.core.ui.icons import UiIcons from openlp.core.widgets.edits import SpellTextEdit @@ -68,7 +68,7 @@ class Ui_EditVerseDialog(object): self.verse_type_layout.addWidget(self.insert_button) self.verse_type_layout.addStretch() self.dialog_layout.addLayout(self.verse_type_layout) - if Settings().value('songs/enable chords'): + if Registry().get('settings').value('songs/enable chords'): self.transpose_layout = QtWidgets.QHBoxLayout() self.transpose_layout.setObjectName('transpose_layout') self.transpose_label = QtWidgets.QLabel(edit_verse_dialog) @@ -105,7 +105,7 @@ class Ui_EditVerseDialog(object): self.insert_button.setText(translate('SongsPlugin.EditVerseForm', '&Insert')) self.insert_button.setToolTip(translate('SongsPlugin.EditVerseForm', 'Split a slide into two by inserting a verse splitter.')) - if Settings().value('songs/enable chords'): + if Registry().get('settings').value('songs/enable chords'): self.transpose_label.setText(translate('SongsPlugin.EditVerseForm', 'Transpose:')) self.transpose_up_button.setText(translate('SongsPlugin.EditVerseForm', 'Up')) self.transpose_down_button.setText(translate('SongsPlugin.EditVerseForm', 'Down')) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 410591d43..8e9a0193b 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -25,7 +25,7 @@ import re from PyQt5 import QtCore, QtGui, QtWidgets from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings +from openlp.core.common.registry import Registry from openlp.core.lib.ui import critical_error_message_box from openlp.plugins.songs.forms.editversedialog import Ui_EditVerseDialog from openlp.plugins.songs.lib import VerseType, transpose_lyrics @@ -53,7 +53,7 @@ class EditVerseForm(QtWidgets.QDialog, Ui_EditVerseDialog): self.verse_text_edit.cursorPositionChanged.connect(self.on_cursor_position_changed) self.verse_type_combo_box.currentIndexChanged.connect(self.on_verse_type_combo_box_changed) self.forced_split_button.clicked.connect(self.on_forced_split_button_clicked) - if Settings().value('songs/enable chords'): + if Registry().get('settings').value('songs/enable chords'): self.transpose_down_button.clicked.connect(self.on_transpose_down_button_clicked) self.transpose_up_button.clicked.connect(self.on_transpose_up_button_clicked) @@ -231,7 +231,7 @@ class EditVerseForm(QtWidgets.QDialog, Ui_EditVerseDialog): """ Test if any invalid chords has been entered before closing the verse editor """ - if Settings().value('songs/enable chords'): + if Registry().get('settings').value('songs/enable chords'): try: transpose_lyrics(self.verse_text_edit.toPlainText(), 1) super(EditVerseForm, self).accept() diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 68a411a81..4f96c788a 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -28,7 +28,6 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import UiStrings, translate from openlp.core.common.registry import Registry -from openlp.core.common.settings import Settings from openlp.core.lib import create_separated_list from openlp.core.lib.ui import critical_error_message_box from openlp.core.common.i18n import get_natural_key @@ -128,7 +127,7 @@ class SongExportForm(OpenLPWizard): self.output_directory_path_edit = PathEdit( self.export_song_page, PathEditType.Directories, dialog_caption=translate('SongsPlugin.ExportWizardForm', 'Select Destination Folder'), show_revert=False) - self.output_directory_path_edit.path = Settings().value('songs/last directory export') + self.output_directory_path_edit.path = self.settings.value('songs/last directory export') self.directory_label = QtWidgets.QLabel(self.export_song_page) self.directory_label.setObjectName('directory_label') self.grid_layout.addWidget(self.directory_label, 0, 0) @@ -191,7 +190,7 @@ class SongExportForm(OpenLPWizard): translate('SongsPlugin.ExportWizardForm', 'No Save Location specified'), translate('SongsPlugin.ExportWizardForm', 'You need to specify a directory.')) return False - Settings().setValue('songs/last directory export', self.output_directory_path_edit.path) + self.settings.setValue('songs/last directory export', self.output_directory_path_edit.path) return True elif self.currentPage() == self.progress_page: self.available_list_widget.clear() diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 0239dc6a6..2e528f5aa 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -27,7 +27,6 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import UiStrings, translate from openlp.core.common.mixins import RegistryProperties -from openlp.core.common.settings import Settings from openlp.core.lib.ui import critical_error_message_box from openlp.core.widgets.dialogs import FileDialog from openlp.core.widgets.edits import PathEdit @@ -198,7 +197,7 @@ class SongImportForm(OpenLPWizard, RegistryProperties): return True elif self.currentPage() == self.source_page: this_format = self.current_format - Settings().setValue('songs/last import type', this_format) + self.settings.setValue('songs/last import type', this_format) select_mode, class_, error_msg = SongFormat.get(this_format, 'selectMode', 'class', 'invalidSourceMsg') if select_mode == SongFormatSelect.MultipleFiles: import_source = self.get_list_of_paths(self.format_widgets[this_format]['file_list_widget']) @@ -232,13 +231,13 @@ class SongImportForm(OpenLPWizard, RegistryProperties): filters += '{text} (*)'.format(text=UiStrings().AllFiles) file_paths, filter_used = FileDialog.getOpenFileNames( self, title, - Settings().value(self.plugin.settings_section + '/last directory import'), filters) + self.settings.value(self.plugin.settings_section + '/last directory import'), filters) for file_path in file_paths: list_item = QtWidgets.QListWidgetItem(str(file_path)) list_item.setData(QtCore.Qt.UserRole, file_path) listbox.addItem(list_item) if file_paths: - Settings().setValue(self.plugin.settings_section + '/last directory import', file_paths[0].parent) + self.settings.setValue(self.plugin.settings_section + '/last directory import', file_paths[0].parent) def get_list_of_paths(self, list_box): """ @@ -290,7 +289,7 @@ class SongImportForm(OpenLPWizard, RegistryProperties): self.restart() self.finish_button.setVisible(False) self.cancel_button.setVisible(True) - last_import_type = Settings().value('songs/last import type') + last_import_type = self.settings.value('songs/last import type') if last_import_type < 0 or last_import_type >= self.format_combo_box.count(): last_import_type = 0 self.format_combo_box.setCurrentIndex(last_import_type) @@ -349,7 +348,7 @@ class SongImportForm(OpenLPWizard, RegistryProperties): :rtype: None """ file_path, filter_used = FileDialog.getSaveFileName( - self, Settings().value(self.plugin.settings_section + '/last directory import')) + self, self.settings.value(self.plugin.settings_section + '/last directory import')) if file_path is None: return file_path.write_text(self.error_report_text_edit.toPlainText(), encoding='utf-8') @@ -400,7 +399,7 @@ class SongImportForm(OpenLPWizard, RegistryProperties): path_edit.filters = filters + ';;' + path_edit.filters else: path_edit.filters = filters - path_edit.path = Settings().value(self.plugin.settings_section + '/last directory import') + path_edit.path = self.settings.value(self.plugin.settings_section + '/last directory import') file_path_layout.addWidget(path_edit) import_layout.addLayout(file_path_layout) import_layout.addSpacerItem(self.stack_spacer) diff --git a/openlp/plugins/songs/forms/songselectform.py b/openlp/plugins/songs/forms/songselectform.py index d89db2b12..678d57570 100644 --- a/openlp/plugins/songs/forms/songselectform.py +++ b/openlp/plugins/songs/forms/songselectform.py @@ -28,7 +28,6 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import translate from openlp.core.common.mixins import RegistryProperties -from openlp.core.common.settings import Settings from openlp.core.threading import ThreadWorker, run_thread from openlp.plugins.songs.forms.songselectdialog import Ui_SongSelectDialog from openlp.plugins.songs.lib.songselect import SongSelectImport @@ -118,13 +117,13 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog, RegistryProperties) self.search_combobox.clear() self.search_results_widget.clear() self.view_button.setEnabled(False) - if Settings().contains(self.plugin.settings_section + '/songselect password'): - self.username_edit.setText(Settings().value(self.plugin.settings_section + '/songselect username')) - self.password_edit.setText(Settings().value(self.plugin.settings_section + '/songselect password')) + if self.settings.contains(self.plugin.settings_section + '/songselect password'): + self.username_edit.setText(self.settings.value(self.plugin.settings_section + '/songselect username')) + self.password_edit.setText(self.settings.value(self.plugin.settings_section + '/songselect password')) self.save_password_checkbox.setChecked(True) - if Settings().contains(self.plugin.settings_section + '/songselect searches'): + if self.settings.contains(self.plugin.settings_section + '/songselect searches'): self.search_combobox.addItems( - Settings().value(self.plugin.settings_section + '/songselect searches').split('|')) + self.settings.value(self.plugin.settings_section + '/songselect searches').split('|')) self.username_edit.setFocus() return QtWidgets.QDialog.exec(self) @@ -281,11 +280,11 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog, RegistryProperties) 'in the public domain.') ) if self.save_password_checkbox.isChecked(): - Settings().setValue(self.plugin.settings_section + '/songselect username', self.username_edit.text()) - Settings().setValue(self.plugin.settings_section + '/songselect password', self.password_edit.text()) + self.settings.setValue(self.plugin.settings_section + '/songselect username', self.username_edit.text()) + self.settings.setValue(self.plugin.settings_section + '/songselect password', self.password_edit.text()) else: - Settings().remove(self.plugin.settings_section + '/songselect username') - Settings().remove(self.plugin.settings_section + '/songselect password') + self.settings.remove(self.plugin.settings_section + '/songselect username') + self.settings.remove(self.plugin.settings_section + '/songselect password') self.stacked_widget.setCurrentIndex(1) self.login_progress_bar.setVisible(False) self.login_progress_bar.setValue(0) @@ -315,7 +314,7 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog, RegistryProperties) self.application.process_events() self.song_count = 0 search_history = self.search_combobox.getItems() - Settings().setValue(self.plugin.settings_section + '/songselect searches', '|'.join(search_history)) + self.settings.setValue(self.plugin.settings_section + '/songselect searches', '|'.join(search_history)) # Create thread and run search worker = SearchWorker(self.song_select_importer, self.search_combobox.currentText()) worker.show_info.connect(self.on_search_show_info) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index fb400ee36..14e1d0ede 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -30,7 +30,7 @@ from PyQt5 import QtWidgets from openlp.core.common import CONTROL_CHARS from openlp.core.common.applocation import AppLocation from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings +from openlp.core.common.registry import Registry from openlp.core.display.render import remove_tags from openlp.plugins.songs.lib.db import Author, MediaFile, Song from openlp.plugins.songs.lib.ui import SongStrings @@ -558,7 +558,7 @@ def transpose_lyrics(lyrics, transpose_value): # Split text by verse delimiter - both normal and optional verse_list = re.split(r'(---\[.+?:.+?\]---|\[---\])', lyrics) transposed_lyrics = '' - notation = Settings().value('songs/chord notation') + notation = Registry().get('settings').value('songs/chord notation') for verse in verse_list: if verse.startswith('---[') or verse == '[---]': transposed_lyrics += verse diff --git a/openlp/plugins/songs/lib/importers/chordpro.py b/openlp/plugins/songs/lib/importers/chordpro.py index 3fb6932c6..5b8dc34e6 100644 --- a/openlp/plugins/songs/lib/importers/chordpro.py +++ b/openlp/plugins/songs/lib/importers/chordpro.py @@ -26,7 +26,6 @@ import logging import re from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.plugins.songs.lib.importers.songimport import SongImport from openlp.plugins.songs.lib.db import AuthorType @@ -109,8 +108,8 @@ class ChordProImport(SongImport): if current_verse.strip(): # Add collected verse to the lyrics # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value( - 'songs/disable chords import'): + if not self.settings.value('songs/enable chords') or \ + self.settings.value('songs/disable chords import'): current_verse = re.sub(r'\[.*?\]', '', current_verse) self.add_verse(current_verse.rstrip(), current_verse_type) current_verse_type = 'v' @@ -123,7 +122,8 @@ class ChordProImport(SongImport): elif tag_name in ['end_of_chorus', 'eoc']: # Add collected chorus to the lyrics # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value('songs/disable chords import'): + if not self.settings.value('songs/enable chords') or \ + self.settings.value('songs/disable chords import'): current_verse = re.sub(r'\[.*?\]', '', current_verse) self.add_verse(current_verse.rstrip(), current_verse_type) current_verse_type = 'v' @@ -132,8 +132,8 @@ class ChordProImport(SongImport): if current_verse.strip(): # Add collected verse to the lyrics # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value( - 'songs/disable chords import'): + if not self.settings.value('songs/enable chords') or \ + self.settings.value('songs/disable chords import'): current_verse = re.sub(r'\[.*?\]', '', current_verse) self.add_verse(current_verse.rstrip(), current_verse_type) current_verse_type = 'v' @@ -146,8 +146,8 @@ class ChordProImport(SongImport): if self.verses and self.title: if current_verse.strip(): # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value( - 'songs/disable chords import'): + if not self.settings.value('songs/enable chords') or \ + self.settings.value('songs/disable chords import'): current_verse = re.sub(r'\[.*?\]', '', current_verse) self.add_verse(current_verse.rstrip(), current_verse_type) if not self.finish(): @@ -170,7 +170,8 @@ class ChordProImport(SongImport): elif line == '' and current_verse.strip() and current_verse_type != 'c': # Add collected verse to the lyrics # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value('songs/disable chords import'): + if not self.settings.value('songs/enable chords') or \ + self.settings.value('songs/disable chords import'): current_verse = re.sub(r'\[.*?\]', '', current_verse) self.add_verse(current_verse.rstrip(), current_verse_type) current_verse_type = 'v' @@ -182,7 +183,7 @@ class ChordProImport(SongImport): current_verse += line + '\n' if current_verse.strip(): # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value( + if not self.settings.value('songs/enable chords') or self.settings.value( 'songs/disable chords import'): current_verse = re.sub(r'\[.*?\]', '', current_verse) self.add_verse(current_verse.rstrip(), current_verse_type) diff --git a/openlp/plugins/songs/lib/importers/opensong.py b/openlp/plugins/songs/lib/importers/opensong.py index 9eac057b4..db8b5f643 100644 --- a/openlp/plugins/songs/lib/importers/opensong.py +++ b/openlp/plugins/songs/lib/importers/opensong.py @@ -25,7 +25,6 @@ from lxml import objectify, etree from openlp.core.common import normalize_str from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.importers.songimport import SongImport from openlp.plugins.songs.lib.ui import SongStrings @@ -254,7 +253,7 @@ class OpenSongImport(SongImport): verses[verse_tag][verse_num][inst] = [] our_verse_order.append([verse_tag, verse_num, inst]) # If chords exists insert them - if chords and Settings().value('songs/enable chords') and not Settings().value( + if chords and self.settings.value('songs/enable chords') and not self.settings.value( 'songs/disable chords import'): offset = 0 for (column, chord) in chords: diff --git a/openlp/plugins/songs/lib/importers/songbeamer.py b/openlp/plugins/songs/lib/importers/songbeamer.py index 9cca17bbf..56c783690 100644 --- a/openlp/plugins/songs/lib/importers/songbeamer.py +++ b/openlp/plugins/songs/lib/importers/songbeamer.py @@ -30,7 +30,6 @@ from pathlib import Path from openlp.core.common import get_file_encoding, is_macosx, is_win from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.importers.songimport import SongImport @@ -223,7 +222,7 @@ class SongBeamerImport(SongImport): :param linenumber: Number of the current line :param line: The line of lyrics to insert chords """ - if self.chord_table and Settings().value('songs/enable chords') and not Settings().value( + if self.chord_table and self.settings.value('songs/enable chords') and not self.settings.value( 'songs/disable chords import') and line_number in self.chord_table: line_idx = sorted(self.chord_table[line_number].keys(), reverse=True) for idx in line_idx: diff --git a/openlp/plugins/songs/lib/importers/songimport.py b/openlp/plugins/songs/lib/importers/songimport.py index a4b8a52ab..bfc8a4fd9 100644 --- a/openlp/plugins/songs/lib/importers/songimport.py +++ b/openlp/plugins/songs/lib/importers/songimport.py @@ -78,6 +78,7 @@ class SongImport(QtCore.QObject): self.stop_import_flag = False self.set_defaults() Registry().register_function('openlp_stop_wizard', self.stop_import) + self.settings = Registry().get('settings') def set_defaults(self): """ diff --git a/openlp/plugins/songs/lib/importers/videopsalm.py b/openlp/plugins/songs/lib/importers/videopsalm.py index b1ed44fa9..3c9c9d97b 100644 --- a/openlp/plugins/songs/lib/importers/videopsalm.py +++ b/openlp/plugins/songs/lib/importers/videopsalm.py @@ -27,7 +27,6 @@ import re from pathlib import Path from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.plugins.songs.lib.db import AuthorType from openlp.plugins.songs.lib.importers.songimport import SongImport @@ -125,7 +124,8 @@ class VideoPsalmImport(SongImport): continue verse_text = verse['Text'] # Strip out chords if set up to - if not Settings().value('songs/enable chords') or Settings().value('songs/disable chords import'): + if not self.settings.value('songs/enable chords') or \ + self.settings.value('songs/disable chords import'): verse_text = re.sub(r'\[.*?\]', '', verse_text) self.add_verse(verse_text, 'v') if not self.finish(): diff --git a/openlp/plugins/songs/lib/openlyricsxml.py b/openlp/plugins/songs/lib/openlyricsxml.py index 01f56c3c5..c20dbd8e7 100644 --- a/openlp/plugins/songs/lib/openlyricsxml.py +++ b/openlp/plugins/songs/lib/openlyricsxml.py @@ -61,7 +61,7 @@ import re from lxml import etree, objectify from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings +from openlp.core.common.registry import Registry from openlp.core.lib.formattingtags import FormattingTags from openlp.core.version import get_version from openlp.plugins.songs.lib import VerseType, clean_song @@ -625,7 +625,8 @@ class OpenLyrics(object): return text # Convert chords to ChordPro format which OpenLP uses internally elif element.tag == NSMAP.format(tag='chord'): - if Settings().value('songs/enable chords') and not Settings().value('songs/disable chords import'): + if Registry().get('settings').value('songs/enable chords') and not \ + Registry().get('settings').value('songs/disable chords import'): text += '[{chord}]'.format(chord=element.get('name')) if element.tail: # Append tail text at chord element. diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index 3099ccb83..cca5d9397 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -22,7 +22,6 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import translate -from openlp.core.common.settings import Settings from openlp.core.lib.settingstab import SettingsTab from openlp.plugins.songs.lib.db import AuthorType @@ -211,19 +210,18 @@ class SongsTab(SettingsTab): self.chord_notation = 'neo-latin' def on_footer_reset_button_clicked(self): - self.footer_edit_box.setPlainText(Settings().get_default_value('songs/footer template')) + self.footer_edit_box.setPlainText(self.settings.get_default_value('songs/footer template')) def load(self): - settings = Settings() - settings.beginGroup(self.settings_section) - self.tool_bar = settings.value('display songbar') - self.update_edit = settings.value('update service on edit') - self.update_load = settings.value('add song from service') - self.songbook_slide = settings.value('add songbook slide') - self.enable_chords = settings.value('enable chords') - self.chord_notation = settings.value('chord notation') - self.mainview_chords = settings.value('mainview chords') - self.disable_chords_import = settings.value('disable chords import') + self.settings.beginGroup(self.settings_section) + self.tool_bar = self.settings.value('display songbar') + self.update_edit = self.settings.value('update service on edit') + self.update_load = self.settings.value('add song from service') + self.songbook_slide = self.settings.value('add songbook slide') + self.enable_chords = self.settings.value('enable chords') + self.chord_notation = self.settings.value('chord notation') + self.mainview_chords = self.settings.value('mainview chords') + self.disable_chords_import = self.settings.value('disable chords import') self.tool_bar_active_check_box.setChecked(self.tool_bar) self.update_on_edit_check_box.setChecked(self.update_edit) self.add_from_service_check_box.setChecked(self.update_load) @@ -236,24 +234,23 @@ class SongsTab(SettingsTab): self.neolatin_notation_radio_button.setChecked(True) else: self.english_notation_radio_button.setChecked(True) - self.footer_edit_box.setPlainText(settings.value('footer template')) - settings.endGroup() + self.footer_edit_box.setPlainText(self.settings.value('footer template')) + self.settings.endGroup() def save(self): - settings = Settings() - settings.beginGroup(self.settings_section) - settings.setValue('display songbar', self.tool_bar) - settings.setValue('update service on edit', self.update_edit) - settings.setValue('add song from service', self.update_load) - settings.setValue('enable chords', self.chords_group_box.isChecked()) - settings.setValue('mainview chords', self.mainview_chords) - settings.setValue('disable chords import', self.disable_chords_import) - settings.setValue('chord notation', self.chord_notation) + self.settings.beginGroup(self.settings_section) + self.settings.setValue('display songbar', self.tool_bar) + self.settings.setValue('update service on edit', self.update_edit) + self.settings.setValue('add song from service', self.update_load) + self.settings.setValue('enable chords', self.chords_group_box.isChecked()) + self.settings.setValue('mainview chords', self.mainview_chords) + self.settings.setValue('disable chords import', self.disable_chords_import) + self.settings.setValue('chord notation', self.chord_notation) # Only save footer template if it has been changed. This allows future updates - if self.footer_edit_box.toPlainText() != Settings().get_default_value('songs/footer template'): - settings.setValue('footer template', self.footer_edit_box.toPlainText()) - settings.setValue('add songbook slide', self.songbook_slide) - settings.endGroup() + if self.footer_edit_box.toPlainText() != self.settings.get_default_value('songs/footer template'): + self.settings.setValue('footer template', self.footer_edit_box.toPlainText()) + self.settings.setValue('add songbook slide', self.songbook_slide) + self.settings.endGroup() if self.tab_visited: - self.settings_form.register_post_process('songs_config_updated') + self.self.settings_form.register_post_process('songs_config_updated') self.tab_visited = False diff --git a/tests/functional/openlp_plugins/images/test_imagetab.py b/tests/functional/openlp_plugins/images/test_imagetab.py index 4eee560dd..1d7585855 100644 --- a/tests/functional/openlp_plugins/images/test_imagetab.py +++ b/tests/functional/openlp_plugins/images/test_imagetab.py @@ -51,6 +51,7 @@ class TestImageMediaItem(TestCase, TestMixin): Registry().register('settings_form', MagicMock()) self.setup_application() self.build_settings() + Registry().register('settings', Settings()) Settings().extend_default_settings(__default_settings__) self.parent = QtWidgets.QMainWindow() self.form = ImageTab(self.parent, 'Images', None, None) diff --git a/tests/functional/openlp_plugins/presentations/test_impresscontroller.py b/tests/functional/openlp_plugins/presentations/test_impresscontroller.py index b32dfb3f3..30e6079c8 100644 --- a/tests/functional/openlp_plugins/presentations/test_impresscontroller.py +++ b/tests/functional/openlp_plugins/presentations/test_impresscontroller.py @@ -26,6 +26,8 @@ from tempfile import mkdtemp from unittest import TestCase from unittest.mock import MagicMock, call, patch +from openlp.core.common.registry import Registry +from openlp.core.common.settings import Settings from openlp.plugins.presentations.lib.impresscontroller import ImpressController, ImpressDocument, TextType from tests.helpers.testmixin import TestMixin from tests.utils.constants import RESOURCE_PATH @@ -167,6 +169,9 @@ class TestImpressDocument(TestCase): mocked_plugin = MagicMock() mocked_plugin.settings_section = 'presentations' self.file_name = RESOURCE_PATH / 'presentations' / 'test.pptx' + self.settings = Settings() + Registry.create() + Registry().register('settings', self.settings) self.ppc = ImpressController(mocked_plugin) self.doc = ImpressDocument(self.ppc, self.file_name) diff --git a/tests/functional/openlp_plugins/presentations/test_pdfcontroller.py b/tests/functional/openlp_plugins/presentations/test_pdfcontroller.py index 9da71bdb2..da8a4eef1 100644 --- a/tests/functional/openlp_plugins/presentations/test_pdfcontroller.py +++ b/tests/functional/openlp_plugins/presentations/test_pdfcontroller.py @@ -33,6 +33,7 @@ from PyQt5 import QtCore, QtGui from openlp.core.common import is_macosx, is_linux, is_win from openlp.core.common.settings import Settings +from openlp.core.common.registry import Registry from openlp.core.display.screens import ScreenList from openlp.plugins.presentations.lib.pdfcontroller import PdfController, PdfDocument from tests.helpers.testmixin import TestMixin @@ -89,6 +90,7 @@ class TestPdfController(TestCase, TestMixin): self.desktop.screenGeometry.return_value = SCREEN['size'] self.screens = ScreenList.create(self.desktop) Settings().extend_default_settings(__default_settings__) + Registry().register('settings', Settings()) self.temp_folder_path = Path(mkdtemp()) self.thumbnail_folder_path = Path(mkdtemp()) self.mock_plugin = MagicMock() @@ -99,6 +101,7 @@ class TestPdfController(TestCase, TestMixin): Delete all the C++ objects at the end so that we don't have a segfault """ del self.screens + Registry().remove('settings') self.destroy_settings() rmtree(self.thumbnail_folder_path) rmtree(self.temp_folder_path) diff --git a/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py b/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py index 535da7493..727c44216 100644 --- a/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py +++ b/tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py @@ -28,6 +28,7 @@ from unittest import TestCase from unittest.mock import MagicMock, patch from openlp.core.common import is_win +from openlp.core.common.registry import Registry from openlp.core.common.settings import Settings from openlp.plugins.presentations.lib.powerpointcontroller import PowerpointController, PowerpointDocument, \ _get_text_from_shapes @@ -108,6 +109,8 @@ class TestPowerpointDocument(TestCase, TestMixin): self.file_name = os.path.join(TEST_RESOURCES_PATH, 'presentations', 'test.pptx') self.real_controller = PowerpointController(self.mock_plugin) Settings().extend_default_settings(__default_settings__) + Registry.create() + Registry().register('settings', Settings()) def tearDown(self): """ diff --git a/tests/functional/openlp_plugins/songs/test_chordproimport.py b/tests/functional/openlp_plugins/songs/test_chordproimport.py index 55883f4d5..023ebf687 100644 --- a/tests/functional/openlp_plugins/songs/test_chordproimport.py +++ b/tests/functional/openlp_plugins/songs/test_chordproimport.py @@ -21,8 +21,6 @@ """ This module contains tests for the OpenSong song importer. """ -from unittest.mock import MagicMock, patch - from tests.helpers.songfileimport import SongImportTestHelper from tests.utils.constants import RESOURCE_PATH @@ -37,15 +35,12 @@ class TestChordProFileImport(SongImportTestHelper): self.importer_module_name = 'chordpro' super(TestChordProFileImport, self).__init__(*args, **kwargs) - @patch('openlp.plugins.songs.lib.importers.chordpro.Settings') - def test_song_import(self, mocked_settings): + def test_song_import(self): """ Test that loading an ChordPro file works correctly on various files """ # Mock out the settings - always return False - mocked_returned_settings = MagicMock() - mocked_returned_settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False - mocked_settings.return_value = mocked_returned_settings + self.settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False # Do the test import self.file_import([TEST_PATH / 'swing-low.chordpro'], self.load_external_result_data(TEST_PATH / 'swing-low.json')) diff --git a/tests/functional/openlp_plugins/songs/test_editverseform.py b/tests/functional/openlp_plugins/songs/test_editverseform.py index ac6caf648..86a449ef3 100644 --- a/tests/functional/openlp_plugins/songs/test_editverseform.py +++ b/tests/functional/openlp_plugins/songs/test_editverseform.py @@ -26,16 +26,11 @@ from unittest.mock import MagicMock from PyQt5 import QtCore -from openlp.core.common.settings import Settings +from openlp.core.common.registry import Registry from openlp.plugins.songs.forms.editverseform import EditVerseForm from tests.helpers.testmixin import TestMixin -__default_settings__ = { - 'songs/enable chords': True, -} - - class TestEditVerseForm(TestCase, TestMixin): """ Test the functions in the :mod:`lib` module. @@ -46,7 +41,9 @@ class TestEditVerseForm(TestCase, TestMixin): """ self.setup_application() self.build_settings() - Settings().extend_default_settings(__default_settings__) + self.setting.setValue('songs/enable chords', True) + Registry.create() + Registry().register('settings', self.setting) self.edit_verse_form = EditVerseForm(None) QtCore.QLocale.setDefault(QtCore.QLocale('en_GB')) diff --git a/tests/functional/openlp_plugins/songs/test_lib.py b/tests/functional/openlp_plugins/songs/test_lib.py index 24b7f86b2..03313dc67 100644 --- a/tests/functional/openlp_plugins/songs/test_lib.py +++ b/tests/functional/openlp_plugins/songs/test_lib.py @@ -24,6 +24,7 @@ This module contains tests for the lib submodule of the Songs plugin. from unittest import TestCase from unittest.mock import MagicMock, PropertyMock, patch +from openlp.core.common.registry import Registry from openlp.plugins.songs.lib import VerseType, clean_string, clean_title, strip_rtf, transpose_chord, transpose_lyrics from openlp.plugins.songs.lib.songcompare import _op_length, _remove_typos, songs_probably_equal @@ -50,6 +51,9 @@ class TestLib(TestCase): i love that old cross where the dearest and best for a world of lost sinners was slain so ill cherish the old rugged cross till my trophies at last i lay down i will cling to the old rugged cross and exchange it some day for a crown''' + Registry.create() + Registry().register('settings', MagicMock()) + self.settings = Registry().get('settings') def test_clean_string(self): """ @@ -317,8 +321,7 @@ class TestLib(TestCase): 'ValueError exception should have been thrown for invalid chord' @patch('openlp.plugins.songs.lib.transpose_verse') - @patch('openlp.plugins.songs.lib.Settings') - def test_transpose_lyrics(self, mocked_settings, mocked_transpose_verse): + def test_transpose_lyrics(self, mocked_transpose_verse): """ Test that the transpose_lyrics() splits verses correctly """ @@ -329,9 +332,7 @@ class TestLib(TestCase): 'That saved a wretch like me.\n'\ '---[Verse:2]---\n'\ 'I once was lost but now I\'m found.' - mocked_returned_settings = MagicMock() - mocked_returned_settings.value.return_value = 'english' - mocked_settings.return_value = mocked_returned_settings + self.settings.value.return_value = 'english' # WHEN: Transposing the lyrics transpose_lyrics(lyrics, 1) diff --git a/tests/functional/openlp_plugins/songs/test_opensongimport.py b/tests/functional/openlp_plugins/songs/test_opensongimport.py index 2c0afc7ad..9ce0ca1d0 100644 --- a/tests/functional/openlp_plugins/songs/test_opensongimport.py +++ b/tests/functional/openlp_plugins/songs/test_opensongimport.py @@ -40,15 +40,12 @@ class TestOpenSongFileImport(SongImportTestHelper): self.importer_module_name = 'opensong' super(TestOpenSongFileImport, self).__init__(*args, **kwargs) - @patch('openlp.plugins.songs.lib.importers.opensong.Settings') - def test_song_import(self, mocked_settings): + def test_song_import(self): """ Test that loading an OpenSong file works correctly on various files """ # Mock out the settings - always return False - mocked_returned_settings = MagicMock() - mocked_returned_settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False - mocked_settings.return_value = mocked_returned_settings + self.settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False # Do the test import self.file_import([TEST_PATH / 'Amazing Grace'], self.load_external_result_data(TEST_PATH / 'Amazing Grace.json')) diff --git a/tests/functional/openlp_plugins/songs/test_songbeamerimport.py b/tests/functional/openlp_plugins/songs/test_songbeamerimport.py index c2a7cec35..1b3e9902a 100644 --- a/tests/functional/openlp_plugins/songs/test_songbeamerimport.py +++ b/tests/functional/openlp_plugins/songs/test_songbeamerimport.py @@ -40,15 +40,12 @@ class TestSongBeamerFileImport(SongImportTestHelper): self.importer_module_name = 'songbeamer' super(TestSongBeamerFileImport, self).__init__(*args, **kwargs) - @patch('openlp.plugins.songs.lib.importers.songbeamer.Settings') - def test_song_import(self, mocked_settings): + def test_song_import(self): """ Test that loading an SongBeamer file works correctly on various files """ # Mock out the settings - always return False - mocked_returned_settings = MagicMock() - mocked_returned_settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False - mocked_settings.return_value = mocked_returned_settings + self.settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False self.file_import([TEST_PATH / 'Amazing Grace.sng'], self.load_external_result_data(TEST_PATH / 'Amazing Grace.json')) self.file_import([TEST_PATH / 'Lobsinget dem Herrn.sng'], diff --git a/tests/functional/openlp_plugins/songs/test_songselect.py b/tests/functional/openlp_plugins/songs/test_songselect.py index d45890ec3..b2259f3d4 100644 --- a/tests/functional/openlp_plugins/songs/test_songselect.py +++ b/tests/functional/openlp_plugins/songs/test_songselect.py @@ -553,6 +553,7 @@ class TestSongSelectForm(TestCase, TestMixin): self.app.process_events = lambda: None Registry.create() Registry().register('application', self.app) + Registry().register('settings', MagicMock()) def test_create_form(self): """ @@ -802,10 +803,9 @@ class TestSongSelectForm(TestCase, TestMixin): assert ssform.search_button.isEnabled() is True assert ssform.search_combobox.isEnabled() is True - @patch('openlp.plugins.songs.forms.songselectform.Settings') @patch('openlp.plugins.songs.forms.songselectform.run_thread') @patch('openlp.plugins.songs.forms.songselectform.SearchWorker') - def test_on_search_button_clicked(self, MockedSearchWorker, mocked_run_thread, MockedSettings): + def test_on_search_button_clicked(self, MockedSearchWorker, mocked_run_thread): """ Test that search fields are disabled when search button is clicked. """ diff --git a/tests/functional/openlp_plugins/songs/test_videopsalm.py b/tests/functional/openlp_plugins/songs/test_videopsalm.py index b5b2642f2..af138f2a1 100644 --- a/tests/functional/openlp_plugins/songs/test_videopsalm.py +++ b/tests/functional/openlp_plugins/songs/test_videopsalm.py @@ -21,7 +21,6 @@ """ This module contains tests for the VideoPsalm song importer. """ -from unittest.mock import MagicMock, patch from tests.helpers.songfileimport import SongImportTestHelper from tests.utils.constants import RESOURCE_PATH @@ -37,15 +36,12 @@ class TestVideoPsalmFileImport(SongImportTestHelper): self.importer_module_name = 'videopsalm' super(TestVideoPsalmFileImport, self).__init__(*args, **kwargs) - @patch('openlp.plugins.songs.lib.importers.videopsalm.Settings') - def test_song_import(self, mocked_settings): + def test_song_import(self): """ Test that loading an VideoPsalm file works correctly on various files """ # Mock out the settings - always return False - mocked_returned_settings = MagicMock() - mocked_returned_settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False - mocked_settings.return_value = mocked_returned_settings + self.settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False # Do the test import self.file_import(TEST_PATH / 'videopsalm-as-safe-a-stronghold.json', self.load_external_result_data(TEST_PATH / 'as-safe-a-stronghold.json')) diff --git a/tests/helpers/songfileimport.py b/tests/helpers/songfileimport.py index 33499f350..bbb884b6f 100644 --- a/tests/helpers/songfileimport.py +++ b/tests/helpers/songfileimport.py @@ -42,12 +42,14 @@ class SongImportTestHelper(TestCase): self.importer_module = __import__('openlp.plugins.songs.lib.importers.%s' % self.importer_module_name, fromlist=[self.importer_class_name]) self.importer_class = getattr(self.importer_module, self.importer_class_name) + Registry.create() + Registry().register('settings', MagicMock()) + self.settings = Registry().get('settings') def setUp(self): """ Patch and set up the mocks required. """ - Registry.create() self.add_copyright_patcher = patch('openlp.plugins.songs.lib.importers.%s.%s.add_copyright' % (self.importer_module_name, self.importer_class_name)) self.add_verse_patcher = patch('openlp.plugins.songs.lib.importers.%s.%s.add_verse' % diff --git a/tests/interfaces/openlp_plugins/planningcenter/forms/test_selectplanform.py b/tests/interfaces/openlp_plugins/planningcenter/forms/test_selectplanform.py index bfc5b42d2..b89b40767 100644 --- a/tests/interfaces/openlp_plugins/planningcenter/forms/test_selectplanform.py +++ b/tests/interfaces/openlp_plugins/planningcenter/forms/test_selectplanform.py @@ -63,6 +63,7 @@ class TestSelectPlanForm(TestCase, TestMixin): self.setup_application() self.build_settings() State().load_settings() + Registry().register('settings', Settings()) Registry().register('main_window', MagicMock(service_manager_settings_section='servicemanager')) self.application_id = 'abc' self.secret = '123' diff --git a/tests/interfaces/openlp_plugins/planningcenter/lib/test_planningcentertab.py b/tests/interfaces/openlp_plugins/planningcenter/lib/test_planningcentertab.py index dc4bed581..434d22326 100644 --- a/tests/interfaces/openlp_plugins/planningcenter/lib/test_planningcentertab.py +++ b/tests/interfaces/openlp_plugins/planningcenter/lib/test_planningcentertab.py @@ -43,9 +43,9 @@ class TestPlanningCenterTab(TestCase, TestMixin): Create the UI """ self.setup_application() - self.registry = Registry() Registry.create() State().load_settings() + Registry().register('settings', Settings()) self.plugin = PlanningCenterPlugin() Settings().setValue('planningcenter/application_id', 'abc') Settings().setValue('planningcenter/secret', '123') @@ -62,7 +62,6 @@ class TestPlanningCenterTab(TestCase, TestMixin): """ del self.tab del self.dialog - del self.registry def test_bad_authentication_credentials(self): """ diff --git a/tests/interfaces/openlp_plugins/planningcenter/test_planningcenterplugin.py b/tests/interfaces/openlp_plugins/planningcenter/test_planningcenterplugin.py index 5d4e52ce4..b4bd3a55d 100644 --- a/tests/interfaces/openlp_plugins/planningcenter/test_planningcenterplugin.py +++ b/tests/interfaces/openlp_plugins/planningcenter/test_planningcenterplugin.py @@ -47,6 +47,7 @@ class TestPlanningCenterPlugin(TestCase, TestMixin): self.registry = Registry() Registry.create() State().load_settings() + Registry().register('settings', Settings()) self.plugin = PlanningCenterPlugin() self.settings_form = SettingsForm() diff --git a/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py b/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py index ca65ffb00..c6b89f7fa 100644 --- a/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py +++ b/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py @@ -54,6 +54,7 @@ class TestEditSongForm(TestCase, TestMixin): Registry().register('theme_manager', MagicMock()) self.build_settings() Settings().extend_default_settings(__default_settings__) + Registry().register('settings', Settings()) self.form = EditSongForm(MagicMock(), self.main_window, MagicMock()) def tearDown(self): diff --git a/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py b/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py index d2066305d..3e3519449 100644 --- a/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py +++ b/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py @@ -50,6 +50,7 @@ class TestEditVerseForm(TestCase, TestMixin): self.main_window = QtWidgets.QMainWindow() Registry().register('main_window', self.main_window) self.build_settings() + Registry().register('settings', Settings()) Settings().extend_default_settings(__default_settings__) self.form = EditVerseForm()