- removed General section and introduced a Core section

- added test

bzr-revno: 2234
Fixes: https://launchpad.net/bugs/1133237
This commit is contained in:
Andreas Preikschat 2013-04-20 22:19:53 +02:00
commit ab9e0d7ba2
13 changed files with 103 additions and 65 deletions

View File

@ -111,10 +111,10 @@ class OpenLP(QtGui.QApplication):
# Decide how many screens we have and their size # Decide how many screens we have and their size
screens = ScreenList.create(self.desktop()) screens = ScreenList.create(self.desktop())
# First time checks in settings # First time checks in settings
has_run_wizard = Settings().value(u'general/has run wizard') has_run_wizard = Settings().value(u'core/has run wizard')
if not has_run_wizard: if not has_run_wizard:
if FirstTimeForm(screens).exec_() == QtGui.QDialog.Accepted: if FirstTimeForm(screens).exec_() == QtGui.QDialog.Accepted:
Settings().setValue(u'general/has run wizard', True) Settings().setValue(u'core/has run wizard', True)
# Correct stylesheet bugs # Correct stylesheet bugs
application_stylesheet = u'' application_stylesheet = u''
if not Settings().value(u'advanced/alternate rows'): if not Settings().value(u'advanced/alternate rows'):
@ -126,7 +126,7 @@ class OpenLP(QtGui.QApplication):
application_stylesheet += NT_REPAIR_STYLESHEET application_stylesheet += NT_REPAIR_STYLESHEET
if application_stylesheet: if application_stylesheet:
self.setStyleSheet(application_stylesheet) self.setStyleSheet(application_stylesheet)
show_splash = Settings().value(u'general/show splash') show_splash = Settings().value(u'core/show splash')
if show_splash: if show_splash:
self.splash = SplashScreen() self.splash = SplashScreen()
self.splash.show() self.splash.show()
@ -147,7 +147,7 @@ class OpenLP(QtGui.QApplication):
self.processEvents() self.processEvents()
if not has_run_wizard: if not has_run_wizard:
self.main_window.first_time() self.main_window.first_time()
update_check = Settings().value(u'general/update check') update_check = Settings().value(u'core/update check')
if update_check: if update_check:
VersionThread(self.main_window).start() VersionThread(self.main_window).start()
self.main_window.is_display_blank() self.main_window.is_display_blank()
@ -305,8 +305,10 @@ def main(args=None):
# Instance check # Instance check
if application.is_already_running(): if application.is_already_running():
sys.exit() sys.exit()
# Remove/convert obsolete settings.
Settings().remove_obsolete_settings()
# First time checks in settings # First time checks in settings
if not Settings().value(u'general/has run wizard'): if not Settings().value(u'core/has run wizard'):
if not FirstTimeLanguageForm().exec_(): if not FirstTimeLanguageForm().exec_():
# if cancel then stop processing # if cancel then stop processing
sys.exit() sys.exit()

View File

@ -247,15 +247,15 @@ class ScreenList(object):
# Add the screen settings to the settings dict. This has to be done here due to cyclic dependency. # Add the screen settings to the settings dict. This has to be done here due to cyclic dependency.
# Do not do this anywhere else. # Do not do this anywhere else.
screen_settings = { screen_settings = {
u'general/x position': self.current[u'size'].x(), u'core/x position': self.current[u'size'].x(),
u'general/y position': self.current[u'size'].y(), u'core/y position': self.current[u'size'].y(),
u'general/monitor': self.display_count - 1, u'core/monitor': self.display_count - 1,
u'general/height': self.current[u'size'].height(), u'core/height': self.current[u'size'].height(),
u'general/width': self.current[u'size'].width() u'core/width': self.current[u'size'].width()
} }
Settings.extend_default_settings(screen_settings) Settings.extend_default_settings(screen_settings)
settings = Settings() settings = Settings()
settings.beginGroup(u'general') settings.beginGroup(u'core')
monitor = settings.value(u'monitor') monitor = settings.value(u'monitor')
self.set_current_display(monitor) self.set_current_display(monitor)
self.display = settings.value(u'display on monitor') self.display = settings.value(u'display on monitor')

View File

@ -116,30 +116,30 @@ class Settings(QtCore.QSettings):
u'advanced/x11 bypass wm': X11_BYPASS_DEFAULT, u'advanced/x11 bypass wm': X11_BYPASS_DEFAULT,
u'crashreport/last directory': u'', u'crashreport/last directory': u'',
u'displayTags/html_tags': u'', u'displayTags/html_tags': u'',
u'general/audio repeat list': False, u'core/audio repeat list': False,
u'general/auto open': False, u'core/auto open': False,
u'general/auto preview': False, u'core/auto preview': False,
u'general/audio start paused': True, u'core/audio start paused': True,
u'general/auto unblank': False, u'core/auto unblank': False,
u'general/blank warning': False, u'core/blank warning': False,
u'general/ccli number': u'', u'core/ccli number': u'',
u'general/has run wizard': False, u'core/has run wizard': False,
u'general/language': u'[en]', u'core/language': u'[en]',
# This defaults to yesterday in order to force the update check to run when you've never run it before. # This defaults to yesterday in order to force the update check to run when you've never run it before.
u'general/last version test': datetime.datetime.now().date() - datetime.timedelta(days=1), u'core/last version test': datetime.datetime.now().date() - datetime.timedelta(days=1),
u'general/loop delay': 5, u'core/loop delay': 5,
u'general/recent files': [], u'core/recent files': [],
u'general/save prompt': False, u'core/save prompt': False,
u'general/screen blank': False, u'core/screen blank': False,
u'general/show splash': True, u'core/show splash': True,
u'general/songselect password': u'', u'core/songselect password': u'',
u'general/songselect username': u'', u'core/songselect username': u'',
u'general/update check': True, u'core/update check': True,
u'general/view mode': u'default', u'core/view mode': u'default',
# The other display settings (display position and dimensions) are defined in the ScreenList class due to a # The other display settings (display position and dimensions) are defined in the ScreenList class due to a
# circular dependency. # circular dependency.
u'general/display on monitor': True, u'core/display on monitor': True,
u'general/override position': False, u'core/override position': False,
u'images/background color': u'#000000', u'images/background color': u'#000000',
u'media/players': u'webkit', u'media/players': u'webkit',
u'media/override player': QtCore.Qt.Unchecked, u'media/override player': QtCore.Qt.Unchecked,
@ -304,7 +304,7 @@ class Settings(QtCore.QSettings):
# Changed during 1.9.x development. # Changed during 1.9.x development.
(u'bibles/bookname language', u'bibles/book name language', []), (u'bibles/bookname language', u'bibles/book name language', []),
(u'general/enable slide loop', u'advanced/slide limits', [(SlideLimits.Wrap, True), (SlideLimits.End, False)]), (u'general/enable slide loop', u'advanced/slide limits', [(SlideLimits.Wrap, True), (SlideLimits.End, False)]),
(u'songs/ccli number', u'general/ccli number', []), (u'songs/ccli number', u'core/ccli number', []),
(u'media/use phonon', u'', []), (u'media/use phonon', u'', []),
# Changed during 2.1.x development. # Changed during 2.1.x development.
(u'advanced/stylesheet fix', u'', []), (u'advanced/stylesheet fix', u'', []),
@ -315,7 +315,34 @@ class Settings(QtCore.QSettings):
(u'songs/last directory 1', u'songs/last directory import', []), (u'songs/last directory 1', u'songs/last directory import', []),
(u'songusage/last directory 1', u'songusage/last directory export', []), (u'songusage/last directory 1', u'songusage/last directory export', []),
(u'user interface/mainwindow splitter geometry', u'user interface/main window splitter geometry', []), (u'user interface/mainwindow splitter geometry', u'user interface/main window splitter geometry', []),
(u'shortcuts/makeLive', u'shortcuts/make_live', []) (u'shortcuts/makeLive', u'shortcuts/make_live', []),
(u'general/audio repeat list', u'core/audio repeat list', []),
(u'general/auto open', u'core/auto open', []),
(u'general/auto preview', u'core/auto preview', []),
(u'general/audio start paused', u'core/audio start paused', []),
(u'general/auto unblank', u'core/auto unblank', []),
(u'general/blank warning', u'core/blank warning', []),
(u'general/ccli number', u'core/ccli number', []),
(u'general/has run wizard', u'core/has run wizard', []),
(u'general/language', u'core/language', []),
(u'general/last version test', u'core/last version test', []),
(u'general/loop delay', u'core/loop delay', []),
(u'general/recent files', u'core/recent files', []),
(u'general/save prompt', u'core/save prompt', []),
(u'general/screen blank', u'core/screen blank', []),
(u'general/show splash', u'core/show splash', []),
(u'general/songselect password', u'core/songselect password', []),
(u'general/songselect username', u'core/songselect username', []),
(u'general/update check', u'core/update check', []),
(u'general/view mode', u'core/view mode', []),
(u'general/display on monitor', u'core/display on monitor', []),
(u'general/override position', u'core/override position', []),
(u'general/x position', u'core/x position', []),
(u'general/y position', u'core/y position', []),
(u'general/monitor', u'core/monitor', []),
(u'general/height', u'core/height', []),
(u'general/monitor', u'core/monitor', []),
(u'general/width', u'core/width', [])
] ]
@staticmethod @staticmethod

View File

@ -118,7 +118,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
check_directory_exists(os.path.join(unicode(gettempdir(), get_filesystem_encoding()), u'openlp')) check_directory_exists(os.path.join(unicode(gettempdir(), get_filesystem_encoding()), u'openlp'))
self.noInternetFinishButton.setVisible(False) self.noInternetFinishButton.setVisible(False)
# Check if this is a re-run of the wizard. # Check if this is a re-run of the wizard.
self.hasRunWizard = Settings().value(u'general/has run wizard') self.hasRunWizard = Settings().value(u'core/has run wizard')
# Sort out internet access for downloads # Sort out internet access for downloads
if self.web_access: if self.web_access:
songs = self.config.get(u'songs', u'languages') songs = self.config.get(u'songs', u'languages')
@ -252,7 +252,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
self.application.set_busy_cursor() self.application.set_busy_cursor()
self._performWizard() self._performWizard()
self.application.set_normal_cursor() self.application.set_normal_cursor()
Settings().setValue(u'general/has run wizard', True) Settings().setValue(u'core/has run wizard', True)
self.close() self.close()
def urlGetFile(self, url, fpath): def urlGetFile(self, url, fpath):
@ -459,7 +459,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
self.urlGetFile(u'%s%s' % (self.web, theme), os.path.join(themes_destination, theme)) self.urlGetFile(u'%s%s' % (self.web, theme), os.path.join(themes_destination, theme))
# Set Default Display # Set Default Display
if self.displayComboBox.currentIndex() != -1: if self.displayComboBox.currentIndex() != -1:
Settings().setValue(u'General/monitor', self.displayComboBox.currentIndex()) Settings().setValue(u'core/monitor', self.displayComboBox.currentIndex())
self.screens.set_current_display(self.displayComboBox.currentIndex()) self.screens.set_current_display(self.displayComboBox.currentIndex())
# Set Global Theme # Set Global Theme
if self.themeComboBox.currentIndex() != -1: if self.themeComboBox.currentIndex() != -1:

View File

@ -49,7 +49,7 @@ class GeneralTab(SettingsTab):
self.screens = ScreenList() self.screens = ScreenList()
self.icon_path = u':/icon/openlp-logo-16x16.png' self.icon_path = u':/icon/openlp-logo-16x16.png'
general_translated = translate('OpenLP.GeneralTab', 'General') general_translated = translate('OpenLP.GeneralTab', 'General')
SettingsTab.__init__(self, parent, u'General', general_translated) SettingsTab.__init__(self, parent, u'Core', general_translated)
def setupUi(self): def setupUi(self):
""" """

View File

@ -357,7 +357,7 @@ class MainDisplay(Display):
# Single screen active # Single screen active
if self.screens.display_count == 1: if self.screens.display_count == 1:
# Only make visible if setting enabled. # Only make visible if setting enabled.
if Settings().value(u'general/display on monitor'): if Settings().value(u'core/display on monitor'):
self.setVisible(True) self.setVisible(True)
else: else:
self.setVisible(True) self.setVisible(True)
@ -405,7 +405,7 @@ class MainDisplay(Display):
self.footer(service_item.foot_text) self.footer(service_item.foot_text)
# if was hidden keep it hidden # if was hidden keep it hidden
if self.hide_mode and self.is_live and not service_item.is_media(): if self.hide_mode and self.is_live and not service_item.is_media():
if Settings().value(u'general/auto unblank'): if Settings().value(u'core/auto unblank'):
Registry().execute(u'slidecontroller_live_unblank') Registry().execute(u'slidecontroller_live_unblank')
else: else:
self.hide_display(self.hide_mode) self.hide_display(self.hide_mode)
@ -427,7 +427,7 @@ class MainDisplay(Display):
log.debug(u'hide_display mode = %d', mode) log.debug(u'hide_display mode = %d', mode)
if self.screens.display_count == 1: if self.screens.display_count == 1:
# Only make visible if setting enabled. # Only make visible if setting enabled.
if not Settings().value(u'general/display on monitor'): if not Settings().value(u'core/display on monitor'):
return return
if mode == HideMode.Screen: if mode == HideMode.Screen:
self.frame.evaluateJavaScript(u'show_blank("desktop");') self.frame.evaluateJavaScript(u'show_blank("desktop");')
@ -450,7 +450,7 @@ class MainDisplay(Display):
log.debug(u'show_display') log.debug(u'show_display')
if self.screens.display_count == 1: if self.screens.display_count == 1:
# Only make visible if setting enabled. # Only make visible if setting enabled.
if not Settings().value(u'general/display on monitor'): if not Settings().value(u'core/display on monitor'):
return return
self.frame.evaluateJavaScript('show_blank("show");') self.frame.evaluateJavaScript('show_blank("show");')
if self.isHidden(): if self.isHidden():

View File

@ -476,7 +476,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.arguments = self.application.args self.arguments = self.application.args
# Set up settings sections for the main application (not for use by plugins). # Set up settings sections for the main application (not for use by plugins).
self.ui_settings_section = u'user interface' self.ui_settings_section = u'user interface'
self.general_settings_section = u'general' self.general_settings_section = u'core'
self.advanced_settings_section = u'advanced' self.advanced_settings_section = u'advanced'
self.shortcuts_settings_section = u'shortcuts' self.shortcuts_settings_section = u'shortcuts'
self.service_manager_settings_section = u'servicemanager' self.service_manager_settings_section = u'servicemanager'
@ -491,7 +491,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.new_data_path = None self.new_data_path = None
self.copy_data = False self.copy_data = False
Settings().set_up_default_values() Settings().set_up_default_values()
Settings().remove_obsolete_settings()
self.service_not_saved = False self.service_not_saved = False
self.about_form = AboutForm(self) self.about_form = AboutForm(self)
self.media_controller = MediaController() self.media_controller = MediaController()

View File

@ -415,7 +415,7 @@ class MediaController(object):
elif not hidden or controller.media_info.is_background or service_item.will_auto_start: elif not hidden or controller.media_info.is_background or service_item.will_auto_start:
autoplay = True autoplay = True
# Unblank on load set # Unblank on load set
elif Settings().value(u'general/auto unblank'): elif Settings().value(u'core/auto unblank'):
autoplay = True autoplay = True
if autoplay: if autoplay:
if not self.media_play(controller): if not self.media_play(controller):

View File

