implemented 'text search' for bibles

This commit is contained in:
Andreas Preikschat 2010-09-30 20:40:10 +02:00
parent 0872cefacf
commit 74752da694
3 changed files with 38 additions and 12 deletions

View File

@ -254,7 +254,27 @@ class BibleManager(object):
'Book Chapter:Verse-Verse\n' 'Book Chapter:Verse-Verse\n'
'Book Chapter:Verse-Verse,Verse-Verse\n' 'Book Chapter:Verse-Verse,Verse-Verse\n'
'Book Chapter:Verse-Verse,Chapter:Verse-Verse\n' 'Book Chapter:Verse-Verse,Chapter:Verse-Verse\n'
'Book Chapter:Verse-Chapter:Verse\n')) 'Book Chapter:Verse-Chapter:Verse'))
return None
def verse_search(self, bible, text):
"""
``bible``
The bible to seach in.
``text``
The text to search for.
"""
log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text)
if text:
return self.db_cache[bible].verse_search(text)
else:
QtGui.QMessageBox.information(self.parent.mediaItem,
translate('BiblesPlugin.BibleManager',
'Scripture Reference Error'),
translate('BiblesPlugin.BibleManager', 'Your scripture '
'reference is not valid. Make sure to state a keyword to search'
' for. Keywords separated by a comma will be treated as OR.'))
return None return None
def save_meta_data(self, bible, version, copyright, permissions): def save_meta_data(self, bible, version, copyright, permissions):

View File

@ -535,10 +535,19 @@ class BibleMediaItem(MediaManagerItem):
bible = unicode(self.QuickVersionComboBox.currentText()) bible = unicode(self.QuickVersionComboBox.currentText())
dual_bible = unicode(self.QuickSecondBibleComboBox.currentText()) dual_bible = unicode(self.QuickSecondBibleComboBox.currentText())
text = unicode(self.QuickSearchEdit.text()) text = unicode(self.QuickSearchEdit.text())
if self.QuickSearchComboBox.currentIndex() == 0: # Verse Search
self.search_results = self.parent.manager.get_verses(bible, text) self.search_results = self.parent.manager.get_verses(bible, text)
if dual_bible: if dual_bible:
self.dual_search_results = self.parent.manager.get_verses( self.dual_search_results = self.parent.manager.get_verses(
dual_bible, text) dual_bible, text)
else: # Text Search
self.search_results = self.parent.manager.verse_search(bible, text)
if dual_bible:
for count, verse in enumerate(self.search_results):
text = u'%s %s:%s' % (verse.book.name, verse.chapter,
verse.verse)
self.dual_search_results[count] = self.parent.manager.\
get_verses(dual_bible, text)[0]
if self.ClearQuickSearchComboBox.currentIndex() == 0: if self.ClearQuickSearchComboBox.currentIndex() == 0:
self.listView.clear() self.listView.clear()
if self.listView.count() != 0 and self.search_results: if self.listView.count() != 0 and self.search_results:
@ -702,19 +711,16 @@ class BibleMediaItem(MediaManagerItem):
if bible_text: if bible_text:
raw_slides.append(bible_text) raw_slides.append(bible_text)
bible_text = u'' bible_text = u''
# Service Item: Capabilities
if self.parent.settings_tab.layout_style == 2 and not dual_bible: if self.parent.settings_tab.layout_style == 2 and not 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)
service_item.add_capability(ItemCapabilities.AllowsPreview) service_item.add_capability(ItemCapabilities.AllowsPreview)
service_item.add_capability(ItemCapabilities.AllowsLoop) service_item.add_capability(ItemCapabilities.AllowsLoop)
# Service Item: Title
for title in raw_title: for title in raw_title:
if not service_item.title: if not service_item.title:
service_item.title = title service_item.title = title
else: else:
service_item.title += u', ' + title service_item.title += u', ' + title
# 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: