mirror of https://gitlab.com/openlp/openlp.git
Merge branch 'add-whole-verse-continuous-bible-layout-style' into 'master'
Add "Continuous (whole verses)" bible layout style See merge request openlp/openlp!454
This commit is contained in:
commit
eb6691b4fe
|
@ -90,6 +90,7 @@ class LayoutStyle(IntEnum):
|
|||
VersePerSlide = 0
|
||||
VersePerLine = 1
|
||||
Continuous = 2
|
||||
WholeVerseContinuous = 3
|
||||
|
||||
|
||||
@unique
|
||||
|
|
|
@ -454,6 +454,7 @@ class UiStrings(metaclass=Singleton):
|
|||
self.ViewMode = translate('OpenLP.Ui', 'View Mode')
|
||||
self.Video = translate('OpenLP.Ui', 'Video')
|
||||
self.WebDownloadText = translate('OpenLP.Ui', 'Web Interface, Download and Install Latest Version')
|
||||
self.WholeVerseContinuous = translate('OpenLP.Ui', 'Continuous (whole verses)')
|
||||
self.ZeroconfErrorIntro = translate('OpenLP.Ui', 'There was a problem advertising OpenLP\'s remote '
|
||||
'interface on the network:')
|
||||
self.ZeroconfGenericError = translate('OpenLP.Ui', 'An unknown error occurred')
|
||||
|
|
|
@ -617,7 +617,13 @@ class ThemePreviewRenderer(DisplayWindow, LogMixin):
|
|||
line_end = ' '
|
||||
# Bibles
|
||||
if item and item.name == 'bibles':
|
||||
pages = self._paginate_slide_words(text.split('\n'), line_end)
|
||||
if item.is_capable(ItemCapabilities.CanWordSplit):
|
||||
pages = self._paginate_slide_words(text.split('\n'), line_end)
|
||||
else:
|
||||
if item.is_capable(ItemCapabilities.NoLineBreaks):
|
||||
pages = self._paginate_slide(text.split('\n'), "")
|
||||
else:
|
||||
pages = self._paginate_slide(text.split('\n'), line_end)
|
||||
# Songs and Custom
|
||||
elif item is None or (item and item.is_capable(ItemCapabilities.CanSoftBreak)):
|
||||
pages = []
|
||||
|
@ -705,7 +711,8 @@ class ThemePreviewRenderer(DisplayWindow, LogMixin):
|
|||
formatted = []
|
||||
previous_html = ''
|
||||
previous_raw = ''
|
||||
separator = '<br>'
|
||||
# separator = '<br>'
|
||||
separator = line_end
|
||||
html_lines = list(map(render_tags, lines))
|
||||
# Text too long so go to next page.
|
||||
if not self._text_fits_on_slide(separator.join(html_lines)):
|
||||
|
|
|
@ -69,7 +69,7 @@ class BiblesTab(SettingsTab):
|
|||
self.layout_style_label.setObjectName('layout_style_label')
|
||||
self.layout_style_combo_box = QtWidgets.QComboBox(self.verse_display_group_box)
|
||||
self.layout_style_combo_box.setObjectName('layout_style_combo_box')
|
||||
self.layout_style_combo_box.addItems(['', '', ''])
|
||||
self.layout_style_combo_box.addItems(['', '', '', ''])
|
||||
self.verse_display_layout.addRow(self.layout_style_label, self.layout_style_combo_box)
|
||||
self.bible_second_check_box = QtWidgets.QCheckBox(self.verse_display_group_box)
|
||||
self.bible_second_check_box.setObjectName('bible_second_check_box')
|
||||
|
@ -183,6 +183,7 @@ class BiblesTab(SettingsTab):
|
|||
self.layout_style_combo_box.setItemText(LayoutStyle.VersePerSlide, UiStrings().VersePerSlide)
|
||||
self.layout_style_combo_box.setItemText(LayoutStyle.VersePerLine, UiStrings().VersePerLine)
|
||||
self.layout_style_combo_box.setItemText(LayoutStyle.Continuous, UiStrings().Continuous)
|
||||
self.layout_style_combo_box.setItemText(LayoutStyle.WholeVerseContinuous, UiStrings().WholeVerseContinuous)
|
||||
self.display_style_combo_box.setItemText(DisplayStyle.NoBrackets,
|
||||
translate('BiblesPlugin.BiblesTab', 'No Brackets'))
|
||||
self.display_style_combo_box.setItemText(DisplayStyle.Round,
|
||||
|
|
|
@ -198,7 +198,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||
self.second_combo_box = create_horizontal_adjusting_combo_box(self, 'second_combo_box')
|
||||
self.general_bible_layout.addRow(translate('BiblesPlugin.MediaItem', 'Second:'), self.second_combo_box)
|
||||
self.style_combo_box = create_horizontal_adjusting_combo_box(self, 'style_combo_box')
|
||||
self.style_combo_box.addItems(['', '', ''])
|
||||
self.style_combo_box.addItems(['', '', '', ''])
|
||||
self.general_bible_layout.addRow(UiStrings().LayoutStyle, self.style_combo_box)
|
||||
self.options_tab.setVisible(False)
|
||||
self.page_layout.addWidget(self.options_tab)
|
||||
|
@ -265,6 +265,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||
self.style_combo_box.setItemText(LayoutStyle.VersePerSlide, UiStrings().VersePerSlide)
|
||||
self.style_combo_box.setItemText(LayoutStyle.VersePerLine, UiStrings().VersePerLine)
|
||||
self.style_combo_box.setItemText(LayoutStyle.Continuous, UiStrings().Continuous)
|
||||
self.style_combo_box.setItemText(LayoutStyle.WholeVerseContinuous, UiStrings().WholeVerseContinuous)
|
||||
self.clear_button.setToolTip(translate('BiblesPlugin.MediaItem', 'Clear the results on the current tab.'))
|
||||
self.save_results_button.setToolTip(
|
||||
translate('BiblesPlugin.MediaItem', 'Add the search results to the saved list.'))
|
||||
|
@ -296,6 +297,9 @@ class BibleMediaItem(MediaManagerItem):
|
|||
visible = self.settings.value('bibles/second bibles')
|
||||
self.general_bible_layout.labelForField(self.second_combo_box).setVisible(visible)
|
||||
self.second_combo_box.setVisible(visible)
|
||||
layout_style = self.settings.value('bibles/verse layout style')
|
||||
if layout_style is not None:
|
||||
self.style_combo_box.setCurrentIndex(layout_style)
|
||||
|
||||
def initialise(self):
|
||||
"""
|
||||
|
@ -954,6 +958,8 @@ class BibleMediaItem(MediaManagerItem):
|
|||
# If we are 'Verse Per Line' then force a new line.
|
||||
elif self.settings_tab.layout_style == LayoutStyle.VersePerLine:
|
||||
bible_text = '{bible} {verse}{data[text]}\n'.format(bible=bible_text, verse=verse_text, data=data)
|
||||
elif self.settings_tab.layout_style == LayoutStyle.WholeVerseContinuous:
|
||||
bible_text = '{bible} {verse}{data[text]}\n'.format(bible=bible_text, verse=verse_text, data=data)
|
||||
# We have to be 'Continuous'.
|
||||
else:
|
||||
bible_text = '{bible} {verse}{data[text]}'.format(bible=bible_text, verse=verse_text, data=data)
|
||||
|
@ -989,9 +995,13 @@ class BibleMediaItem(MediaManagerItem):
|
|||
if self.settings_tab.layout_style == LayoutStyle.Continuous and not data['second_bible']:
|
||||
# Split the line but do not replace line breaks in renderer.
|
||||
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
||||
if self.settings_tab.layout_style == LayoutStyle.WholeVerseContinuous:
|
||||
if not data['second_bible']:
|
||||
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
||||
else:
|
||||
service_item.add_capability(ItemCapabilities.CanWordSplit)
|
||||
service_item.add_capability(ItemCapabilities.CanPreview)
|
||||
service_item.add_capability(ItemCapabilities.CanLoop)
|
||||
service_item.add_capability(ItemCapabilities.CanWordSplit)
|
||||
service_item.add_capability(ItemCapabilities.CanEditTitle)
|
||||
# Service Item: Title
|
||||
service_item.title = '{verse} {version}'.format(verse=verses.format_verses(), version=verses.format_versions())
|
||||
|
|
|
@ -250,9 +250,10 @@ def test_config_update_show_second_bible(media_item):
|
|||
Test the config update method
|
||||
"""
|
||||
# GIVEN: An instance of :class:`MediaManagerItem` and mocked out settings class with known values
|
||||
media_item.settings.value = lambda key: {'bibles/second bibles': True}[key]
|
||||
media_item.settings.value = lambda key: {'bibles/second bibles': True, 'bibles/verse layout style': 0}[key]
|
||||
media_item.general_bible_layout = MagicMock()
|
||||
media_item.second_combo_box = MagicMock()
|
||||
media_item.style_combo_box = MagicMock()
|
||||
|
||||
# WHEN: Calling config_update()
|
||||
media_item.config_update()
|
||||
|
@ -266,9 +267,10 @@ def test_config_update_hide_second_bible(media_item):
|
|||
Test the config update method
|
||||
"""
|
||||
# GIVEN: An instance of :class:`MediaManagerItem` and mocked out settings class with known values
|
||||
media_item.settings.value = lambda key: {'bibles/second bibles': False}[key]
|
||||
media_item.settings.value = lambda key: {'bibles/second bibles': False, 'bibles/verse layout style': 0}[key]
|
||||
media_item.general_bible_layout = MagicMock()
|
||||
media_item.second_combo_box = MagicMock()
|
||||
media_item.style_combo_box = MagicMock()
|
||||
|
||||
# WHEN: Calling config_update()
|
||||
media_item.config_update()
|
||||
|
@ -277,6 +279,23 @@ def test_config_update_hide_second_bible(media_item):
|
|||
media_item.second_combo_box.setVisible.assert_called_once_with(False)
|
||||
|
||||
|
||||
def test_config_update_set_layout_style(media_item):
|
||||
"""
|
||||
Test the config update method
|
||||
"""
|
||||
# GIVEN: An instance of :class:`MediaManagerItem` and mocked out settings class with known values
|
||||
media_item.settings.value = lambda key: {'bibles/second bibles': True, 'bibles/verse layout style': 1}[key]
|
||||
media_item.general_bible_layout = MagicMock()
|
||||
media_item.second_combo_box = MagicMock()
|
||||
media_item.style_combo_box = MagicMock()
|
||||
|
||||
# WHEN: Calling config_update()
|
||||
media_item.config_update()
|
||||
|
||||
# THEN: style_combo_box should set the currentIndex to 1
|
||||
media_item.style_combo_box.setCurrentIndex(1)
|
||||
|
||||
|
||||
def test_initalise(media_item):
|
||||
"""
|
||||
Test the initalise method
|
||||
|
|
Loading…
Reference in New Issue