2009-03-02 21:57:49 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
2009-07-13 20:11:36 +00:00
|
|
|
|
2009-09-08 19:58:05 +00:00
|
|
|
###############################################################################
|
|
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
|
|
# --------------------------------------------------------------------------- #
|
2010-12-26 11:04:47 +00:00
|
|
|
# Copyright (c) 2008-2011 Raoul Snyman #
|
|
|
|
# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
|
2010-07-24 22:10:47 +00:00
|
|
|
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
|
|
|
|
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
|
|
|
|
# Carsten Tinggaard, Frode Woldsund #
|
2009-09-08 19:58:05 +00:00
|
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
# This program is free software; you can redistribute it and/or modify it #
|
|
|
|
# under the terms of the GNU General Public License as published by the Free #
|
|
|
|
# Software Foundation; version 2 of the License. #
|
|
|
|
# #
|
|
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT #
|
|
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
|
|
|
# more details. #
|
|
|
|
# #
|
|
|
|
# You should have received a copy of the GNU General Public License along #
|
|
|
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
|
|
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
|
|
|
###############################################################################
|
2009-07-13 20:11:36 +00:00
|
|
|
|
2009-03-02 21:57:49 +00:00
|
|
|
import logging
|
2009-08-05 17:59:37 +00:00
|
|
|
import time
|
2009-03-02 21:57:49 +00:00
|
|
|
|
|
|
|
from PyQt4 import QtCore, QtGui
|
|
|
|
|
2010-04-27 16:27:57 +00:00
|
|
|
from openlp.core.lib import MediaManagerItem, Receiver, BaseListWithDnD, \
|
2010-06-08 15:38:09 +00:00
|
|
|
ItemCapabilities, translate
|
2010-10-16 19:38:23 +00:00
|
|
|
from openlp.plugins.bibles.forms import BibleImportForm
|
2010-12-17 13:21:55 +00:00
|
|
|
from openlp.plugins.bibles.lib import get_reference_match
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2010-02-27 15:31:23 +00:00
|
|
|
log = logging.getLogger(__name__)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2009-08-15 11:02:24 +00:00
|
|
|
class BibleListView(BaseListWithDnD):
|
2010-01-17 08:56:25 +00:00
|
|
|
"""
|
|
|
|
Custom list view descendant, required for drag and drop.
|
|
|
|
"""
|
2009-08-15 11:02:24 +00:00
|
|
|
def __init__(self, parent=None):
|
|
|
|
self.PluginName = u'Bibles'
|
|
|
|
BaseListWithDnD.__init__(self, parent)
|
2009-05-12 21:06:35 +00:00
|
|
|
|
2010-01-29 20:20:30 +00:00
|
|
|
def resizeEvent(self, event):
|
2010-06-24 19:36:33 +00:00
|
|
|
self.parent().onListViewResize(event.size().width(),
|
|
|
|
event.size().width())
|
2010-01-17 08:56:25 +00:00
|
|
|
|
2010-11-09 17:10:37 +00:00
|
|
|
|
2009-03-02 21:57:49 +00:00
|
|
|
class BibleMediaItem(MediaManagerItem):
|
|
|
|
"""
|
|
|
|
This is the custom media manager item for Bibles.
|
|
|
|
"""
|
2009-03-16 17:33:51 +00:00
|
|
|
log.info(u'Bible Media Item loaded')
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2010-11-16 18:33:37 +00:00
|
|
|
def __init__(self, parent, plugin, icon):
|
2009-09-26 09:11:39 +00:00
|
|
|
self.IconPath = u'songs/song'
|
|
|
|
self.ListViewWithDnD_class = BibleListView
|
2010-11-16 18:33:37 +00:00
|
|
|
MediaManagerItem.__init__(self, parent, plugin, icon)
|
2010-11-12 13:50:13 +00:00
|
|
|
# Place to store the search results for both bibles.
|
2010-09-01 17:27:38 +00:00
|
|
|
self.search_results = {}
|
2010-11-15 17:47:33 +00:00
|
|
|
self.second_search_results = {}
|
2009-11-13 21:24:59 +00:00
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
2010-04-16 07:31:01 +00:00
|
|
|
QtCore.SIGNAL(u'bibles_load_list'), self.reloadBibles)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2009-09-26 09:11:39 +00:00
|
|
|
def requiredIcons(self):
|
|
|
|
MediaManagerItem.requiredIcons(self)
|
2010-03-23 19:04:15 +00:00
|
|
|
self.hasImportIcon = True
|
|
|
|
self.hasNewIcon = False
|
2009-09-26 09:11:39 +00:00
|
|
|
self.hasEditIcon = False
|
|
|
|
self.hasDeleteIcon = False
|
2010-12-21 13:47:38 +00:00
|
|
|
self.addToServiceItem = False
|
2009-09-26 09:11:39 +00:00
|
|
|
|
|
|
|
def addEndHeaderBar(self):
|
2011-01-05 16:50:28 +00:00
|
|
|
self.searchTabWidget = QtGui.QTabWidget(self)
|
|
|
|
self.searchTabWidget.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
|
|
|
|
self.searchTabWidget.setObjectName(u'SearchTabWidget')
|
2010-11-12 21:51:18 +00:00
|
|
|
# Add the Quick Search tab.
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickTab = QtGui.QWidget()
|
|
|
|
self.quickTab.setObjectName(u'quickTab')
|
|
|
|
self.quickLayout = QtGui.QFormLayout(self.quickTab)
|
|
|
|
self.quickLayout.setObjectName(u'quickLayout')
|
|
|
|
self.quickVersionLabel = QtGui.QLabel(self.quickTab)
|
|
|
|
self.quickVersionLabel.setObjectName(u'quickVersionLabel')
|
|
|
|
self.quickVersionComboBox = QtGui.QComboBox(self.quickTab)
|
|
|
|
self.quickVersionComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.quickVersionComboBox.setObjectName(u'quickVersionComboBox')
|
|
|
|
self.quickVersionLabel.setBuddy(self.quickVersionComboBox)
|
|
|
|
self.quickLayout.addRow(self.quickVersionLabel,
|
|
|
|
self.quickVersionComboBox)
|
|
|
|
self.quickSecondLabel = QtGui.QLabel(self.quickTab)
|
|
|
|
self.quickSecondLabel.setObjectName(u'quickSecondLabel')
|
|
|
|
self.quickSecondComboBox = QtGui.QComboBox(self.quickTab)
|
|
|
|
self.quickSecondComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.quickSecondComboBox.setObjectName(u'quickSecondComboBox')
|
|
|
|
self.quickSecondLabel.setBuddy(self.quickSecondComboBox)
|
|
|
|
self.quickLayout.addRow(self.quickSecondLabel, self.quickSecondComboBox)
|
|
|
|
self.quickSearchTypeLabel = QtGui.QLabel(self.quickTab)
|
|
|
|
self.quickSearchTypeLabel.setObjectName(u'quickSearchTypeLabel')
|
|
|
|
self.quickSearchComboBox = QtGui.QComboBox(self.quickTab)
|
|
|
|
self.quickSearchComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.quickSearchComboBox.setObjectName(u'quickSearchComboBox')
|
|
|
|
self.quickSearchTypeLabel.setBuddy(self.quickSearchComboBox)
|
|
|
|
self.quickLayout.addRow(self.quickSearchTypeLabel,
|
|
|
|
self.quickSearchComboBox)
|
|
|
|
self.quickSearchLabel = QtGui.QLabel(self.quickTab)
|
|
|
|
self.quickSearchLabel.setObjectName(u'quickSearchLabel')
|
|
|
|
self.quickSearchEdit = QtGui.QLineEdit(self.quickTab)
|
|
|
|
self.quickSearchEdit.setObjectName(u'quickSearchEdit')
|
|
|
|
self.quickSearchLabel.setBuddy(self.quickSearchEdit)
|
|
|
|
self.quickLayout.addRow(self.quickSearchLabel, self.quickSearchEdit)
|
|
|
|
self.quickClearLabel = QtGui.QLabel(self.quickTab)
|
|
|
|
self.quickClearLabel.setObjectName(u'quickClearLabel')
|
|
|
|
self.quickClearComboBox = QtGui.QComboBox(self.quickTab)
|
|
|
|
self.quickClearComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.quickClearComboBox.setObjectName(u'quickClearComboBox')
|
|
|
|
self.quickLayout.addRow(self.quickClearLabel, self.quickClearComboBox)
|
|
|
|
self.quickSearchButtonLayout = QtGui.QHBoxLayout()
|
|
|
|
self.quickSearchButtonLayout.setObjectName(u'quickSearchButtonLayout')
|
|
|
|
self.quickSearchButtonLayout.addStretch()
|
|
|
|
self.quickSearchButton = QtGui.QPushButton(self.quickTab)
|
|
|
|
self.quickSearchButton.setObjectName(u'quickSearchButton')
|
|
|
|
self.quickSearchButtonLayout.addWidget(self.quickSearchButton)
|
|
|
|
self.quickLayout.addRow(self.quickSearchButtonLayout)
|
|
|
|
self.quickMessage = QtGui.QLabel(self.quickTab)
|
|
|
|
self.quickMessage.setObjectName(u'quickMessage')
|
|
|
|
self.quickLayout.addRow(self.quickMessage)
|
|
|
|
self.searchTabWidget.addTab(self.quickTab,
|
2010-06-21 16:43:59 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Quick'))
|
2010-11-12 21:51:18 +00:00
|
|
|
# Add the Advanced Search tab.
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedTab = QtGui.QWidget()
|
|
|
|
self.advancedTab.setObjectName(u'advancedTab')
|
|
|
|
self.advancedLayout = QtGui.QGridLayout(self.advancedTab)
|
|
|
|
self.advancedLayout.setObjectName(u'advancedLayout')
|
|
|
|
self.advancedVersionLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedVersionLabel.setObjectName(u'advancedVersionLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedVersionLabel, 0, 0,
|
|
|
|
QtCore.Qt.AlignRight)
|
|
|
|
self.advancedVersionComboBox = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedVersionComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.advancedVersionComboBox.setObjectName(u'advancedVersionComboBox')
|
|
|
|
self.advancedVersionLabel.setBuddy(self.advancedVersionComboBox)
|
|
|
|
self.advancedLayout.addWidget(self.advancedVersionComboBox, 0, 1, 1, 2)
|
|
|
|
self.advancedSecondLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedSecondLabel.setObjectName(u'advancedSecondLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedSecondLabel, 1, 0,
|
|
|
|
QtCore.Qt.AlignRight)
|
|
|
|
self.advancedSecondComboBox = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedSecondComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.advancedSecondComboBox.setObjectName(u'advancedSecondComboBox')
|
|
|
|
self.advancedSecondLabel.setBuddy(self.advancedSecondComboBox)
|
|
|
|
self.advancedLayout.addWidget(self.advancedSecondComboBox, 1, 1, 1, 2)
|
|
|
|
self.advancedBookLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedBookLabel.setObjectName(u'advancedBookLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedBookLabel, 2, 0,
|
|
|
|
QtCore.Qt.AlignRight)
|
|
|
|
self.advancedBookComboBox = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedBookComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.advancedBookComboBox.setObjectName(u'advancedBookComboBox')
|
|
|
|
self.advancedBookLabel.setBuddy(self.advancedBookComboBox)
|
|
|
|
self.advancedLayout.addWidget(self.advancedBookComboBox, 2, 1, 1, 2)
|
|
|
|
self.advancedChapterLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedChapterLabel.setObjectName(u'advancedChapterLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedChapterLabel, 3, 1)
|
|
|
|
self.advancedVerseLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedVerseLabel.setObjectName(u'advancedVerseLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedVerseLabel, 3, 2)
|
|
|
|
self.advancedFromLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedFromLabel.setObjectName(u'advancedFromLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedFromLabel, 4, 0,
|
|
|
|
QtCore.Qt.AlignRight)
|
|
|
|
self.advancedFromChapter = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedFromChapter.setObjectName(u'advancedFromChapter')
|
|
|
|
self.advancedLayout.addWidget(self.advancedFromChapter, 4, 1)
|
|
|
|
self.advancedFromVerse = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedFromVerse.setObjectName(u'advancedFromVerse')
|
|
|
|
self.advancedLayout.addWidget(self.advancedFromVerse, 4, 2)
|
|
|
|
self.advancedToLabel = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedToLabel.setObjectName(u'advancedToLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedToLabel, 5, 0,
|
|
|
|
QtCore.Qt.AlignRight)
|
|
|
|
self.advancedToChapter = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedToChapter.setObjectName(u'advancedToChapter')
|
|
|
|
self.advancedLayout.addWidget(self.advancedToChapter, 5, 1)
|
|
|
|
self.advancedToVerse = QtGui.QComboBox(self.advancedTab)
|
|
|
|
self.advancedToVerse.setObjectName(u'advancedToVerse')
|
|
|
|
self.advancedLayout.addWidget(self.advancedToVerse, 5, 2)
|
|
|
|
|
|
|
|
self.advancedClearLabel = QtGui.QLabel(self.quickTab)
|
|
|
|
self.advancedClearLabel.setObjectName(u'advancedClearLabel')
|
|
|
|
self.advancedLayout.addWidget(self.advancedClearLabel, 6, 0,
|
|
|
|
QtCore.Qt.AlignRight)
|
|
|
|
self.advancedClearComboBox = QtGui.QComboBox(self.quickTab)
|
|
|
|
self.advancedClearComboBox.setSizePolicy(
|
|
|
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
|
|
|
self.advancedClearComboBox.setObjectName(u'advancedClearComboBox')
|
|
|
|
self.advancedClearLabel.setBuddy(self.advancedClearComboBox)
|
|
|
|
self.advancedLayout.addWidget(self.advancedClearComboBox, 6, 1, 1, 2)
|
|
|
|
self.advancedSearchButtonLayout = QtGui.QHBoxLayout()
|
|
|
|
self.advancedSearchButtonLayout.setObjectName(
|
|
|
|
u'advancedSearchButtonLayout')
|
|
|
|
self.advancedSearchButtonLayout.addStretch()
|
|
|
|
self.advancedSearchButton = QtGui.QPushButton(self.advancedTab)
|
|
|
|
self.advancedSearchButton.setObjectName(u'advancedSearchButton')
|
|
|
|
self.advancedSearchButtonLayout.addWidget(self.advancedSearchButton)
|
|
|
|
self.advancedLayout.addLayout(
|
|
|
|
self.advancedSearchButtonLayout, 7, 0, 1, 3)
|
|
|
|
self.advancedMessage = QtGui.QLabel(self.advancedTab)
|
|
|
|
self.advancedMessage.setObjectName(u'advancedMessage')
|
|
|
|
self.advancedLayout.addWidget(self.advancedMessage, 8, 0, 1, 3)
|
|
|
|
self.searchTabWidget.addTab(self.advancedTab,
|
2010-06-21 16:43:59 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Advanced'))
|
2010-11-12 13:50:13 +00:00
|
|
|
# Add the search tab widget to the page layout.
|
2011-01-05 16:50:28 +00:00
|
|
|
self.pageLayout.addWidget(self.searchTabWidget)
|
2009-03-02 21:57:49 +00:00
|
|
|
# Combo Boxes
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.advancedVersionComboBox,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.advancedBookComboBox,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedBookComboBox)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.advancedFromChapter,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedFromChapter)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.advancedFromVerse,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedFromVerse)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.advancedToChapter,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedToChapter)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.quickSearchComboBox,
|
2010-12-02 17:36:35 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.quickVersionComboBox,
|
2010-12-02 17:36:35 +00:00
|
|
|
QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
|
2009-03-02 21:57:49 +00:00
|
|
|
# Buttons
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.advancedSearchButton,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'pressed()'), self.onAdvancedSearchButton)
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.quickSearchButton,
|
2009-06-07 16:33:33 +00:00
|
|
|
QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)
|
2009-10-17 06:12:38 +00:00
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
|
|
QtCore.SIGNAL(u'config_updated'), self.configUpdated)
|
2010-01-29 20:20:30 +00:00
|
|
|
# Other stuff
|
2011-01-05 16:50:28 +00:00
|
|
|
QtCore.QObject.connect(self.quickSearchEdit,
|
2010-03-24 19:15:25 +00:00
|
|
|
QtCore.SIGNAL(u'returnPressed()'), self.onQuickSearchButton)
|
2010-01-29 20:20:30 +00:00
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
2010-04-16 07:31:01 +00:00
|
|
|
QtCore.SIGNAL(u'bibles_showprogress'), self.onSearchProgressShow)
|
2010-01-29 21:12:14 +00:00
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
2010-04-16 07:31:01 +00:00
|
|
|
QtCore.SIGNAL(u'bibles_hideprogress'), self.onSearchProgressHide)
|
2010-01-29 20:20:30 +00:00
|
|
|
|
|
|
|
def addListViewToToolBar(self):
|
|
|
|
MediaManagerItem.addListViewToToolBar(self)
|
|
|
|
# Progress Bar
|
|
|
|
self.SearchProgress = QtGui.QProgressBar(self)
|
2010-03-27 19:59:35 +00:00
|
|
|
self.SearchProgress.setFormat('')
|
|
|
|
self.SearchProgress.setMinimum(0)
|
|
|
|
self.SearchProgress.setMaximum(0)
|
2010-07-07 16:03:30 +00:00
|
|
|
self.SearchProgress.setGeometry(self.listView.geometry().left(),
|
|
|
|
self.listView.geometry().top(), 81, 23)
|
2010-01-29 20:20:30 +00:00
|
|
|
self.SearchProgress.setVisible(False)
|
|
|
|
self.SearchProgress.setObjectName(u'SearchProgress')
|
2009-10-17 06:12:38 +00:00
|
|
|
|
|
|
|
def configUpdated(self):
|
2010-09-04 19:40:28 +00:00
|
|
|
log.debug(u'configUpdated')
|
2010-11-15 17:47:33 +00:00
|
|
|
if QtCore.QSettings().value(self.settingsSection + u'/second bibles',
|
2010-09-04 19:40:28 +00:00
|
|
|
QtCore.QVariant(True)).toBool():
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSecondLabel.setVisible(True)
|
|
|
|
self.advancedSecondComboBox.setVisible(True)
|
|
|
|
self.quickSecondLabel.setVisible(True)
|
|
|
|
self.quickSecondComboBox.setVisible(True)
|
2009-10-17 06:12:38 +00:00
|
|
|
else:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSecondLabel.setVisible(False)
|
|
|
|
self.advancedSecondComboBox.setVisible(False)
|
|
|
|
self.quickSecondLabel.setVisible(False)
|
|
|
|
self.quickSecondComboBox.setVisible(False)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
|
|
|
def retranslateUi(self):
|
2009-04-25 06:11:15 +00:00
|
|
|
log.debug(u'retranslateUi')
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickVersionLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Version:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSecondLabel.setText(
|
2010-11-15 17:47:33 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Second:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchTypeLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Search type:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Find:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchButton.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Search'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickClearLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Results:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedVersionLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Version:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSecondLabel.setText(
|
2010-11-15 17:47:33 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Second:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedBookLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Book:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedChapterLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Chapter:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedVerseLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Verse:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedFromLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'From:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedToLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'To:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedClearLabel.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Results:'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSearchButton.setText(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Search'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchComboBox.addItem(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Verse Search'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchComboBox.addItem(
|
2010-08-10 16:44:04 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Text Search'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickClearComboBox.addItem(
|
2010-06-21 16:43:59 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Clear'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickClearComboBox.addItem(
|
2010-06-21 16:43:59 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Keep'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedClearComboBox.addItem(
|
2010-06-21 16:43:59 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Clear'))
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedClearComboBox.addItem(
|
2010-06-21 16:43:59 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Keep'))
|
2009-03-02 21:57:49 +00:00
|
|
|
|
|
|
|
def initialise(self):
|
2009-10-08 05:02:39 +00:00
|
|
|
log.debug(u'bible manager initialise')
|
2010-02-04 17:38:21 +00:00
|
|
|
self.parent.manager.media = self
|
2009-11-27 21:54:37 +00:00
|
|
|
self.loadBibles()
|
2010-12-02 17:36:35 +00:00
|
|
|
self.updateAutoCompleter()
|
2009-10-17 06:12:38 +00:00
|
|
|
self.configUpdated()
|
2009-10-08 05:02:39 +00:00
|
|
|
log.debug(u'bible manager initialise complete')
|
2009-08-02 13:44:41 +00:00
|
|
|
|
2009-09-27 07:22:23 +00:00
|
|
|
def setQuickMessage(self, text):
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickMessage.setText(text)
|
|
|
|
self.advancedMessage.setText(text)
|
2010-04-16 07:31:01 +00:00
|
|
|
Receiver.send_message(u'openlp_process_events')
|
2010-11-12 13:50:13 +00:00
|
|
|
# Minor delay to get the events processed.
|
2009-09-27 07:22:23 +00:00
|
|
|
time.sleep(0.1)
|
2009-03-02 22:12:14 +00:00
|
|
|
|
2010-09-26 13:38:40 +00:00
|
|
|
def onListViewResize(self, width, height):
|
|
|
|
listViewGeometry = self.listView.geometry()
|
|
|
|
self.SearchProgress.setGeometry(listViewGeometry.x(),
|
|
|
|
(listViewGeometry.y() + listViewGeometry.height()) - 23, 81, 23)
|
|
|
|
|
|
|
|
def onSearchProgressShow(self):
|
|
|
|
self.SearchProgress.setVisible(True)
|
|
|
|
Receiver.send_message(u'openlp_process_events')
|
|
|
|
|
|
|
|
def onSearchProgressHide(self):
|
|
|
|
self.SearchProgress.setVisible(False)
|
|
|
|
|
|
|
|
def onImportClick(self):
|
|
|
|
if not hasattr(self, u'import_wizard'):
|
2010-10-16 19:38:23 +00:00
|
|
|
self.import_wizard = BibleImportForm(self, self.parent.manager,
|
2010-09-26 13:38:40 +00:00
|
|
|
self.parent)
|
2010-11-12 17:54:34 +00:00
|
|
|
# If the import was not canceled then reload.
|
2010-11-19 21:34:15 +00:00
|
|
|
if self.import_wizard.exec_():
|
2010-11-12 13:50:13 +00:00
|
|
|
self.reloadBibles()
|
2010-09-26 13:38:40 +00:00
|
|
|
|
2009-03-16 17:33:51 +00:00
|
|
|
def loadBibles(self):
|
2009-04-25 06:11:15 +00:00
|
|
|
log.debug(u'Loading Bibles')
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickVersionComboBox.clear()
|
|
|
|
self.quickSecondComboBox.clear()
|
|
|
|
self.advancedVersionComboBox.clear()
|
|
|
|
self.advancedSecondComboBox.clear()
|
|
|
|
self.quickSecondComboBox.addItem(u'')
|
|
|
|
self.advancedSecondComboBox.addItem(u'')
|
2010-11-12 13:50:13 +00:00
|
|
|
# Get all bibles and sort the list.
|
2010-10-06 14:15:39 +00:00
|
|
|
bibles = self.parent.manager.get_bibles().keys()
|
2010-11-12 13:50:13 +00:00
|
|
|
bibles.sort()
|
|
|
|
# Load the bibles into the combo boxes.
|
2010-02-06 10:22:20 +00:00
|
|
|
first = True
|
2009-06-07 16:33:33 +00:00
|
|
|
for bible in bibles:
|
2010-05-09 20:02:38 +00:00
|
|
|
if bible:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickVersionComboBox.addItem(bible)
|
|
|
|
self.quickSecondComboBox.addItem(bible)
|
|
|
|
self.advancedVersionComboBox.addItem(bible)
|
|
|
|
self.advancedSecondComboBox.addItem(bible)
|
2010-05-07 20:29:21 +00:00
|
|
|
if first:
|
|
|
|
first = False
|
|
|
|
self.initialiseBible(bible)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2010-09-26 13:38:40 +00:00
|
|
|
def reloadBibles(self):
|
|
|
|
log.debug(u'Reloading Bibles')
|
|
|
|
self.parent.manager.reload_bibles()
|
|
|
|
self.loadBibles()
|
2010-01-29 20:20:30 +00:00
|
|
|
|
2010-09-26 13:38:40 +00:00
|
|
|
def initialiseBible(self, bible):
|
2010-12-02 17:36:35 +00:00
|
|
|
"""
|
|
|
|
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).
|
|
|
|
"""
|
2010-09-26 13:38:40 +00:00
|
|
|
log.debug(u'initialiseBible %s', bible)
|
|
|
|
book_data = self.parent.manager.get_books(bible)
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedBookComboBox.clear()
|
2010-09-26 13:38:40 +00:00
|
|
|
first = True
|
|
|
|
for book in book_data:
|
2011-01-05 16:50:28 +00:00
|
|
|
row = self.advancedBookComboBox.count()
|
|
|
|
self.advancedBookComboBox.addItem(book[u'name'])
|
|
|
|
self.advancedBookComboBox.setItemData(
|
2010-09-26 13:38:40 +00:00
|
|
|
row, QtCore.QVariant(book[u'chapters']))
|
|
|
|
if first:
|
|
|
|
first = False
|
|
|
|
self.initialiseChapterVerse(bible, book[u'name'],
|
|
|
|
book[u'chapters'])
|
2010-01-29 20:20:30 +00:00
|
|
|
|
2010-09-26 17:17:29 +00:00
|
|
|
def initialiseChapterVerse(self, bible, book, chapter_count):
|
2010-09-26 13:38:40 +00:00
|
|
|
log.debug(u'initialiseChapterVerse %s, %s', bible, book)
|
2010-09-26 17:17:29 +00:00
|
|
|
self.chapter_count = chapter_count
|
|
|
|
verse_count = self.parent.manager.get_verse_count(bible, book, 1)
|
|
|
|
if verse_count == 0:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSearchButton.setEnabled(False)
|
|
|
|
self.advancedMessage.setText(
|
2010-09-26 13:38:40 +00:00
|
|
|
translate('BiblesPlugin.MediaItem', 'Bible not fully loaded.'))
|
|
|
|
else:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSearchButton.setEnabled(True)
|
|
|
|
self.advancedMessage.setText(u'')
|
|
|
|
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)
|
2010-01-29 21:26:24 +00:00
|
|
|
|
2010-12-02 17:36:35 +00:00
|
|
|
def updateAutoCompleter(self):
|
2010-12-01 18:37:54 +00:00
|
|
|
"""
|
2010-12-02 17:36:35 +00:00
|
|
|
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
|
|
|
|
verse search, otherwise the auto completion list is removed.
|
2010-12-01 18:37:54 +00:00
|
|
|
"""
|
|
|
|
books = []
|
|
|
|
# We have to do a 'Verse Search'.
|
2011-01-05 16:50:28 +00:00
|
|
|
if self.quickSearchComboBox.currentIndex() == 0:
|
2010-12-03 19:53:56 +00:00
|
|
|
bibles = self.parent.manager.get_bibles()
|
2011-01-05 16:50:28 +00:00
|
|
|
bible = unicode(self.quickVersionComboBox.currentText())
|
2010-12-01 18:37:54 +00:00
|
|
|
if bible:
|
2010-12-03 19:53:56 +00:00
|
|
|
book_data = bibles[bible].get_books()
|
|
|
|
books = [book.name for book in book_data]
|
|
|
|
books.sort()
|
2010-12-02 17:36:35 +00:00
|
|
|
completer = QtGui.QCompleter(books)
|
|
|
|
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchEdit.setCompleter(completer)
|
2010-12-01 18:37:54 +00:00
|
|
|
|
2009-03-02 21:57:49 +00:00
|
|
|
def onAdvancedVersionComboBox(self):
|
2009-09-15 18:56:56 +00:00
|
|
|
self.initialiseBible(
|
2011-01-05 16:50:28 +00:00
|
|
|
unicode(self.advancedVersionComboBox.currentText()))
|
2009-03-02 21:57:49 +00:00
|
|
|
|
|
|
|
def onAdvancedBookComboBox(self):
|
2011-01-05 16:50:28 +00:00
|
|
|
item = int(self.advancedBookComboBox.currentIndex())
|
2009-09-15 18:56:56 +00:00
|
|
|
self.initialiseChapterVerse(
|
2011-01-05 16:50:28 +00:00
|
|
|
unicode(self.advancedVersionComboBox.currentText()),
|
|
|
|
unicode(self.advancedBookComboBox.currentText()),
|
|
|
|
self.advancedBookComboBox.itemData(item).toInt()[0])
|
2009-03-02 21:57:49 +00:00
|
|
|
|
|
|
|
def onAdvancedFromVerse(self):
|
2011-01-05 16:50:28 +00:00
|
|
|
chapter_from = int(self.advancedFromChapter.currentText())
|
|
|
|
chapter_to = int(self.advancedToChapter.currentText())
|
2010-09-26 17:17:29 +00:00
|
|
|
if chapter_from == chapter_to:
|
2011-01-05 16:50:28 +00:00
|
|
|
bible = unicode(self.advancedVersionComboBox.currentText())
|
|
|
|
book = unicode(self.advancedBookComboBox.currentText())
|
|
|
|
verse_from = int(self.advancedFromVerse.currentText())
|
2010-09-26 17:17:29 +00:00
|
|
|
verse_count = self.parent.manager.get_verse_count(bible, book,
|
|
|
|
chapter_to)
|
|
|
|
self.adjustComboBox(verse_from, verse_count,
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedToVerse, True)
|
2010-09-22 18:46:02 +00:00
|
|
|
|
|
|
|
def onAdvancedToChapter(self):
|
2011-01-05 16:50:28 +00:00
|
|
|
bible = unicode(self.advancedVersionComboBox.currentText())
|
|
|
|
book = unicode(self.advancedBookComboBox.currentText())
|
|
|
|
chapter_from = int(self.advancedFromChapter.currentText())
|
|
|
|
chapter_to = int(self.advancedToChapter.currentText())
|
|
|
|
verse_from = int(self.advancedFromVerse.currentText())
|
|
|
|
verse_to = int(self.advancedToVerse.currentText())
|
2010-09-26 17:17:29 +00:00
|
|
|
verse_count = self.parent.manager.get_verse_count(bible, book,
|
|
|
|
chapter_to)
|
|
|
|
if chapter_from == chapter_to and verse_from > verse_to:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.adjustComboBox(verse_from, verse_count, self.advancedToVerse)
|
2010-09-22 18:46:02 +00:00
|
|
|
else:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.adjustComboBox(1, verse_count, self.advancedToVerse)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2010-09-26 13:38:40 +00:00
|
|
|
def onAdvancedFromChapter(self):
|
2011-01-05 16:50:28 +00:00
|
|
|
bible = unicode(self.advancedVersionComboBox.currentText())
|
|
|
|
book = unicode(self.advancedBookComboBox.currentText())
|
|
|
|
chapter_from = int(self.advancedFromChapter.currentText())
|
|
|
|
chapter_to = int(self.advancedToChapter.currentText())
|
2010-09-26 17:17:29 +00:00
|
|
|
verse_count = self.parent.manager.get_verse_count(bible, book,
|
|
|
|
chapter_from)
|
2011-01-05 16:50:28 +00:00
|
|
|
self.adjustComboBox(1, verse_count, self.advancedFromVerse)
|
2010-09-26 17:17:29 +00:00
|
|
|
if chapter_from > chapter_to:
|
2011-01-05 16:50:28 +00:00
|
|
|
self.adjustComboBox(1, verse_count, self.advancedToVerse)
|
2010-09-26 17:17:29 +00:00
|
|
|
self.adjustComboBox(chapter_from, self.chapter_count,
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedToChapter)
|
2010-09-26 17:17:29 +00:00
|
|
|
elif chapter_from == chapter_to:
|
|
|
|
self.adjustComboBox(chapter_from, self.chapter_count,
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedToChapter)
|
|
|
|
self.adjustComboBox(1, verse_count, self.advancedToVerse, True)
|
2010-09-26 17:17:29 +00:00
|
|
|
else:
|
|
|
|
self.adjustComboBox(chapter_from, self.chapter_count,
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedToChapter, True)
|
2010-09-26 17:17:29 +00:00
|
|
|
|
|
|
|
def adjustComboBox(self, range_from, range_to, combo, restore=False):
|
|
|
|
"""
|
2010-11-12 17:54:34 +00:00
|
|
|
Adjusts the given como box to the given values.
|
2010-11-12 13:50:13 +00:00
|
|
|
|
|
|
|
``range_from``
|
|
|
|
The first number of the range (int).
|
|
|
|
|
|
|
|
``range_to``
|
|
|
|
The last number of the range (int).
|
|
|
|
|
|
|
|
``combo``
|
|
|
|
The combo box itself (QComboBox).
|
|
|
|
|
2010-09-26 17:17:29 +00:00
|
|
|
``restore``
|
|
|
|
If True, then the combo's currentText will be restored after
|
|
|
|
adjusting (if possible).
|
|
|
|
"""
|
2010-09-26 13:38:40 +00:00
|
|
|
log.debug(u'adjustComboBox %s, %s, %s', combo, range_from, range_to)
|
2010-09-26 17:17:29 +00:00
|
|
|
if restore:
|
2010-09-26 17:23:58 +00:00
|
|
|
old_text = unicode(combo.currentText())
|
2010-09-26 13:38:40 +00:00
|
|
|
combo.clear()
|
2010-11-12 13:50:13 +00:00
|
|
|
for i in range(range_from, range_to + 1):
|
2010-09-26 13:38:40 +00:00
|
|
|
combo.addItem(unicode(i))
|
2010-09-26 17:23:58 +00:00
|
|
|
if restore and combo.findText(old_text) != -1:
|
|
|
|
combo.setCurrentIndex(combo.findText(old_text))
|
2010-09-26 13:38:40 +00:00
|
|
|
|
2009-03-02 21:57:49 +00:00
|
|
|
def onAdvancedSearchButton(self):
|
2010-11-12 13:50:13 +00:00
|
|
|
"""
|
2010-11-12 17:54:34 +00:00
|
|
|
Does an advanced search and saves the search results.
|
2010-11-12 13:50:13 +00:00
|
|
|
"""
|
2009-03-16 17:33:51 +00:00
|
|
|
log.debug(u'Advanced Search Button pressed')
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSearchButton.setEnabled(False)
|
|
|
|
bible = unicode(self.advancedVersionComboBox.currentText())
|
|
|
|
second_bible = unicode(self.advancedSecondComboBox.currentText())
|
|
|
|
book = unicode(self.advancedBookComboBox.currentText())
|
|
|
|
chapter_from = self.advancedFromChapter.currentText()
|
|
|
|
chapter_to = self.advancedToChapter.currentText()
|
|
|
|
verse_from = self.advancedFromVerse.currentText()
|
|
|
|
verse_to = self.advancedToVerse.currentText()
|
2010-12-17 13:21:55 +00:00
|
|
|
verse_separator = get_reference_match(u'sep_v_display')
|
|
|
|
range_separator = get_reference_match(u'sep_r_display')
|
|
|
|
verse_range = chapter_from + verse_separator + verse_from + \
|
|
|
|
range_separator + chapter_to + verse_separator + verse_to
|
|
|
|
versetext = u'%s %s' % (book, verse_range)
|
2010-01-24 07:08:14 +00:00
|
|
|
self.search_results = self.parent.manager.get_verses(bible, versetext)
|
2010-11-15 17:47:33 +00:00
|
|
|
if second_bible:
|
|
|
|
self.second_search_results = self.parent.manager.get_verses(
|
|
|
|
second_bible, versetext)
|
2011-01-05 16:50:28 +00:00
|
|
|
if self.advancedClearComboBox.currentIndex() == 0:
|
2010-07-07 16:03:30 +00:00
|
|
|
self.listView.clear()
|
2010-09-20 18:38:18 +00:00
|
|
|
if self.listView.count() != 0:
|
2010-11-15 17:47:33 +00:00
|
|
|
# Check if the first item is a second bible item or not.
|
2010-09-20 18:38:18 +00:00
|
|
|
bitem = self.listView.item(0)
|
2010-11-15 17:47:33 +00:00
|
|
|
item_second_bible = self._decodeQtObject(bitem, 'second_bible')
|
|
|
|
if item_second_bible and second_bible or not item_second_bible and \
|
|
|
|
not second_bible:
|
|
|
|
self.displayResults(bible, second_bible)
|
2010-09-20 18:38:18 +00:00
|
|
|
elif QtGui.QMessageBox.critical(self,
|
|
|
|
translate('BiblePlugin.MediaItem', 'Error'),
|
|
|
|
translate('BiblePlugin.MediaItem', 'You cannot combine single '
|
2010-11-15 17:47:33 +00:00
|
|
|
'and second bible verses. Do you want to delete your search '
|
2010-09-20 18:38:18 +00:00
|
|
|
'results and start a new search?'),
|
|
|
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
|
|
|
|
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes:
|
|
|
|
self.listView.clear()
|
2010-11-15 17:47:33 +00:00
|
|
|
self.displayResults(bible, second_bible)
|
2010-09-11 19:36:47 +00:00
|
|
|
else:
|
2010-11-15 17:47:33 +00:00
|
|
|
self.displayResults(bible, second_bible)
|
2011-01-05 16:50:28 +00:00
|
|
|
self.advancedSearchButton.setEnabled(True)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
|
|
|
def onQuickSearchButton(self):
|
2010-11-16 18:33:37 +00:00
|
|
|
"""
|
|
|
|
Does a quick search and saves the search results. Quick search can
|
|
|
|
either be "Verse Search" or "Text Search".
|
|
|
|
"""
|
2009-03-16 17:33:51 +00:00
|
|
|
log.debug(u'Quick Search Button pressed')
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchButton.setEnabled(False)
|
|
|
|
bible = unicode(self.quickVersionComboBox.currentText())
|
|
|
|
second_bible = unicode(self.quickSecondComboBox.currentText())
|
|
|
|
text = unicode(self.quickSearchEdit.text())
|
|
|
|
if self.quickSearchComboBox.currentIndex() == 0:
|
2010-10-08 17:37:34 +00:00
|
|
|
# We are doing a 'Verse Search'.
|
2010-09-30 18:40:10 +00:00
|
|
|
self.search_results = self.parent.manager.get_verses(bible, text)
|
2010-11-15 17:47:33 +00:00
|
|
|
if second_bible and self.search_results:
|
|
|
|
self.second_search_results = self.parent.manager.get_verses(
|
|
|
|
second_bible, text)
|
2010-10-08 17:37:34 +00:00
|
|
|
else:
|
2010-11-09 17:23:18 +00:00
|
|
|
# We are doing a 'Text Search'.
|
2010-10-06 14:15:39 +00:00
|
|
|
bibles = self.parent.manager.get_bibles()
|
2010-11-12 13:50:13 +00:00
|
|
|
self.search_results = self.parent.manager.verse_search(bible,
|
2010-11-15 17:47:33 +00:00
|
|
|
second_bible, text)
|
|
|
|
if second_bible and self.search_results:
|
2010-10-06 14:15:39 +00:00
|
|
|
text = []
|
|
|
|
for verse in self.search_results:
|
|
|
|
text.append((verse.book.name, verse.chapter, verse.verse,
|
|
|
|
verse.verse))
|
2010-11-16 17:57:13 +00:00
|
|
|
self.second_search_results = \
|
|
|
|
bibles[second_bible].get_verses(text)
|
2011-01-05 16:50:28 +00:00
|
|
|
if self.quickClearComboBox.currentIndex() == 0:
|
2010-09-11 19:36:47 +00:00
|
|
|
self.listView.clear()
|
2010-09-20 18:55:14 +00:00
|
|
|
if self.listView.count() != 0 and self.search_results:
|
2010-09-20 18:38:18 +00:00
|
|
|
bitem = self.listView.item(0)
|
2010-11-15 17:47:33 +00:00
|
|
|
item_second_bible = self._decodeQtObject(bitem, 'second_bible')
|
|
|
|
if item_second_bible and second_bible or not item_second_bible and \
|
|
|
|
not second_bible:
|
|
|
|
self.displayResults(bible, second_bible)
|
2010-09-20 18:38:18 +00:00
|
|
|
elif QtGui.QMessageBox.critical(self,
|
|
|
|
translate('BiblePlugin.MediaItem', 'Error'),
|
|
|
|
translate('BiblePlugin.MediaItem', 'You cannot combine single '
|
2010-11-15 17:47:33 +00:00
|
|
|
'and second bible verses. Do you want to delete your search '
|
2010-09-21 05:57:23 +00:00
|
|
|
'results and start a new search?'),
|
2010-09-20 18:38:18 +00:00
|
|
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
|
|
|
|
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes:
|
|
|
|
self.listView.clear()
|
2010-11-15 17:47:33 +00:00
|
|
|
self.displayResults(bible, second_bible)
|
2010-09-20 18:55:14 +00:00
|
|
|
elif self.search_results:
|
2010-11-15 17:47:33 +00:00
|
|
|
self.displayResults(bible, second_bible)
|
2011-01-05 16:50:28 +00:00
|
|
|
self.quickSearchButton.setEnabled(True)
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2010-11-15 17:47:33 +00:00
|
|
|
def displayResults(self, bible, second_bible=u''):
|
2010-09-26 13:38:40 +00:00
|
|
|
"""
|
|
|
|
Displays the search results in the media manager. All data needed for
|
|
|
|
further action is saved for/in each row.
|
|
|
|
"""
|
2011-01-05 18:25:40 +00:00
|
|
|
verse_separator = get_reference_match(u'sep_v_display')
|
2010-09-26 13:38:40 +00:00
|
|
|
version = self.parent.manager.get_meta_data(bible, u'Version')
|
|
|
|
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
|
2010-10-05 18:44:54 +00:00
|
|
|
permissions = self.parent.manager.get_meta_data(bible, u'Permissions')
|
2010-11-15 17:47:33 +00:00
|
|
|
if second_bible:
|
|
|
|
second_version = self.parent.manager.get_meta_data(second_bible,
|
2010-09-26 13:38:40 +00:00
|
|
|
u'Version')
|
2010-11-15 17:47:33 +00:00
|
|
|
second_copyright = self.parent.manager.get_meta_data(second_bible,
|
2010-09-26 13:38:40 +00:00
|
|
|
u'Copyright')
|
2010-11-15 17:47:33 +00:00
|
|
|
second_permissions = self.parent.manager.get_meta_data(second_bible,
|
2010-09-26 13:38:40 +00:00
|
|
|
u'Permissions')
|
2010-11-15 17:47:33 +00:00
|
|
|
if not second_permissions:
|
|
|
|
second_permissions = u''
|
2010-09-26 13:38:40 +00:00
|
|
|
for count, verse in enumerate(self.search_results):
|
2010-11-15 17:47:33 +00:00
|
|
|
if second_bible:
|
2010-11-29 19:02:58 +00:00
|
|
|
try:
|
|
|
|
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),
|
|
|
|
'permissions': QtCore.QVariant(permissions.value),
|
|
|
|
'text': QtCore.QVariant(verse.text),
|
|
|
|
'second_bible': QtCore.QVariant(second_bible),
|
|
|
|
'second_version': QtCore.QVariant(second_version.value),
|
|
|
|
'second_copyright': QtCore.QVariant(
|
|
|
|
second_copyright.value),
|
|
|
|
'second_permissions': QtCore.QVariant(
|
|
|
|
second_permissions.value),
|
|
|
|
'second_text': QtCore.QVariant(
|
|
|
|
self.second_search_results[count].text)
|
|
|
|
}
|
|
|
|
except IndexError:
|
|
|
|
break
|
2011-01-05 18:25:40 +00:00
|
|
|
bible_text = u' %s %d%s%d (%s, %s)' % (verse.book.name,
|
|
|
|
verse.chapter, verse_separator, verse.verse, version.value,
|
2010-11-15 17:47:33 +00:00
|
|
|
second_version.value)
|
2010-09-26 13:38:40 +00:00
|
|
|
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),
|
2010-10-05 18:44:54 +00:00
|
|
|
'permissions': QtCore.QVariant(permissions.value),
|
2010-09-26 13:38:40 +00:00
|
|
|
'text': QtCore.QVariant(verse.text),
|
2010-11-15 17:47:33 +00:00
|
|
|
'second_bible': QtCore.QVariant(u''),
|
|
|
|
'second_version': QtCore.QVariant(u''),
|
|
|
|
'second_copyright': QtCore.QVariant(u''),
|
|
|
|
'second_permissions': QtCore.QVariant(u''),
|
|
|
|
'second_text': QtCore.QVariant(u'')
|
2010-09-26 13:38:40 +00:00
|
|
|
}
|
2011-01-05 18:25:40 +00:00
|
|
|
bible_text = u'%s %d%s%d (%s)' % (verse.book.name,
|
|
|
|
verse.chapter, verse_separator, verse.verse, version.value)
|
2010-09-26 13:38:40 +00:00
|
|
|
bible_verse = QtGui.QListWidgetItem(bible_text)
|
|
|
|
bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict))
|
|
|
|
self.listView.addItem(bible_verse)
|
2010-11-13 20:13:24 +00:00
|
|
|
self.listView.selectAll()
|
2010-09-26 13:38:40 +00:00
|
|
|
self.search_results = {}
|
2010-11-15 17:47:33 +00:00
|
|
|
self.second_search_results = {}
|
2010-09-26 13:38:40 +00:00
|
|
|
|
2010-09-18 21:29:41 +00:00
|
|
|
def _decodeQtObject(self, bitem, key):
|
2010-09-16 16:22:23 +00:00
|
|
|
reference = bitem.data(QtCore.Qt.UserRole)
|
|
|
|
if isinstance(reference, QtCore.QVariant):
|
|
|
|
reference = reference.toPyObject()
|
|
|
|
obj = reference[QtCore.QString(key)]
|
2010-09-15 16:52:22 +00:00
|
|
|
if isinstance(obj, QtCore.QVariant):
|
|
|
|
obj = obj.toPyObject()
|
2010-12-17 13:21:55 +00:00
|
|
|
return unicode(obj).strip()
|
2010-09-15 16:52:22 +00:00
|
|
|
|
2010-11-27 15:25:00 +00:00
|
|
|
def generateSlideData(self, service_item, item=None, xmlVersion=False):
|
2010-08-28 17:05:45 +00:00
|
|
|
"""
|
2010-08-18 15:04:16 +00:00
|
|
|
Generates and formats the slides for the service item as well as the
|
|
|
|
service item's title.
|
2010-08-28 17:05:45 +00:00
|
|
|
"""
|
2009-06-08 05:04:06 +00:00
|
|
|
log.debug(u'generating slide data')
|
2010-07-07 16:03:30 +00:00
|
|
|
items = self.listView.selectedIndexes()
|
2010-08-06 07:23:32 +00:00
|
|
|
if len(items) == 0:
|
2009-08-31 21:53:35 +00:00
|
|
|
return False
|
2010-09-01 17:27:38 +00:00
|
|
|
bible_text = u''
|
2010-11-12 13:50:13 +00:00
|
|
|
old_chapter = -1
|
2010-09-01 17:27:38 +00:00
|
|
|
raw_footer = []
|
|
|
|
raw_slides = []
|
2010-09-14 18:07:38 +00:00
|
|
|
raw_title = []
|
2010-09-20 18:38:18 +00:00
|
|
|
first_item = True
|
2010-08-29 12:49:45 +00:00
|
|
|
for item in items:
|
|
|
|
bitem = self.listView.item(item.row())
|
2010-09-18 21:29:41 +00:00
|
|
|
book = self._decodeQtObject(bitem, 'book')
|
|
|
|
chapter = int(self._decodeQtObject(bitem, 'chapter'))
|
|
|
|
verse = int(self._decodeQtObject(bitem, 'verse'))
|
|
|
|
bible = self._decodeQtObject(bitem, 'bible')
|
|
|
|
version = self._decodeQtObject(bitem, 'version')
|
|
|
|
copyright = self._decodeQtObject(bitem, 'copyright')
|
2010-10-05 18:44:54 +00:00
|
|
|
permissions = self._decodeQtObject(bitem, 'permissions')
|
2010-09-18 21:29:41 +00:00
|
|
|
text = self._decodeQtObject(bitem, 'text')
|
2010-11-15 17:47:33 +00:00
|
|
|
second_bible = self._decodeQtObject(bitem, 'second_bible')
|
|
|
|
second_version = self._decodeQtObject(bitem, 'second_version')
|
|
|
|
second_copyright = self._decodeQtObject(bitem, 'second_copyright')
|
2010-12-18 02:12:41 +00:00
|
|
|
second_permissions = \
|
|
|
|
self._decodeQtObject(bitem, 'second_permissions')
|
2010-11-15 17:47:33 +00:00
|
|
|
second_text = self._decodeQtObject(bitem, 'second_text')
|
2010-08-15 14:49:07 +00:00
|
|
|
verse_text = self.formatVerse(old_chapter, chapter, verse)
|
2010-10-05 18:44:54 +00:00
|
|
|
footer = u'%s (%s %s %s)' % (book, version, copyright, permissions)
|
2010-02-06 10:22:20 +00:00
|
|
|
if footer not in raw_footer:
|
2009-07-12 14:56:06 +00:00
|
|
|
raw_footer.append(footer)
|
2010-11-15 17:47:33 +00:00
|
|
|
if second_bible:
|
2010-11-16 17:57:13 +00:00
|
|
|
footer = u'%s (%s %s %s)' % (book, second_version,
|
|
|
|
second_copyright, second_permissions)
|
2010-09-11 19:36:47 +00:00
|
|
|
if footer not in raw_footer:
|
|
|
|
raw_footer.append(footer)
|
2010-12-18 02:12:41 +00:00
|
|
|
bible_text = u'%s\u00a0%s\n\n%s\u00a0%s' % (verse_text, text,
|
|
|
|
verse_text, second_text)
|
2010-09-11 19:36:47 +00:00
|
|
|
raw_slides.append(bible_text)
|
|
|
|
bible_text = u''
|
2010-08-15 14:49:07 +00:00
|
|
|
# If we are 'Verse Per Slide' then create a new slide.
|
|
|
|
elif self.parent.settings_tab.layout_style == 0:
|
2010-12-16 20:00:01 +00:00
|
|
|
bible_text = u'%s\u00a0%s' % (verse_text, text)
|
2010-08-15 14:49:07 +00:00
|
|
|
raw_slides.append(bible_text)
|
|
|
|
bible_text = u''
|
|
|
|
# If we are 'Verse Per Line' then force a new line.
|
|
|
|
elif self.parent.settings_tab.layout_style == 1:
|
2010-12-16 20:00:01 +00:00
|
|
|
bible_text = u'%s %s\u00a0%s\n' % (bible_text, verse_text, text)
|
2010-08-15 14:49:07 +00:00
|
|
|
# We have to be 'Continuous'.
|
2010-08-15 15:35:20 +00:00
|
|
|
else:
|
2010-12-16 20:00:01 +00:00
|
|
|
bible_text = u'%s %s\u00a0%s\n' % (bible_text, verse_text, text)
|
2010-09-20 18:38:18 +00:00
|
|
|
if first_item:
|
2010-09-16 16:22:23 +00:00
|
|
|
start_item = item
|
2010-09-20 18:38:18 +00:00
|
|
|
first_item = False
|
2010-09-16 16:22:23 +00:00
|
|
|
elif self.checkTitle(item, old_item):
|
2010-09-17 12:17:50 +00:00
|
|
|
raw_title.append(self.formatTitle(start_item, old_item))
|
2010-09-16 16:22:23 +00:00
|
|
|
start_item = item
|
|
|
|
old_item = item
|
2010-08-15 15:35:20 +00:00
|
|
|
old_chapter = chapter
|
2010-09-17 12:17:50 +00:00
|
|
|
raw_title.append(self.formatTitle(start_item, item))
|
2010-08-15 14:49:07 +00:00
|
|
|
# If there are no more items we check whether we have to add bible_text.
|
|
|
|
if bible_text:
|
|
|
|
raw_slides.append(bible_text)
|
|
|
|
bible_text = u''
|
2010-10-08 17:37:34 +00:00
|
|
|
# Service Item: Capabilities
|
2010-11-15 17:47:33 +00:00
|
|
|
if self.parent.settings_tab.layout_style == 2 and not second_bible:
|
2010-09-22 18:46:02 +00:00
|
|
|
# Split the line but do not replace line breaks in renderer.
|
2010-08-29 12:49:45 +00:00
|
|
|
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
|
|
|
service_item.add_capability(ItemCapabilities.AllowsPreview)
|
|
|
|
service_item.add_capability(ItemCapabilities.AllowsLoop)
|
2010-10-08 17:37:34 +00:00
|
|
|
# Service Item: Title
|
2010-09-14 18:07:38 +00:00
|
|
|
for title in raw_title:
|
2010-09-20 18:38:18 +00:00
|
|
|
if not service_item.title:
|
2010-09-14 18:07:38 +00:00
|
|
|
service_item.title = title
|
2010-08-03 17:04:08 +00:00
|
|
|
else:
|
2010-09-14 18:07:38 +00:00
|
|
|
service_item.title += u', ' + title
|
2010-10-08 17:37:34 +00:00
|
|
|
# Service Item: Theme
|
2010-06-08 15:38:09 +00:00
|
|
|
if len(self.parent.settings_tab.bible_theme) == 0:
|
2009-05-18 16:11:59 +00:00
|
|
|
service_item.theme = None
|
|
|
|
else:
|
2009-10-09 12:48:22 +00:00
|
|
|
service_item.theme = self.parent.settings_tab.bible_theme
|
2009-06-05 19:00:57 +00:00
|
|
|
for slide in raw_slides:
|
|
|
|
service_item.add_from_text(slide[:30], slide)
|
2010-06-18 05:58:40 +00:00
|
|
|
if service_item.raw_footer:
|
2010-08-04 08:02:52 +00:00
|
|
|
for footer in raw_footer:
|
|
|
|
service_item.raw_footer.append(footer)
|
2010-06-18 05:58:40 +00:00
|
|
|
else:
|
|
|
|
service_item.raw_footer = raw_footer
|
2009-08-31 21:53:35 +00:00
|
|
|
return True
|
2009-03-02 21:57:49 +00:00
|
|
|
|
2010-09-16 16:57:21 +00:00
|
|
|
def formatTitle(self, start_item, old_item):
|
2010-09-16 16:22:23 +00:00
|
|
|
"""
|
|
|
|
This methode 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
|
2010-09-17 11:41:52 +00:00
|
|
|
Genesis 1:1-6 as well as Daniel 2:14.
|
2010-11-12 13:50:13 +00:00
|
|
|
|
|
|
|
``start_item``
|
|
|
|
The first item of a range.
|
|
|
|
|
|
|
|
``old_item``
|
|
|
|
The last item of a range.
|
2010-09-16 16:22:23 +00:00
|
|
|
"""
|
2010-12-17 13:21:55 +00:00
|
|
|
verse_separator = get_reference_match(u'sep_v_display')
|
|
|
|
range_separator = get_reference_match(u'sep_r_display')
|
2010-09-18 21:29:41 +00:00
|
|
|
old_bitem = self.listView.item(old_item.row())
|
2010-12-17 13:21:55 +00:00
|
|
|
old_chapter = self._decodeQtObject(old_bitem, 'chapter')
|
|
|
|
old_verse = self._decodeQtObject(old_bitem, 'verse')
|
2010-09-18 21:29:41 +00:00
|
|
|
start_bitem = self.listView.item(start_item.row())
|
|
|
|
start_book = self._decodeQtObject(start_bitem, 'book')
|
2010-12-17 13:21:55 +00:00
|
|
|
start_chapter = self._decodeQtObject(start_bitem, 'chapter')
|
|
|
|
start_verse = self._decodeQtObject(start_bitem, 'verse')
|
2010-09-18 21:29:41 +00:00
|
|
|
start_bible = self._decodeQtObject(start_bitem, 'bible')
|
2010-11-15 17:47:33 +00:00
|
|
|
start_second_bible = self._decodeQtObject(start_bitem, 'second_bible')
|
|
|
|
if start_second_bible:
|
2010-12-17 13:21:55 +00:00
|
|
|
bibles = u'%s, %s' % (start_bible, start_second_bible)
|
2010-09-16 16:22:23 +00:00
|
|
|
else:
|
2010-12-17 13:21:55 +00:00
|
|
|
bibles = start_bible
|
|
|
|
if start_chapter == old_chapter:
|
|
|
|
if start_verse == old_verse:
|
|
|
|
verse_range = start_chapter + verse_separator + start_verse
|
2010-09-16 16:22:23 +00:00
|
|
|
else:
|
2010-12-17 13:21:55 +00:00
|
|
|
verse_range = start_chapter + verse_separator + start_verse + \
|
|
|
|
range_separator + old_verse
|
|
|
|
else:
|
|
|
|
verse_range = start_chapter + verse_separator + start_verse + \
|
|
|
|
range_separator + old_chapter + verse_separator + old_verse
|
|
|
|
title = u'%s %s (%s)' % (start_book, verse_range, bibles)
|
2010-09-16 16:22:23 +00:00
|
|
|
return title
|
2010-09-16 16:35:19 +00:00
|
|
|
|
2010-09-16 16:22:23 +00:00
|
|
|
def checkTitle(self, item, old_item):
|
|
|
|
"""
|
|
|
|
This methode checks if we are at the end of an verse range. If that is
|
2010-11-16 17:57:13 +00:00
|
|
|
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.
|
2010-11-12 13:50:13 +00:00
|
|
|
|
|
|
|
``item``
|
|
|
|
The item we are dealing with at the moment.
|
|
|
|
|
|
|
|
``old_item``
|
|
|
|
The item we were previously dealing with.
|
2010-09-16 16:22:23 +00:00
|
|
|
"""
|
2010-11-12 13:50:13 +00:00
|
|
|
# Get all the necessary meta data.
|
2010-09-18 21:29:41 +00:00
|
|
|
bitem = self.listView.item(item.row())
|
|
|
|
book = self._decodeQtObject(bitem, 'book')
|
|
|
|
chapter = int(self._decodeQtObject(bitem, 'chapter'))
|
|
|
|
verse = int(self._decodeQtObject(bitem, 'verse'))
|
|
|
|
bible = self._decodeQtObject(bitem, 'bible')
|
2010-11-15 17:47:33 +00:00
|
|
|
second_bible = self._decodeQtObject(bitem, 'second_bible')
|
2010-09-18 21:29:41 +00:00
|
|
|
old_bitem = self.listView.item(old_item.row())
|
|
|
|
old_book = self._decodeQtObject(old_bitem, 'book')
|
|
|
|
old_chapter = int(self._decodeQtObject(old_bitem, 'chapter'))
|
|
|
|
old_verse = int(self._decodeQtObject(old_bitem, 'verse'))
|
|
|
|
old_bible = self._decodeQtObject(old_bitem, 'bible')
|
2010-11-15 17:47:33 +00:00
|
|
|
old_second_bible = self._decodeQtObject(old_bitem, 'second_bible')
|
|
|
|
if old_bible != bible or old_second_bible != second_bible or \
|
2010-09-16 16:22:23 +00:00
|
|
|
old_book != book:
|
2010-12-13 14:24:16 +00:00
|
|
|
# The bible, second bible or book has changed.
|
2010-09-16 16:22:23 +00:00
|
|
|
return True
|
|
|
|
elif old_verse + 1 != verse and old_chapter == chapter:
|
2010-11-12 13:50:13 +00:00
|
|
|
# We are still in the same chapter, but a verse has been skipped.
|
2010-09-16 16:22:23 +00:00
|
|
|
return True
|
|
|
|
elif old_chapter + 1 == chapter and (verse != 1 or
|
|
|
|
old_verse != self.parent.manager.get_verse_count(
|
|
|
|
old_bible, old_book, old_chapter)):
|
2010-11-12 13:50:13 +00:00
|
|
|
# We are in the following chapter, but the last verse was not the
|
2010-11-12 17:54:34 +00:00
|
|
|
# last verse of the chapter or the current verse is not the
|
|
|
|
# first one of the chapter.
|
2010-09-16 16:22:23 +00:00
|
|
|
return True
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
|
2010-08-15 14:49:07 +00:00
|
|
|
def formatVerse(self, old_chapter, chapter, verse):
|
2010-11-12 13:50:13 +00:00
|
|
|
"""
|
|
|
|
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).
|
|
|
|
"""
|
2010-12-17 13:21:55 +00:00
|
|
|
verse_separator = get_reference_match(u'sep_v_display')
|
2010-08-15 14:49:07 +00:00
|
|
|
if not self.parent.settings_tab.show_new_chapters or \
|
|
|
|
old_chapter != chapter:
|
2010-12-17 13:21:55 +00:00
|
|
|
verse_text = unicode(chapter) + verse_separator + unicode(verse)
|
2010-08-29 12:49:45 +00:00
|
|
|
else:
|
2010-12-31 02:17:41 +00:00
|
|
|
verse_text = unicode(verse)
|
2010-08-15 14:49:07 +00:00
|
|
|
if self.parent.settings_tab.display_style == 1:
|
2010-08-28 17:05:45 +00:00
|
|
|
verse_text = u'{su}(' + verse_text + u'){/su}'
|
2010-08-15 14:49:07 +00:00
|
|
|
elif self.parent.settings_tab.display_style == 2:
|
2010-08-28 17:05:45 +00:00
|
|
|
verse_text = u'{su}{' + verse_text + u'}{/su}'
|
2010-08-15 14:49:07 +00:00
|
|
|
elif self.parent.settings_tab.display_style == 3:
|
2010-08-28 17:05:45 +00:00
|
|
|
verse_text = u'{su}[' + verse_text + u']{/su}'
|
|
|
|
else:
|
|
|
|
verse_text = u'{su}' + verse_text + u'{/su}'
|
2010-12-31 02:17:41 +00:00
|
|
|
return verse_text
|