[Openlp-core] [Bug 1840092] Re: version 2889 song edit window 'save and preview' button only saves
** Changed in: openlp Status: In Progress => Fix Committed ** Changed in: openlp Milestone: None => 2.9.1 -- You received this bug notification because you are a member of OpenLP Core, which is subscribed to OpenLP. https://bugs.launchpad.net/bugs/1840092 Title: version 2889 song edit window 'save and preview' button only saves Status in OpenLP: Fix Committed Bug description: Windown 10 32 bit Version 2889 of Trunk To recreate this; 1. select a song in the song plugin 2. select the edit button in the song library 3. modify a verse 4. select the 'save and preview' button 5. the edit window will close, but the preview never happens. To manage notifications about this bug go to: https://bugs.launchpad.net/openlp/+bug/1840092/+subscriptions ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] [Bug 1841196] Re: V2892 Service Theme not working
** Changed in: openlp Milestone: None => 2.9.1 ** Changed in: openlp Status: Confirmed => Fix Committed -- You received this bug notification because you are a member of OpenLP Core, which is subscribed to OpenLP. https://bugs.launchpad.net/bugs/1841196 Title: V2892 Service Theme not working Status in OpenLP: Fix Committed Bug description: Windows 10 32 bit Openlp trunk Version 2892 The Theme drop down in the Service plugin appears to do nothingI tried changing the setting between the three possibilities, song/service/global, and nothing changes. To Recreate: 1. in Settings->Theme set Global Theme to 'Blue Burst' 2. Set Theme Level to Song Level 3. select the OK button to exit settings 4. edit a song to have the 'Sea with trees' theme 5. add the same song to the service 6. add another song to the service after verifying it does NOT have a theme associated with the song 7. create a custom slide and use the 'Sea with trees' theme 8. add the custom slide to the Service. 9. set the Theme in the Service to Geo Purple 10. send the Service to the 'Live' screen and watch the themes. Based on the description of the SONG Level setting I would think the song without a theme associated should display with the 'Geo Purple' theme but it displays with the Blue Burst theme. Song Level description: Use the Theme from each song in the database. If a song doesn't have a them associated with it, then use the service's theme. If the service doesn't have a theme, then use the global theme. To manage notifications about this bug go to: https://bugs.launchpad.net/openlp/+bug/1841196/+subscriptions ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] [Merge] lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp
The proposal to merge lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp has been updated. Status: Needs review => Merged For more details, see: https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 -- Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] [Merge] lp:~trb143/openlp/latest-fixes into lp:openlp
The proposal to merge lp:~trb143/openlp/latest-fixes into lp:openlp has been updated. Status: Needs review => Merged For more details, see: https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 -- Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
Re: [Openlp-core] [Merge] lp:~trb143/openlp/latest-fixes into lp:openlp
Review: Approve -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
Re: [Openlp-core] [Merge] lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp
Review: Approve -- https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] Linting: Passed
Linting passed! -- https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] macOS Test Results: Passed
macOS tests passed! -- https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] Linux Test Results: Passed
Linux tests passed! -- https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] JavaScript Test Results: Passed
JavaScript tests passed! -- https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] [Merge] lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. Commit message: Fix chords in songs being displayed on the display screen and in the slide controller. Requested reviews: OpenLP Core (openlp-core) For more details, see: https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372072 Fix chords in songs being displayed on the display screen and in the slide controller. -- Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. === modified file 'openlp/core/display/render.py' --- openlp/core/display/render.py 2019-08-06 20:46:41 + +++ openlp/core/display/render.py 2019-08-30 14:46:34 + @@ -67,6 +67,15 @@ CCLI_NO = '123456' +def remove_chords(text): +""" +Remove chords from the text + +:param text: Text to be cleaned +""" +return re.sub(r'\[.+?\]', r'', text) + + def remove_tags(text, can_remove_chords=False): """ Remove Tags from text for display @@ -82,7 +91,7 @@ text = text.replace(tag['end tag'], '') # Remove ChordPro tags if can_remove_chords: -text = re.sub(r'\[.+?\]', r'', text) +text = remove_chords(text) return text @@ -377,6 +386,8 @@ text = render_chords_for_printing(text, '{br}') else: text = render_chords(text) +else: +text = remove_chords(text) for tag in FormattingTags.get_html_tags(): text = text.replace(tag['start tag'], tag['start html']) text = text.replace(tag['end tag'], tag['end html']) === modified file 'openlp/core/lib/serviceitem.py' --- openlp/core/lib/serviceitem.py 2019-05-24 22:11:11 + +++ openlp/core/lib/serviceitem.py 2019-08-30 14:46:34 + @@ -39,7 +39,7 @@ from openlp.core.common.i18n import translate from openlp.core.common.mixins import RegistryProperties from openlp.core.common.settings import Settings -from openlp.core.display.render import remove_tags, render_tags +from openlp.core.display.render import remove_tags, render_tags, render_chords_for_printing from openlp.core.lib import ItemCapabilities from openlp.core.ui.icons import UiIcons @@ -74,6 +74,7 @@ self.name = plugin.name self._rendered_slides = None self._display_slides = None +self._print_slides = None self.title = '' self.slides = [] self.processor = None @@ -185,7 +186,7 @@ self._rendered_slides.append(rendered_slide) display_slide = { 'title': raw_slide['title'], -'text': remove_tags(page), +'text': remove_tags(page, can_remove_chords=True), 'verse': verse_tag, } self._display_slides.append(display_slide) @@ -209,6 +210,34 @@ self._create_slides() return self._display_slides +@property +def print_slides(self): +""" +Render the frames for printing and return them + +:param can_render_chords: bool Whether or not to render the chords +""" +if not self._print_slides: +self._print_slides = [] +previous_pages = {} +index = 0 +for raw_slide in self.slides: +verse_tag = raw_slide['verse'] +if verse_tag in previous_pages and previous_pages[verse_tag][0] == raw_slide: +pages = previous_pages[verse_tag][1] +else: +pages = self.renderer.format_slide(raw_slide['text'], self) +previous_pages[verse_tag] = (raw_slide, pages) +for page in pages: +slide = { +'title': raw_slide['title'], +'text': render_chords_for_printing(remove_tags(page), '\n'), +'verse': index, +'footer': self.raw_footer, +} +self._print_slides.append(slide) +return self._print_slides + def add_from_image(self, path, title, background=None, thumbnail=None): """ Add an image slide to the service item. === modified file 'openlp/core/ui/printserviceform.py' --- openlp/core/ui/printserviceform.py 2019-07-31 16:26:25 + +++ openlp/core/ui/printserviceform.py 2019-08-30 14:46:34 + @@ -218,7 +218,7 @@ if item.is_text(): verse_def = None verse_html = None -for slide in item.get_frames(): +for slide in item.print_slides: if not verse_def or verse_def != slide['verse'] or verse_html == slide['text']: text_div = self._add_element('div', parent=div, class_id='itemText') elif 'chordspacing' not in slide['text']: ___ Mailing
[Openlp-core] [Merge] lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp
The proposal to merge lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp has been updated. Status: Needs review => Superseded For more details, see: https://code.launchpad.net/~raoul-snyman/openlp/fix-display-chords/+merge/372026 -- Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-display-chords into lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] Linting: Passed
Linting passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] macOS Test Results: Passed
macOS tests passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] Linux Test Results: Passed
Linux tests passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] JavaScript Test Results: Passed
JavaScript tests passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] [Merge] lp:~trb143/openlp/latest-fixes into lp:openlp
Tim Bentley has proposed merging lp:~trb143/openlp/latest-fixes into lp:openlp. Commit message: Undo an incorrect change and replace missing code as pert of the display revamp. Requested reviews: Raoul Snyman (raoul-snyman) Related bugs: Bug #1840092 in OpenLP: "version 2889 song edit window 'save and preview' button only saves" https://bugs.launchpad.net/openlp/+bug/1840092 Bug #1841196 in OpenLP: "V2892 Service Theme not working" https://bugs.launchpad.net/openlp/+bug/1841196 For more details, see: https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372057 The save Button did not need renaming it has been moved by QT. Replace the logic to set the theme for a given item. Replace the theme regeneration code which was removed in the refactor. -- Your team OpenLP Core is subscribed to branch lp:openlp. === modified file 'openlp/core/display/render.py' --- openlp/core/display/render.py 2019-08-06 20:46:41 + +++ openlp/core/display/render.py 2019-08-30 12:09:41 + @@ -503,6 +503,26 @@ self.force_page = False return None +def get_theme(self, item): +""" +:param item: The :class:`~openlp.core.lib.serviceitem.ServiceItem` item object +:return string: The name of the theme to be used + +""" +# Just assume we use the global theme. +theme_name = Registry().get('theme_manager').global_theme +# The theme level is either set to Service or Item. Use the service theme if one is set. We also have to use the +# service theme, even when the theme level is set to Item, because the item does not necessarily have to have a +# theme. +if self.theme_level != ThemeLevel.Global: +# When the theme level is at Service and we actually have a service theme then use it. +if self.theme_level == ThemeLevel.Service: +theme_name = Registry().get('service_manager').service_theme +# If we have Item level and have an item theme then use it. +if self.theme_level == ThemeLevel.Song and item.theme: +theme_name = item.theme +return theme_name + def format_slide(self, text, item): """ Calculate how much text can fit on a slide. @@ -515,7 +535,7 @@ QtWidgets.QApplication.instance().processEvents() self.log_debug('format slide') if item: -theme_name = item.theme if item.theme else Registry().get('theme_manager').global_theme +theme_name = self.get_theme(item) theme_data = Registry().get('theme_manager').get_theme_data(theme_name) self.theme_height = theme_data.font_main_height # Set theme for preview === modified file 'openlp/core/lib/serviceitem.py' --- openlp/core/lib/serviceitem.py 2019-05-24 22:11:11 + +++ openlp/core/lib/serviceitem.py 2019-08-30 12:09:41 + @@ -321,6 +321,13 @@ 'display_title': slide['display_title'], 'notes': slide['notes']}) return {'header': service_header, 'data': service_data} +def render_text_items(self): +""" +This method forces the display to be regenerated +""" +self._display_slides = [] +self._rendered_slides = [] + def set_from_service(self, service_item, path=None): """ This method takes a service item from a saved service file (passed from the ServiceManager) and extracts the @@ -503,7 +510,6 @@ :param row: The service item slide to be returned """ if self.service_item_type == ServiceItemType.Text: -# return self.display_frames[row]['html'].split('\n')[0] return self.rendered_slides[row]['text'] elif self.service_item_type == ServiceItemType.Image: return self.slides[row]['path'] === modified file 'openlp/core/ui/mainwindow.py' --- openlp/core/ui/mainwindow.py 2019-08-04 13:13:33 + +++ openlp/core/ui/mainwindow.py 2019-08-30 12:09:41 + @@ -546,7 +546,8 @@ Wait for the threads """ # Sometimes the threads haven't finished, let's wait for them -wait_dialog = QtWidgets.QProgressDialog('Waiting for some things to finish...', '', 0, 0, self) +wait_dialog = QtWidgets.QProgressDialog(translate('OpenLP.MainWindow', 'Waiting for some things to finish...'), +'', 0, 0, self) wait_dialog.setWindowModality(QtCore.Qt.WindowModal) wait_dialog.setAutoClose(False) wait_dialog.setCancelButton(None) === modified file 'openlp/core/ui/servicemanager.py' --- openlp/core/ui/servicemanager.py 2019-08-04 13:13:33 + +++ openlp/core/ui/servicemanager.py 2019-08-30 12:09:41 + @@ -46,7 +46,7 @@ from openlp.core.lib import build_icon from openlp.core.lib.exceptions import ValidationError from openlp.core.lib.plugin import PluginStatus -from openlp.core.lib.serviceitem import
[Openlp-core] [Merge] lp:~trb143/openlp/latest-fixes into lp:openlp
The proposal to merge lp:~trb143/openlp/latest-fixes into lp:openlp has been updated. Status: Needs review => Superseded For more details, see: https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372055 -- Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] Linting: Failed
Linting failed, please see https://ci.openlp.io/job/MP-05-Linting/162/ for more details -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372055 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] macOS Test Results: Passed
macOS tests passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372055 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] Linux Test Results: Passed
Linux tests passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372055 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] JavaScript Test Results: Passed
JavaScript tests passed! -- https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372055 Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp
[Openlp-core] [Merge] lp:~trb143/openlp/latest-fixes into lp:openlp
Tim Bentley has proposed merging lp:~trb143/openlp/latest-fixes into lp:openlp. Commit message: Undo an incorrect change and replace missing code as pert of the display revamp. Requested reviews: Raoul Snyman (raoul-snyman) Related bugs: Bug #1840092 in OpenLP: "version 2889 song edit window 'save and preview' button only saves" https://bugs.launchpad.net/openlp/+bug/1840092 Bug #1841196 in OpenLP: "V2892 Service Theme not working" https://bugs.launchpad.net/openlp/+bug/1841196 For more details, see: https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/372055 The save Button did not need renaming it has been moved by QT. Replace the logic to set the theme for a given item. Replace the theme regeneration code which was removed in the refactor. -- Your team OpenLP Core is subscribed to branch lp:openlp. === modified file 'openlp/core/display/render.py' --- openlp/core/display/render.py 2019-08-06 20:46:41 + +++ openlp/core/display/render.py 2019-08-30 11:30:07 + @@ -503,6 +503,26 @@ self.force_page = False return None +def get_theme(self, item): +""" +:param item: The :class:`~openlp.core.lib.serviceitem.ServiceItem` item object +:return string: The name of the theme to be used + +""" +# Just assume we use the global theme. +theme_name = Registry().get('theme_manager').global_theme +# The theme level is either set to Service or Item. Use the service theme if one is set. We also have to use the +# service theme, even when the theme level is set to Item, because the item does not necessarily have to have a +# theme. +if self.theme_level != ThemeLevel.Global: +# When the theme level is at Service and we actually have a service theme then use it. +if self.theme_level == ThemeLevel.Service: +theme_name = Registry().get('service_manager').service_theme +# If we have Item level and have an item theme then use it. +if self.theme_level == ThemeLevel.Song and item.theme: +theme_name = item.theme +return theme_name + def format_slide(self, text, item): """ Calculate how much text can fit on a slide. @@ -515,7 +535,7 @@ QtWidgets.QApplication.instance().processEvents() self.log_debug('format slide') if item: -theme_name = item.theme if item.theme else Registry().get('theme_manager').global_theme +theme_name = self.get_theme(item) theme_data = Registry().get('theme_manager').get_theme_data(theme_name) self.theme_height = theme_data.font_main_height # Set theme for preview === modified file 'openlp/core/lib/serviceitem.py' --- openlp/core/lib/serviceitem.py 2019-05-24 22:11:11 + +++ openlp/core/lib/serviceitem.py 2019-08-30 11:30:07 + @@ -321,6 +321,13 @@ 'display_title': slide['display_title'], 'notes': slide['notes']}) return {'header': service_header, 'data': service_data} +def render_text_items(self): +""" +This method forces the display to be regenerated +""" +self._display_slides = [] +self._rendered_slides = [] + def set_from_service(self, service_item, path=None): """ This method takes a service item from a saved service file (passed from the ServiceManager) and extracts the @@ -503,7 +510,6 @@ :param row: The service item slide to be returned """ if self.service_item_type == ServiceItemType.Text: -# return self.display_frames[row]['html'].split('\n')[0] return self.rendered_slides[row]['text'] elif self.service_item_type == ServiceItemType.Image: return self.slides[row]['path'] === modified file 'openlp/core/ui/mainwindow.py' --- openlp/core/ui/mainwindow.py 2019-08-04 13:13:33 + +++ openlp/core/ui/mainwindow.py 2019-08-30 11:30:07 + @@ -546,7 +546,8 @@ Wait for the threads """ # Sometimes the threads haven't finished, let's wait for them -wait_dialog = QtWidgets.QProgressDialog('Waiting for some things to finish...', '', 0, 0, self) +wait_dialog = QtWidgets.QProgressDialog(translate('OpenLP.MainWindow', 'Waiting for some things to finish...'), +'', 0, 0, self) wait_dialog.setWindowModality(QtCore.Qt.WindowModal) wait_dialog.setAutoClose(False) wait_dialog.setCancelButton(None) === modified file 'openlp/core/ui/servicemanager.py' --- openlp/core/ui/servicemanager.py 2019-08-04 13:13:33 + +++ openlp/core/ui/servicemanager.py 2019-08-30 11:30:07 + @@ -46,7 +46,7 @@ from openlp.core.lib import build_icon from openlp.core.lib.exceptions import ValidationError from openlp.core.lib.plugin import PluginStatus -from openlp.core.lib.serviceitem import
[Openlp-core] [Merge] lp:~trb143/openlp/latest-fixes into lp:openlp
The proposal to merge lp:~trb143/openlp/latest-fixes into lp:openlp has been updated. Status: Needs review => Superseded For more details, see: https://code.launchpad.net/~trb143/openlp/latest-fixes/+merge/371774 -- Your team OpenLP Core is subscribed to branch lp:openlp. ___ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp