diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py
index ee461aaf1..53e8c6b77 100644
--- a/openlp/plugins/bibles/lib/mediaitem.py
+++ b/openlp/plugins/bibles/lib/mediaitem.py
@@ -59,10 +59,10 @@ class BibleMediaItem(MediaManagerItem):
self.pluginNameVisible = translate('BiblesPlugin.MediaItem', 'Bible')
self.IconPath = u'songs/song'
self.ListViewWithDnD_class = BibleListView
- self.lastReference = []
MediaManagerItem.__init__(self, parent, icon, title)
- # place to store the search results
+ # place to store the search results for both bibles
self.search_results = {}
+ self.dual_search_results = {}
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'bibles_load_list'), self.reloadBibles)
@@ -344,7 +344,7 @@ class BibleMediaItem(MediaManagerItem):
self.QuickMessage.setText(text)
self.AdvancedMessage.setText(text)
Receiver.send_message(u'openlp_process_events')
- #minor delay to get the events processed
+ # minor delay to get the events processed
time.sleep(0.1)
def loadBibles(self):
@@ -387,7 +387,7 @@ class BibleMediaItem(MediaManagerItem):
QtGui.QMessageBox.critical(self,
translate('BiblesPlugin.MediaItem', 'No Book Found'),
translate('BiblesPlugin.MediaItem',
- 'No matching book could be found in this Bible.'))
+ 'No matching book could be found in this Bible.'))
def onAdvancedVersionComboBox(self):
self.initialiseBible(
@@ -423,6 +423,7 @@ class BibleMediaItem(MediaManagerItem):
def onAdvancedSearchButton(self):
log.debug(u'Advanced Search Button pressed')
bible = unicode(self.AdvancedVersionComboBox.currentText())
+ dual_bible = unicode(self.AdvancedSecondBibleComboBox.currentText())
book = unicode(self.AdvancedBookComboBox.currentText())
chapter_from = int(self.AdvancedFromChapter.currentText())
chapter_to = int(self.AdvancedToChapter.currentText())
@@ -431,11 +432,12 @@ class BibleMediaItem(MediaManagerItem):
versetext = u'%s %s:%s-%s:%s' % (book, chapter_from, verse_from,
chapter_to, verse_to)
self.search_results = self.parent.manager.get_verses(bible, versetext)
+ if dual_bible:
+ self.dual_search_results = self.parent.manager.get_verses(
+ dual_bible, versetext)
if self.ClearAdvancedSearchComboBox.currentIndex() == 0:
self.listView.clear()
- self.lastReference = []
- self.lastReference.append(versetext)
- self.displayResults(bible)
+ self.displayResults(bible, dual_bible)
def onAdvancedFromChapter(self):
bible = unicode(self.AdvancedVersionComboBox.currentText())
@@ -450,70 +452,55 @@ class BibleMediaItem(MediaManagerItem):
def onQuickSearchButton(self):
log.debug(u'Quick Search Button pressed')
bible = unicode(self.QuickVersionComboBox.currentText())
+ dual_bible = unicode(self.QuickSecondBibleComboBox.currentText())
text = unicode(self.QuickSearchEdit.text())
if self.ClearQuickSearchComboBox.currentIndex() == 0:
self.listView.clear()
- self.lastReference = []
- self.lastReference.append(text)
self.search_results = self.parent.manager.get_verses(bible, text)
+ if dual_bible:
+ self.dual_search_results = self.parent.manager.get_verses(
+ dual_bible, text)
if self.search_results:
- self.displayResults(bible)
+ self.displayResults(bible, dual_bible)
def generateSlideData(self, service_item, item=None):
+ '''
+ Generates and formats the slides for the service item.
+ '''
log.debug(u'generating slide data')
items = self.listView.selectedIndexes()
if len(items) == 0:
return False
- old_chapter = u''
- raw_slides = []
- raw_footer = []
bible_text = u''
+ old_chapter = u''
+ raw_footer = []
+ raw_slides = []
service_item.add_capability(ItemCapabilities.AllowsPreview)
service_item.add_capability(ItemCapabilities.AllowsLoop)
service_item.add_capability(ItemCapabilities.AllowsAdditions)
- #If we want to use a 2nd translation / version
- bible2 = u''
- if self.SearchTabWidget.currentIndex() == 0:
- bible2 = unicode(self.QuickSecondBibleComboBox.currentText())
- else:
- bible2 = unicode(self.AdvancedSecondBibleComboBox.currentText())
- if bible2:
- bible2_verses = []
- for scripture in self.lastReference:
- bible2_verses.extend(self.parent.manager.get_verses(bible2,
- scripture))
- bible2_version = self.parent.manager.get_meta_data(bible2,
- u'Version')
- bible2_copyright = self.parent.manager.get_meta_data(bible2,
- u'Copyright')
- bible2_permission = self.parent.manager.get_meta_data(bible2,
- u'Permissions')
- if bible2_version:
- bible2_version = bible2_version.value
- else:
- bible2_version = u''
- if bible2_copyright:
- bible2_copyright = bible2_copyright.value
- else:
- bible2_copyright = u''
- if bible2_permission:
- bible2_permission = bible2_permission.value
- else:
- bible2_permission = u''
- # 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:
bitem = self.listView.item(item.row())
reference = bitem.data(QtCore.Qt.UserRole)
if isinstance(reference, QtCore.QVariant):
reference = reference.toPyObject()
- #bible = self._decodeQtObject(reference, 'bible')
book = self._decodeQtObject(reference, 'book')
chapter = self._decodeQtObject(reference, 'chapter')
verse = self._decodeQtObject(reference, 'verse')
- text = self._decodeQtObject(reference, 'text')
+ bible = self._decodeQtObject(reference, 'bible')
version = self._decodeQtObject(reference, 'version')
copyright = self._decodeQtObject(reference, 'copyright')
#permission = self._decodeQtObject(reference, 'permission')
+ text = self._decodeQtObject(reference, 'text')
+ dual_bible = self._decodeQtObject(reference, 'dual_bible')
+ if dual_bible:
+ dual_version = self._decodeQtObject(reference,
+ 'dual_version')
+ dual_copyright = self._decodeQtObject(reference,
+ 'dual_copyright')
+ #dual_permission = self._decodeQtObject(reference,
+ # 'dual_permission')
+ dual_text = self._decodeQtObject(reference, 'dual_text')
if self.parent.settings_tab.display_style == 1:
verse_text = self.formatVerse(old_chapter, chapter, verse,
u'(', u')')
@@ -528,21 +515,21 @@ class BibleMediaItem(MediaManagerItem):
u'', u'')
old_chapter = chapter
footer = u'%s (%s %s)' % (book, version, copyright)
- #If not found add to footer
+ # If not found add to footer
if footer not in raw_footer:
raw_footer.append(footer)
- if bible2:
- footer = u'%s (%s %s)' % (book, bible2_version,
- bible2_copyright)
- #If not found add second version and copyright to footer
+ if dual_bible:
+ footer = u'%s (%s %s)' % (book, dual_version,
+ dual_copyright)
+ # If not found add second version and copyright to footer.
if footer not in raw_footer:
raw_footer.append(footer)
bible_text = u'%s %s \n\n %s %s' % (verse_text, text,
- verse_text, bible2_verses[item.row()].text)
+ verse_text, dual_text)
raw_slides.append(bible_text)
bible_text = u''
else:
- #Paragraph style force new line per verse
+ # If we are 'Verse Per Line' then force a new line.
if self.parent.settings_tab.layout_style == 1:
text = text + u'\n'
else:
@@ -550,28 +537,51 @@ class BibleMediaItem(MediaManagerItem):
service_item.add_capability(ItemCapabilities.NoLineBreaks)
text = text + u'\n'
bible_text = u'%s %s %s' % (bible_text, verse_text, text)
- #if we are verse per slide then create slide
+ # If we are 'Verse Per Slide' then create a new slide.
if self.parent.settings_tab.layout_style == 0:
raw_slides.append(bible_text)
bible_text = u''
- if not service_item.title:
- service_item.title = u'%s %s:%s' % (book, chapter, verse)
- elif service_item.title.find(
- translate('BiblesPlugin.MediaItem', 'etc')) == -1:
- service_item.title = u'%s, %s' % (service_item.title,
- translate('BiblesPlugin.MediaItem', 'etc'))
+ # 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 dual_bible:
+ service_item.title = u'%s (%s, %s) %s' % (book, version,
+ dual_version, verse_text)
+ else:
+ service_item.title = u'%s (%s) %s' % (book, version, verse_text)
+ elif service_item.title.find(
+ translate('BiblesPlugin.MediaItem', 'etc')) == -1:
+ service_item.title = u'%s, %s' % (service_item.title,
+ translate('BiblesPlugin.MediaItem', 'etc'))
+ # item theme
+>>>>>>> MERGE-SOURCE
if len(self.parent.settings_tab.bible_theme) == 0:
service_item.theme = None
else:
service_item.theme = self.parent.settings_tab.bible_theme
- #if we are verse per slide we have already been added
- if self.parent.settings_tab.layout_style != 0 and not bible2:
- raw_slides.append(bible_text)
for slide in raw_slides:
service_item.add_from_text(slide[:30], slide)
if service_item.raw_footer:
- for foot in raw_footer:
- service_item.raw_footer.append(foot)
+ for footer in raw_footer:
+ service_item.raw_footer.append(footer)
else:
service_item.raw_footer = raw_footer
return True
@@ -603,8 +613,8 @@ class BibleMediaItem(MediaManagerItem):
row, QtCore.QVariant(book[u'chapters']))
if first:
first = False
- self.initialiseChapterVerse(
- bible, book[u'name'], book[u'chapters'])
+ self.initialiseChapterVerse(bible, book[u'name'],
+ book[u'chapters'])
def initialiseChapterVerse(self, bible, book, chapters):
log.debug(u'initialiseChapterVerse %s, %s', bible, book)
@@ -628,32 +638,69 @@ class BibleMediaItem(MediaManagerItem):
for i in range(int(range_from), int(range_to) + 1):
combo.addItem(unicode(i))
- def displayResults(self, bible):
+ def displayResults(self, bible, dual_bible=None):
+ '''
+ Displays the search results in the media manager. All data needed for further
+ action is saved for/in each row.
+ '''
version = self.parent.manager.get_meta_data(bible, u'Version')
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
permission = self.parent.manager.get_meta_data(bible, u'Permissions')
- if not permission:
- permission = u''
- else:
- permission = permission.value
+ if dual_bible:
+ dual_version = self.parent.manager.get_meta_data(dual_bible,
+ u'Version')
+ dual_copyright = self.parent.manager.get_meta_data(dual_bible,
+ u'Copyright')
+ dual_permission = self.parent.manager.get_meta_data(dual_bible,
+ u'Permissions')
+ if dual_permission:
+ dual_permission = dual_permission.value
+ else:
+ dual_permission = u''
+ # We count the number of rows which are maybe already present.
+ start_count = self.listView.count()
for count, verse in enumerate(self.search_results):
- bible_text = u' %s %d:%d (%s)' % \
- (verse.book.name, verse.chapter, verse.verse, bible)
+ if dual_bible:
+ vdict = {
+ 'book':QtCore.QVariant(verse.book.name),
+ 'chapter':QtCore.QVariant(verse.chapter),
+ 'verse':QtCore.QVariant(verse.verse),
+ 'bible':QtCore.QVariant(bible),
+ 'version':QtCore.QVariant(version.value),
+ 'copyright':QtCore.QVariant(copyright.value),
+ #'permission':QtCore.QVariant(permission.value),
+ 'text':QtCore.QVariant(verse.text),
+ 'dual_bible':QtCore.QVariant(dual_bible),
+ 'dual_version':QtCore.QVariant(dual_version.value),
+ 'dual_copyright':QtCore.QVariant(dual_copyright.value),
+ #'dual_permission':QtCore.QVariant(dual_permission),
+ 'dual_text':QtCore.QVariant(
+ self.dual_search_results[count].text)
+ }
+ bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name,
+ verse.chapter, verse.verse, version.value, dual_version.value)
+ else:
+ vdict = {
+ 'book':QtCore.QVariant(verse.book.name),
+ 'chapter':QtCore.QVariant(verse.chapter),
+ 'verse':QtCore.QVariant(verse.verse),
+ 'bible':QtCore.QVariant(bible),
+ 'version':QtCore.QVariant(version.value),
+ 'copyright':QtCore.QVariant(copyright.value),
+ #'permission':QtCore.QVariant(permission.value),
+ 'text':QtCore.QVariant(verse.text),
+ 'dual_bible':QtCore.QVariant(dual_bible)
+ }
+ bible_text = u' %s %d:%d (%s)' % (verse.book.name,
+ verse.chapter, verse.verse, version.value)
+ # set the row title
bible_verse = QtGui.QListWidgetItem(bible_text)
#bible_verse.setData(QtCore.Qt.UserRole,
# QtCore.QVariant(bible_text))
- vdict = {
- 'bible': QtCore.QVariant(bible),
- 'version': QtCore.QVariant(version.value),
- 'copyright': QtCore.QVariant(copyright.value),
- 'permission': QtCore.QVariant(permission),
- 'book': QtCore.QVariant(verse.book.name),
- 'chapter': QtCore.QVariant(verse.chapter),
- 'verse': QtCore.QVariant(verse.verse),
- 'text': QtCore.QVariant(verse.text)
- }
bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict))
self.listView.addItem(bible_verse)
- row = self.listView.setCurrentRow(count)
+ row = self.listView.setCurrentRow(count + start_count)
if row:
row.setSelected(True)
+ self.search_results = {}
+ self.dual_search_results = {}