forked from openlp/openlp
Improved dual Bible handling, fixed some edge-case bugs, including bug #625997.
bzr-revno: 1003
This commit is contained in:
commit
b138a4c1e8
@ -47,7 +47,6 @@ class BibleListView(BaseListWithDnD):
|
|||||||
self.parent().onListViewResize(event.size().width(),
|
self.parent().onListViewResize(event.size().width(),
|
||||||
event.size().width())
|
event.size().width())
|
||||||
|
|
||||||
|
|
||||||
class BibleMediaItem(MediaManagerItem):
|
class BibleMediaItem(MediaManagerItem):
|
||||||
"""
|
"""
|
||||||
This is the custom media manager item for Bibles.
|
This is the custom media manager item for Bibles.
|
||||||
@ -466,19 +465,27 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
|
|
||||||
def generateSlideData(self, service_item, item=None):
|
def generateSlideData(self, service_item, item=None):
|
||||||
"""
|
"""
|
||||||
Generates and formats the slides for the service item.
|
Generates and formats the slides for the service item as well as the
|
||||||
|
service item's title.
|
||||||
"""
|
"""
|
||||||
log.debug(u'generating slide data')
|
log.debug(u'generating slide data')
|
||||||
items = self.listView.selectedIndexes()
|
items = self.listView.selectedIndexes()
|
||||||
if len(items) == 0:
|
if len(items) == 0:
|
||||||
return False
|
return False
|
||||||
|
has_dual_bible = False
|
||||||
bible_text = u''
|
bible_text = u''
|
||||||
old_chapter = u''
|
old_chapter = u''
|
||||||
raw_footer = []
|
raw_footer = []
|
||||||
raw_slides = []
|
raw_slides = []
|
||||||
service_item.add_capability(ItemCapabilities.AllowsPreview)
|
for item in items:
|
||||||
service_item.add_capability(ItemCapabilities.AllowsLoop)
|
bitem = self.listView.item(item.row())
|
||||||
service_item.add_capability(ItemCapabilities.AllowsAdditions)
|
reference = bitem.data(QtCore.Qt.UserRole)
|
||||||
|
if isinstance(reference, QtCore.QVariant):
|
||||||
|
reference = reference.toPyObject()
|
||||||
|
dual_bible = self._decodeQtObject(reference, 'dual_bible')
|
||||||
|
if dual_bible:
|
||||||
|
has_dual_bible = True
|
||||||
|
break
|
||||||
# Let's loop through the main lot, and assemble our verses.
|
# Let's loop through the main lot, and assemble our verses.
|
||||||
for item in items:
|
for item in items:
|
||||||
bitem = self.listView.item(item.row())
|
bitem = self.listView.item(item.row())
|
||||||
@ -491,7 +498,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
bible = self._decodeQtObject(reference, 'bible')
|
bible = self._decodeQtObject(reference, 'bible')
|
||||||
version = self._decodeQtObject(reference, 'version')
|
version = self._decodeQtObject(reference, 'version')
|
||||||
copyright = self._decodeQtObject(reference, 'copyright')
|
copyright = self._decodeQtObject(reference, 'copyright')
|
||||||
#permission = self._decodeQtObject(reference, 'permission')
|
permission = self._decodeQtObject(reference, 'permission')
|
||||||
text = self._decodeQtObject(reference, 'text')
|
text = self._decodeQtObject(reference, 'text')
|
||||||
dual_bible = self._decodeQtObject(reference, 'dual_bible')
|
dual_bible = self._decodeQtObject(reference, 'dual_bible')
|
||||||
if dual_bible:
|
if dual_bible:
|
||||||
@ -499,70 +506,57 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
'dual_version')
|
'dual_version')
|
||||||
dual_copyright = self._decodeQtObject(reference,
|
dual_copyright = self._decodeQtObject(reference,
|
||||||
'dual_copyright')
|
'dual_copyright')
|
||||||
#dual_permission = self._decodeQtObject(reference,
|
dual_permission = self._decodeQtObject(reference,
|
||||||
# 'dual_permission')
|
'dual_permission')
|
||||||
dual_text = self._decodeQtObject(reference, 'dual_text')
|
dual_text = self._decodeQtObject(reference, 'dual_text')
|
||||||
if self.parent.settings_tab.display_style == 1:
|
verse_text = self.formatVerse(old_chapter, chapter, verse)
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
footer = u'%s (%s %s %s)' % (book, version, copyright, permission)
|
||||||
u'{su}(', u'){/su}')
|
|
||||||
elif self.parent.settings_tab.display_style == 2:
|
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
|
||||||
u'{su}{', u'}{/su}')
|
|
||||||
elif self.parent.settings_tab.display_style == 3:
|
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
|
||||||
u'{su}[', u']{/su}')
|
|
||||||
else:
|
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
|
||||||
u'{su}', u'{/su}')
|
|
||||||
old_chapter = chapter
|
|
||||||
footer = u'%s (%s %s)' % (book, version, copyright)
|
|
||||||
# If not found add to footer
|
|
||||||
if footer not in raw_footer:
|
if footer not in raw_footer:
|
||||||
raw_footer.append(footer)
|
raw_footer.append(footer)
|
||||||
|
if has_dual_bible:
|
||||||
if dual_bible:
|
if dual_bible:
|
||||||
footer = u'%s (%s %s)' % (book, dual_version,
|
footer = u'%s (%s %s %s)' % (book, dual_version,
|
||||||
dual_copyright)
|
dual_copyright, dual_permission)
|
||||||
# If not found add second version and copyright to footer.
|
|
||||||
if footer not in raw_footer:
|
if footer not in raw_footer:
|
||||||
raw_footer.append(footer)
|
raw_footer.append(footer)
|
||||||
bible_text = u'%s %s \n\n %s %s' % (verse_text, text,
|
# If there is an old bible_text we have to add it.
|
||||||
|
if bible_text:
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
|
bible_text = u'%s %s\n\n%s %s' % (verse_text, text,
|
||||||
verse_text, dual_text)
|
verse_text, dual_text)
|
||||||
raw_slides.append(bible_text)
|
raw_slides.append(bible_text)
|
||||||
bible_text = u''
|
bible_text = u''
|
||||||
|
elif self.parent.settings_tab.layout_style == 0:
|
||||||
|
bible_text = u'%s %s' % (verse_text, text)
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
else:
|
else:
|
||||||
|
bible_text = u'%s %s %s\n' % (bible_text, verse_text, text)
|
||||||
|
# If we are 'Verse Per Slide' then create a new slide.
|
||||||
|
elif self.parent.settings_tab.layout_style == 0:
|
||||||
|
bible_text = u'%s %s' % (verse_text, text)
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
# If we are 'Verse Per Line' then force a new line.
|
# If we are 'Verse Per Line' then force a new line.
|
||||||
if self.parent.settings_tab.layout_style == 1:
|
elif self.parent.settings_tab.layout_style == 1:
|
||||||
text = text + u'\n'
|
bible_text = u'%s %s %s\n' % (bible_text, verse_text, text)
|
||||||
|
# We have to be 'Continuous'.
|
||||||
else:
|
else:
|
||||||
|
bible_text = u'%s %s %s\n' % (bible_text, verse_text, text)
|
||||||
|
old_chapter = chapter
|
||||||
|
# If there are no more items we check whether we have to add bible_text.
|
||||||
|
if bible_text:
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
|
# Service Item: Capabilities
|
||||||
|
if self.parent.settings_tab.layout_style == 2 and not has_dual_bible:
|
||||||
# split the line but do not replace line breaks in renderer
|
# split the line but do not replace line breaks in renderer
|
||||||
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
||||||
text = text + u'\n'
|
service_item.add_capability(ItemCapabilities.AllowsPreview)
|
||||||
bible_text = u'%s %s %s' % (bible_text, verse_text, text)
|
service_item.add_capability(ItemCapabilities.AllowsLoop)
|
||||||
# If we are 'Verse Per Slide' then create a new slide.
|
service_item.add_capability(ItemCapabilities.AllowsAdditions)
|
||||||
if self.parent.settings_tab.layout_style == 0:
|
# Service Item: Title
|
||||||
raw_slides.append(bible_text)
|
|
||||||
bible_text = u''
|
|
||||||
# If we are not 'Verse Per Slide' we have to make sure, that we
|
|
||||||
# add more verses.
|
|
||||||
else:
|
|
||||||
if item.row() < len(items) - 1:
|
|
||||||
bitem = items[item.row() + 1]
|
|
||||||
reference = bitem.data(QtCore.Qt.UserRole)
|
|
||||||
if isinstance(reference, QtCore.QVariant):
|
|
||||||
reference = reference.toPyObject()
|
|
||||||
bible_new = self._decodeQtObject(reference, 'bible')
|
|
||||||
dual_bible_new = self._decodeQtObject(reference,
|
|
||||||
'dual_bible')
|
|
||||||
if dual_bible_new:
|
|
||||||
raw_slides.append(bible_text)
|
|
||||||
bible_text = u''
|
|
||||||
elif bible != bible_new:
|
|
||||||
raw_slides.append(bible_text)
|
|
||||||
bible_text = u''
|
|
||||||
else:
|
|
||||||
raw_slides.append(bible_text)
|
|
||||||
bible_text = u''
|
|
||||||
# service item title
|
|
||||||
if not service_item.title:
|
if not service_item.title:
|
||||||
if dual_bible:
|
if dual_bible:
|
||||||
service_item.title = u'%s (%s, %s) %s' % (book, version,
|
service_item.title = u'%s (%s, %s) %s' % (book, version,
|
||||||
@ -573,7 +567,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
translate('BiblesPlugin.MediaItem', 'etc')) == -1:
|
translate('BiblesPlugin.MediaItem', 'etc')) == -1:
|
||||||
service_item.title = u'%s, %s' % (service_item.title,
|
service_item.title = u'%s, %s' % (service_item.title,
|
||||||
translate('BiblesPlugin.MediaItem', 'etc'))
|
translate('BiblesPlugin.MediaItem', 'etc'))
|
||||||
# item theme
|
# Service Item: Theme
|
||||||
if len(self.parent.settings_tab.bible_theme) == 0:
|
if len(self.parent.settings_tab.bible_theme) == 0:
|
||||||
service_item.theme = None
|
service_item.theme = None
|
||||||
else:
|
else:
|
||||||
@ -587,14 +581,20 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def formatVerse(self, old_chapter, chapter, verse, opening, closing):
|
def formatVerse(self, old_chapter, chapter, verse):
|
||||||
verse_text = opening
|
if not self.parent.settings_tab.show_new_chapters or \
|
||||||
if old_chapter != chapter:
|
old_chapter != chapter:
|
||||||
verse_text += chapter + u':'
|
verse_text = chapter + u':' + verse
|
||||||
elif not self.parent.settings_tab.show_new_chapters:
|
else:
|
||||||
verse_text += chapter + u':'
|
verse_text = verse
|
||||||
verse_text += verse
|
if self.parent.settings_tab.display_style == 1:
|
||||||
verse_text += closing
|
verse_text = u'{su}(' + verse_text + u'){/su}'
|
||||||
|
elif self.parent.settings_tab.display_style == 2:
|
||||||
|
verse_text = u'{su}{' + verse_text + u'}{/su}'
|
||||||
|
elif self.parent.settings_tab.display_style == 3:
|
||||||
|
verse_text = u'{su}[' + verse_text + u']{/su}'
|
||||||
|
else:
|
||||||
|
verse_text = u'{su}' + verse_text + u'{/su}'
|
||||||
return verse_text
|
return verse_text
|
||||||
|
|
||||||
def reloadBibles(self):
|
def reloadBibles(self):
|
||||||
@ -639,14 +639,14 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
for i in range(int(range_from), int(range_to) + 1):
|
for i in range(int(range_from), int(range_to) + 1):
|
||||||
combo.addItem(unicode(i))
|
combo.addItem(unicode(i))
|
||||||
|
|
||||||
def displayResults(self, bible, dual_bible=None):
|
def displayResults(self, bible, dual_bible=u''):
|
||||||
"""
|
"""
|
||||||
Displays the search results in the media manager. All data needed for
|
Displays the search results in the media manager. All data needed for
|
||||||
further action is saved for/in each row.
|
further action is saved for/in each row.
|
||||||
"""
|
"""
|
||||||
version = self.parent.manager.get_meta_data(bible, u'Version')
|
version = self.parent.manager.get_meta_data(bible, u'Version')
|
||||||
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
|
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
|
||||||
#permission = self.parent.manager.get_meta_data(bible, u'Permissions')
|
permission = self.parent.manager.get_meta_data(bible, u'Permissions')
|
||||||
if dual_bible:
|
if dual_bible:
|
||||||
dual_version = self.parent.manager.get_meta_data(dual_bible,
|
dual_version = self.parent.manager.get_meta_data(dual_bible,
|
||||||
u'Version')
|
u'Version')
|
||||||
@ -654,43 +654,41 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
u'Copyright')
|
u'Copyright')
|
||||||
dual_permission = self.parent.manager.get_meta_data(dual_bible,
|
dual_permission = self.parent.manager.get_meta_data(dual_bible,
|
||||||
u'Permissions')
|
u'Permissions')
|
||||||
if dual_permission:
|
if not dual_permission:
|
||||||
dual_permission = dual_permission.value
|
|
||||||
else:
|
|
||||||
dual_permission = u''
|
dual_permission = u''
|
||||||
# We count the number of rows which are maybe already present.
|
# We count the number of rows which are maybe already present.
|
||||||
start_count = self.listView.count()
|
start_count = self.listView.count()
|
||||||
for count, verse in enumerate(self.search_results):
|
for count, verse in enumerate(self.search_results):
|
||||||
if dual_bible:
|
if dual_bible:
|
||||||
vdict = {
|
vdict = {
|
||||||
'book':QtCore.QVariant(verse.book.name),
|
'book': QtCore.QVariant(verse.book.name),
|
||||||
'chapter':QtCore.QVariant(verse.chapter),
|
'chapter': QtCore.QVariant(verse.chapter),
|
||||||
'verse':QtCore.QVariant(verse.verse),
|
'verse': QtCore.QVariant(verse.verse),
|
||||||
'bible':QtCore.QVariant(bible),
|
'bible': QtCore.QVariant(bible),
|
||||||
'version':QtCore.QVariant(version.value),
|
'version': QtCore.QVariant(version.value),
|
||||||
'copyright':QtCore.QVariant(copyright.value),
|
'copyright': QtCore.QVariant(copyright.value),
|
||||||
#'permission':QtCore.QVariant(permission.value),
|
'permission': QtCore.QVariant(permission.value),
|
||||||
'text':QtCore.QVariant(verse.text),
|
'text': QtCore.QVariant(verse.text),
|
||||||
'dual_bible':QtCore.QVariant(dual_bible),
|
'dual_bible': QtCore.QVariant(dual_bible),
|
||||||
'dual_version':QtCore.QVariant(dual_version.value),
|
'dual_version': QtCore.QVariant(dual_version.value),
|
||||||
'dual_copyright':QtCore.QVariant(dual_copyright.value),
|
'dual_copyright': QtCore.QVariant(dual_copyright.value),
|
||||||
#'dual_permission':QtCore.QVariant(dual_permission),
|
'dual_permission': QtCore.QVariant(dual_permission.value),
|
||||||
'dual_text':QtCore.QVariant(
|
'dual_text': QtCore.QVariant(
|
||||||
self.dual_search_results[count].text)
|
self.dual_search_results[count].text)
|
||||||
}
|
}
|
||||||
bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name,
|
bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name,
|
||||||
verse.chapter, verse.verse, version.value, dual_version.value)
|
verse.chapter, verse.verse, version.value, dual_version.value)
|
||||||
else:
|
else:
|
||||||
vdict = {
|
vdict = {
|
||||||
'book':QtCore.QVariant(verse.book.name),
|
'book': QtCore.QVariant(verse.book.name),
|
||||||
'chapter':QtCore.QVariant(verse.chapter),
|
'chapter': QtCore.QVariant(verse.chapter),
|
||||||
'verse':QtCore.QVariant(verse.verse),
|
'verse': QtCore.QVariant(verse.verse),
|
||||||
'bible':QtCore.QVariant(bible),
|
'bible': QtCore.QVariant(bible),
|
||||||
'version':QtCore.QVariant(version.value),
|
'version': QtCore.QVariant(version.value),
|
||||||
'copyright':QtCore.QVariant(copyright.value),
|
'copyright': QtCore.QVariant(copyright.value),
|
||||||
#'permission':QtCore.QVariant(permission.value),
|
'permission': QtCore.QVariant(permission.value),
|
||||||
'text':QtCore.QVariant(verse.text),
|
'text': QtCore.QVariant(verse.text),
|
||||||
'dual_bible':QtCore.QVariant(dual_bible)
|
'dual_bible': QtCore.QVariant(dual_bible)
|
||||||
}
|
}
|
||||||
bible_text = u' %s %d:%d (%s)' % (verse.book.name,
|
bible_text = u' %s %d:%d (%s)' % (verse.book.name,
|
||||||
verse.chapter, verse.verse, version.value)
|
verse.chapter, verse.verse, version.value)
|
||||||
|
Loading…
Reference in New Issue
Block a user