- Fix bug #788762: only show the "No matching book" dialog once.

- If a second Bible is chosen, text search results will only contain passages which are in both Bibles.

bzr-revno: 1608
This commit is contained in:
Armin Köhler 2011-06-03 07:43:02 +02:00 committed by Raoul Snyman
commit 59f520ab6c
2 changed files with 33 additions and 8 deletions

View File

@ -381,6 +381,7 @@ class BibleDB(QtCore.QObject, Manager):
"""
log.debug(u'BibleDB.get_verses("%s")', reference_list)
verse_list = []
book_error = False
for book_id, chapter, start_verse, end_verse in reference_list:
db_book = self.get_book_by_book_ref_id(book_id)
if db_book:
@ -398,12 +399,13 @@ class BibleDB(QtCore.QObject, Manager):
verse_list.extend(verses)
else:
log.debug(u'OpenLP failed to find book with id "%s"', book_id)
if show_error:
critical_error_message_box(
translate('BiblesPlugin', 'No Book Found'),
translate('BiblesPlugin', 'No matching book '
'could be found in this Bible. Check that you '
'have spelled the name of the book correctly.'))
book_error = True
if book_error and show_error:
critical_error_message_box(
translate('BiblesPlugin', 'No Book Found'),
translate('BiblesPlugin', 'No matching book '
'could be found in this Bible. Check that you '
'have spelled the name of the book correctly.'))
return verse_list
def verse_search(self, text):

View File

@ -675,9 +675,32 @@ class BibleMediaItem(MediaManagerItem):
second_bible, text)
if second_bible and self.search_results:
text = []
new_search_results = []
count = 0
passage_not_found = False
for verse in self.search_results:
text.append((verse.book.name, verse.chapter, verse.verse,
verse.verse))
db_book = bibles[second_bible].get_book_by_book_ref_id(
verse.book.book_reference_id)
if not db_book:
log.debug(u'Passage "%s %d:%d" not found in Second '
u'Bible' % (verse.book.name, verse.chapter,
verse.verse))
passage_not_found = True
count += 1
continue
new_search_results.append(verse)
text.append((verse.book.book_reference_id, verse.chapter,
verse.verse, verse.verse))
if passage_not_found:
QtGui.QMessageBox.information(self,
translate('BiblePlugin.MediaItem', 'Information'),
unicode(translate('BiblePlugin.MediaItem',
'The second Bibles does not contain all the verses '
'that are in the main Bible. Only verses found in both '
'Bibles will be shown. %d verses have not been '
'included in the results.')) % count,
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
self.search_results = new_search_results
self.second_search_results = \
bibles[second_bible].get_verses(text)
if not self.quickLockButton.isChecked():