diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py index fb7da0e14..a236dbdf9 100644 --- a/openlp/core/lib/settingstab.py +++ b/openlp/core/lib/settingstab.py @@ -135,4 +135,4 @@ class SettingsTab(QtWidgets.QWidget, RegistryProperties): """ Tab has just been made visible to the user """ - self.tab_visited = True + pass diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index a59f94377..f58d53d68 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -1326,6 +1326,7 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtWidgets.QWidget, Ui_ServiceMa visible = not self.renderer.theme_level == ThemeLevel.Global self.theme_label.setVisible(visible) self.theme_combo_box.setVisible(visible) + self.regenerate_service_items() def regenerate_service_items(self, changed=False): """ diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index f8c3cbbc2..82d72694c 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -60,7 +60,8 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties): """ Execute the form """ - # load all the settings + # load all the + self.setting_list_widget.blockSignals(True) self.setting_list_widget.clear() while self.stacked_layout.count(): # take at 0 and the rest shuffle up. @@ -74,6 +75,7 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties): if plugin.settings_tab: self.insert_tab(plugin.settings_tab, plugin.is_active()) self.setting_list_widget.setCurrentRow(0) + self.setting_list_widget.blockSignals(False) return QtWidgets.QDialog.exec(self) def insert_tab(self, tab_widget, is_visible=True): @@ -177,6 +179,7 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties): # Check that the title of the tab (i.e. plugin name) is the same as the data in the list item if tab_widget.tab_title == list_item.data(QtCore.Qt.UserRole): # Make the matching tab visible + tab_widget.tab_visited = True self.stacked_layout.setCurrentIndex(tab_index) self.stacked_layout.currentWidget().tab_visible() diff --git a/tests/functional/openlp_core_ui/test_themetab.py b/tests/functional/openlp_core_ui/test_themetab.py new file mode 100644 index 000000000..c3bb6282d --- /dev/null +++ b/tests/functional/openlp_core_ui/test_themetab.py @@ -0,0 +1,84 @@ +# -*- 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.ThemeTab package. +""" +from unittest import TestCase + +from openlp.core.common import Registry +from openlp.core.ui.themestab import ThemesTab +from openlp.core.ui.settingsform import SettingsForm + +from tests.helpers.testmixin import TestMixin +from tests.functional import MagicMock + + +class TestThemeTab(TestCase, TestMixin): + + def setUp(self): + """ + Set up a few things for the tests + """ + Registry.create() + + def test_creation(self): + """ + Test that Themes Tab is created. + """ + # GIVEN: A new Advanced Tab + settings_form = SettingsForm(None) + + # WHEN: I create an advanced tab + themes_tab = ThemesTab(settings_form) + + # THEN: + self.assertEqual("Themes", themes_tab.tab_title, 'The tab title should be Theme') + + def test_save_triggers_processes_true(self): + """ + Test that the global theme event is triggered when the tab is visited. + """ + # GIVEN: A new Advanced Tab + settings_form = SettingsForm(None) + themes_tab = ThemesTab(settings_form) + Registry().register('renderer', MagicMock()) + themes_tab.tab_visited = True + # WHEN: I change search as type check box + themes_tab.save() + + # THEN: we should have two post save processed to run + self.assertEqual(1, len(settings_form.processes), 'One post save processes should be created') + + def test_save_triggers_processes_false(self): + """ + Test that the global theme event is not triggered when the tab is not visited. + """ + # GIVEN: A new Advanced Tab + settings_form = SettingsForm(None) + themes_tab = ThemesTab(settings_form) + Registry().register('renderer', MagicMock()) + themes_tab.tab_visited = False + # WHEN: I change search as type check box + themes_tab.save() + + # THEN: we should have two post save processed to run + self.assertEqual(0, len(settings_form.processes), 'No post save processes should be created')