From 2255f05505be785a9c3bba5a5dc984f861add7e5 Mon Sep 17 00:00:00 2001 From: suutari-olli Date: Fri, 4 Mar 2016 05:33:57 +0200 Subject: [PATCH] Starting work on combined Bible quick search, added combined search type. (Copy from reference) --- openlp/plugins/bibles/lib/manager.py | 50 +++++++++++++++----------- openlp/plugins/bibles/lib/mediaitem.py | 12 ++++++- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 8cecbe0af..34662ef83 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -237,6 +237,26 @@ class BibleManager(RegistryProperties): log.debug('BibleManager.get_verse_count_by_book_ref_id("%s", "%s", "%s")', bible, book_ref_id, chapter) return self.db_cache[bible].get_verse_count(book_ref_id, chapter) + def get_language_selection(self, bible): + """ + Returns the language selection of a bible. + + :param bible: Unicode. The Bible to get the language selection from. + """ + log.debug('BibleManager.get_language_selection("%s")', bible) + language_selection = self.get_meta_data(bible, 'book_name_language') + if not language_selection or language_selection.value == "None" or language_selection.value == "-1": + # If None is returned, it's not the singleton object but a + # BibleMeta object with the value "None" + language_selection = Settings().value(self.settings_section + '/book name language') + else: + language_selection = language_selection.value + try: + language_selection = int(language_selection) + except (ValueError, TypeError): + language_selection = LanguageSelection.Application + return language_selection + def get_verses(self, bible, verse_text, book_ref_id=False, show_error=True): """ Parses a scripture reference, fetches the verses from the Bible @@ -296,26 +316,6 @@ class BibleManager(RegistryProperties): ) return None - def get_language_selection(self, bible): - """ - Returns the language selection of a bible. - - :param bible: Unicode. The Bible to get the language selection from. - """ - log.debug('BibleManager.get_language_selection("%s")', bible) - language_selection = self.get_meta_data(bible, 'book_name_language') - if not language_selection or language_selection.value == "None" or language_selection.value == "-1": - # If None is returned, it's not the singleton object but a - # BibleMeta object with the value "None" - language_selection = Settings().value(self.settings_section + '/book name language') - else: - language_selection = language_selection.value - try: - language_selection = int(language_selection) - except (ValueError, TypeError): - language_selection = LanguageSelection.Application - return language_selection - def verse_search(self, bible, second_bible, text): """ Does a verse search for the given bible and text. @@ -344,7 +344,15 @@ class BibleManager(RegistryProperties): translate('BiblesPlugin.BibleManager', 'Text Search is not available with Web Bibles.') ) return None - if text: + + if not len(text) == 0 and len(text) < 3: + self.main_window.information_message( + translate('BiblesPlugin.BibleManager', 'Keyword is too short'), + translate('BiblesPlugin.BibleManager', 'The keyword you have entered is shorter ' + 'than 3 characters long.\nPlease try again with ' + 'a longer keyword.') + ) + elif text: return self.db_cache[bible].verse_search(text) else: self.main_window.information_message( diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 94937e61b..683337644 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -45,6 +45,7 @@ class BibleSearch(object): """ Reference = 1 Text = 2 + Quick = 3 class BibleMediaItem(MediaManagerItem): @@ -309,6 +310,9 @@ class BibleMediaItem(MediaManagerItem): self.plugin.manager.media = self self.load_bibles() self.quick_search_edit.set_search_types([ + (BibleSearch.Quick, ':/bibles/bibles_search_reference.png', + translate('BiblesPlugin.MediaItem', 'Quick search'), + translate('BiblesPlugin.MediaItem', 'Search Text or Scripture Reference...')), (BibleSearch.Reference, ':/bibles/bibles_search_reference.png', translate('BiblesPlugin.MediaItem', 'Scripture Reference'), translate('BiblesPlugin.MediaItem', 'Search Scripture Reference...')), @@ -659,7 +663,13 @@ class BibleMediaItem(MediaManagerItem): bible = self.quickVersionComboBox.currentText() second_bible = self.quickSecondComboBox.currentText() text = self.quick_search_edit.text() - if self.quick_search_edit.current_search_type() == BibleSearch.Reference: + if self.quick_search_edit.current_search_type() == BibleSearch.Quick: + # We are doing a 'Reference Search'. + self.search_results = self.plugin.manager.get_verses(bible, text) + if second_bible and self.search_results: + self.second_search_results = \ + self.plugin.manager.get_verses(second_bible, text, self.search_results[0].book.book_reference_id) + elif self.quick_search_edit.current_search_type() == BibleSearch.Reference: # We are doing a 'Reference Search'. self.search_results = self.plugin.manager.get_verses(bible, text) if second_bible and self.search_results: