openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #31748
[Merge] lp:~suutari-olli/openlp/azaziah-fixes-and-improvements into lp:openlp
Azaziah has proposed merging lp:~suutari-olli/openlp/azaziah-fixes-and-improvements into lp:openlp.
Requested reviews:
Raoul Snyman (raoul-snyman)
Tim Bentley (trb143)
Related bugs:
Bug #1639860 in OpenLP: "Close button is disabled in numerous windows"
https://bugs.launchpad.net/openlp/+bug/1639860
Bug #1652559 in OpenLP: "Find duplicates wizard does not reset cursor if closed from "x" instead of "cancel" button and causes traceback on exit"
https://bugs.launchpad.net/openlp/+bug/1652559
Bug #1666272 in OpenLP: "Linked audio "next" button results in traceback"
https://bugs.launchpad.net/openlp/+bug/1666272
Bug #1678292 in OpenLP: "Space after Bible book name auto-completion is missing"
https://bugs.launchpad.net/openlp/+bug/1678292
Bug #1694732 in OpenLP: "wizard sub title does not wrap"
https://bugs.launchpad.net/openlp/+bug/1694732
Bug #1695268 in OpenLP: "Bibles plugin fails to load due to invalid "last search type" value"
https://bugs.launchpad.net/openlp/+bug/1695268
For more details, see:
https://code.launchpad.net/~suutari-olli/openlp/azaziah-fixes-and-improvements/+merge/325102
Fixed bugs:
Bug #1639860: Close button is disabled in numerous windows
Bug #1652559: Find duplicates wizard does not reset cursor if closed from "x" instead of "cancel" button and causes traceback on exit
Bug #1666272: Linked audio "next" button results in traceback
Bug #1678292: Space after Bible book name auto-completion is missing
Bug #1694732: wizard sub title does not wrap
Bug #1695268: Bibles plugin fails to load due to invalid "last search type"
Bug: If Bible book name contains dot after number, the reference search
does not work.
Improvements
- Increased song maintanance window size.
- Removed "?" from all Wizard windows.
Add this to your merge proposal:
--------------------------------
lp:~suutari-olli/openlp/azaziah-fixes-and-improvements (revision 2765)
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-01-Pull/2075/
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-02-Functional-Tests/1985/
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-03-Interface-Tests/1901/
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-04a-Code_Analysis/1279/
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-04b-Test_Coverage/1129/
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-04c-Code_Analysis2/258/
[[1;32mSUCCESS[1;m] https://ci.openlp.io/job/Branch-05-AppVeyor-Tests/104/
--
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/common/settings.py'
--- openlp/core/common/settings.py 2017-03-15 19:51:10 +0000
+++ openlp/core/common/settings.py 2017-06-05 19:21:48 +0000
@@ -219,7 +219,11 @@
('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.
('bibles/advanced bible', '', []), # Common bible search widgets combined in 2.6
- ('bibles/quick bible', 'bibles/primary bible', []) # Common bible search widgets combined in 2.6
+ ('bibles/quick bible', 'bibles/primary bible', []), # Common bible search widgets combined in 2.6
+ # Last search type was renamed to last used search type in 2.6 since Bible search value type changed in 2.6.
+ ('songs/last search type', 'songs/last used search type', []),
+ ('bibles/last search type', '', []),
+ ('custom/last search type', 'custom/last used search type', [])
]
@staticmethod
=== modified file 'openlp/core/lib/searchedit.py'
--- openlp/core/lib/searchedit.py 2016-12-31 11:01:36 +0000
+++ openlp/core/lib/searchedit.py 2017-06-05 19:21:48 +0000
@@ -105,7 +105,7 @@
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)
+ Settings().setValue('{section}/last used search type'.format(section=self.settings_section), identifier)
self.searchTypeChanged.emit(identifier)
return True
@@ -141,7 +141,7 @@
self.menu_button.resize(QtCore.QSize(28, 18))
self.menu_button.setMenu(menu)
self.set_current_search_type(
- Settings().value('{section}/last search type'.format(section=self.settings_section)))
+ Settings().value('{section}/last used search type'.format(section=self.settings_section)))
self.menu_button.show()
self._update_style_sheet()
=== modified file 'openlp/core/lib/ui.py'
--- openlp/core/lib/ui.py 2016-12-31 11:01:36 +0000
+++ openlp/core/lib/ui.py 2017-06-05 19:21:48 +0000
@@ -49,6 +49,7 @@
parent.title_label = QtWidgets.QLabel(parent.welcome_page)
parent.title_label.setObjectName('title_label')
parent.welcome_layout.addWidget(parent.title_label)
+ parent.title_label.setWordWrap(True)
parent.welcome_layout.addSpacing(40)
parent.information_label = QtWidgets.QLabel(parent.welcome_page)
parent.information_label.setWordWrap(True)
=== modified file 'openlp/core/ui/__init__.py'
--- openlp/core/ui/__init__.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/__init__.py 2017-06-05 19:21:48 +0000
@@ -99,7 +99,7 @@
from .themeform import ThemeForm
from .filerenameform import FileRenameForm
from .starttimeform import StartTimeForm
-from .maindisplay import MainDisplay, Display
+from .maindisplay import MainDisplay, Display, AudioPlayer
from .servicenoteform import ServiceNoteForm
from .serviceitemeditform import ServiceItemEditForm
from .slidecontroller import SlideController, DisplayController, PreviewController, LiveController
@@ -120,8 +120,8 @@
from .projector.editform import ProjectorEditForm
__all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeForm',
- 'ThemeManager', 'ServiceItemEditForm', 'FirstTimeForm', 'FirstTimeLanguageForm',
- 'Display', 'ServiceNoteForm', 'ThemeLayoutForm', 'FileRenameForm', 'StartTimeForm', 'MainDisplay',
+ 'ThemeManager', 'ServiceItemEditForm', 'FirstTimeForm', 'FirstTimeLanguageForm', 'Display', 'AudioPlayer',
+ 'ServiceNoteForm', 'ThemeLayoutForm', 'FileRenameForm', 'StartTimeForm', 'MainDisplay',
'SlideController', 'DisplayController', 'GeneralTab', 'ThemesTab', 'AdvancedTab', 'PluginForm',
'FormattingTagForm', 'ShortcutListForm', 'FormattingTagController', 'SingleColumnTableWidget',
'ProjectorManager', 'ProjectorTab', 'ProjectorEditForm']
=== modified file 'openlp/core/ui/aboutform.py'
--- openlp/core/ui/aboutform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/aboutform.py 2017-06-05 19:21:48 +0000
@@ -40,7 +40,8 @@
"""
Do some initialisation stuff
"""
- super(AboutForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(AboutForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self._setup()
def _setup(self):
=== modified file 'openlp/core/ui/filerenameform.py'
--- openlp/core/ui/filerenameform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/filerenameform.py 2017-06-05 19:21:48 +0000
@@ -38,8 +38,8 @@
"""
Constructor
"""
- super(FileRenameForm, self).__init__(Registry().get('main_window'),
- QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(FileRenameForm, self).__init__(Registry().get('main_window'), QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self._setup()
def _setup(self):
=== modified file 'openlp/core/ui/firsttimelanguageform.py'
--- openlp/core/ui/firsttimelanguageform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/firsttimelanguageform.py 2017-06-05 19:21:48 +0000
@@ -37,7 +37,8 @@
"""
Constructor
"""
- super(FirstTimeLanguageForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(FirstTimeLanguageForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.qm_list = LanguageManager.get_qm_list()
self.language_combo_box.addItem('Autodetect')
=== modified file 'openlp/core/ui/formattingtagform.py'
--- openlp/core/ui/formattingtagform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/formattingtagform.py 2017-06-05 19:21:48 +0000
@@ -51,7 +51,8 @@
"""
Constructor
"""
- super(FormattingTagForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(FormattingTagForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self._setup()
=== modified file 'openlp/core/ui/lib/wizard.py'
--- openlp/core/ui/lib/wizard.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/lib/wizard.py 2017-06-05 19:21:48 +0000
@@ -25,7 +25,7 @@
import logging
import os
-from PyQt5 import QtGui, QtWidgets
+from PyQt5 import QtCore, QtGui, QtWidgets
from openlp.core.common import Registry, RegistryProperties, Settings, UiStrings, translate, is_macosx
from openlp.core.lib import build_icon
@@ -93,7 +93,10 @@
"""
Constructor
"""
- super(OpenLPWizard, self).__init__(parent)
+ # QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint remove the "?" buttons from windows,
+ # QtCore.Qt.WindowCloseButtonHint enables the "x" button to close these windows.
+ super(OpenLPWizard, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.plugin = plugin
self.with_progress_page = add_progress_page
self.setFixedWidth(640)
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2017-03-23 04:43:13 +0000
+++ openlp/core/ui/maindisplay.py 2017-06-05 19:21:48 +0000
@@ -689,7 +689,7 @@
"""
Skip forward to the next track in the list
"""
- self.playerlist.next()
+ self.playlist.next()
def go_to(self, index):
"""
=== modified file 'openlp/core/ui/pluginform.py'
--- openlp/core/ui/pluginform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/pluginform.py 2017-06-05 19:21:48 +0000
@@ -41,7 +41,8 @@
"""
Constructor
"""
- super(PluginForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(PluginForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.active_plugin = None
self.programatic_change = False
self.setupUi(self)
=== modified file 'openlp/core/ui/printserviceform.py'
--- openlp/core/ui/printserviceform.py 2017-02-19 21:35:40 +0000
+++ openlp/core/ui/printserviceform.py 2017-06-05 19:21:48 +0000
@@ -125,8 +125,8 @@
"""
Constructor
"""
- super(PrintServiceForm, self).__init__(Registry().get('main_window'),
- QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(PrintServiceForm, self).__init__(Registry().get('main_window'), QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.printer = QtPrintSupport.QPrinter()
self.print_dialog = QtPrintSupport.QPrintDialog(self.printer, self)
self.document = QtGui.QTextDocument()
=== modified file 'openlp/core/ui/projector/editform.py'
--- openlp/core/ui/projector/editform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/projector/editform.py 2017-06-05 19:21:48 +0000
@@ -142,7 +142,8 @@
editProjector = QtCore.pyqtSignal(object)
def __init__(self, parent=None, projectordb=None):
- super(ProjectorEditForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(ProjectorEditForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.projectordb = projectordb
self.setupUi(self)
self.button_box.accepted.connect(self.accept_me)
=== modified file 'openlp/core/ui/projector/sourceselectform.py'
--- openlp/core/ui/projector/sourceselectform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/projector/sourceselectform.py 2017-06-05 19:21:48 +0000
@@ -233,7 +233,8 @@
:param projectordb: ProjectorDB session to use
"""
log.debug('Initializing SourceSelectTabs()')
- super(SourceSelectTabs, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(SourceSelectTabs, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setMinimumWidth(350)
self.projectordb = projectordb
self.edit = edit
@@ -388,7 +389,8 @@
"""
log.debug('Initializing SourceSelectSingle()')
self.projectordb = projectordb
- super(SourceSelectSingle, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(SourceSelectSingle, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.edit = edit
if self.edit:
title = translate('OpenLP.SourceSelectForm', 'Edit Projector Source Text')
=== modified file 'openlp/core/ui/serviceitemeditform.py'
--- openlp/core/ui/serviceitemeditform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/serviceitemeditform.py 2017-06-05 19:21:48 +0000
@@ -37,8 +37,8 @@
"""
Constructor
"""
- super(ServiceItemEditForm, self).__init__(Registry().get('main_window'),
- QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(ServiceItemEditForm, self).__init__(Registry().get('main_window'), QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.item_list = []
self.list_widget.currentRowChanged.connect(self.on_current_row_changed)
=== modified file 'openlp/core/ui/servicenoteform.py'
--- openlp/core/ui/servicenoteform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/servicenoteform.py 2017-06-05 19:21:48 +0000
@@ -37,8 +37,8 @@
"""
Constructor
"""
- super(ServiceNoteForm, self).__init__(Registry().get('main_window'),
- QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(ServiceNoteForm, self).__init__(Registry().get('main_window'), QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.setupUi()
self.retranslateUi()
=== modified file 'openlp/core/ui/settingsform.py'
--- openlp/core/ui/settingsform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/settingsform.py 2017-06-05 19:21:48 +0000
@@ -46,7 +46,8 @@
"""
Registry().register('settings_form', self)
Registry().register_function('bootstrap_post_set_up', self.bootstrap_post_set_up)
- super(SettingsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(SettingsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.processes = []
self.setupUi(self)
self.setting_list_widget.currentRowChanged.connect(self.list_item_changed)
=== modified file 'openlp/core/ui/shortcutlistform.py'
--- openlp/core/ui/shortcutlistform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/shortcutlistform.py 2017-06-05 19:21:48 +0000
@@ -44,7 +44,8 @@
"""
Constructor
"""
- super(ShortcutListForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(ShortcutListForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.changed_actions = {}
self.action_list = ActionList.get_instance()
=== modified file 'openlp/core/ui/starttimeform.py'
--- openlp/core/ui/starttimeform.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/starttimeform.py 2017-06-05 19:21:48 +0000
@@ -38,8 +38,8 @@
"""
Constructor
"""
- super(StartTimeForm, self).__init__(Registry().get('main_window'),
- QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(StartTimeForm, self).__init__(Registry().get('main_window'), QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def exec(self):
=== modified file 'openlp/plugins/alerts/forms/alertform.py'
--- openlp/plugins/alerts/forms/alertform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/alerts/forms/alertform.py 2017-06-05 19:21:48 +0000
@@ -36,8 +36,8 @@
"""
Initialise the alert form
"""
- super(AlertForm, self).__init__(Registry().get('main_window'),
- QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(AlertForm, self).__init__(Registry().get('main_window'), QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.manager = plugin.manager
self.plugin = plugin
self.item_id = None
=== modified file 'openlp/plugins/bibles/bibleplugin.py'
--- openlp/plugins/bibles/bibleplugin.py 2017-02-18 07:23:15 +0000
+++ openlp/plugins/bibles/bibleplugin.py 2017-06-05 19:21:48 +0000
@@ -38,7 +38,7 @@
'bibles/db password': '',
'bibles/db hostname': '',
'bibles/db database': '',
- 'bibles/last search type': BibleSearch.Combined,
+ 'bibles/last used search type': BibleSearch.Combined,
'bibles/reset to combined quick search': True,
'bibles/verse layout style': LayoutStyle.VersePerSlide,
'bibles/book name language': LanguageSelection.Bible,
=== modified file 'openlp/plugins/bibles/forms/booknameform.py'
--- openlp/plugins/bibles/forms/booknameform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/bibles/forms/booknameform.py 2017-06-05 19:21:48 +0000
@@ -49,7 +49,8 @@
"""
Constructor
"""
- super(BookNameForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(BookNameForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.custom_signals()
self.book_names = BibleStrings().BookNames
=== modified file 'openlp/plugins/bibles/forms/editbibleform.py'
--- openlp/plugins/bibles/forms/editbibleform.py 2017-01-08 19:12:12 +0000
+++ openlp/plugins/bibles/forms/editbibleform.py 2017-06-05 19:21:48 +0000
@@ -45,7 +45,8 @@
"""
Constructor
"""
- super(EditBibleForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(EditBibleForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.media_item = media_item
self.book_names = BibleStrings().BookNames
self.setupUi(self)
=== modified file 'openlp/plugins/bibles/forms/languageform.py'
--- openlp/plugins/bibles/forms/languageform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/bibles/forms/languageform.py 2017-06-05 19:21:48 +0000
@@ -47,7 +47,8 @@
"""
Constructor
"""
- super(LanguageForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(LanguageForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def exec(self, bible_name):
=== modified file 'openlp/plugins/bibles/lib/__init__.py'
--- openlp/plugins/bibles/lib/__init__.py 2017-05-05 21:00:59 +0000
+++ openlp/plugins/bibles/lib/__init__.py 2017-06-05 19:21:48 +0000
@@ -230,7 +230,7 @@
REFERENCE_MATCHES['range_separator'] = re.compile(REFERENCE_SEPARATORS['sep_l'], re.UNICODE)
# full reference match: <book>(<range>(,(?!$)|(?=$)))+
REFERENCE_MATCHES['full'] = \
- re.compile('^\s*(?!\s)(?P<book>[\d]*[^\d\.]+)\.*(?<!\s)\s*'
+ re.compile('^\s*(?!\s)(?P<book>[\d]*[.]?[^\d\.]+)\.*(?<!\s)\s*'
'(?P<ranges>(?:%(range_regex)s(?:%(sep_l)s(?!\s*$)|(?=\s*$)))+)\s*$'
% dict(list(REFERENCE_SEPARATORS.items()) + [('range_regex', range_regex)]), re.UNICODE)
@@ -326,7 +326,7 @@
``^\s*(?!\s)(?P<book>[\d]*[^\d]+)(?<!\s)\s*``
The ``book`` group starts with the first non-whitespace character. There are optional leading digits followed by
- non-digits. The group ends before the whitspace, or a full stop in front of the next digit.
+ non-digits. The group ends before the whitespace, or a full stop in front of the next digit.
``(?P<ranges>(?:%(range_regex)s(?:%(sep_l)s(?!\s*$)|(?=\s*$)))+)\s*$``
The second group contains all ``ranges``. This can be multiple declarations of range_regex separated by a list
=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py 2017-05-07 18:39:17 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py 2017-06-05 19:21:48 +0000
@@ -414,7 +414,9 @@
if self.bible:
book_data = self.get_common_books(self.bible, self.second_bible)
language_selection = self.plugin.manager.get_language_selection(self.bible.name)
- books = [book.get_name(language_selection) for book in book_data]
+ # Get book names + add a space to the end. Thus Psalm23 becomes Psalm 23
+ # when auto complete is used and user does not need to add the space manually.
+ books = [book.get_name(language_selection) + ' ' for book in book_data]
books.sort(key=get_locale_key)
set_case_insensitive_completer(books, self.search_edit)
=== modified file 'openlp/plugins/custom/customplugin.py'
--- openlp/plugins/custom/customplugin.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/custom/customplugin.py 2017-06-05 19:21:48 +0000
@@ -40,7 +40,7 @@
'custom/db password': '',
'custom/db hostname': '',
'custom/db database': '',
- 'custom/last search type': CustomSearch.Titles,
+ 'custom/last used search type': CustomSearch.Titles,
'custom/display footer': True,
'custom/add custom from service': True
}
=== modified file 'openlp/plugins/custom/forms/editcustomform.py'
--- openlp/plugins/custom/forms/editcustomform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/custom/forms/editcustomform.py 2017-06-05 19:21:48 +0000
@@ -44,7 +44,8 @@
"""
Constructor
"""
- super(EditCustomForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(EditCustomForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.manager = manager
self.media_item = media_item
self.setupUi(self)
=== modified file 'openlp/plugins/custom/forms/editcustomslideform.py'
--- openlp/plugins/custom/forms/editcustomslideform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/custom/forms/editcustomslideform.py 2017-06-05 19:21:48 +0000
@@ -39,7 +39,8 @@
"""
Constructor
"""
- super(EditCustomSlideForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(EditCustomSlideForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
# Connecting signals and slots
self.insert_button.clicked.connect(self.on_insert_button_clicked)
=== modified file 'openlp/plugins/images/forms/addgroupform.py'
--- openlp/plugins/images/forms/addgroupform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/images/forms/addgroupform.py 2017-06-05 19:21:48 +0000
@@ -35,7 +35,8 @@
"""
Constructor
"""
- super(AddGroupForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(AddGroupForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def exec(self, clear=True, show_top_level_group=False, selected_group=None):
=== modified file 'openlp/plugins/images/forms/choosegroupform.py'
--- openlp/plugins/images/forms/choosegroupform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/images/forms/choosegroupform.py 2017-06-05 19:21:48 +0000
@@ -33,7 +33,8 @@
"""
Constructor
"""
- super(ChooseGroupForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(ChooseGroupForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def exec(self, selected_group=None):
=== modified file 'openlp/plugins/media/forms/mediaclipselectorform.py'
--- openlp/plugins/media/forms/mediaclipselectorform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/media/forms/mediaclipselectorform.py 2017-06-05 19:21:48 +0000
@@ -52,7 +52,8 @@
"""
Constructor
"""
- super(MediaClipSelectorForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(MediaClipSelectorForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint |
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.vlc_instance = None
self.vlc_media_player = None
self.vlc_media = None
=== modified file 'openlp/plugins/songs/forms/authorsform.py'
--- openlp/plugins/songs/forms/authorsform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songs/forms/authorsform.py 2017-06-05 19:21:48 +0000
@@ -35,7 +35,8 @@
"""
Set up the screen and common data
"""
- super(AuthorsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(AuthorsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.auto_display_name = False
self.first_name_edit.textEdited.connect(self.on_first_name_edited)
=== modified file 'openlp/plugins/songs/forms/duplicatesongremovalform.py'
--- openlp/plugins/songs/forms/duplicatesongremovalform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songs/forms/duplicatesongremovalform.py 2017-06-05 19:21:48 +0000
@@ -82,6 +82,9 @@
self.finish_button.clicked.connect(self.on_wizard_exit)
self.cancel_button.clicked.connect(self.on_wizard_exit)
+ def closeEvent(self, event):
+ self.on_wizard_exit()
+
def add_custom_pages(self):
"""
Add song wizard specific pages.
=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py 2017-03-02 04:34:24 +0000
+++ openlp/plugins/songs/forms/editsongform.py 2017-06-05 19:21:48 +0000
@@ -56,7 +56,8 @@
"""
Constructor
"""
- super(EditSongForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(EditSongForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.media_item = media_item
self.song = None
# can this be automated?
=== modified file 'openlp/plugins/songs/forms/editverseform.py'
--- openlp/plugins/songs/forms/editverseform.py 2017-04-20 20:23:17 +0000
+++ openlp/plugins/songs/forms/editverseform.py 2017-06-05 19:21:48 +0000
@@ -43,7 +43,8 @@
"""
Constructor
"""
- super(EditVerseForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(EditVerseForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.has_single_verse = False
self.insert_button.clicked.connect(self.on_insert_button_clicked)
=== modified file 'openlp/plugins/songs/forms/mediafilesform.py'
--- openlp/plugins/songs/forms/mediafilesform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songs/forms/mediafilesform.py 2017-06-05 19:21:48 +0000
@@ -37,7 +37,8 @@
log.info('{name} MediaFilesForm loaded'.format(name=__name__))
def __init__(self, parent):
- super(MediaFilesForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(MediaFilesForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def populate_files(self, files):
=== modified file 'openlp/plugins/songs/forms/songbookform.py'
--- openlp/plugins/songs/forms/songbookform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songs/forms/songbookform.py 2017-06-05 19:21:48 +0000
@@ -38,7 +38,8 @@
"""
Constructor
"""
- super(SongBookForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(SongBookForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def exec(self, clear=True):
=== modified file 'openlp/plugins/songs/forms/songmaintenancedialog.py'
--- openlp/plugins/songs/forms/songmaintenancedialog.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songs/forms/songmaintenancedialog.py 2017-06-05 19:21:48 +0000
@@ -39,7 +39,7 @@
song_maintenance_dialog.setObjectName('song_maintenance_dialog')
song_maintenance_dialog.setWindowIcon(build_icon(':/icon/openlp-logo.svg'))
song_maintenance_dialog.setWindowModality(QtCore.Qt.ApplicationModal)
- song_maintenance_dialog.resize(10, 350)
+ song_maintenance_dialog.resize(600, 600)
self.dialog_layout = QtWidgets.QGridLayout(song_maintenance_dialog)
self.dialog_layout.setObjectName('dialog_layout')
self.type_list_widget = QtWidgets.QListWidget(song_maintenance_dialog)
=== modified file 'openlp/plugins/songs/forms/songmaintenanceform.py'
--- openlp/plugins/songs/forms/songmaintenanceform.py 2017-03-28 00:36:54 +0000
+++ openlp/plugins/songs/forms/songmaintenanceform.py 2017-06-05 19:21:48 +0000
@@ -44,7 +44,8 @@
"""
Constructor
"""
- super(SongMaintenanceForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(SongMaintenanceForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.manager = manager
self.author_form = AuthorsForm(self)
=== modified file 'openlp/plugins/songs/forms/songselectform.py'
--- openlp/plugins/songs/forms/songselectform.py 2017-02-18 07:23:15 +0000
+++ openlp/plugins/songs/forms/songselectform.py 2017-06-05 19:21:48 +0000
@@ -81,7 +81,8 @@
"""
def __init__(self, parent=None, plugin=None, db_manager=None):
- QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.plugin = plugin
self.db_manager = db_manager
self.setup_ui(self)
=== modified file 'openlp/plugins/songs/forms/topicsform.py'
--- openlp/plugins/songs/forms/topicsform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songs/forms/topicsform.py 2017-06-05 19:21:48 +0000
@@ -38,7 +38,8 @@
"""
Constructor
"""
- super(TopicsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(TopicsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
def exec(self, clear=True):
=== modified file 'openlp/plugins/songs/songsplugin.py'
--- openlp/plugins/songs/songsplugin.py 2017-02-26 21:14:49 +0000
+++ openlp/plugins/songs/songsplugin.py 2017-06-05 19:21:48 +0000
@@ -54,7 +54,7 @@
'songs/db password': '',
'songs/db hostname': '',
'songs/db database': '',
- 'songs/last search type': SongSearch.Entire,
+ 'songs/last used search type': SongSearch.Entire,
'songs/last import type': SongFormat.OpenLyrics,
'songs/update service on edit': False,
'songs/add song from service': True,
=== modified file 'openlp/plugins/songusage/forms/songusagedeleteform.py'
--- openlp/plugins/songusage/forms/songusagedeleteform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/songusage/forms/songusagedeleteform.py 2017-06-05 19:21:48 +0000
@@ -37,7 +37,7 @@
"""
self.manager = manager
super(SongUsageDeleteForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint |
- QtCore.Qt.WindowTitleHint)
+ QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowCloseButtonHint)
self.setupUi(self)
self.button_box.clicked.connect(self.on_button_box_clicked)
=== modified file 'openlp/plugins/songusage/forms/songusagedetailform.py'
--- openlp/plugins/songusage/forms/songusagedetailform.py 2017-05-12 21:05:50 +0000
+++ openlp/plugins/songusage/forms/songusagedetailform.py 2017-06-05 19:21:48 +0000
@@ -44,7 +44,8 @@
"""
Initialise the form
"""
- super(SongUsageDetailForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
+ super(SongUsageDetailForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
+ QtCore.Qt.WindowCloseButtonHint)
self.plugin = plugin
self.setupUi(self)
=== modified file 'tests/functional/openlp_core_ui/test_maindisplay.py'
--- tests/functional/openlp_core_ui/test_maindisplay.py 2017-04-24 05:17:55 +0000
+++ tests/functional/openlp_core_ui/test_maindisplay.py 2017-06-05 19:21:48 +0000
@@ -29,7 +29,7 @@
from openlp.core.common import Registry, is_macosx, Settings
from openlp.core.lib import ScreenList, PluginManager
-from openlp.core.ui import MainDisplay
+from openlp.core.ui import MainDisplay, AudioPlayer
from openlp.core.ui.media import MediaController
from openlp.core.ui.maindisplay import TRANSPARENT_STYLESHEET, OPAQUE_STYLESHEET
@@ -283,3 +283,18 @@
self.assertEquals(main_display.web_view.setHtml.call_count, 1, 'setHTML should be called once')
self.assertEquals(main_display.media_controller.video.call_count, 1,
'Media Controller video should have been called once')
+
+
+def test_calling_next_item_in_playlist():
+ """
+ Test the AudioPlayer.next() method
+ """
+ # GIVEN: An instance of AudioPlayer with a mocked out playlist
+ audio_player = AudioPlayer(None)
+
+ # WHEN: next is called.
+ with patch.object(audio_player, 'playlist') as mocked_playlist:
+ audio_player.next()
+
+ # THEN: playlist.next should had been called once.
+ mocked_playlist.next.assert_called_once_with()
=== modified file 'tests/functional/openlp_plugins/bibles/test_lib.py'
--- tests/functional/openlp_plugins/bibles/test_lib.py 2017-04-24 05:17:55 +0000
+++ tests/functional/openlp_plugins/bibles/test_lib.py 2017-06-05 19:21:48 +0000
@@ -68,7 +68,8 @@
"""
# GIVEN: Some test data which contains different references to parse, with the expected results.
with patch('openlp.plugins.bibles.lib.Settings', return_value=MagicMock(**{'value.return_value': ''})):
- # The following test data tests with 222 variants when using the default 'separators'
+ # The following test data tests with about 240 variants when using the default 'separators'
+ # The amount is exactly 222 without '1. John 23' and'1. John. 23'
test_data = [
# Input reference, book name, chapter + verse reference
('Psalm 23', 'Psalm', '23'),
@@ -84,6 +85,8 @@
('Psalm 23{_and}24', 'Psalm', '23,24'),
('1 John 23', '1 John', '23'),
('1 John. 23', '1 John', '23'),
+ ('1. John 23', '1. John', '23'),
+ ('1. John. 23', '1. John', '23'),
('1 John 23{to}24', '1 John', '23-24'),
('1 John 23{verse}1{to}2', '1 John', '23:1-2'),
('1 John 23{verse}1{to}{end}', '1 John', '23:1-end'),
=== modified file 'tests/functional/openlp_plugins/bibles/test_mediaitem.py'
--- tests/functional/openlp_plugins/bibles/test_mediaitem.py 2017-06-03 22:34:19 +0000
+++ tests/functional/openlp_plugins/bibles/test_mediaitem.py 2017-06-05 19:21:48 +0000
@@ -480,9 +480,9 @@
# WHEN: Calling update_auto_completer
self.media_item.update_auto_completer()
- # THEN: set_case_insensitive_completer should have been called with the names of the books in order
+ # THEN: set_case_insensitive_completer should have been called with the names of the books + space in order
mocked_set_case_insensitive_completer.assert_called_once_with(
- ['Book 1', 'Book 2', 'Book 3'], mocked_search_edit)
+ ['Book 1 ', 'Book 2 ', 'Book 3 '], mocked_search_edit)
def test_update_auto_completer_search_combined_type(self):
"""
@@ -500,11 +500,11 @@
# WHEN: Calling update_auto_completer
self.media_item.update_auto_completer()
- # THEN: set_case_insensitive_completer should have been called with the names of the books in order
+ # THEN: set_case_insensitive_completer should have been called with the names of the books + space in order
mocked_set_case_insensitive_completer.assert_called_once_with(
- ['Book 1', 'Book 2', 'Book 3'], mocked_search_edit)
+ ['Book 1 ', 'Book 2 ', 'Book 3 '], mocked_search_edit)
- def test_on_import_click_no_import_wizzard_attr(self):
+ def test_on_import_click_no_import_wizard_attr(self):
"""
Test on_import_click when media_item does not have the `import_wizard` attribute. And the wizard was canceled.
"""
@@ -521,9 +521,9 @@
self.assertTrue(mocked_bible_import_form.called)
self.assertFalse(mocked_reload_bibles.called)
- def test_on_import_click_wizzard_not_canceled(self):
+ def test_on_import_click_wizard_not_canceled(self):
"""
- Test on_import_click when the media item has the import_wizzard attr set and wizard completes sucessfully.
+ Test on_import_click when the media item has the import_wizard attr set and wizard completes sucessfully.
"""
# GIVEN: An instance of :class:`MediaManagerItem` and a mocked import_wizard
mocked_import_wizard = MagicMock(**{'exec.return_value': True})
=== modified file 'tests/interfaces/openlp_core_lib/test_searchedit.py'
--- tests/interfaces/openlp_core_lib/test_searchedit.py 2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_lib/test_searchedit.py 2017-06-05 19:21:48 +0000
@@ -88,7 +88,7 @@
# 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)
+ self.mocked_settings().setValue.assert_called_once_with('settings_section/last used search type', 0)
def test_set_current_search_type(self):
"""
@@ -105,7 +105,7 @@
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)])
+ [call('settings_section/last used search type', 0), call('settings_section/last used search type', 1)])
def test_clear_button_visibility(self):
"""
Follow ups