forked from openlp/openlp
Bibles
This commit is contained in:
parent
83abc63079
commit
776724d9a2
@ -74,14 +74,9 @@ class BGExtract(object):
|
||||
"""
|
||||
Remove a particular element from the BeautifulSoup tree.
|
||||
|
||||
``parent``
|
||||
The element from which items need to be removed.
|
||||
|
||||
``tag``
|
||||
A string of the tab type, e.g. "div"
|
||||
|
||||
``class_``
|
||||
An HTML class attribute for further qualification.
|
||||
:param parent: The element from which items need to be removed.
|
||||
:param tag: A string of the tab type, e.g. "div"
|
||||
:param class_: An HTML class attribute for further qualification.
|
||||
"""
|
||||
if class_:
|
||||
all_tags = parent.find_all(tag, class_)
|
||||
@ -94,8 +89,7 @@ class BGExtract(object):
|
||||
"""
|
||||
Extract a verse (or part of a verse) from a tag.
|
||||
|
||||
``tag``
|
||||
The BeautifulSoup Tag element with the stuff we want.
|
||||
:param tag: The BeautifulSoup Tag element with the stuff we want.
|
||||
"""
|
||||
if isinstance(tag, NavigableString):
|
||||
return None, str(tag)
|
||||
@ -122,8 +116,7 @@ class BGExtract(object):
|
||||
"""
|
||||
Remove all the rubbish from the HTML page.
|
||||
|
||||
``tag``
|
||||
The base tag within which we want to remove stuff.
|
||||
:param tag: The base tag within which we want to remove stuff.
|
||||
"""
|
||||
self._remove_elements(tag, 'sup', 'crossreference')
|
||||
self._remove_elements(tag, 'sup', 'footnote')
|
||||
@ -137,8 +130,7 @@ class BGExtract(object):
|
||||
"""
|
||||
Extract all the verses from a pre-prepared list of HTML tags.
|
||||
|
||||
``tags``
|
||||
A list of BeautifulSoup Tag elements.
|
||||
:param tags: A list of BeautifulSoup Tag elements.
|
||||
"""
|
||||
verses = []
|
||||
tags = tags[::-1]
|
||||
@ -184,8 +176,7 @@ class BGExtract(object):
|
||||
Use the old style of parsing for those Bibles on BG who mysteriously have not been migrated to the new (still
|
||||
broken) HTML.
|
||||
|
||||
``div``
|
||||
The parent div.
|
||||
:param div: The parent div.
|
||||
"""
|
||||
verse_list = {}
|
||||
# Cater for inconsistent mark up in the first verse of a chapter.
|
||||
@ -225,14 +216,9 @@ class BGExtract(object):
|
||||
"""
|
||||
Access and decode Bibles via the BibleGateway website.
|
||||
|
||||
``version``
|
||||
The version of the Bible like 31 for New International version.
|
||||
|
||||
``book_name``
|
||||
Name of the Book.
|
||||
|
||||
``chapter``
|
||||
Chapter number.
|
||||
:param version: The version of the Bible like 31 for New International version.
|
||||
:param book_name: Name of the Book.
|
||||
:param chapter: Chapter number.
|
||||
"""
|
||||
log.debug('BGExtract.get_bible_chapter("%s", "%s", "%s")', version, book_name, chapter)
|
||||
url_book_name = urllib.parse.quote(book_name.encode("utf-8"))
|
||||
@ -259,10 +245,9 @@ class BGExtract(object):
|
||||
|
||||
def get_books_from_http(self, version):
|
||||
"""
|
||||
Load a list of all books a Bible contaions from BibleGateway website.
|
||||
Load a list of all books a Bible contains from BibleGateway website.
|
||||
|
||||
``version``
|
||||
The version of the Bible like NIV for New International Version
|
||||
:param version: The version of the Bible like NIV for New International Version
|
||||
"""
|
||||
log.debug('BGExtract.get_books_from_http("%s")', version)
|
||||
url_params = urllib.parse.urlencode({'action': 'getVersionInfo', 'vid': '%s' % version})
|
||||
@ -328,14 +313,9 @@ class BSExtract(object):
|
||||
"""
|
||||
Access and decode bibles via Bibleserver mobile website
|
||||
|
||||
``version``
|
||||
The version of the bible like NIV for New International Version
|
||||
|
||||
``book_name``
|
||||
Text name of bible book e.g. Genesis, 1. John, 1John or Offenbarung
|
||||
|
||||
``chapter``
|
||||
Chapter number
|
||||
:param version: The version of the bible like NIV for New International Version
|
||||
:param book_name: Text name of bible book e.g. Genesis, 1. John, 1John or Offenbarung
|
||||
:param chapter: Chapter number
|
||||
"""
|
||||
log.debug('BSExtract.get_bible_chapter("%s", "%s", "%s")', version, book_name, chapter)
|
||||
url_version = urllib.parse.quote(version.encode("utf-8"))
|
||||
@ -363,12 +343,11 @@ class BSExtract(object):
|
||||
"""
|
||||
Load a list of all books a Bible contains from Bibleserver mobile website.
|
||||
|
||||
``version``
|
||||
The version of the Bible like NIV for New International Version
|
||||
:param version: The version of the Bible like NIV for New International Version
|
||||
"""
|
||||
log.debug('BSExtract.get_books_from_http("%s")', version)
|
||||
url_version = urllib.parse.quote(version.encode("utf-8"))
|
||||
chapter_url = 'http://m.bibleserver.com/overlay/selectBook?translation=%s' % (url_version)
|
||||
chapter_url = 'http://m.bibleserver.com/overlay/selectBook?translation=%s' % url_version
|
||||
soup = get_soup_for_bible_ref(chapter_url)
|
||||
if not soup:
|
||||
return None
|
||||
@ -408,14 +387,9 @@ class CWExtract(object):
|
||||
"""
|
||||
Access and decode bibles via the Crosswalk website
|
||||
|
||||
``version``
|
||||
The version of the Bible like niv for New International Version
|
||||
|
||||
``book_name``
|
||||
Text name of in english e.g. 'gen' for Genesis
|
||||
|
||||
``chapter``
|
||||
Chapter number
|
||||
:param version: The version of the Bible like niv for New International Version
|
||||
:param book_name: Text name of in english e.g. 'gen' for Genesis
|
||||
:param chapter: Chapter number
|
||||
"""
|
||||
log.debug('CWExtract.get_bible_chapter("%s", "%s", "%s")', version, book_name, chapter)
|
||||
url_book_name = book_name.replace(' ', '-')
|
||||
@ -463,11 +437,10 @@ class CWExtract(object):
|
||||
"""
|
||||
Load a list of all books a Bible contain from the Crosswalk website.
|
||||
|
||||
``version``
|
||||
The version of the bible like NIV for New International Version
|
||||
:param version: The version of the bible like NIV for New International Version
|
||||
"""
|
||||
log.debug('CWExtract.get_books_from_http("%s")', version)
|
||||
chapter_url = 'http://www.biblestudytools.com/%s/' % (version)
|
||||
chapter_url = 'http://www.biblestudytools.com/%s/' % version
|
||||
soup = get_soup_for_bible_ref(chapter_url)
|
||||
if not soup:
|
||||
return None
|
||||
@ -533,7 +506,8 @@ class HTTPBible(BibleDB):
|
||||
failure.
|
||||
"""
|
||||
self.wizard.progress_bar.setMaximum(68)
|
||||
self.wizard.increment_progress_bar(translate('BiblesPlugin.HTTPBible', 'Registering Bible and loading books...'))
|
||||
self.wizard.increment_progress_bar(translate('BiblesPlugin.HTTPBible',
|
||||
'Registering Bible and loading books...'))
|
||||
self.save_meta('download_source', self.download_source)
|
||||
self.save_meta('download_name', self.download_name)
|
||||
if self.proxy_server:
|
||||
@ -552,8 +526,8 @@ class HTTPBible(BibleDB):
|
||||
handler = BSExtract(self.proxy_server)
|
||||
books = handler.get_books_from_http(self.download_name)
|
||||
if not books:
|
||||
log.error('Importing books from %s - download name: "%s" '\
|
||||
'failed' % (self.download_source, self.download_name))
|
||||
log.error('Importing books from %s - download name: "%s" failed' %
|
||||
(self.download_source, self.download_name))
|
||||
return False
|
||||
self.wizard.progress_bar.setMaximum(len(books) + 2)
|
||||
self.wizard.increment_progress_bar(translate( 'BiblesPlugin.HTTPBible', 'Registering Language...'))
|
||||
@ -573,8 +547,8 @@ class HTTPBible(BibleDB):
|
||||
'BiblesPlugin.HTTPBible', 'Importing %s...', 'Importing <book name>...') % book)
|
||||
book_ref_id = self.get_book_ref_id_by_name(book, len(books), language_id)
|
||||
if not book_ref_id:
|
||||
log.error('Importing books from %s - download name: "%s" '\
|
||||
'failed' % (self.download_source, self.download_name))
|
||||
log.error('Importing books from %s - download name: "%s" failed' %
|
||||
(self.download_source, self.download_name))
|
||||
return False
|
||||
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
|
||||
log.debug('Book details: Name:%s; id:%s; testament_id:%s',
|
||||
@ -658,8 +632,7 @@ class HTTPBible(BibleDB):
|
||||
"""
|
||||
Return the number of chapters in a particular book.
|
||||
|
||||
``book``
|
||||
The book object to get the chapter count for.
|
||||
:param book: The book object to get the chapter count for.
|
||||
"""
|
||||
log.debug('HTTPBible.get_chapter_count("%s")', book.name)
|
||||
return BiblesResourcesDB.get_chapter_count(book.book_reference_id)
|
||||
@ -668,11 +641,8 @@ class HTTPBible(BibleDB):
|
||||
"""
|
||||
Return the number of verses for the specified chapter and book.
|
||||
|
||||
``book``
|
||||
The name of the book.
|
||||
|
||||
``chapter``
|
||||
The chapter whose verses are being counted.
|
||||
:param book_id: The name of the book.
|
||||
:param chapter: The chapter whose verses are being counted.
|
||||
"""
|
||||
log.debug('HTTPBible.get_verse_count("%s", %s)', book_id, chapter)
|
||||
return BiblesResourcesDB.get_verse_count(book_id, chapter)
|
||||
@ -696,18 +666,11 @@ def get_soup_for_bible_ref(reference_url, header=None, pre_parse_regex=None, pre
|
||||
"""
|
||||
Gets a webpage and returns a parsed and optionally cleaned soup or None.
|
||||
|
||||
``reference_url``
|
||||
The URL to obtain the soup from.
|
||||
|
||||
``header``
|
||||
An optional HTTP header to pass to the bible web server.
|
||||
|
||||
``pre_parse_regex``
|
||||
A regular expression to run on the webpage. Allows manipulation of the webpage before passing to BeautifulSoup
|
||||
for parsing.
|
||||
|
||||
``pre_parse_substitute``
|
||||
The text to replace any matches to the regular expression with.
|
||||
:param reference_url: The URL to obtain the soup from.
|
||||
:param header: An optional HTTP header to pass to the bible web server.
|
||||
:param pre_parse_regex: A regular expression to run on the webpage. Allows manipulation of the webpage before
|
||||
passing to BeautifulSoup for parsing.
|
||||
:param pre_parse_substitute: The text to replace any matches to the regular expression with.
|
||||
"""
|
||||
if not reference_url:
|
||||
return None
|
||||
@ -742,7 +705,8 @@ def send_error_message(error_type):
|
||||
critical_error_message_box(
|
||||
translate('BiblesPlugin.HTTPBible', 'Download Error'),
|
||||
translate('BiblesPlugin.HTTPBible', 'There was a problem downloading your verse selection. Please check '
|
||||
'your Internet connection, and if this error continues to occur please consider reporting a bug.'))
|
||||
'your Internet connection, and if this error continues to occur please consider reporting a bug'
|
||||
'.'))
|
||||
elif error_type == 'parse':
|
||||
critical_error_message_box(
|
||||
translate('BiblesPlugin.HTTPBible', 'Parse Error'),
|
||||
|
@ -40,7 +40,6 @@ from .opensong import OpenSongBible
|
||||
from .osis import OSISBible
|
||||
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -57,7 +56,7 @@ class BibleFormat(object):
|
||||
@staticmethod
|
||||
def get_class(format):
|
||||
"""
|
||||
Return the appropriate imeplementation class.
|
||||
Return the appropriate implementation class.
|
||||
|
||||
``format``
|
||||
The Bible format.
|
||||
@ -156,8 +155,7 @@ class BibleManager(object):
|
||||
"""
|
||||
Sets the reference to the dialog with the progress bar on it.
|
||||
|
||||
``dialog``
|
||||
The reference to the import wizard.
|
||||
:param wizard: The reference to the import wizard.
|
||||
"""
|
||||
self.import_wizard = wizard
|
||||
|
||||
@ -165,11 +163,8 @@ class BibleManager(object):
|
||||
"""
|
||||
Register a bible in the bible cache, and then import the verses.
|
||||
|
||||
``type``
|
||||
What type of Bible, one of the ``BibleFormat`` values.
|
||||
|
||||
``**kwargs``
|
||||
Keyword arguments to send to the actual importer class.
|
||||
:param type: What type of Bible, one of the ``BibleFormat`` values.
|
||||
:param kwargs: Keyword arguments to send to the actual importer class.
|
||||
"""
|
||||
class_ = BibleFormat.get_class(type)
|
||||
kwargs['path'] = self.path
|
||||
@ -182,8 +177,7 @@ class BibleManager(object):
|
||||
"""
|
||||
Delete a bible completely.
|
||||
|
||||
``name``
|
||||
The name of the bible.
|
||||
:param name: The name of the bible.
|
||||
"""
|
||||
log.debug('BibleManager.delete_bible("%s")', name)
|
||||
bible = self.db_cache[name]
|
||||
@ -202,8 +196,7 @@ class BibleManager(object):
|
||||
"""
|
||||
Returns a list of Bible books, and the number of chapters in that book.
|
||||
|
||||
``bible``
|
||||
Unicode. The Bible to get the list of books from.
|
||||
:param bible: Unicode. The Bible to get the list of books from.
|
||||
"""
|
||||
log.debug('BibleManager.get_books("%s")', bible)
|
||||
return [
|
||||
@ -219,11 +212,8 @@ class BibleManager(object):
|
||||
"""
|
||||
Returns a book object by given id.
|
||||
|
||||
``bible``
|
||||
Unicode. The Bible to get the list of books from.
|
||||
|
||||
``id``
|
||||
Unicode. The book_reference_id to get the book for.
|
||||
:param bible: Unicode. The Bible to get the list of books from.
|
||||
:param id: Unicode. The book_reference_id to get the book for.
|
||||
"""
|
||||
log.debug('BibleManager.get_book_by_id("%s", "%s")', bible, id)
|
||||
return self.db_cache[bible].get_book_by_book_ref_id(id)
|
||||
@ -232,22 +222,17 @@ class BibleManager(object):
|
||||
"""
|
||||
Returns the number of Chapters for a given book.
|
||||
|
||||
``bible``
|
||||
Unicode. The Bible to get the list of books from.
|
||||
|
||||
``book``
|
||||
The book object to get the chapter count for.
|
||||
:param bible: Unicode. The Bible to get the list of books from.
|
||||
:param book: The book object to get the chapter count for.
|
||||
"""
|
||||
log.debug('BibleManager.get_book_chapter_count ("%s", "%s")', bible, book.name)
|
||||
return self.db_cache[bible].get_chapter_count(book)
|
||||
|
||||
def get_verse_count(self, bible, book, chapter):
|
||||
"""
|
||||
Returns all the number of verses for a given
|
||||
book and chapterMaxBibleBookVerses.
|
||||
Returns all the number of verses for a given book and chapterMaxBibleBookVerses.
|
||||
"""
|
||||
log.debug('BibleManager.get_verse_count("%s", "%s", %s)',
|
||||
bible, book, chapter)
|
||||
log.debug('BibleManager.get_verse_count("%s", "%s", %s)', bible, book, chapter)
|
||||
language_selection = self.get_language_selection(bible)
|
||||
book_ref_id = self.db_cache[bible].get_book_ref_id_by_localised_name(book, language_selection)
|
||||
return self.db_cache[bible].get_verse_count(book_ref_id, chapter)
|
||||
@ -260,15 +245,13 @@ class BibleManager(object):
|
||||
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_verses(self, bible, versetext, book_ref_id=False, show_error=True):
|
||||
def get_verses(self, bible, verse_text, book_ref_id=False, show_error=True):
|
||||
"""
|
||||
Parses a scripture reference, fetches the verses from the Bible
|
||||
specified, and returns a list of ``Verse`` objects.
|
||||
|
||||
``bible``
|
||||
Unicode. The Bible to use.
|
||||
|
||||
``versetext``
|
||||
:param bible: Unicode. The Bible to use.
|
||||
:param verse_text:
|
||||
Unicode. The scripture reference. Valid scripture references are:
|
||||
|
||||
- Genesis 1
|
||||
@ -279,28 +262,26 @@ class BibleManager(object):
|
||||
- Genesis 1:1-2:10
|
||||
- Genesis 1:1-10,2:1-10
|
||||
|
||||
``book_ref_id``
|
||||
Unicode. The book referece id from the book in versetext.
|
||||
:param book_ref_id: Unicode. The book reference id from the book in verse_text.
|
||||
For second bible this is necessary.
|
||||
:param show_error:
|
||||
"""
|
||||
log.debug('BibleManager.get_verses("%s", "%s")', bible, versetext)
|
||||
log.debug('BibleManager.get_verses("%s", "%s")', bible, verse_text)
|
||||
if not bible:
|
||||
if show_error:
|
||||
self.main_window.information_message(
|
||||
translate('BiblesPlugin.BibleManager', 'No Bibles Available'),
|
||||
translate('BiblesPlugin.BibleManager',
|
||||
'There are no Bibles currently installed. Please use the '
|
||||
translate('BiblesPlugin.BibleManager', 'There are no Bibles currently installed. Please use the '
|
||||
'Import Wizard to install one or more Bibles.')
|
||||
)
|
||||
return None
|
||||
language_selection = self.get_language_selection(bible)
|
||||
reflist = parse_reference(versetext, self.db_cache[bible],
|
||||
language_selection, book_ref_id)
|
||||
reflist = parse_reference(verse_text, self.db_cache[bible], language_selection, book_ref_id)
|
||||
if reflist:
|
||||
return self.db_cache[bible].get_verses(reflist, show_error)
|
||||
else:
|
||||
if show_error:
|
||||
reference_seperators = {
|
||||
reference_separators = {
|
||||
'verse': get_reference_separator('sep_v_display'),
|
||||
'range': get_reference_separator('sep_r_display'),
|
||||
'list': get_reference_separator('sep_l_display')}
|
||||
@ -318,7 +299,8 @@ class BibleManager(object):
|
||||
'%(verse)sVerse%(range)sVerse\n'
|
||||
'Book Chapter%(verse)sVerse%(range)sChapter%(verse)sVerse',
|
||||
'Please pay attention to the appended "s" of the wildcards '
|
||||
'and refrain from translating the words inside the names in the brackets.') % reference_seperators
|
||||
'and refrain from translating the words inside the names in the brackets.')
|
||||
% reference_separators
|
||||
)
|
||||
return None
|
||||
|
||||
@ -326,8 +308,7 @@ class BibleManager(object):
|
||||
"""
|
||||
Returns the language selection of a bible.
|
||||
|
||||
``bible``
|
||||
Unicode. The Bible to get the language selection from.
|
||||
: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')
|
||||
@ -347,30 +328,25 @@ class BibleManager(object):
|
||||
"""
|
||||
Does a verse search for the given bible and text.
|
||||
|
||||
``bible``
|
||||
The bible to search in (unicode).
|
||||
|
||||
``second_bible``
|
||||
The second bible (unicode). We do not search in this bible.
|
||||
|
||||
``text``
|
||||
The text to search for (unicode).
|
||||
:param bible: The bible to search in (unicode).
|
||||
:param second_bible: The second bible (unicode). We do not search in this bible.
|
||||
:param text: The text to search for (unicode).
|
||||
"""
|
||||
log.debug('BibleManager.verse_search("%s", "%s")', bible, text)
|
||||
if not bible:
|
||||
self.main_window.information_message(
|
||||
translate('BiblesPlugin.BibleManager', 'No Bibles Available'),
|
||||
translate('BiblesPlugin.BibleManager',
|
||||
'There are no Bibles currently installed. Please use the Import Wizard to install one or more'
|
||||
' Bibles.')
|
||||
'There are no Bibles currently installed. Please use the Import Wizard to install one or '
|
||||
'more Bibles.')
|
||||
)
|
||||
return None
|
||||
# Check if the bible or second_bible is a web bible.
|
||||
webbible = self.db_cache[bible].get_object(BibleMeta, 'download_source')
|
||||
web_bible = self.db_cache[bible].get_object(BibleMeta, 'download_source')
|
||||
second_webbible = ''
|
||||
if second_bible:
|
||||
second_webbible = self.db_cache[second_bible].get_object(BibleMeta, 'download_source')
|
||||
if webbible or second_webbible:
|
||||
if web_bible or second_webbible:
|
||||
self.main_window.information_message(
|
||||
translate('BiblesPlugin.BibleManager', 'Web Bible cannot be used'),
|
||||
translate('BiblesPlugin.BibleManager', 'Text Search is not available with Web Bibles.')
|
||||
@ -387,18 +363,15 @@ class BibleManager(object):
|
||||
)
|
||||
return None
|
||||
|
||||
def save_meta_data(self, bible, version, copyright, permissions,
|
||||
book_name_language=None):
|
||||
def save_meta_data(self, bible, version, copyright, permissions, book_name_language=None):
|
||||
"""
|
||||
Saves the bibles meta data.
|
||||
"""
|
||||
log.debug('save_meta data %s, %s, %s, %s',
|
||||
bible, version, copyright, permissions)
|
||||
log.debug('save_meta data %s, %s, %s, %s', bible, version, copyright, permissions)
|
||||
self.db_cache[bible].save_meta('name', version)
|
||||
self.db_cache[bible].save_meta('copyright', copyright)
|
||||
self.db_cache[bible].save_meta('permissions', permissions)
|
||||
self.db_cache[bible].save_meta('book_name_language',
|
||||
book_name_language)
|
||||
self.db_cache[bible].save_meta('book_name_language', book_name_language)
|
||||
|
||||
def get_meta_data(self, bible, key):
|
||||
"""
|
||||
|
@ -86,19 +86,19 @@ class BibleMediaItem(MediaManagerItem):
|
||||
if not bitem.flags() & QtCore.Qt.ItemIsSelectable:
|
||||
# The item is the "No Search Results" item.
|
||||
self.list_view.clear()
|
||||
self.displayResults(bible, second_bible)
|
||||
self.display_results(bible, second_bible)
|
||||
return
|
||||
else:
|
||||
item_second_bible = self._decode_qt_object(bitem, 'second_bible')
|
||||
if item_second_bible and second_bible or not item_second_bible and not second_bible:
|
||||
self.displayResults(bible, second_bible)
|
||||
self.display_results(bible, second_bible)
|
||||
elif critical_error_message_box(
|
||||
message=translate('BiblesPlugin.MediaItem',
|
||||
'You cannot combine single and dual Bible verse search results. '
|
||||
'Do you want to delete your search results and start a new search?'),
|
||||
parent=self, question=True) == QtGui.QMessageBox.Yes:
|
||||
self.list_view.clear()
|
||||
self.displayResults(bible, second_bible)
|
||||
self.display_results(bible, second_bible)
|
||||
|
||||
def _decode_qt_object(self, bitem, key):
|
||||
reference = bitem.data(QtCore.Qt.UserRole)
|
||||
@ -116,8 +116,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.has_delete_icon = True
|
||||
self.add_to_service_item = False
|
||||
|
||||
def addSearchTab(self, prefix, name):
|
||||
self.searchTabBar.addTab(name)
|
||||
def add_search_tab(self, prefix, name):
|
||||
self.search_tab_bar.addTab(name)
|
||||
tab = QtGui.QWidget()
|
||||
tab.setObjectName(prefix + 'Tab')
|
||||
tab.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
|
||||
@ -126,15 +126,12 @@ class BibleMediaItem(MediaManagerItem):
|
||||
setattr(self, prefix + 'Tab', tab)
|
||||
setattr(self, prefix + 'Layout', layout)
|
||||
|
||||
def addSearchFields(self, prefix, name):
|
||||
def add_search_fields(self, prefix, name):
|
||||
"""
|
||||
Creates and adds generic search tab.
|
||||
|
||||
``prefix``
|
||||
The prefix of the tab, this is either ``quick`` or ``advanced``.
|
||||
|
||||
``name``
|
||||
The translated string to display.
|
||||
:param prefix: The prefix of the tab, this is either ``quick`` or ``advanced``.
|
||||
:param name: The translated string to display.
|
||||
"""
|
||||
if prefix == 'quick':
|
||||
idx = 2
|
||||
@ -142,124 +139,126 @@ class BibleMediaItem(MediaManagerItem):
|
||||
idx = 5
|
||||
tab = getattr(self, prefix + 'Tab')
|
||||
layout = getattr(self, prefix + 'Layout')
|
||||
versionLabel = QtGui.QLabel(tab)
|
||||
versionLabel.setObjectName(prefix + 'VersionLabel')
|
||||
layout.addWidget(versionLabel, idx, 0, QtCore.Qt.AlignRight)
|
||||
versionComboBox = create_horizontal_adjusting_combo_box(tab, prefix + 'VersionComboBox')
|
||||
versionLabel.setBuddy(versionComboBox)
|
||||
layout.addWidget(versionComboBox, idx, 1, 1, 2)
|
||||
secondLabel = QtGui.QLabel(tab)
|
||||
secondLabel.setObjectName(prefix + 'SecondLabel')
|
||||
layout.addWidget(secondLabel, idx + 1, 0, QtCore.Qt.AlignRight)
|
||||
secondComboBox = create_horizontal_adjusting_combo_box(tab, prefix + 'SecondComboBox')
|
||||
versionLabel.setBuddy(secondComboBox)
|
||||
layout.addWidget(secondComboBox, idx + 1, 1, 1, 2)
|
||||
styleLabel = QtGui.QLabel(tab)
|
||||
styleLabel.setObjectName(prefix + 'StyleLabel')
|
||||
layout.addWidget(styleLabel, idx + 2, 0, QtCore.Qt.AlignRight)
|
||||
styleComboBox = create_horizontal_adjusting_combo_box(tab, prefix + 'StyleComboBox')
|
||||
styleComboBox.addItems(['', '', ''])
|
||||
layout.addWidget(styleComboBox, idx + 2, 1, 1, 2)
|
||||
version_label = QtGui.QLabel(tab)
|
||||
version_label.setObjectName(prefix + 'VersionLabel')
|
||||
layout.addWidget(version_label, idx, 0, QtCore.Qt.AlignRight)
|
||||
version_combo_box = create_horizontal_adjusting_combo_box(tab, prefix + 'VersionComboBox')
|
||||
version_label.setBuddy(version_combo_box)
|
||||
layout.addWidget(version_combo_box, idx, 1, 1, 2)
|
||||
second_label = QtGui.QLabel(tab)
|
||||
second_label.setObjectName(prefix + 'SecondLabel')
|
||||
layout.addWidget(second_label, idx + 1, 0, QtCore.Qt.AlignRight)
|
||||
second_combo_box = create_horizontal_adjusting_combo_box(tab, prefix + 'SecondComboBox')
|
||||
version_label.setBuddy(second_combo_box)
|
||||
layout.addWidget(second_combo_box, idx + 1, 1, 1, 2)
|
||||
style_label = QtGui.QLabel(tab)
|
||||
style_label.setObjectName(prefix + 'StyleLabel')
|
||||
layout.addWidget(style_label, idx + 2, 0, QtCore.Qt.AlignRight)
|
||||
style_combo_box = create_horizontal_adjusting_combo_box(tab, prefix + 'StyleComboBox')
|
||||
style_combo_box.addItems(['', '', ''])
|
||||
layout.addWidget(style_combo_box, idx + 2, 1, 1, 2)
|
||||
search_button_layout = QtGui.QHBoxLayout()
|
||||
search_button_layout.setObjectName(prefix + 'search_button_layout')
|
||||
search_button_layout.addStretch()
|
||||
lockButton = QtGui.QToolButton(tab)
|
||||
lockButton.setIcon(self.unlock_icon)
|
||||
lockButton.setCheckable(True)
|
||||
lockButton.setObjectName(prefix + 'LockButton')
|
||||
search_button_layout.addWidget(lockButton)
|
||||
searchButton = QtGui.QPushButton(tab)
|
||||
searchButton.setObjectName(prefix + 'SearchButton')
|
||||
search_button_layout.addWidget(searchButton)
|
||||
lock_button = QtGui.QToolButton(tab)
|
||||
lock_button.setIcon(self.unlock_icon)
|
||||
lock_button.setCheckable(True)
|
||||
lock_button.setObjectName(prefix + 'LockButton')
|
||||
search_button_layout.addWidget(lock_button)
|
||||
search_button = QtGui.QPushButton(tab)
|
||||
search_button.setObjectName(prefix + 'SearchButton')
|
||||
search_button_layout.addWidget(search_button)
|
||||
layout.addLayout(search_button_layout, idx + 3, 1, 1, 2)
|
||||
self.page_layout.addWidget(tab)
|
||||
tab.setVisible(False)
|
||||
lockButton.toggled.connect(self.onLockButtonToggled)
|
||||
setattr(self, prefix + 'VersionLabel', versionLabel)
|
||||
setattr(self, prefix + 'VersionComboBox', versionComboBox)
|
||||
setattr(self, prefix + 'SecondLabel', secondLabel)
|
||||
setattr(self, prefix + 'SecondComboBox', secondComboBox)
|
||||
setattr(self, prefix + 'StyleLabel', styleLabel)
|
||||
setattr(self, prefix + 'StyleComboBox', styleComboBox)
|
||||
setattr(self, prefix + 'LockButton', lockButton)
|
||||
lock_button.toggled.connect(self.on_lock_button_toggled)
|
||||
setattr(self, prefix + 'VersionLabel', version_label)
|
||||
setattr(self, prefix + 'VersionComboBox', version_combo_box)
|
||||
setattr(self, prefix + 'SecondLabel', second_label)
|
||||
setattr(self, prefix + 'SecondComboBox', second_combo_box)
|
||||
setattr(self, prefix + 'StyleLabel', style_label)
|
||||
setattr(self, prefix + 'StyleComboBox', style_combo_box)
|
||||
setattr(self, prefix + 'LockButton', lock_button)
|
||||
setattr(self, prefix + 'SearchButtonLayout', search_button_layout)
|
||||
setattr(self, prefix + 'SearchButton', searchButton)
|
||||
setattr(self, prefix + 'SearchButton', search_button)
|
||||
|
||||
def add_end_header_bar(self):
|
||||
self.searchTabBar = QtGui.QTabBar(self)
|
||||
self.searchTabBar.setExpanding(False)
|
||||
self.searchTabBar.setObjectName('searchTabBar')
|
||||
self.page_layout.addWidget(self.searchTabBar)
|
||||
self.search_tab_bar = QtGui.QTabBar(self)
|
||||
self.search_tab_bar.setExpanding(False)
|
||||
self.search_tab_bar.setObjectName('search_tab_bar')
|
||||
self.page_layout.addWidget(self.search_tab_bar)
|
||||
# Add the Quick Search tab.
|
||||
self.addSearchTab('quick', translate('BiblesPlugin.MediaItem', 'Quick'))
|
||||
self.quickSearchLabel = QtGui.QLabel(self.quickTab)
|
||||
self.quickSearchLabel.setObjectName('quickSearchLabel')
|
||||
self.quickLayout.addWidget(self.quickSearchLabel, 0, 0, QtCore.Qt.AlignRight)
|
||||
self.quickSearchEdit = SearchEdit(self.quickTab)
|
||||
self.quickSearchEdit.setSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Fixed)
|
||||
self.quickSearchEdit.setObjectName('quickSearchEdit')
|
||||
self.quickSearchLabel.setBuddy(self.quickSearchEdit)
|
||||
self.quickLayout.addWidget(self.quickSearchEdit, 0, 1, 1, 2)
|
||||
self.addSearchFields('quick', translate('BiblesPlugin.MediaItem', 'Quick'))
|
||||
self.add_search_tab('quick', translate('BiblesPlugin.MediaItem', 'Quick'))
|
||||
self.quick_search_label = QtGui.QLabel(self.quickTab)
|
||||
self.quick_search_label.setObjectName('quick_search_label')
|
||||
self.quickLayout.addWidget(self.quick_search_label, 0, 0, QtCore.Qt.AlignRight)
|
||||
self.quick_search_edit = SearchEdit(self.quickTab)
|
||||
self.quick_search_edit.setSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Fixed)
|
||||
self.quick_search_edit.setObjectName('quick_search_edit')
|
||||
self.quick_search_label.setBuddy(self.quick_search_edit)
|
||||
self.quickLayout.addWidget(self.quick_search_edit, 0, 1, 1, 2)
|
||||
self.add_search_fields('quick', translate('BiblesPlugin.MediaItem', 'Quick'))
|
||||
self.quickTab.setVisible(True)
|
||||
# Add the Advanced Search tab.
|
||||
self.addSearchTab('advanced', UiStrings().Advanced)
|
||||
self.advancedBookLabel = QtGui.QLabel(self.advancedTab)
|
||||
self.advancedBookLabel.setObjectName('advancedBookLabel')
|
||||
self.advancedLayout.addWidget(self.advancedBookLabel, 0, 0, QtCore.Qt.AlignRight)
|
||||
self.advancedBookComboBox = create_horizontal_adjusting_combo_box(self.advancedTab, 'advancedBookComboBox')
|
||||
self.advancedBookLabel.setBuddy(self.advancedBookComboBox)
|
||||
self.advancedLayout.addWidget(self.advancedBookComboBox, 0, 1, 1, 2)
|
||||
self.advancedChapterLabel = QtGui.QLabel(self.advancedTab)
|
||||
self.advancedChapterLabel.setObjectName('advancedChapterLabel')
|
||||
self.advancedLayout.addWidget(self.advancedChapterLabel, 1, 1, 1, 2)
|
||||
self.advancedVerseLabel = QtGui.QLabel(self.advancedTab)
|
||||
self.advancedVerseLabel.setObjectName('advancedVerseLabel')
|
||||
self.advancedLayout.addWidget(self.advancedVerseLabel, 1, 2)
|
||||
self.advancedFromLabel = QtGui.QLabel(self.advancedTab)
|
||||
self.advancedFromLabel.setObjectName('advancedFromLabel')
|
||||
self.advancedLayout.addWidget(self.advancedFromLabel, 3, 0, QtCore.Qt.AlignRight)
|
||||
self.advancedFromChapter = QtGui.QComboBox(self.advancedTab)
|
||||
self.advancedFromChapter.setObjectName('advancedFromChapter')
|
||||
self.advancedLayout.addWidget(self.advancedFromChapter, 3, 1)
|
||||
self.advancedFromVerse = QtGui.QComboBox(self.advancedTab)
|
||||
self.advancedFromVerse.setObjectName('advancedFromVerse')
|
||||
self.advancedLayout.addWidget(self.advancedFromVerse, 3, 2)
|
||||
self.advancedToLabel = QtGui.QLabel(self.advancedTab)
|
||||
self.advancedToLabel.setObjectName('advancedToLabel')
|
||||
self.advancedLayout.addWidget(self.advancedToLabel, 4, 0, QtCore.Qt.AlignRight)
|
||||
self.advancedToChapter = QtGui.QComboBox(self.advancedTab)
|
||||
self.advancedToChapter.setObjectName('advancedToChapter')
|
||||
self.advancedLayout.addWidget(self.advancedToChapter, 4, 1)
|
||||
self.advancedToVerse = QtGui.QComboBox(self.advancedTab)
|
||||
self.advancedToVerse.setObjectName('advancedToVerse')
|
||||
self.advancedLayout.addWidget(self.advancedToVerse, 4, 2)
|
||||
self.addSearchFields('advanced', UiStrings().Advanced)
|
||||
self.add_search_tab('advanced', UiStrings().Advanced)
|
||||
self.advanced_book_label = QtGui.QLabel(self.advancedTab)
|
||||
self.advanced_book_label.setObjectName('advanced_book_label')
|
||||
self.advancedLayout.addWidget(self.advanced_book_label, 0, 0, QtCore.Qt.AlignRight)
|
||||
self.advanced_book_combo_box = create_horizontal_adjusting_combo_box(self.advancedTab,
|
||||
'advanced_book_combo_box')
|
||||
self.advanced_book_label.setBuddy(self.advanced_book_combo_box)
|
||||
self.advancedLayout.addWidget(self.advanced_book_combo_box, 0, 1, 1, 2)
|
||||
self.advanced_chapter_label = QtGui.QLabel(self.advancedTab)
|
||||
self.advanced_chapter_label.setObjectName('advanced_chapter_label')
|
||||
self.advancedLayout.addWidget(self.advanced_chapter_label, 1, 1, 1, 2)
|
||||
self.advanced_verse_label = QtGui.QLabel(self.advancedTab)
|
||||
self.advanced_verse_label.setObjectName('advanced_verse_label')
|
||||
self.advancedLayout.addWidget(self.advanced_verse_label, 1, 2)
|
||||
self.advanced_from_label = QtGui.QLabel(self.advancedTab)
|
||||
self.advanced_from_label.setObjectName('advanced_from_label')
|
||||
self.advancedLayout.addWidget(self.advanced_from_label, 3, 0, QtCore.Qt.AlignRight)
|
||||
self.advanced_from_chapter = QtGui.QComboBox(self.advancedTab)
|
||||
self.advanced_from_chapter.setObjectName('advanced_from_chapter')
|
||||
self.advancedLayout.addWidget(self.advanced_from_chapter, 3, 1)
|
||||
self.advanced_from_verse = QtGui.QComboBox(self.advancedTab)
|
||||
self.advanced_from_verse.setObjectName('advanced_from_verse')
|
||||
self.advancedLayout.addWidget(self.advanced_from_verse, 3, 2)
|
||||
self.advanced_to_label = QtGui.QLabel(self.advancedTab)
|
||||
self.advanced_to_label.setObjectName('advanced_to_label')
|
||||
self.advancedLayout.addWidget(self.advanced_to_label, 4, 0, QtCore.Qt.AlignRight)
|
||||
self.advanced_to_chapter = QtGui.QComboBox(self.advancedTab)
|
||||
self.advanced_to_chapter.setObjectName('advanced_to_chapter')
|
||||
self.advancedLayout.addWidget(self.advanced_to_chapter, 4, 1)
|
||||
self.advanced_to_verse = QtGui.QComboBox(self.advancedTab)
|
||||
self.advanced_to_verse.setObjectName('advanced_to_verse')
|
||||
self.advancedLayout.addWidget(self.advanced_to_verse, 4, 2)
|
||||
self.add_search_fields('advanced', UiStrings().Advanced)
|
||||
# Combo Boxes
|
||||
self.quickVersionComboBox.activated.connect(self.updateAutoCompleter)
|
||||
self.quickSecondComboBox.activated.connect(self.updateAutoCompleter)
|
||||
self.advancedVersionComboBox.activated.connect(self.onAdvancedVersionComboBox)
|
||||
self.advancedSecondComboBox.activated.connect(self.onAdvancedSecondComboBox)
|
||||
self.advancedBookComboBox.activated.connect(self.onAdvancedBookComboBox)
|
||||
self.advancedFromChapter.activated.connect(self.onAdvancedFromChapter)
|
||||
self.advancedFromVerse.activated.connect(self.onAdvancedFromVerse)
|
||||
self.advancedToChapter.activated.connect(self.onAdvancedToChapter)
|
||||
QtCore.QObject.connect(self.quickSearchEdit, QtCore.SIGNAL('searchTypeChanged(int)'), self.updateAutoCompleter)
|
||||
self.quickVersionComboBox.activated.connect(self.updateAutoCompleter)
|
||||
self.quickStyleComboBox.activated.connect(self.onQuickStyleComboBoxChanged)
|
||||
self.advancedStyleComboBox.activated.connect(self.onAdvancedStyleComboBoxChanged)
|
||||
self.quickVersionComboBox.activated.connect(self.update_auto_completer)
|
||||
self.quickSecondComboBox.activated.connect(self.update_auto_completer)
|
||||
self.advancedVersionComboBox.activated.connect(self.on_advanced_version_combo_box)
|
||||
self.advancedSecondComboBox.activated.connect(self.on_advanced_second_combo_box)
|
||||
self.advanced_book_combo_box.activated.connect(self.on_advanced_book_combo_box)
|
||||
self.advanced_from_chapter.activated.connect(self.on_advanced_from_chapter)
|
||||
self.advanced_from_verse.activated.connect(self.on_advanced_from_verse)
|
||||
self.advanced_to_chapter.activated.connect(self.on_advanced_to_chapter)
|
||||
QtCore.QObject.connect(self.quick_search_edit, QtCore.SIGNAL('searchTypeChanged(int)'),
|
||||
self.update_auto_completer)
|
||||
self.quickVersionComboBox.activated.connect(self.update_auto_completer)
|
||||
self.quickStyleComboBox.activated.connect(self.on_quick_style_combo_box_changed)
|
||||
self.advancedStyleComboBox.activated.connect(self.on_advanced_style_combo_box_changed)
|
||||
# Buttons
|
||||
self.advancedSearchButton.clicked.connect(self.onAdvancedSearchButton)
|
||||
self.quickSearchButton.clicked.connect(self.onQuickSearchButton)
|
||||
self.advancedSearchButton.clicked.connect(self.on_advanced_search_button)
|
||||
self.quickSearchButton.clicked.connect(self.on_quick_search_button)
|
||||
# Other stuff
|
||||
self.quickSearchEdit.returnPressed.connect(self.onQuickSearchButton)
|
||||
self.searchTabBar.currentChanged.connect(self.onSearchTabBarCurrentChanged)
|
||||
self.quick_search_edit.returnPressed.connect(self.on_quick_search_button)
|
||||
self.search_tab_bar.currentChanged.connect(self.on_search_tab_bar_current_changed)
|
||||
|
||||
def on_focus(self):
|
||||
if self.quickTab.isVisible():
|
||||
self.quickSearchEdit.setFocus()
|
||||
self.quick_search_edit.setFocus()
|
||||
else:
|
||||
self.advancedBookComboBox.setFocus()
|
||||
self.advanced_book_combo_box.setFocus()
|
||||
|
||||
def config_update(self):
|
||||
log.debug('config_update')
|
||||
@ -278,7 +277,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
|
||||
def retranslateUi(self):
|
||||
log.debug('retranslateUi')
|
||||
self.quickSearchLabel.setText(translate('BiblesPlugin.MediaItem', 'Find:'))
|
||||
self.quick_search_label.setText(translate('BiblesPlugin.MediaItem', 'Find:'))
|
||||
self.quickVersionLabel.setText('%s:' % UiStrings().Version)
|
||||
self.quickSecondLabel.setText(translate('BiblesPlugin.MediaItem', 'Second:'))
|
||||
self.quickStyleLabel.setText(UiStrings().LayoutStyle)
|
||||
@ -288,11 +287,11 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.quickLockButton.setToolTip(translate('BiblesPlugin.MediaItem',
|
||||
'Toggle to keep or clear the previous results.'))
|
||||
self.quickSearchButton.setText(UiStrings().Search)
|
||||
self.advancedBookLabel.setText(translate('BiblesPlugin.MediaItem', 'Book:'))
|
||||
self.advancedChapterLabel.setText(translate('BiblesPlugin.MediaItem', 'Chapter:'))
|
||||
self.advancedVerseLabel.setText(translate('BiblesPlugin.MediaItem', 'Verse:'))
|
||||
self.advancedFromLabel.setText(translate('BiblesPlugin.MediaItem', 'From:'))
|
||||
self.advancedToLabel.setText(translate('BiblesPlugin.MediaItem', 'To:'))
|
||||
self.advanced_book_label.setText(translate('BiblesPlugin.MediaItem', 'Book:'))
|
||||
self.advanced_chapter_label.setText(translate('BiblesPlugin.MediaItem', 'Chapter:'))
|
||||
self.advanced_verse_label.setText(translate('BiblesPlugin.MediaItem', 'Verse:'))
|
||||
self.advanced_from_label.setText(translate('BiblesPlugin.MediaItem', 'From:'))
|
||||
self.advanced_to_label.setText(translate('BiblesPlugin.MediaItem', 'To:'))
|
||||
self.advancedVersionLabel.setText('%s:' % UiStrings().Version)
|
||||
self.advancedSecondLabel.setText(translate('BiblesPlugin.MediaItem', 'Second:'))
|
||||
self.advancedStyleLabel.setText(UiStrings().LayoutStyle)
|
||||
@ -306,8 +305,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
def initialise(self):
|
||||
log.debug('bible manager initialise')
|
||||
self.plugin.manager.media = self
|
||||
self.loadBibles()
|
||||
self.quickSearchEdit.set_search_types([
|
||||
self.load_bibles()
|
||||
self.quick_search_edit.set_search_types([
|
||||
(BibleSearch.Reference, ':/bibles/bibles_search_reference.png',
|
||||
translate('BiblesPlugin.MediaItem', 'Scripture Reference'),
|
||||
translate('BiblesPlugin.MediaItem', 'Search Scripture Reference...')),
|
||||
@ -315,11 +314,11 @@ class BibleMediaItem(MediaManagerItem):
|
||||
translate('BiblesPlugin.MediaItem', 'Text Search'),
|
||||
translate('BiblesPlugin.MediaItem', 'Search Text...'))
|
||||
])
|
||||
self.quickSearchEdit.set_current_search_type(Settings().value('%s/last search type' % self.settings_section))
|
||||
self.quick_search_edit.set_current_search_type(Settings().value('%s/last search type' % self.settings_section))
|
||||
self.config_update()
|
||||
log.debug('bible manager initialise complete')
|
||||
|
||||
def loadBibles(self):
|
||||
def load_bibles(self):
|
||||
log.debug('Loading Bibles')
|
||||
self.quickVersionComboBox.clear()
|
||||
self.quickSecondComboBox.clear()
|
||||
@ -340,80 +339,73 @@ class BibleMediaItem(MediaManagerItem):
|
||||
bible = Settings().value(self.settings_section + '/advanced bible')
|
||||
if bible in bibles:
|
||||
find_and_set_in_combo_box(self.advancedVersionComboBox, bible)
|
||||
self.initialiseAdvancedBible(str(bible))
|
||||
self.initialise_advanced_bible(str(bible))
|
||||
elif bibles:
|
||||
self.initialiseAdvancedBible(bibles[0])
|
||||
self.initialise_advanced_bible(bibles[0])
|
||||
bible = Settings().value(self.settings_section + '/quick bible')
|
||||
find_and_set_in_combo_box(self.quickVersionComboBox, bible)
|
||||
|
||||
def reload_bibles(self, process=False):
|
||||
log.debug('Reloading Bibles')
|
||||
self.plugin.manager.reload_bibles()
|
||||
self.loadBibles()
|
||||
self.load_bibles()
|
||||
# If called from first time wizard re-run, process any new bibles.
|
||||
if process:
|
||||
self.plugin.app_startup()
|
||||
self.updateAutoCompleter()
|
||||
self.update_auto_completer()
|
||||
|
||||
def initialiseAdvancedBible(self, bible, last_book_id=None):
|
||||
def initialise_advanced_bible(self, bible, last_book_id=None):
|
||||
"""
|
||||
This initialises the given bible, which means that its book names and
|
||||
their chapter numbers is added to the combo boxes on the
|
||||
'Advanced Search' Tab. This is not of any importance of the
|
||||
'Quick Search' Tab.
|
||||
This initialises the given bible, which means that its book names and their chapter numbers is added to the
|
||||
combo boxes on the 'Advanced Search' Tab. This is not of any importance of the 'Quick Search' Tab.
|
||||
|
||||
``bible``
|
||||
The bible to initialise (unicode).
|
||||
|
||||
``last_book_id``
|
||||
The "book reference id" of the book which is choosen at the moment.
|
||||
:param bible: The bible to initialise (unicode).
|
||||
:param last_book_id: The "book reference id" of the book which is chosen at the moment.
|
||||
(int)
|
||||
"""
|
||||
log.debug('initialiseAdvancedBible %s, %s', bible, last_book_id)
|
||||
log.debug('initialise_advanced_bible %s, %s', bible, last_book_id)
|
||||
book_data = self.plugin.manager.get_books(bible)
|
||||
secondbible = self.advancedSecondComboBox.currentText()
|
||||
if secondbible != '':
|
||||
secondbook_data = self.plugin.manager.get_books(secondbible)
|
||||
second_bible = self.advancedSecondComboBox.currentText()
|
||||
if second_bible != '':
|
||||
second_book_data = self.plugin.manager.get_books(second_bible)
|
||||
book_data_temp = []
|
||||
for book in book_data:
|
||||
for secondbook in secondbook_data:
|
||||
if book['book_reference_id'] == \
|
||||
secondbook['book_reference_id']:
|
||||
for second_book in second_book_data:
|
||||
if book['book_reference_id'] == second_book['book_reference_id']:
|
||||
book_data_temp.append(book)
|
||||
book_data = book_data_temp
|
||||
self.advancedBookComboBox.clear()
|
||||
self.advanced_book_combo_box.clear()
|
||||
first = True
|
||||
initialise_chapter_verse = False
|
||||
language_selection = self.plugin.manager.get_language_selection(bible)
|
||||
book_names = BibleStrings().BookNames
|
||||
for book in book_data:
|
||||
row = self.advancedBookComboBox.count()
|
||||
row = self.advanced_book_combo_box.count()
|
||||
if language_selection == LanguageSelection.Bible:
|
||||
self.advancedBookComboBox.addItem(book['name'])
|
||||
self.advanced_book_combo_box.addItem(book['name'])
|
||||
elif language_selection == LanguageSelection.Application:
|
||||
data = BiblesResourcesDB.get_book_by_id(book['book_reference_id'])
|
||||
self.advancedBookComboBox.addItem(book_names[data['abbreviation']])
|
||||
self.advanced_book_combo_box.addItem(book_names[data['abbreviation']])
|
||||
elif language_selection == LanguageSelection.English:
|
||||
data = BiblesResourcesDB.get_book_by_id(book['book_reference_id'])
|
||||
self.advancedBookComboBox.addItem(data['name'])
|
||||
self.advancedBookComboBox.setItemData(row, book['book_reference_id'])
|
||||
self.advanced_book_combo_box.addItem(data['name'])
|
||||
self.advanced_book_combo_box.setItemData(row, book['book_reference_id'])
|
||||
if first:
|
||||
first = False
|
||||
first_book = book
|
||||
initialise_chapter_verse = True
|
||||
if last_book_id and last_book_id == int(book['book_reference_id']):
|
||||
index = self.advancedBookComboBox.findData(book['book_reference_id'])
|
||||
index = self.advanced_book_combo_box.findData(book['book_reference_id'])
|
||||
if index == -1:
|
||||
# Not Found.
|
||||
index = 0
|
||||
self.advancedBookComboBox.setCurrentIndex(index)
|
||||
self.advanced_book_combo_box.setCurrentIndex(index)
|
||||
initialise_chapter_verse = False
|
||||
if initialise_chapter_verse:
|
||||
self.initialiseChapterVerse(bible, first_book['name'],
|
||||
first_book['book_reference_id'])
|
||||
self.initialise_chapter_verse(bible, first_book['name'], first_book['book_reference_id'])
|
||||
|
||||
def initialiseChapterVerse(self, bible, book, book_ref_id):
|
||||
log.debug('initialiseChapterVerse %s, %s, %s', bible, book, book_ref_id)
|
||||
def initialise_chapter_verse(self, bible, book, book_ref_id):
|
||||
log.debug('initialise_chapter_verse %s, %s, %s', bible, book, book_ref_id)
|
||||
book = self.plugin.manager.get_book_by_id(bible, book_ref_id)
|
||||
self.chapter_count = self.plugin.manager.get_chapter_count(bible, book)
|
||||
verse_count = self.plugin.manager.get_verse_count_by_book_ref_id(bible, book_ref_id, 1)
|
||||
@ -422,36 +414,36 @@ class BibleMediaItem(MediaManagerItem):
|
||||
critical_error_message_box(message=translate('BiblesPlugin.MediaItem', 'Bible not fully loaded.'))
|
||||
else:
|
||||
self.advancedSearchButton.setEnabled(True)
|
||||
self.adjustComboBox(1, self.chapter_count, self.advancedFromChapter)
|
||||
self.adjustComboBox(1, self.chapter_count, self.advancedToChapter)
|
||||
self.adjustComboBox(1, verse_count, self.advancedFromVerse)
|
||||
self.adjustComboBox(1, verse_count, self.advancedToVerse)
|
||||
self.adjust_combo_box(1, self.chapter_count, self.advanced_from_chapter)
|
||||
self.adjust_combo_box(1, self.chapter_count, self.advanced_to_chapter)
|
||||
self.adjust_combo_box(1, verse_count, self.advanced_from_verse)
|
||||
self.adjust_combo_box(1, verse_count, self.advanced_to_verse)
|
||||
|
||||
def updateAutoCompleter(self):
|
||||
def update_auto_completer(self):
|
||||
"""
|
||||
This updates the bible book completion list for the search field. The
|
||||
completion depends on the bible. It is only updated when we are doing a
|
||||
reference search, otherwise the auto completion list is removed.
|
||||
"""
|
||||
log.debug('updateAutoCompleter')
|
||||
log.debug('update_auto_completer')
|
||||
# Save the current search type to the configuration.
|
||||
Settings().setValue('%s/last search type' % self.settings_section, self.quickSearchEdit.current_search_type())
|
||||
Settings().setValue('%s/last search type' % self.settings_section, self.quick_search_edit.current_search_type())
|
||||
# Save the current bible to the configuration.
|
||||
Settings().setValue(self.settings_section + '/quick bible', self.quickVersionComboBox.currentText())
|
||||
books = []
|
||||
# We have to do a 'Reference Search'.
|
||||
if self.quickSearchEdit.current_search_type() == BibleSearch.Reference:
|
||||
if self.quick_search_edit.current_search_type() == BibleSearch.Reference:
|
||||
bibles = self.plugin.manager.get_bibles()
|
||||
bible = self.quickVersionComboBox.currentText()
|
||||
if bible:
|
||||
book_data = bibles[bible].get_books()
|
||||
secondbible = self.quickSecondComboBox.currentText()
|
||||
if secondbible != '':
|
||||
secondbook_data = bibles[secondbible].get_books()
|
||||
second_bible = self.quickSecondComboBox.currentText()
|
||||
if second_bible != '':
|
||||
second_book_data = bibles[second_bible].get_books()
|
||||
book_data_temp = []
|
||||
for book in book_data:
|
||||
for secondbook in secondbook_data:
|
||||
if book.book_reference_id == secondbook.book_reference_id:
|
||||
for second_book in second_book_data:
|
||||
if book.book_reference_id == second_book.book_reference_id:
|
||||
book_data_temp.append(book)
|
||||
book_data = book_data_temp
|
||||
language_selection = self.plugin.manager.get_language_selection(bible)
|
||||
@ -467,7 +459,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
data = BiblesResourcesDB.get_book_by_id(book.book_reference_id)
|
||||
books.append(data['name'] + ' ')
|
||||
books.sort(key=get_locale_key)
|
||||
set_case_insensitive_completer(books, self.quickSearchEdit)
|
||||
set_case_insensitive_completer(books, self.quick_search_edit)
|
||||
|
||||
def on_import_click(self):
|
||||
if not hasattr(self, 'import_wizard'):
|
||||
@ -482,9 +474,9 @@ class BibleMediaItem(MediaManagerItem):
|
||||
elif self.advancedTab.isVisible():
|
||||
bible = self.advancedVersionComboBox.currentText()
|
||||
if bible:
|
||||
self.editBibleForm = EditBibleForm(self, self.main_window, self.plugin.manager)
|
||||
self.editBibleForm.loadBible(bible)
|
||||
if self.editBibleForm.exec_():
|
||||
self.edit_bible_form = EditBibleForm(self, self.main_window, self.plugin.manager)
|
||||
self.edit_bible_form.loadBible(bible)
|
||||
if self.edit_bible_form.exec_():
|
||||
self.reload_bibles()
|
||||
|
||||
def on_delete_click(self):
|
||||
@ -493,7 +485,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
elif self.advancedTab.isVisible():
|
||||
bible = self.advancedVersionComboBox.currentText()
|
||||
if bible:
|
||||
if QtGui.QMessageBox.question(self, UiStrings().ConfirmDelete,
|
||||
if QtGui.QMessageBox.question(
|
||||
self, UiStrings().ConfirmDelete,
|
||||
translate('BiblesPlugin.MediaItem', 'Are you sure you want to completely delete "%s" Bible from '
|
||||
'OpenLP?\n\nYou will need to re-import this Bible to use it again.') % bible,
|
||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No),
|
||||
@ -502,108 +495,103 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.plugin.manager.delete_bible(bible)
|
||||
self.reload_bibles()
|
||||
|
||||
def onSearchTabBarCurrentChanged(self, index):
|
||||
def on_search_tab_bar_current_changed(self, index):
|
||||
if index == 0:
|
||||
self.advancedTab.setVisible(False)
|
||||
self.quickTab.setVisible(True)
|
||||
self.quickSearchEdit.setFocus()
|
||||
self.quick_search_edit.setFocus()
|
||||
else:
|
||||
self.quickTab.setVisible(False)
|
||||
self.advancedTab.setVisible(True)
|
||||
self.advancedBookComboBox.setFocus()
|
||||
self.advanced_book_combo_box.setFocus()
|
||||
|
||||
def onLockButtonToggled(self, checked):
|
||||
def on_lock_button_toggled(self, checked):
|
||||
if checked:
|
||||
self.sender().setIcon(self.lock_icon)
|
||||
else:
|
||||
self.sender().setIcon(self.unlock_icon)
|
||||
|
||||
def onQuickStyleComboBoxChanged(self):
|
||||
def on_quick_style_combo_box_changed(self):
|
||||
self.settings.layout_style = self.quickStyleComboBox.currentIndex()
|
||||
self.advancedStyleComboBox.setCurrentIndex(self.settings.layout_style)
|
||||
self.settings.layout_style_combo_box.setCurrentIndex(self.settings.layout_style)
|
||||
Settings().setValue(self.settings_section + '/verse layout style', self.settings.layout_style)
|
||||
|
||||
def onAdvancedStyleComboBoxChanged(self):
|
||||
def on_advanced_style_combo_box_changed(self):
|
||||
self.settings.layout_style = self.advancedStyleComboBox.currentIndex()
|
||||
self.quickStyleComboBox.setCurrentIndex(self.settings.layout_style)
|
||||
self.settings.layout_style_combo_box.setCurrentIndex(self.settings.layout_style)
|
||||
Settings().setValue(self.settings_section + '/verse layout style', self.settings.layout_style)
|
||||
|
||||
def onAdvancedVersionComboBox(self):
|
||||
def on_advanced_version_combo_box(self):
|
||||
Settings().setValue(self.settings_section + '/advanced bible', self.advancedVersionComboBox.currentText())
|
||||
self.initialiseAdvancedBible(self.advancedVersionComboBox.currentText(),
|
||||
self.advancedBookComboBox.itemData(int(self.advancedBookComboBox.currentIndex())))
|
||||
|
||||
def onAdvancedSecondComboBox(self):
|
||||
self.initialiseAdvancedBible(self.advancedVersionComboBox.currentText(),
|
||||
self.advancedBookComboBox.itemData(int(self.advancedBookComboBox.currentIndex())))
|
||||
|
||||
def onAdvancedBookComboBox(self):
|
||||
item = int(self.advancedBookComboBox.currentIndex())
|
||||
self.initialiseChapterVerse(
|
||||
self.initialise_advanced_bible(
|
||||
self.advancedVersionComboBox.currentText(),
|
||||
self.advancedBookComboBox.currentText(),
|
||||
self.advancedBookComboBox.itemData(item))
|
||||
self.advanced_book_combo_box.itemData(int(self.advanced_book_combo_box.currentIndex())))
|
||||
|
||||
def onAdvancedFromVerse(self):
|
||||
chapter_from = int(self.advancedFromChapter.currentText())
|
||||
chapter_to = int(self.advancedToChapter.currentText())
|
||||
def on_advanced_second_combo_box(self):
|
||||
self.initialise_advanced_bible(
|
||||
self.advancedVersionComboBox.currentText(),
|
||||
self.advanced_book_combo_box.itemData(int(self.advanced_book_combo_box.currentIndex())))
|
||||
|
||||
def on_advanced_book_combo_box(self):
|
||||
item = int(self.advanced_book_combo_box.currentIndex())
|
||||
self.initialise_chapter_verse(
|
||||
self.advancedVersionComboBox.currentText(),
|
||||
self.advanced_book_combo_box.currentText(),
|
||||
self.advanced_book_combo_box.itemData(item))
|
||||
|
||||
def on_advanced_from_verse(self):
|
||||
chapter_from = int(self.advanced_from_chapter.currentText())
|
||||
chapter_to = int(self.advanced_to_chapter.currentText())
|
||||
if chapter_from == chapter_to:
|
||||
bible = self.advancedVersionComboBox.currentText()
|
||||
book_ref_id = self.advancedBookComboBox.itemData(int(self.advancedBookComboBox.currentIndex()))
|
||||
verse_from = int(self.advancedFromVerse.currentText())
|
||||
book_ref_id = self.advanced_book_combo_box.itemData(int(self.advanced_book_combo_box.currentIndex()))
|
||||
verse_from = int(self.advanced_from_verse.currentText())
|
||||
verse_count = self.plugin.manager.get_verse_count_by_book_ref_id(bible, book_ref_id, chapter_to)
|
||||
self.adjustComboBox(verse_from, verse_count, self.advancedToVerse, True)
|
||||
self.adjust_combo_box(verse_from, verse_count, self.advanced_to_verse, True)
|
||||
|
||||
def onAdvancedToChapter(self):
|
||||
def on_advanced_to_chapter(self):
|
||||
bible = self.advancedVersionComboBox.currentText()
|
||||
book_ref_id = self.advancedBookComboBox.itemData(int(self.advancedBookComboBox.currentIndex()))
|
||||
chapter_from = int(self.advancedFromChapter.currentText())
|
||||
chapter_to = int(self.advancedToChapter.currentText())
|
||||
verse_from = int(self.advancedFromVerse.currentText())
|
||||
verse_to = int(self.advancedToVerse.currentText())
|
||||
book_ref_id = self.advanced_book_combo_box.itemData(int(self.advanced_book_combo_box.currentIndex()))
|
||||
chapter_from = int(self.advanced_from_chapter.currentText())
|
||||
chapter_to = int(self.advanced_to_chapter.currentText())
|
||||
verse_from = int(self.advanced_from_verse.currentText())
|
||||
verse_to = int(self.advanced_to_verse.currentText())
|
||||
verse_count = self.plugin.manager.get_verse_count_by_book_ref_id(bible, book_ref_id, chapter_to)
|
||||
if chapter_from == chapter_to and verse_from > verse_to:
|
||||
self.adjustComboBox(verse_from, verse_count, self.advancedToVerse)
|
||||
self.adjust_combo_box(verse_from, verse_count, self.advanced_to_verse)
|
||||
else:
|
||||
self.adjustComboBox(1, verse_count, self.advancedToVerse)
|
||||
self.adjust_combo_box(1, verse_count, self.advanced_to_verse)
|
||||
|
||||
def onAdvancedFromChapter(self):
|
||||
def on_advanced_from_chapter(self):
|
||||
bible = self.advancedVersionComboBox.currentText()
|
||||
book_ref_id = self.advancedBookComboBox.itemData(
|
||||
int(self.advancedBookComboBox.currentIndex()))
|
||||
chapter_from = int(self.advancedFromChapter.currentText())
|
||||
chapter_to = int(self.advancedToChapter.currentText())
|
||||
book_ref_id = self.advanced_book_combo_box.itemData(
|
||||
int(self.advanced_book_combo_box.currentIndex()))
|
||||
chapter_from = int(self.advanced_from_chapter.currentText())
|
||||
chapter_to = int(self.advanced_to_chapter.currentText())
|
||||
verse_count = self.plugin.manager.get_verse_count_by_book_ref_id(bible, book_ref_id, chapter_from)
|
||||
self.adjustComboBox(1, verse_count, self.advancedFromVerse)
|
||||
self.adjust_combo_box(1, verse_count, self.advanced_from_verse)
|
||||
if chapter_from > chapter_to:
|
||||
self.adjustComboBox(1, verse_count, self.advancedToVerse)
|
||||
self.adjustComboBox(chapter_from, self.chapter_count, self.advancedToChapter)
|
||||
self.adjust_combo_box(1, verse_count, self.advanced_to_verse)
|
||||
self.adjust_combo_box(chapter_from, self.chapter_count, self.advanced_to_chapter)
|
||||
elif chapter_from == chapter_to:
|
||||
self.adjustComboBox(chapter_from, self.chapter_count, self.advancedToChapter)
|
||||
self.adjustComboBox(1, verse_count, self.advancedToVerse, True)
|
||||
self.adjust_combo_box(chapter_from, self.chapter_count, self.advanced_to_chapter)
|
||||
self.adjust_combo_box(1, verse_count, self.advanced_to_verse, True)
|
||||
else:
|
||||
self.adjustComboBox(chapter_from, self.chapter_count, self.advancedToChapter, True)
|
||||
self.adjust_combo_box(chapter_from, self.chapter_count, self.advanced_to_chapter, True)
|
||||
|
||||
def adjustComboBox(self, range_from, range_to, combo, restore=False):
|
||||
def adjust_combo_box(self, range_from, range_to, combo, restore=False):
|
||||
"""
|
||||
Adjusts the given como box to the given values.
|
||||
|
||||
``range_from``
|
||||
The first number of the range (int).
|
||||
|
||||
``range_to``
|
||||
The last number of the range (int).
|
||||
|
||||
``combo``
|
||||
The combo box itself (QComboBox).
|
||||
|
||||
``restore``
|
||||
If True, then the combo's currentText will be restored after
|
||||
:param range_from: The first number of the range (int).
|
||||
:param range_to: The last number of the range (int).
|
||||
:param combo: The combo box itself (QComboBox).
|
||||
:param restore: If True, then the combo's currentText will be restored after
|
||||
adjusting (if possible).
|
||||
"""
|
||||
log.debug('adjustComboBox %s, %s, %s', combo, range_from, range_to)
|
||||
log.debug('adjust_combo_box %s, %s, %s', combo, range_from, range_to)
|
||||
if restore:
|
||||
old_text = combo.currentText()
|
||||
combo.clear()
|
||||
@ -611,7 +599,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
if restore and combo.findText(old_text) != -1:
|
||||
combo.setCurrentIndex(combo.findText(old_text))
|
||||
|
||||
def onAdvancedSearchButton(self):
|
||||
def on_advanced_search_button(self):
|
||||
"""
|
||||
Does an advanced search and saves the search results.
|
||||
"""
|
||||
@ -620,32 +608,32 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.application.process_events()
|
||||
bible = self.advancedVersionComboBox.currentText()
|
||||
second_bible = self.advancedSecondComboBox.currentText()
|
||||
book = self.advancedBookComboBox.currentText()
|
||||
book_ref_id = self.advancedBookComboBox.itemData(int(self.advancedBookComboBox.currentIndex()))
|
||||
chapter_from = self.advancedFromChapter.currentText()
|
||||
chapter_to = self.advancedToChapter.currentText()
|
||||
verse_from = self.advancedFromVerse.currentText()
|
||||
verse_to = self.advancedToVerse.currentText()
|
||||
book = self.advanced_book_combo_box.currentText()
|
||||
book_ref_id = self.advanced_book_combo_box.itemData(int(self.advanced_book_combo_box.currentIndex()))
|
||||
chapter_from = self.advanced_from_chapter.currentText()
|
||||
chapter_to = self.advanced_to_chapter.currentText()
|
||||
verse_from = self.advanced_from_verse.currentText()
|
||||
verse_to = self.advanced_to_verse.currentText()
|
||||
verse_separator = get_reference_separator('sep_v_display')
|
||||
range_separator = get_reference_separator('sep_r_display')
|
||||
verse_range = chapter_from + verse_separator + verse_from + range_separator + chapter_to + \
|
||||
verse_separator + verse_to
|
||||
versetext = '%s %s' % (book, verse_range)
|
||||
verse_text = '%s %s' % (book, verse_range)
|
||||
self.application.set_busy_cursor()
|
||||
self.search_results = self.plugin.manager.get_verses(bible, versetext, book_ref_id)
|
||||
self.search_results = self.plugin.manager.get_verses(bible, verse_text, book_ref_id)
|
||||
if second_bible:
|
||||
self.second_search_results = self.plugin.manager.get_verses(second_bible, versetext, book_ref_id)
|
||||
self.second_search_results = self.plugin.manager.get_verses(second_bible, verse_text, book_ref_id)
|
||||
if not self.advancedLockButton.isChecked():
|
||||
self.list_view.clear()
|
||||
if self.list_view.count() != 0:
|
||||
self.__check_second_bible(bible, second_bible)
|
||||
elif self.search_results:
|
||||
self.displayResults(bible, second_bible)
|
||||
self.display_results(bible, second_bible)
|
||||
self.advancedSearchButton.setEnabled(True)
|
||||
self.check_search_result()
|
||||
self.application.set_normal_cursor()
|
||||
|
||||
def onQuickSearchButton(self):
|
||||
def on_quick_search_button(self):
|
||||
"""
|
||||
Does a quick search and saves the search results. Quick search can
|
||||
either be "Reference Search" or "Text Search".
|
||||
@ -655,13 +643,13 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.application.process_events()
|
||||
bible = self.quickVersionComboBox.currentText()
|
||||
second_bible = self.quickSecondComboBox.currentText()
|
||||
text = self.quickSearchEdit.text()
|
||||
if self.quickSearchEdit.current_search_type() == BibleSearch.Reference:
|
||||
text = self.quick_search_edit.text()
|
||||
if 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:
|
||||
self.second_search_results = self.plugin.manager.get_verses(second_bible, text,
|
||||
self.search_results[0].book.book_reference_id)
|
||||
self.second_search_results = \
|
||||
self.plugin.manager.get_verses(second_bible, text, self.search_results[0].book.book_reference_id)
|
||||
else:
|
||||
# We are doing a 'Text Search'.
|
||||
self.application.set_busy_cursor()
|
||||
@ -681,13 +669,13 @@ class BibleMediaItem(MediaManagerItem):
|
||||
count += 1
|
||||
continue
|
||||
new_search_results.append(verse)
|
||||
text.append((verse.book.book_reference_id, verse.chapter,
|
||||
verse.verse, verse.verse))
|
||||
text.append((verse.book.book_reference_id, verse.chapter, verse.verse, verse.verse))
|
||||
if passage_not_found:
|
||||
QtGui.QMessageBox.information(self, translate('BiblesPlugin.MediaItem', 'Information'),
|
||||
QtGui.QMessageBox.information(
|
||||
self, translate('BiblesPlugin.MediaItem', 'Information'),
|
||||
translate('BiblesPlugin.MediaItem', 'The second Bible 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,
|
||||
'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)
|
||||
@ -696,24 +684,24 @@ class BibleMediaItem(MediaManagerItem):
|
||||
if self.list_view.count() != 0 and self.search_results:
|
||||
self.__check_second_bible(bible, second_bible)
|
||||
elif self.search_results:
|
||||
self.displayResults(bible, second_bible)
|
||||
self.display_results(bible, second_bible)
|
||||
self.quickSearchButton.setEnabled(True)
|
||||
self.check_search_result()
|
||||
self.application.set_normal_cursor()
|
||||
|
||||
def displayResults(self, bible, second_bible=''):
|
||||
def display_results(self, bible, second_bible=''):
|
||||
"""
|
||||
Displays the search results in the media manager. All data needed for
|
||||
further action is saved for/in each row.
|
||||
"""
|
||||
items = self.buildDisplayResults(bible, second_bible, self.search_results)
|
||||
items = self.build_display_results(bible, second_bible, self.search_results)
|
||||
for bible_verse in items:
|
||||
self.list_view.addItem(bible_verse)
|
||||
self.list_view.selectAll()
|
||||
self.search_results = {}
|
||||
self.second_search_results = {}
|
||||
|
||||
def buildDisplayResults(self, bible, second_bible, search_results):
|
||||
def build_display_results(self, bible, second_bible, search_results):
|
||||
"""
|
||||
Displays the search results in the media manager. All data needed for
|
||||
further action is saved for/in each row.
|
||||
@ -772,11 +760,16 @@ class BibleMediaItem(MediaManagerItem):
|
||||
items.append(bible_verse)
|
||||
return items
|
||||
|
||||
def generate_slide_data(self, service_item, item=None, xmlVersion=False,
|
||||
remote=False, context=ServiceItemContext.Service):
|
||||
def generate_slide_data(self, service_item, item=None, xml_version=False, remote=False,
|
||||
context=ServiceItemContext.Service):
|
||||
"""
|
||||
Generates and formats the slides for the service item as well as the
|
||||
service item's title.
|
||||
Generate the slide data. Needs to be implemented by the plugin.
|
||||
|
||||
:param service_item: The service item to be built on
|
||||
:param item: The Song item to be used
|
||||
:param xml_version: The xml version (not used)
|
||||
:param remote: Triggered from remote
|
||||
:param context: Why is it being generated
|
||||
"""
|
||||
log.debug('generating slide data')
|
||||
if item:
|
||||
@ -806,7 +799,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
second_permissions = self._decode_qt_object(bitem, 'second_permissions')
|
||||
second_text = self._decode_qt_object(bitem, 'second_text')
|
||||
verses.add(book, chapter, verse, version, copyright, permissions)
|
||||
verse_text = self.formatVerse(old_chapter, chapter, verse)
|
||||
verse_text = self.format_verse(old_chapter, chapter, verse)
|
||||
if second_bible:
|
||||
bible_text = '%s%s\n\n%s %s' % (verse_text, text, verse_text, second_text)
|
||||
raw_slides.append(bible_text.rstrip())
|
||||
@ -825,8 +818,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
bible_text = bible_text.strip(' ')
|
||||
if not old_item:
|
||||
start_item = bitem
|
||||
elif self.checkTitle(bitem, old_item):
|
||||
raw_title.append(self.formatTitle(start_item, old_item))
|
||||
elif self.check_title(bitem, old_item):
|
||||
raw_title.append(self.format_title(start_item, old_item))
|
||||
start_item = bitem
|
||||
old_item = bitem
|
||||
old_chapter = chapter
|
||||
@ -835,7 +828,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
if second_bible:
|
||||
verses.add_version(second_version, second_copyright, second_permissions)
|
||||
service_item.raw_footer.append(verses.format_versions())
|
||||
raw_title.append(self.formatTitle(start_item, bitem))
|
||||
raw_title.append(self.format_title(start_item, bitem))
|
||||
# If there are no more items we check whether we have to add bible_text.
|
||||
if bible_text:
|
||||
raw_slides.append(bible_text.lstrip())
|
||||
@ -858,17 +851,14 @@ class BibleMediaItem(MediaManagerItem):
|
||||
service_item.add_from_text(slide)
|
||||
return True
|
||||
|
||||
def formatTitle(self, start_bitem, old_bitem):
|
||||
def format_title(self, start_bitem, old_bitem):
|
||||
"""
|
||||
This method is called, when we have to change the title, because
|
||||
we are at the end of a verse range. E. g. if we want to add
|
||||
Genesis 1:1-6 as well as Daniel 2:14.
|
||||
|
||||
``start_item``
|
||||
The first item of a range.
|
||||
|
||||
``old_item``
|
||||
The last item of a range.
|
||||
:param start_bitem: The first item of a range.
|
||||
:param old_bitem: The last item of a range.
|
||||
"""
|
||||
verse_separator = get_reference_separator('sep_v_display')
|
||||
range_separator = get_reference_separator('sep_r_display')
|
||||
@ -893,17 +883,15 @@ class BibleMediaItem(MediaManagerItem):
|
||||
range_separator + old_chapter + verse_separator + old_verse
|
||||
return '%s %s (%s)' % (start_book, verse_range, bibles)
|
||||
|
||||
def checkTitle(self, bitem, old_bitem):
|
||||
def check_title(self, bitem, old_bitem):
|
||||
"""
|
||||
This method checks if we are at the end of an verse range. If that is
|
||||
the case, we return True, otherwise False. E. g. if we added
|
||||
|
||||
Genesis 1:1-6, but the next verse is Daniel 2:14, we return True.
|
||||
|
||||
``item``
|
||||
The item we are dealing with at the moment.
|
||||
|
||||
``old_item``
|
||||
The item we were previously dealing with.
|
||||
:param bitem: The item we are dealing with at the moment.
|
||||
:param old_bitem: The item we were previously dealing with.
|
||||
"""
|
||||
# Get all the necessary meta data.
|
||||
book = self._decode_qt_object(bitem, 'book')
|
||||
@ -930,22 +918,18 @@ class BibleMediaItem(MediaManagerItem):
|
||||
return True
|
||||
return False
|
||||
|
||||
def formatVerse(self, old_chapter, chapter, verse):
|
||||
def format_verse(self, old_chapter, chapter, verse):
|
||||
"""
|
||||
Formats and returns the text, each verse starts with, for the given
|
||||
chapter and verse. The text is either surrounded by round, square,
|
||||
|
||||
curly brackets or no brackets at all. For example::
|
||||
|
||||
u'{su}1:1{/su}'
|
||||
|
||||
``old_chapter``
|
||||
The previous verse's chapter number (int).
|
||||
|
||||
``chapter``
|
||||
The chapter number (int).
|
||||
|
||||
``verse``
|
||||
The verse number (int).
|
||||
:param old_chapter: The previous verse's chapter number (int).
|
||||
:param chapter: The chapter number (int).
|
||||
:param verse: The verse number (int).
|
||||
"""
|
||||
verse_separator = get_reference_separator('sep_v_display')
|
||||
if not self.settings.is_verse_number_visible:
|
||||
@ -969,16 +953,15 @@ class BibleMediaItem(MediaManagerItem):
|
||||
bible = self.quickVersionComboBox.currentText()
|
||||
search_results = self.plugin.manager.get_verses(bible, string, False, showError)
|
||||
if search_results:
|
||||
versetext = ' '.join([verse.text for verse in search_results])
|
||||
return [[string, versetext]]
|
||||
verse_text = ' '.join([verse.text for verse in search_results])
|
||||
return [[string, verse_text]]
|
||||
return []
|
||||
|
||||
def create_item_from_id(self, item_id):
|
||||
"""
|
||||
Create a media item from an item id.
|
||||
"""
|
||||
item = QtGui.QListWidgetItem()
|
||||
bible = self.quickVersionComboBox.currentText()
|
||||
search_results = self.plugin.manager.get_verses(bible, item_id, False)
|
||||
items = self.buildDisplayResults(bible, '', search_results)
|
||||
items = self.build_display_results(bible, '', search_results)
|
||||
return items
|
||||
|
@ -55,8 +55,7 @@ class OpenSongBible(BibleDB):
|
||||
"""
|
||||
Recursively get all text in an objectify element and its child elements.
|
||||
|
||||
``element``
|
||||
An objectify element to get the text from
|
||||
:param element: An objectify element to get the text from
|
||||
"""
|
||||
verse_text = ''
|
||||
if element.text:
|
||||
@ -122,12 +121,14 @@ class OpenSongBible(BibleDB):
|
||||
else:
|
||||
verse_number += 1
|
||||
self.create_verse(db_book.id, chapter_number, verse_number, self.get_text(verse))
|
||||
self.wizard.increment_progress_bar(translate('BiblesPlugin.Opensong', 'Importing %s %s...',
|
||||
self.wizard.increment_progress_bar(
|
||||
translate('BiblesPlugin.Opensong', 'Importing %s %s...',
|
||||
'Importing <book name> <chapter>...')) % (db_book.name, chapter_number)
|
||||
self.session.commit()
|
||||
self.application.process_events()
|
||||
except etree.XMLSyntaxError as inst:
|
||||
critical_error_message_box(message=translate('BiblesPlugin.OpenSongImport',
|
||||
critical_error_message_box(
|
||||
message=translate('BiblesPlugin.OpenSongImport',
|
||||
'Incorrect Bible file type supplied. OpenSong Bibles may be '
|
||||
'compressed. You must decompress them before import.'))
|
||||
log.exception(inst)
|
||||
|
@ -84,8 +84,8 @@ class OSISBible(BibleDB):
|
||||
success = True
|
||||
last_chapter = 0
|
||||
match_count = 0
|
||||
self.wizard.increment_progress_bar(translate('BiblesPlugin.OsisImport',
|
||||
'Detecting encoding (this may take a few minutes)...'))
|
||||
self.wizard.increment_progress_bar(
|
||||
translate('BiblesPlugin.OsisImport', 'Detecting encoding (this may take a few minutes)...'))
|
||||
try:
|
||||
detect_file = open(self.filename, 'r')
|
||||
details = chardet.detect(detect_file.read(1048576))
|
||||
@ -101,7 +101,7 @@ class OSISBible(BibleDB):
|
||||
osis = codecs.open(self.filename, 'r', details['encoding'])
|
||||
repl = replacement
|
||||
language_id = False
|
||||
# Decide if the bible propably contains only NT or AT and NT or
|
||||
# Decide if the bible probably contains only NT or AT and NT or
|
||||
# AT, NT and Apocrypha
|
||||
if lines_in_file < 11500:
|
||||
book_count = 27
|
||||
@ -154,10 +154,11 @@ class OSISBible(BibleDB):
|
||||
if last_chapter != chapter:
|
||||
if last_chapter != 0:
|
||||
self.session.commit()
|
||||
self.wizard.increment_progress_bar(translate('BiblesPlugin.OsisImport', 'Importing %s %s...',
|
||||
self.wizard.increment_progress_bar(
|
||||
translate('BiblesPlugin.OsisImport', 'Importing %s %s...',
|
||||
'Importing <book name> <chapter>...') % (book_details['name'], chapter))
|
||||
last_chapter = chapter
|
||||
# All of this rigmarol below is because the mod2osis tool from the Sword library embeds XML in the
|
||||
# All of this rigmarole below is because the mod2osis tool from the Sword library embeds XML in the
|
||||
# OSIS but neglects to enclose the verse text (with XML) in <[CDATA[ ]]> tags.
|
||||
verse_text = self.note_regex.sub('', verse_text)
|
||||
verse_text = self.title_regex.sub('', verse_text)
|
||||
|
@ -42,18 +42,15 @@ class VerseReferenceList(object):
|
||||
def add(self, book, chapter, verse, version, copyright, permission):
|
||||
self.add_version(version, copyright, permission)
|
||||
if not self.verse_list or self.verse_list[self.current_index]['book'] != book:
|
||||
self.verse_list.append({'version': version, 'book': book,
|
||||
'chapter': chapter, 'start': verse, 'end': verse})
|
||||
self.verse_list.append({'version': version, 'book': book, 'chapter': chapter, 'start': verse, 'end': verse})
|
||||
self.current_index += 1
|
||||
elif self.verse_list[self.current_index]['chapter'] != chapter:
|
||||
self.verse_list.append({'version': version, 'book': book,
|
||||
'chapter': chapter, 'start': verse, 'end': verse})
|
||||
self.verse_list.append({'version': version, 'book': book, 'chapter': chapter, 'start': verse, 'end': verse})
|
||||
self.current_index += 1
|
||||
elif (self.verse_list[self.current_index]['end'] + 1) == verse:
|
||||
self.verse_list[self.current_index]['end'] = verse
|
||||
else:
|
||||
self.verse_list.append({'version': version, 'book': book,
|
||||
'chapter': chapter, 'start': verse, 'end': verse})
|
||||
self.verse_list.append({'version': version, 'book': book, 'chapter': chapter, 'start': verse, 'end': verse})
|
||||
self.current_index += 1
|
||||
|
||||
def add_version(self, version, copyright, permission):
|
||||
|
Loading…
Reference in New Issue
Block a user