@ -98,7 +98,7 @@ class LanguageManager(object):
""" """
Retrieve a saved language to use from settings Retrieve a saved language to use from settings
""" """
language = Settings().value(u'general/language') language = Settings().value(u'core/language')
language = str(language) language = str(language)
log.info(u'Language file: \'%s\' Loaded from conf file' % language) log.info(u'Language file: \'%s\' Loaded from conf file' % language)
if re.match(r'[[].*[]]', language): if re.match(r'[[].*[]]', language):
@ -128,7 +128,7 @@ class LanguageManager(object):
language = unicode(qm_list[action_name]) language = unicode(qm_list[action_name])
if LanguageManager.auto_language: if LanguageManager.auto_language:
language = u'[%s]' % language language = u'[%s]' % language
Settings().setValue(u'general/language', language) Settings().setValue(u'core/language', language)
log.info(u'Language file: \'%s\' written to conf file' % language) log.info(u'Language file: \'%s\' written to conf file' % language)
if message: if message:
QtGui.QMessageBox.information(None, QtGui.QMessageBox.information(None,

View File

@ -467,9 +467,9 @@ class SongMediaItem(MediaManagerItem):
service_item.raw_footer.append(song.title) service_item.raw_footer.append(song.title)
service_item.raw_footer.append(create_separated_list(author_list)) service_item.raw_footer.append(create_separated_list(author_list))
service_item.raw_footer.append(song.copyright) service_item.raw_footer.append(song.copyright)
if Settings().value(u'general/ccli number'): if Settings().value(u'core/ccli number'):
service_item.raw_footer.append(translate('SongsPlugin.MediaItem', 'CCLI License: ') + service_item.raw_footer.append(translate('SongsPlugin.MediaItem', 'CCLI License: ') +
Settings().value(u'general/ccli number')) Settings().value(u'core/ccli number'))
service_item.audit = [ service_item.audit = [
song.title, author_list, song.copyright, unicode(song.ccli_number) song.title, author_list, song.copyright, unicode(song.ccli_number)
] ]

View File

@ -37,16 +37,16 @@ class TestSettings(TestCase):
# GIVEN: A new Settings setup # GIVEN: A new Settings setup
# WHEN reading a setting for the first time # WHEN reading a setting for the first time
default_value = Settings().value(u'general/has run wizard') default_value = Settings().value(u'core/has run wizard')
# THEN the default value is returned # THEN the default value is returned
assert default_value is False, u'The default value should be False' assert default_value is False, u'The default value should be False'
# WHEN a new value is saved into config # WHEN a new value is saved into config
Settings().setValue(u'general/has run wizard', True) Settings().setValue(u'core/has run wizard', True)
# THEN the new value is returned when re-read # THEN the new value is returned when re-read
assert Settings().value(u'general/has run wizard') is True, u'The saved value should have been returned' assert Settings().value(u'core/has run wizard') is True, u'The saved value should have been returned'
def settings_override_test(self): def settings_override_test(self):
""" """

View File

@ -36,14 +36,24 @@ class TestEditCustomForm(TestCase):
del self.main_window del self.main_window
del self.app del self.app
def load_themes_test(self):
"""
Test the load_themes() method.
"""
# GIVEN: A theme list.
theme_list = [u'First Theme', u'Second Theme']
# WHEN: Show the dialog and add pass a theme list.
self.form.load_themes(theme_list)
# THEN: There should be three items in the combo box.
assert self.form.theme_combo_box.count() == 3, u'There should be three items (themes) in the combo box.'
def load_custom_test(self): def load_custom_test(self):
""" """
Test the load_custom() method. Test the load_custom() method.
""" """
# GIVEN: A mocked QDialog.exec_() method # WHEN: Create a new custom item.
with patch(u'PyQt4.QtGui.QDialog.exec_') as mocked_exec:
# WHEN: Show the dialog and create a new custom item.
self.form.exec_()
self.form.load_custom(0) self.form.load_custom(0)
# THEN: The line edits should not contain any text. # THEN: The line edits should not contain any text.
@ -57,8 +67,8 @@ class TestEditCustomForm(TestCase):
""" """
# GIVEN: A mocked QDialog.exec_() method # GIVEN: A mocked QDialog.exec_() method
with patch(u'PyQt4.QtGui.QDialog.exec_') as mocked_exec: with patch(u'PyQt4.QtGui.QDialog.exec_') as mocked_exec:
# WHEN: Show the dialog and add a new slide. # WHEN: Add a new slide.
self.form.exec_()
QtTest.QTest.mouseClick(self.form.add_button, QtCore.Qt.LeftButton) QtTest.QTest.mouseClick(self.form.add_button, QtCore.Qt.LeftButton)
# THEN: One slide should be added. # THEN: One slide should be added.
assert self.form.slide_list_view.count() == 1, u'There should be one slide added.' assert self.form.slide_list_view.count() == 1, u'There should be one slide added.'