Refactored various variable names.

Refactored the names of the fields in the "metadata" table of Bibles, and provided an upgrade script to upgrade the Bibles seamlessly.
Refactored the name of a setting, and wrote some code to migrate it seamlessly.
This commit is contained in:
Raoul Snyman 2012-04-22 00:29:08 +02:00
parent a9fea228ee
commit 4452d4834c
30 changed files with 315 additions and 247 deletions

View File

@ -155,9 +155,9 @@ class Plugin(QtCore.QObject):
self.version = get_application_version()[u'version']
self.settingsSection = self.name
self.icon = None
self.media_item_class = media_item_class
self.settings_tab_class = settings_tab_class
self.settings_tab = None
self.mediaItemClass = media_item_class
self.settingsTabClass = settings_tab_class
self.settingsTab = None
self.mediaItem = None
self.weight = 0
self.status = PluginStatus.Inactive
@ -166,9 +166,9 @@ class Plugin(QtCore.QObject):
self.renderer = plugin_helpers[u'renderer']
self.serviceManager = plugin_helpers[u'service']
self.settingsForm = plugin_helpers[u'settings form']
self.mediadock = plugin_helpers[u'toolbox']
self.mediaDock = plugin_helpers[u'toolbox']
self.pluginManager = plugin_helpers[u'pluginmanager']
self.formparent = plugin_helpers[u'formparent']
self.formParent = plugin_helpers[u'formparent']
self.mediaController = plugin_helpers[u'mediacontroller']
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_add_service_item' % self.name),
@ -219,8 +219,8 @@ class Plugin(QtCore.QObject):
Construct a MediaManagerItem object with all the buttons and things
you need, and return it for integration into OpenLP.
"""
if self.media_item_class:
self.mediaItem = self.media_item_class(self.mediadock.media_dock,
if self.mediaItemClass:
self.mediaItem = self.mediaItemClass(self.mediaDock.media_dock,
self, self.icon)
def addImportMenuItem(self, importMenu):
@ -255,8 +255,8 @@ class Plugin(QtCore.QObject):
Create a tab for the settings window to display the configurable options
for this plugin to the user.
"""
if self.settings_tab_class:
self.settings_tab = self.settings_tab_class(parent, self.name,
if self.settingsTabClass:
self.settingsTab = self.settingsTabClass(parent, self.name,
self.getString(StringContent.VisibleName)[u'title'],
self.icon_path)
@ -294,14 +294,14 @@ class Plugin(QtCore.QObject):
"""
if self.mediaItem:
self.mediaItem.initialise()
self.mediadock.insert_dock(self.mediaItem, self.icon, self.weight)
self.mediaDock.insert_dock(self.mediaItem, self.icon, self.weight)
def finalise(self):
"""
Called by the plugin Manager to cleanup things.
"""
if self.mediaItem:
self.mediadock.remove_dock(self.mediaItem)
self.mediaDock.remove_dock(self.mediaItem)
def appStartup(self):
"""

View File

@ -65,8 +65,8 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
self.insertTab(self.advancedTab, 2, PluginStatus.Active)
count = 3
for plugin in self.plugins:
if plugin.settings_tab:
self.insertTab(plugin.settings_tab, count, plugin.status)
if plugin.settingsTab:
self.insertTab(plugin.settingsTab, count, plugin.status)
count += 1
self.settingListWidget.setCurrentRow(0)
return QtGui.QDialog.exec_(self)
@ -114,8 +114,8 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
self.themesTab.postSetUp()
self.advancedTab.postSetUp()
for plugin in self.plugins:
if plugin.settings_tab:
plugin.settings_tab.postSetUp()
if plugin.settingsTab:
plugin.settingsTab.postSetUp()
def tabChanged(self, tabIndex):
"""

View File

@ -197,10 +197,10 @@ class AlertsPlugin(Plugin):
"""
Add CSS to the main display.
"""
align = VerticalType.Names[self.settings_tab.location]
return CSS % (align, self.settings_tab.font_face,
self.settings_tab.font_size, self.settings_tab.font_color,
self.settings_tab.bg_color)
align = VerticalType.Names[self.settingsTab.location]
return CSS % (align, self.settingsTab.font_face,
self.settingsTab.font_size, self.settingsTab.font_color,
self.settingsTab.bg_color)
def getDisplayHtml(self):
"""
@ -215,7 +215,7 @@ class AlertsPlugin(Plugin):
``frame``
The Web frame holding the page.
"""
align = VerticalType.Names[self.settings_tab.location]
align = VerticalType.Names[self.settingsTab.location]
frame.evaluateJavaScript(u'update_css("%s", "%s", "%s", "%s", "%s")' %
(align, self.settings_tab.font_face, self.settings_tab.font_size,
self.settings_tab.font_color, self.settings_tab.bg_color))
(align, self.settingsTab.font_face, self.settingsTab.font_size,
self.settingsTab.font_color, self.settingsTab.bg_color))

View File

@ -43,7 +43,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
self.manager = plugin.manager
self.plugin = plugin
self.item_id = None
QtGui.QDialog.__init__(self, plugin.formparent)
QtGui.QDialog.__init__(self, plugin.formParent)
self.setupUi(self)
QtCore.QObject.connect(self.displayButton,
QtCore.SIGNAL(u'clicked()'), self.onDisplayClicked)

View File

@ -84,7 +84,7 @@ class AlertsManager(QtCore.QObject):
if not self.alertList:
return
text = self.alertList.pop(0)
alertTab = self.parent().settings_tab
alertTab = self.parent().settingsTab
self.parent().liveController.display.alert(text, alertTab.location)
# Check to see if we have a timer running.
if self.timer_id == 0:
@ -100,7 +100,7 @@ class AlertsManager(QtCore.QObject):
"""
log.debug(u'timer event')
if event.timerId() == self.timer_id:
alertTab = self.parent().settings_tab
alertTab = self.parent().settingsTab
self.parent().liveController.display.alert(u'', alertTab.location)
self.killTimer(self.timer_id)
self.timer_id = 0

View File

@ -27,7 +27,7 @@
import logging
from PyQt4 import QtGui
from PyQt4 import QtCore, QtGui
from openlp.core.lib import Plugin, StringContent, build_icon, translate
from openlp.core.lib.ui import create_action, UiStrings
@ -81,16 +81,23 @@ class BiblePlugin(Plugin):
def appStartup(self):
"""
Perform tasks on application starup
Perform tasks on application startup
"""
if len(self.manager.old_bible_databases):
if QtGui.QMessageBox.information(self.formparent,
if QtGui.QMessageBox.information(self.formParent,
translate('OpenLP', 'Information'), translate('OpenLP',
'Bible format has changed.\nYou have to upgrade your '
'existing Bibles.\nShould OpenLP upgrade now?'),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes:
self.onToolsUpgradeItemTriggered()
settings = QtCore.QSettings()
settings.beginGroup(self.settingsSection)
if settings.contains(u'bookname language'):
settings.setValue(u'book name language', settings.value(
u'bookname language', QtCore.QVariant(0)).toInt()[0])
settings.remove(u'bookname language')
settings.endGroup()
def addImportMenuItem(self, import_menu):
self.importBibleItem = create_action(import_menu, u'importBibleItem',
@ -126,7 +133,7 @@ class BiblePlugin(Plugin):
Upgrade older bible databases.
"""
if not hasattr(self, u'upgrade_wizard'):
self.upgrade_wizard = BibleUpgradeForm(self.formparent,
self.upgrade_wizard = BibleUpgradeForm(self.formParent,
self.manager, self)
# If the import was not cancelled then reload.
if self.upgrade_wizard.exec_():
@ -147,7 +154,7 @@ class BiblePlugin(Plugin):
Called to find out if the bible plugin is currently using a theme.
Returns True if the theme is being used, otherwise returns False.
"""
if unicode(self.settings_tab.bible_theme) == theme:
if unicode(self.settingsTab.bible_theme) == theme:
return True
return False
@ -163,8 +170,8 @@ class BiblePlugin(Plugin):
``newTheme``
The new name the plugin should now use.
"""
self.settings_tab.bible_theme = newTheme
self.settings_tab.save()
self.settingsTab.bible_theme = newTheme
self.settingsTab.save()
def setPluginTextStrings(self):
"""

View File

@ -371,7 +371,7 @@ class BibleUpgradeForm(OpenLPWizard):
"""
Perform the actual upgrade.
"""
self.include_webbible = False
self.includeWebBible = False
proxy_server = None
if not self.files:
self.progressLabel.setText(
@ -383,14 +383,14 @@ class BibleUpgradeForm(OpenLPWizard):
for number, file in enumerate(self.files):
if self.checkBox[number].checkState() == QtCore.Qt.Checked:
max_bibles += 1
oldBible = None
old_bible = None
for number, filename in enumerate(self.files):
# Close the previous bible's connection.
if oldBible is not None:
oldBible.close_connection()
if old_bible is not None:
old_bible.close_connection()
# Set to None to make obvious that we have already closed the
# database.
oldBible = None
old_bible = None
if self.stop_import_flag:
self.success[number] = False
break
@ -398,7 +398,7 @@ class BibleUpgradeForm(OpenLPWizard):
self.success[number] = False
continue
self.progressBar.reset()
oldBible = OldBibleDB(self.mediaItem, path=self.temp_dir,
old_bible = OldBibleDB(self.mediaItem, path=self.temp_dir,
file=filename[0])
name = filename[1]
self.progressLabel.setText(unicode(translate(
@ -408,21 +408,26 @@ class BibleUpgradeForm(OpenLPWizard):
self.newbibles[number] = BibleDB(self.mediaItem, path=self.path,
name=name, file=filename[0])
self.newbibles[number].register(self.plugin.upgrade_wizard)
metadata = oldBible.get_metadata()
webbible = False
metadata = old_bible.get_metadata()
web_bible = False
meta_data = {}
for meta in metadata:
# Upgrade the names of the metadata keys
if meta[u'key'] == u'Version':
meta[u'key'] = u'name'
if meta[u'key'] == u'Bookname language':
meta[u'key'] = 'book_name_language'
meta[u'key'] = meta[u'key'].lower().replace(' ', '_')
meta_data[meta[u'key']] = meta[u'value']
if not meta[u'key'] == u'Version' and not meta[u'key'] == \
u'dbversion':
if meta[u'key'] != u'name' and meta[u'key'] != u'dbversion':
self.newbibles[number].save_meta(meta[u'key'],
meta[u'value'])
if meta[u'key'] == u'download source':
webbible = True
self.include_webbible = True
web_bible = True
self.includeWebBible = True
if meta.has_key(u'proxy server'):
proxy_server = meta[u'proxy server']
if webbible:
if web_bible:
if meta_data[u'download source'].lower() == u'crosswalk':
handler = CWExtract(proxy_server)
elif meta_data[u'download source'].lower() == u'biblegateway':
@ -495,9 +500,9 @@ class BibleUpgradeForm(OpenLPWizard):
db_book = self.newbibles[number].create_book(book,
book_ref_id, book_details[u'testament_id'])
# Try to import already downloaded verses.
oldbook = oldBible.get_book(book)
oldbook = old_bible.get_book(book)
if oldbook:
verses = oldBible.get_verses(oldbook[u'id'])
verses = old_bible.get_verses(oldbook[u'id'])
if not verses:
log.warn(u'No verses found to import for book '
u'"%s"', book)
@ -527,7 +532,7 @@ class BibleUpgradeForm(OpenLPWizard):
self.progressBar.maximum() - self.progressBar.value())
self.success[number] = False
continue
books = oldBible.get_books()
books = old_bible.get_books()
self.progressBar.setMaximum(len(books))
for book in books:
if self.stop_import_flag:
@ -551,7 +556,7 @@ class BibleUpgradeForm(OpenLPWizard):
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
db_book = self.newbibles[number].create_book(book[u'name'],
book_ref_id, book_details[u'testament_id'])
verses = oldBible.get_verses(book[u'id'])
verses = old_bible.get_verses(book[u'id'])
if not verses:
log.warn(u'No verses found to import for book '
u'"%s"', book[u'name'])
@ -574,7 +579,7 @@ class BibleUpgradeForm(OpenLPWizard):
self.progressBar.maximum() - self.progressBar.value())
else:
self.success[number] = True
self.newbibles[number].save_meta(u'Version', name)
self.newbibles[number].save_meta(u'name', name)
self.incrementProgressBar(unicode(translate(
'BiblesPlugin.UpgradeWizardForm',
'Upgrading Bible %s of %s: "%s"\n'
@ -583,8 +588,8 @@ class BibleUpgradeForm(OpenLPWizard):
if self.newbibles.has_key(number):
self.newbibles[number].session.close()
# Close the last bible's connection if possible.
if oldBible is not None:
oldBible.close_connection()
if old_bible is not None:
old_bible.close_connection()
def postWizard(self):
"""
@ -608,7 +613,7 @@ class BibleUpgradeForm(OpenLPWizard):
else:
failed_import_text = u''
if successful_import > 0:
if self.include_webbible:
if self.includeWebBible:
self.progressLabel.setText(unicode(
translate('BiblesPlugin.UpgradeWizardForm', 'Upgrading '
'Bible(s): %s successful%s\nPlease note that verses from '

View File

@ -56,7 +56,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog):
QDialog.__init__(self, parent)
self.setupUi(self)
self.customSignals()
self.booknames = BibleStrings().Booknames
self.book_names = BibleStrings().BookNames
self.book_id = False
def customSignals(self):
@ -102,7 +102,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog):
addBook = False
if addBook:
self.correspondingComboBox.addItem(
self.booknames[item[u'abbreviation']])
self.book_names[item[u'abbreviation']])
def exec_(self, name, books, maxbooks):
self.books = books
@ -129,8 +129,8 @@ class BookNameForm(QDialog, Ui_BookNameDialog):
for character in u'\\.^$*+?{}[]()':
cor_book = cor_book.replace(character, u'\\' + character)
books = filter(lambda key:
re.match(cor_book, unicode(self.booknames[key]), re.UNICODE),
self.booknames.keys())
re.match(cor_book, unicode(self.book_names[key]), re.UNICODE),
self.book_names.keys())
books = filter(None, map(BiblesResourcesDB.get_book, books))
if books:
self.book_id = books[0][u'id']

View File

@ -141,7 +141,7 @@ class Ui_EditBibleDialog(object):
QtCore.QMetaObject.connectSlotsByName(editBibleDialog)
def retranslateUi(self, editBibleDialog):
self.booknames = BibleStrings().Booknames
self.book_names = BibleStrings().BookNames
editBibleDialog.setWindowTitle(
translate('BiblesPlugin.EditBibleForm', 'Bible Editor'))
# Meta tab
@ -178,4 +178,4 @@ class Ui_EditBibleDialog(object):
translate('SongsPlugin.EditBibleForm', 'Custom Book Names'))
for book in BiblesResourcesDB.get_books():
self.bookNameLabel[book[u'abbreviation']].setText(
u'%s:' % unicode(self.booknames[book[u'abbreviation']]))
u'%s:' % unicode(self.book_names[book[u'abbreviation']]))

View File

@ -50,7 +50,7 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
"""
QtGui.QDialog.__init__(self, parent)
self.mediaitem = mediaitem
self.booknames = BibleStrings().Booknames
self.book_names = BibleStrings().BookNames
self.setupUi(self)
self.manager = manager
@ -64,16 +64,16 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
log.debug(u'Load Bible')
self.bible = bible
self.versionNameEdit.setText(
self.manager.get_meta_data(self.bible, u'Version').value)
self.manager.get_meta_data(self.bible, u'name').value)
self.copyrightEdit.setText(
self.manager.get_meta_data(self.bible, u'Copyright').value)
self.manager.get_meta_data(self.bible, u'copyright').value)
self.permissionsEdit.setText(
self.manager.get_meta_data(self.bible, u'Permissions').value)
bookname_language = self.manager.get_meta_data(self.bible,
u'Bookname language')
if bookname_language and bookname_language.value != u'None':
self.manager.get_meta_data(self.bible, u'permissions').value)
book_name_language = self.manager.get_meta_data(self.bible,
u'book_name_language')
if book_name_language and book_name_language.value != u'None':
self.languageSelectionComboBox.setCurrentIndex(
int(bookname_language.value) + 1)
int(book_name_language.value) + 1)
self.books = {}
self.webbible = self.manager.get_meta_data(self.bible,
u'download source')
@ -119,9 +119,9 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
version = unicode(self.versionNameEdit.text())
copyright = unicode(self.copyrightEdit.text())
permissions = unicode(self.permissionsEdit.text())
bookname_language = self.languageSelectionComboBox.currentIndex() - 1
if bookname_language == -1:
bookname_language = None
book_name_language = self.languageSelectionComboBox.currentIndex() - 1
if book_name_language == -1:
book_name_language = None
if not self.validateMeta(version, copyright):
return
if not self.webbible:
@ -135,7 +135,7 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
Receiver.send_message(u'openlp_process_events')
Receiver.send_message(u'cursor_busy')
self.manager.save_meta_data(self.bible, version, copyright, permissions,
bookname_language)
book_name_language)
if not self.webbible:
for abbr, book in self.books.iteritems():
if book:
@ -146,11 +146,11 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
Receiver.send_message(u'cursor_normal')
QtGui.QDialog.accept(self)
def validateMeta(self, version, copyright):
def validateMeta(self, name, copyright):
"""
Validate the Meta before saving.
"""
if not version:
if not name:
self.versionNameEdit.setFocus()
critical_error_message_box(UiStrings().EmptyField,
translate('BiblesPlugin.BibleEditForm',
@ -163,9 +163,9 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
'You need to set a copyright for your Bible. '
'Bibles in the Public Domain need to be marked as such.'))
return False
elif self.manager.exists(version) and \
self.manager.get_meta_data(self.bible, u'Version').value != \
version:
elif self.manager.exists(name) and \
self.manager.get_meta_data(self.bible, u'name').value != \
name:
self.versionNameEdit.setFocus()
critical_error_message_box(
translate('BiblesPlugin.BibleEditForm', 'Bible Exists'),
@ -175,37 +175,37 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog):
return False
return True
def validateBook(self, new_bookname, abbreviation):
def validateBook(self, new_book_name, abbreviation):
"""
Validate a book.
"""
book_regex = re.compile(u'[\d]*[^\d]+$')
if not new_bookname:
if not new_book_name:
self.bookNameEdit[abbreviation].setFocus()
critical_error_message_box(UiStrings().EmptyField,
unicode(translate('BiblesPlugin.BibleEditForm',
'You need to specify a book name for "%s".')) %
self.booknames[abbreviation])
self.book_names[abbreviation])
return False
elif not book_regex.match(new_bookname):
elif not book_regex.match(new_book_name):
self.bookNameEdit[abbreviation].setFocus()
critical_error_message_box(UiStrings().EmptyField,
unicode(translate('BiblesPlugin.BibleEditForm',
'The book name "%s" is not correct.\nNumbers can only be used '
'at the beginning and must\nbe followed by one or more '
'non-numeric characters.')) % new_bookname)
'non-numeric characters.')) % new_book_name)
return False
for abbr, book in self.books.iteritems():
if book:
if abbr == abbreviation:
continue
if unicode(self.bookNameEdit[abbr].text()) == new_bookname:
if unicode(self.bookNameEdit[abbr].text()) == new_book_name:
self.bookNameEdit[abbreviation].setFocus()
critical_error_message_box(
translate('BiblesPlugin.BibleEditForm',
'Duplicate Book Name'),
unicode(translate('BiblesPlugin.BibleEditForm',
'The Book Name "%s" has been entered more than once.'))
% new_bookname)
% new_book_name)
return False
return True

View File

@ -88,7 +88,7 @@ class BibleStrings(object):
"""
These strings should need a good reason to be retranslated elsewhere.
"""
self.Booknames = {
self.BookNames = {
u'Gen': translate('BiblesPlugin', 'Genesis'),
u'Exod': translate('BiblesPlugin', 'Exodus'),
u'Lev': translate('BiblesPlugin', 'Leviticus'),
@ -355,7 +355,7 @@ def parse_reference(reference, bible, language_selection, book_ref_id=False):
log.debug(u'Matched reference %s' % reference)
book = match.group(u'book')
if not book_ref_id:
booknames = BibleStrings().Booknames
book_names = BibleStrings().BookNames
# escape reserved characters
book_escaped = book
for character in u'\\.^$*+?{}[]()':
@ -369,7 +369,7 @@ def parse_reference(reference, bible, language_selection, book_ref_id=False):
book_ref_id = db_book.book_reference_id
elif language_selection == LanguageSelection.Application:
books = filter(lambda key:
regex_book.match(unicode(booknames[key])), booknames.keys())
regex_book.match(unicode(book_names[key])), book_names.keys())
books = filter(None, map(BiblesResourcesDB.get_book, books))
for value in books:
if bible.get_book_by_book_ref_id(value[u'id']):

View File

@ -483,7 +483,7 @@ class BiblesTab(SettingsTab):
self.getGreyTextPalette(False))
self.endSeparatorCheckBox.setChecked(True)
self.language_selection = settings.value(
u'bookname language', QtCore.QVariant(0)).toInt()[0]
u'book name language', QtCore.QVariant(0)).toInt()[0]
self.languageSelectionComboBox.setCurrentIndex(self.language_selection)
settings.endGroup()
@ -496,7 +496,7 @@ class BiblesTab(SettingsTab):
QtCore.QVariant(self.display_style))
settings.setValue(u'verse layout style',
QtCore.QVariant(self.layout_style))
settings.setValue(u'bookname language',
settings.setValue(u'book name language',
QtCore.QVariant(self.language_selection))
settings.setValue(u'second bibles', QtCore.QVariant(self.second_bibles))
settings.setValue(u'bible theme', QtCore.QVariant(self.bible_theme))

View File

@ -39,6 +39,7 @@ from openlp.core.lib import Receiver, translate
from openlp.core.lib.db import BaseModel, init_db, Manager
from openlp.core.lib.ui import critical_error_message_box
from openlp.core.utils import AppLocation, clean_filename
import upgrade
log = logging.getLogger(__name__)
@ -147,7 +148,7 @@ class BibleDB(QtCore.QObject, Manager):
self.file = clean_filename(self.name) + u'.sqlite'
if u'file' in kwargs:
self.file = kwargs[u'file']
Manager.__init__(self, u'bibles', init_schema, self.file)
Manager.__init__(self, u'bibles', init_schema, self.file, upgrade)
if u'file' in kwargs:
self.get_name()
if u'path' in kwargs:
@ -167,7 +168,7 @@ class BibleDB(QtCore.QObject, Manager):
"""
Returns the version name of the Bible.
"""
version_name = self.get_object(BibleMeta, u'Version')
version_name = self.get_object(BibleMeta, u'name')
self.name = version_name.value if version_name else None
return self.name
@ -483,7 +484,7 @@ class BibleDB(QtCore.QObject, Manager):
prior to 1.9.6.
"""
try:
columns = self.session.query(Book).all()
self.session.query(Book).all()
except:
return True
return False
@ -550,16 +551,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
log.debug(u'BiblesResourcesDB.get_books()')
books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, '
u'abbreviation, chapters FROM book_reference ORDER BY id')
return [
{
u'id': book[0],
u'testament_id': book[1],
u'name': unicode(book[2]),
u'abbreviation': unicode(book[3]),
u'chapters': book[4]
}
for book in books
]
return [{
u'id': book[0],
u'testament_id': book[1],
u'name': unicode(book[2]),
u'abbreviation': unicode(book[3]),
u'chapters': book[4]
} for book in books]
@staticmethod
def get_book(name, lower=False):
@ -601,7 +599,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
Return the books which include string.
``string``
The string to search for in the booknames or abbreviations.
The string to search for in the book names or abbreviations.
"""
log.debug(u'BiblesResourcesDB.get_book_like("%s")', string)
if not isinstance(string, unicode):
@ -611,16 +609,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
u'LOWER(name) LIKE ? OR LOWER(abbreviation) LIKE ?',
(u'%' + string.lower() + u'%', u'%' + string.lower() + u'%'))
if books:
return [
{
return [{
u'id': book[0],
u'testament_id': book[1],
u'name': unicode(book[2]),
u'abbreviation': unicode(book[3]),
u'chapters': book[4]
}
for book in books
]
} for book in books]
else:
return None
@ -747,16 +742,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
u'language_id, download_source_id FROM webbibles WHERE '
u'download_source_id = ?', (source[u'id'],))
if bibles:
return [
{
return [{
u'id': bible[0],
u'name': bible[1],
u'abbreviation': bible[2],
u'language_id': bible[3],
u'download_source_id': bible[4]
}
for bible in bibles
]
} for bible in bibles]
else:
return None
@ -789,7 +781,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
u'abbreviation': bible[0][2],
u'language_id': bible[0][3],
u'download_source_id': bible[0][4]
}
}
except (IndexError, TypeError):
return None
@ -850,14 +842,11 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM '
u'language ORDER by name')
if languages:
return [
{
return [{
u'id': language[0],
u'name': unicode(language[1]),
u'code': unicode(language[2])
}
for language in languages
]
} for language in languages]
else:
return None
@ -1036,7 +1025,7 @@ class OldBibleDB(QtCore.QObject, Manager):
Returns the version name of the Bible.
"""
version_name = self.run_sql(u'SELECT value FROM '
u'metadata WHERE key = "Version"')
u'metadata WHERE key = "name"')
if version_name:
self.name = version_name[0][0]
else:
@ -1050,13 +1039,10 @@ class OldBibleDB(QtCore.QObject, Manager):
metadata = self.run_sql(u'SELECT key, value FROM metadata '
u'ORDER BY rowid')
if metadata:
return [
{
return [{
u'key': unicode(meta[0]),
u'value': unicode(meta[1])
}
for meta in metadata
]
} for meta in metadata]
else:
return None
@ -1088,13 +1074,10 @@ class OldBibleDB(QtCore.QObject, Manager):
"""
books = self.run_sql(u'SELECT name, id FROM book ORDER BY id')
if books:
return [
{
return [{
u'name': unicode(book[0]),
u'id':int(book[1])
}
for book in books
]
} for book in books]
else:
return None
@ -1105,15 +1088,12 @@ class OldBibleDB(QtCore.QObject, Manager):
verses = self.run_sql(u'SELECT book_id, chapter, verse, text FROM '
u'verse WHERE book_id = ? ORDER BY id', (book_id, ))
if verses:
return [
{
return [{
u'book_id': int(verse[0]),
u'chapter': int(verse[1]),
u'verse': int(verse[2]),
u'text': unicode(verse[3])
}
for verse in verses
]
} for verse in verses]
else:
return None

View File

@ -54,23 +54,23 @@ class BGExtract(object):
self.proxyurl = proxyurl
socket.setdefaulttimeout(30)
def get_bible_chapter(self, version, bookname, chapter):
def get_bible_chapter(self, version, book_name, chapter):
"""
Access and decode Bibles via the BibleGateway website.
``version``
The version of the Bible like 31 for New International version.
``bookname``
``book_name``
Name of the Book.
``chapter``
Chapter number.
"""
log.debug(u'BGExtract.get_bible_chapter("%s", "%s", "%s")', version,
bookname, chapter)
urlbookname = urllib.quote(bookname.encode("utf-8"))
url_params = u'search=%s+%s&version=%s' % (urlbookname, chapter,
book_name, chapter)
url_book_name = urllib.quote(book_name.encode("utf-8"))
url_params = u'search=%s+%s&version=%s' % (url_book_name, chapter,
version)
cleaner = [(re.compile('&nbsp;|<br />|\'\+\''), lambda match: '')]
soup = get_soup_for_bible_ref(
@ -120,7 +120,7 @@ class BGExtract(object):
clean_verse_num = int(str(raw_verse_num))
except ValueError:
log.warn(u'Illegal verse number in %s %s %s:%s',
version, bookname, chapter, unicode(raw_verse_num))
version, book_name, chapter, unicode(raw_verse_num))
if clean_verse_num:
verse_text = raw_verse_num.next
part = raw_verse_num.next.next
@ -138,7 +138,7 @@ class BGExtract(object):
log.debug(u'No content found in the BibleGateway response.')
send_error_message(u'parse')
return None
return SearchResults(bookname, chapter, verse_list)
return SearchResults(book_name, chapter, verse_list)
def get_books_from_http(self, version):
"""
@ -200,25 +200,25 @@ class BSExtract(object):
self.proxyurl = proxyurl
socket.setdefaulttimeout(30)
def get_bible_chapter(self, version, bookname, chapter):
def get_bible_chapter(self, version, book_name, chapter):
"""
Access and decode bibles via Bibleserver mobile website
``version``
The version of the bible like NIV for New International Version
``bookname``
``book_name``
Text name of bible book e.g. Genesis, 1. John, 1John or Offenbarung
``chapter``
Chapter number
"""
log.debug(u'BSExtract.get_bible_chapter("%s", "%s", "%s")', version,
bookname, chapter)
urlversion = urllib.quote(version.encode("utf-8"))
urlbookname = urllib.quote(bookname.encode("utf-8"))
book_name, chapter)
url_version = urllib.quote(version.encode("utf-8"))
url_book_name = urllib.quote(book_name.encode("utf-8"))
chapter_url = u'http://m.bibleserver.com/text/%s/%s%d' % \
(urlversion, urlbookname, chapter)
(url_version, url_book_name, chapter)
header = (u'Accept-Language', u'en')
soup = get_soup_for_bible_ref(chapter_url, header)
if not soup:
@ -236,7 +236,7 @@ class BSExtract(object):
Receiver.send_message(u'openlp_process_events')
versenumber = int(verse_number.sub(r'\3', verse[u'class']))
verses[versenumber] = verse.contents[1].rstrip(u'\n')
return SearchResults(bookname, chapter, verses)
return SearchResults(book_name, chapter, verses)
def get_books_from_http(self, version):
"""
@ -273,67 +273,67 @@ class CWExtract(object):
self.proxyurl = proxyurl
socket.setdefaulttimeout(30)
def get_bible_chapter(self, version, bookname, chapter):
def get_bible_chapter(self, version, book_name, chapter):
"""
Access and decode bibles via the Crosswalk website
``version``
The version of the Bible like niv for New International Version
``bookname``
``book_name``
Text name of in english e.g. 'gen' for Genesis
``chapter``
Chapter number
"""
log.debug(u'CWExtract.get_bible_chapter("%s", "%s", "%s")', version,
bookname, chapter)
urlbookname = bookname.replace(u' ', u'-')
urlbookname = urlbookname.lower()
urlbookname = urllib.quote(urlbookname.encode("utf-8"))
book_name, chapter)
url_book_name = book_name.replace(u' ', u'-')
url_book_name = url_book_name.lower()
url_book_name = urllib.quote(url_book_name.encode("utf-8"))
chapter_url = u'http://www.biblestudytools.com/%s/%s/%s.html' % \
(version, urlbookname, chapter)
(version, url_book_name, chapter)
soup = get_soup_for_bible_ref(chapter_url)
if not soup:
return None
Receiver.send_message(u'openlp_process_events')
htmlverses = soup.findAll(u'span', u'versetext')
if not htmlverses:
html_verses = soup.findAll(u'span', u'versetext')
if not html_verses:
log.error(u'No verses found in the CrossWalk response.')
send_error_message(u'parse')
return None
verses = {}
reduce_spaces = re.compile(r'[ ]{2,}')
fix_punctuation = re.compile(r'[ ]+([.,;])')
for verse in htmlverses:
for verse in html_verses:
Receiver.send_message(u'openlp_process_events')
versenumber = int(verse.contents[0].contents[0])
versetext = u''
verse_number = int(verse.contents[0].contents[0])
verse_text = u''
for part in verse.contents:
Receiver.send_message(u'openlp_process_events')
if isinstance(part, NavigableString):
versetext = versetext + part
verse_text = verse_text + part
elif part and part.attrMap and \
(part.attrMap[u'class'] == u'WordsOfChrist' or \
part.attrMap[u'class'] == u'strongs'):
for subpart in part.contents:
Receiver.send_message(u'openlp_process_events')
if isinstance(subpart, NavigableString):
versetext = versetext + subpart
verse_text = verse_text + subpart
elif subpart and subpart.attrMap and \
subpart.attrMap[u'class'] == u'strongs':
for subsub in subpart.contents:
Receiver.send_message(u'openlp_process_events')
if isinstance(subsub, NavigableString):
versetext = versetext + subsub
verse_text = verse_text + subsub
Receiver.send_message(u'openlp_process_events')
# Fix up leading and trailing spaces, multiple spaces, and spaces
# between text and , and .
versetext = versetext.strip(u'\n\r\t ')
versetext = reduce_spaces.sub(u' ', versetext)
versetext = fix_punctuation.sub(r'\1', versetext)
verses[versenumber] = versetext
return SearchResults(bookname, chapter, verses)
verse_text = verse_text.strip(u'\n\r\t ')
verse_text = reduce_spaces.sub(u' ', verse_text)
verse_text = fix_punctuation.sub(r'\1', verse_text)
verses[verse_number] = verse_text
return SearchResults(book_name, chapter, verses)
def get_books_from_http(self, version):
"""
@ -499,10 +499,10 @@ class HTTPBible(BibleDB):
## if it was there. By reusing the returned book name
## we get a correct book. For example it is possible
## to request ac and get Acts back.
bookname = search_results.book
book_name = search_results.book
Receiver.send_message(u'openlp_process_events')
# Check to see if book/chapter exists.
db_book = self.get_book(bookname)
db_book = self.get_book(book_name)
self.create_chapter(db_book.id, search_results.chapter,
search_results.verselist)
Receiver.send_message(u'openlp_process_events')

View File

@ -330,7 +330,7 @@ class BibleManager(object):
'Import Wizard to install one or more Bibles.')
})
return None
language_selection = self.get_meta_data(bible, u'Bookname language')
language_selection = self.get_meta_data(bible, u'book_name_language')
if language_selection:
language_selection = int(language_selection.value)
if language_selection is None or language_selection == -1:
@ -377,7 +377,7 @@ class BibleManager(object):
Unicode. The Bible to get the language selection from.
"""
log.debug(u'BibleManager.get_language_selection("%s")', bible)
language_selection = self.get_meta_data(bible, u'Bookname language')
language_selection = self.get_meta_data(bible, u'book_name_language')
if language_selection and language_selection.value != u'None':
return int(language_selection.value)
if language_selection is None or language_selection.value == u'None':
@ -438,17 +438,17 @@ class BibleManager(object):
return None
def save_meta_data(self, bible, version, copyright, permissions,
bookname_language=None):
book_name_language=None):
"""
Saves the bibles meta data.
"""
log.debug(u'save_meta data %s, %s, %s, %s',
bible, version, copyright, permissions)
self.db_cache[bible].save_meta(u'Version', version)
self.db_cache[bible].save_meta(u'Copyright', copyright)
self.db_cache[bible].save_meta(u'Permissions', permissions)
self.db_cache[bible].save_meta(u'Bookname language',
bookname_language)
self.db_cache[bible].save_meta(u'name', version)
self.db_cache[bible].save_meta(u'copyright', copyright)
self.db_cache[bible].save_meta(u'permissions', permissions)
self.db_cache[bible].save_meta(u'book_name_language',
book_name_language)
def get_meta_data(self, bible, key):
"""

View File

@ -64,7 +64,7 @@ class BibleMediaItem(MediaManagerItem):
self.unlockIcon = build_icon(u':/bibles/bibles_search_unlock.png')
MediaManagerItem.__init__(self, parent, plugin, icon)
# Place to store the search results for both bibles.
self.settings = self.plugin.settings_tab
self.settings = self.plugin.settingsTab
self.quickPreviewAllowed = True
self.hasSearch = True
self.search_results = {}
@ -433,7 +433,7 @@ class BibleMediaItem(MediaManagerItem):
self.advancedBookComboBox.clear()
first = True
language_selection = self.plugin.manager.get_language_selection(bible)
booknames = BibleStrings().Booknames
book_names = BibleStrings().BookNames
for book in book_data:
row = self.advancedBookComboBox.count()
if language_selection == LanguageSelection.Bible:
@ -442,7 +442,7 @@ class BibleMediaItem(MediaManagerItem):
data = BiblesResourcesDB.get_book_by_id(
book[u'book_reference_id'])
self.advancedBookComboBox.addItem(
booknames[data[u'abbreviation']])
book_names[data[u'abbreviation']])
elif language_selection == LanguageSelection.English:
data = BiblesResourcesDB.get_book_by_id(
book[u'book_reference_id'])
@ -509,12 +509,12 @@ class BibleMediaItem(MediaManagerItem):
if language_selection == LanguageSelection.Bible:
books = [book.name + u' ' for book in book_data]
elif language_selection == LanguageSelection.Application:
booknames = BibleStrings().Booknames
book_names = BibleStrings().BookNames
for book in book_data:
data = BiblesResourcesDB.get_book_by_id(
book.book_reference_id)
books.append(unicode(
booknames[data[u'abbreviation']]) + u' ')
book_names[data[u'abbreviation']]) + u' ')
elif language_selection == LanguageSelection.English:
for book in book_data:
data = BiblesResourcesDB.get_book_by_id(
@ -537,7 +537,7 @@ class BibleMediaItem(MediaManagerItem):
elif self.advancedTab.isVisible():
bible = unicode(self.advancedVersionComboBox.currentText())
if bible:
self.editBibleForm = EditBibleForm(self, self.plugin.formparent,
self.editBibleForm = EditBibleForm(self, self.plugin.formParent,
self.plugin.manager)
self.editBibleForm.loadBible(bible)
if self.editBibleForm.exec_():
@ -806,30 +806,30 @@ class BibleMediaItem(MediaManagerItem):
further action is saved for/in each row.
"""
verse_separator = get_reference_separator(u'sep_v_display')
version = self.plugin.manager.get_meta_data(bible, u'Version').value
copyright = self.plugin.manager.get_meta_data(bible, u'Copyright').value
version = self.plugin.manager.get_meta_data(bible, u'name').value
copyright = self.plugin.manager.get_meta_data(bible, u'copyright').value
permissions = \
self.plugin.manager.get_meta_data(bible, u'Permissions').value
self.plugin.manager.get_meta_data(bible, u'permissions').value
second_version = u''
second_copyright = u''
second_permissions = u''
if second_bible:
second_version = self.plugin.manager.get_meta_data(
second_bible, u'Version').value
second_bible, u'name').value
second_copyright = self.plugin.manager.get_meta_data(
second_bible, u'Copyright').value
second_bible, u'copyright').value
second_permissions = self.plugin.manager.get_meta_data(
second_bible, u'Permissions').value
second_bible, u'permissions').value
items = []
language_selection = self.plugin.manager.get_language_selection(bible)
for count, verse in enumerate(search_results):
if language_selection == LanguageSelection.Bible:
book = verse.book.name
elif language_selection == LanguageSelection.Application:
booknames = BibleStrings().Booknames
book_names = BibleStrings().Booknames
data = BiblesResourcesDB.get_book_by_id(
verse.book.book_reference_id)
book = unicode(booknames[data[u'abbreviation']])
book = unicode(book_names[data[u'abbreviation']])
elif language_selection == LanguageSelection.English:
data = BiblesResourcesDB.get_book_by_id(
verse.book.book_reference_id)

View File

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
# --------------------------------------------------------------------------- #
# 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 #
###############################################################################
"""
The :mod:`upgrade` module provides a way for the database and schema that is the
backend for the Bibles plugin
"""
from sqlalchemy import Table, update, or_
__version__ = 1
def upgrade_setup(metadata):
"""
Set up the latest revision all tables, with reflection, needed for the
upgrade process. If you want to drop a table, you need to remove it from
here, and add it to your upgrade function.
"""
# Don't define the "metadata" table, as the upgrade mechanism already
# defines it.
tables = {
u'book': Table(u'book', metadata, autoload=True),
u'verse': Table(u'verse', metadata, autoload=True)
}
return tables
def upgrade_1(session, metadata, tables):
"""
Version 1 upgrade.
This upgrade renames a number of keys to a single naming convention..
"""
metadata_table = metadata.tables[u'metadata']
# Rename "Bookname language" to "book_name_language"
session.execute(update(metadata_table)\
.where(or_(metadata_table.c.key == u'bookname language',
metadata_table.c.key == u'Bookname language'))\
.values(key=u'book_name_language'))
# Rename "Copyright" to "copyright"
session.execute(update(metadata_table)\
.where(metadata_table.c.key == u'Copyright').values(key=u'copyright'))
# Rename "Version" to "name" ("version" used by upgrade system)
session.execute(update(metadata_table)\
.where(metadata_table.c.key == u'Version').values(key=u'name'))
# Rename "Permissions" to "permissions"
session.execute(update(metadata_table)\
.where(metadata_table.c.key == u'Permissions')\
.values(key=u'permissions'))
session.commit()

View File

@ -57,7 +57,7 @@ class CustomMediaItem(MediaManagerItem):
def __init__(self, parent, plugin, icon):
self.IconPath = u'custom/custom'
MediaManagerItem.__init__(self, parent, plugin, icon)
self.edit_custom_form = EditCustomForm(self, self.plugin.formparent,
self.edit_custom_form = EditCustomForm(self, self.plugin.formParent,
self.plugin.manager)
self.singleServiceItem = False
self.quickPreviewAllowed = True

View File

@ -106,24 +106,24 @@ class ImageMediaItem(MediaManagerItem):
row_list = [item.row() for item in self.listView.selectedIndexes()]
row_list.sort(reverse=True)
Receiver.send_message(u'cursor_busy')
self.plugin.formparent.displayProgressBar(len(row_list))
self.plugin.formParent.displayProgressBar(len(row_list))
for row in row_list:
text = self.listView.item(row)
if text:
delete_file(os.path.join(self.servicePath,
unicode(text.text())))
self.listView.takeItem(row)
self.plugin.formparent.incrementProgressBar()
self.plugin.formParent.incrementProgressBar()
SettingsManager.set_list(self.settingsSection,
u'images', self.getFileList())
self.plugin.formparent.finishedProgressBar()
self.plugin.formParent.finishedProgressBar()
Receiver.send_message(u'cursor_normal')
self.listView.blockSignals(False)
def loadList(self, images, initialLoad=False):
if not initialLoad:
Receiver.send_message(u'cursor_busy')
self.plugin.formparent.displayProgressBar(len(images))
self.plugin.formParent.displayProgressBar(len(images))
# Sort the themes by its filename considering language specific
# characters. lower() is needed for windows!
images.sort(cmp=locale.strcoll,
@ -144,9 +144,9 @@ class ImageMediaItem(MediaManagerItem):
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(imageFile))
self.listView.addItem(item_name)
if not initialLoad:
self.plugin.formparent.incrementProgressBar()
self.plugin.formParent.incrementProgressBar()
if not initialLoad:
self.plugin.formparent.finishedProgressBar()
self.plugin.formParent.finishedProgressBar()
Receiver.send_message(u'cursor_normal')
def generateSlideData(self, service_item, item=None, xmlVersion=False,

View File

@ -59,7 +59,7 @@ class MediaPlugin(Plugin):
Create the settings Tab
"""
visible_name = self.getString(StringContent.VisibleName)
self.settings_tab = MediaTab(parent, self.name, visible_name[u'title'],
self.settingsTab = MediaTab(parent, self.name, visible_name[u'title'],
self.mediaController.mediaPlayers, self.icon_path)
def about(self):
@ -142,6 +142,6 @@ class MediaPlugin(Plugin):
self.mediaController.mediaPlayers[u'phonon'].isActive = True
settings.setValue(u'players', \
QtCore.QVariant(u','.join(new_players)))
self.settings_tab.load()
self.settingsTab.load()
settings.remove(u'use phonon')
settings.endGroup()

View File

@ -166,14 +166,14 @@ class PresentationMediaItem(MediaManagerItem):
Receiver.send_message(u'cursor_busy')
if not initialLoad:
Receiver.send_message(u'cursor_busy')
self.plugin.formparent.displayProgressBar(len(files))
self.plugin.formParent.displayProgressBar(len(files))
# Sort the themes by its filename considering language specific
# characters. lower() is needed for windows!
files.sort(cmp=locale.strcoll,
key=lambda filename: os.path.split(unicode(filename))[1].lower())
for file in files:
if not initialLoad:
self.plugin.formparent.incrementProgressBar()
self.plugin.formParent.incrementProgressBar()
if currlist.count(file) > 0:
continue
filename = os.path.split(unicode(file))[1]
@ -217,7 +217,7 @@ class PresentationMediaItem(MediaManagerItem):
self.listView.addItem(item_name)
Receiver.send_message(u'cursor_normal')
if not initialLoad:
self.plugin.formparent.finishedProgressBar()
self.plugin.formParent.finishedProgressBar()
Receiver.send_message(u'cursor_normal')
def onDeleteClick(self):
@ -229,7 +229,7 @@ class PresentationMediaItem(MediaManagerItem):
row_list = [item.row() for item in items]
row_list.sort(reverse=True)
Receiver.send_message(u'cursor_busy')
self.plugin.formparent.displayProgressBar(len(row_list))
self.plugin.formParent.displayProgressBar(len(row_list))
for item in items:
filepath = unicode(item.data(
QtCore.Qt.UserRole).toString())
@ -237,8 +237,8 @@ class PresentationMediaItem(MediaManagerItem):
doc = self.controllers[cidx].add_document(filepath)
doc.presentation_deleted()
doc.close_presentation()
self.plugin.formparent.incrementProgressBar()
self.plugin.formparent.finishedProgressBar()
self.plugin.formParent.incrementProgressBar()
self.plugin.formParent.finishedProgressBar()
Receiver.send_message(u'cursor_normal')
for row in row_list:
self.listView.takeItem(row)

View File

@ -62,7 +62,7 @@ class PresentationPlugin(Plugin):
Create the settings Tab
"""
visible_name = self.getString(StringContent.VisibleName)
self.settings_tab = PresentationTab(parent, self.name,
self.settingsTab = PresentationTab(parent, self.name,
visible_name[u'title'], self.controllers, self.icon_path)
def initialise(self):
@ -99,7 +99,7 @@ class PresentationPlugin(Plugin):
Create the Media Manager List
"""
self.mediaItem = PresentationMediaItem(
self.mediadock.media_dock, self, self.icon, self.controllers)
self.mediaDock.media_dock, self, self.icon, self.controllers)
def registerControllers(self, controller):
"""

View File

@ -57,7 +57,7 @@ class SongImportForm(OpenLPWizard):
``plugin``
The songs plugin.
"""
self.clipboard = plugin.formparent.clipboard
self.clipboard = plugin.formParent.clipboard
OpenLPWizard.__init__(self, parent, plugin, u'songImportWizard',
u':/wizards/wizard_importsong.bmp')

View File

@ -413,7 +413,7 @@ class FoilPresenter(object):
temp_verse_order_backup = []
temp_sortnr_backup = 1
temp_sortnr_liste = []
versenumber = {
verse_count = {
VerseType.Tags[VerseType.Verse]: 1,
VerseType.Tags[VerseType.Chorus]: 1,
VerseType.Tags[VerseType.Bridge]: 1,
@ -463,8 +463,8 @@ class FoilPresenter(object):
verse_number = re.compile(u'[a-zA-Z.+-_ ]*').sub(u'', verse_name)
# Foilpresenter allows e. g. "C", but we need "C1".
if not verse_number:
verse_number = unicode(versenumber[verse_type])
versenumber[verse_type] += 1
verse_number = unicode(verse_count[verse_type])
verse_count[verse_type] += 1
else:
# test if foilpresenter have the same versenumber two times with
# different parts raise the verse number
@ -508,13 +508,13 @@ class FoilPresenter(object):
song.song_number = u''
try:
for bucheintrag in foilpresenterfolie.buch.bucheintrag:
bookname = self._child(bucheintrag.name)
if bookname:
book_name = self._child(bucheintrag.name)
if book_name:
book = self.manager.get_object_filtered(Book,
Book.name == bookname)
Book.name == book_name)
if book is None:
# We need to create a book, because it does not exist.
book = Book.populate(name=bookname, publisher=u'')
book = Book.populate(name=book_name, publisher=u'')
self.manager.save_object(book)
song.song_book_id = book.id
try:
@ -537,12 +537,12 @@ class FoilPresenter(object):
``song``
The song object.
"""
for titelstring in foilpresenterfolie.titel.titelstring:
for title_string in foilpresenterfolie.titel.titelstring:
if not song.title:
song.title = self._child(titelstring)
song.title = self._child(title_string)
song.alternate_title = u''
else:
song.alternate_title = self._child(titelstring)
song.alternate_title = self._child(title_string)
def _process_topics(self, foilpresenterfolie, song):
"""
@ -556,13 +556,13 @@ class FoilPresenter(object):
"""
try:
for name in foilpresenterfolie.kategorien.name:
topictext = self._child(name)
if topictext:
topic_text = self._child(name)
if topic_text:
topic = self.manager.get_object_filtered(Topic,
Topic.name == topictext)
Topic.name == topic_text)
if topic is None:
# We need to create a topic, because it does not exist.
topic = Topic.populate(name=topictext)
topic = Topic.populate(name=topic_text)
self.manager.save_object(topic)
song.topics.append(topic)
except AttributeError:

View File

@ -68,7 +68,7 @@ class SongMediaItem(MediaManagerItem):
def __init__(self, parent, plugin, icon):
self.IconPath = u'songs/song'
MediaManagerItem.__init__(self, parent, plugin, icon)
self.editSongForm = EditSongForm(self, self.plugin.formparent,
self.editSongForm = EditSongForm(self, self.plugin.formParent,
self.plugin.manager)
self.openLyrics = OpenLyrics(self.plugin.manager)
self.singleServiceItem = False
@ -409,7 +409,7 @@ class SongMediaItem(MediaManagerItem):
QtGui.QMessageBox.Yes) == QtGui.QMessageBox.No:
return
Receiver.send_message(u'cursor_busy')
self.plugin.formparent.displayProgressBar(len(items))
self.plugin.formParent.displayProgressBar(len(items))
for item in items:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
media_files = self.plugin.manager.get_all_objects(MediaFile,
@ -428,8 +428,8 @@ class SongMediaItem(MediaManagerItem):
except OSError:
log.exception(u'Could not remove directory: %s', save_path)
self.plugin.manager.delete_object(Song, item_id)
self.plugin.formparent.incrementProgressBar()
self.plugin.formparent.finishedProgressBar()
self.plugin.formParent.incrementProgressBar()
self.plugin.formParent.finishedProgressBar()
Receiver.send_message(u'cursor_normal')
self.onSearchTextButtonClicked()

View File

@ -60,7 +60,7 @@ class OpenLP1SongImport(SongImport):
"""
SongImport.__init__(self, manager, **kwargs)
self.availableThemes = \
kwargs[u'plugin'].formparent.themeManagerContents.getThemes()
kwargs[u'plugin'].formParent.themeManagerContents.getThemes()
def doImport(self):
"""

View File

@ -75,6 +75,7 @@ def upgrade_1(session, metadata, tables):
ForeignKeyConstraint([u'song_id'], [u'songs.id'],
table=tables[u'media_files']).create()
def upgrade_2(session, metadata, tables):
"""
Version 2 upgrade.
@ -86,6 +87,7 @@ def upgrade_2(session, metadata, tables):
Column(u'last_modified', types.DateTime(), default=func.now())\
.create(table=tables[u'songs'])
def upgrade_3(session, metadata, tables):
"""
Version 3 upgrade.

View File

@ -521,9 +521,9 @@ class OpenLyrics(object):
if hasattr(properties, u'comments'):
comments_list = []
for comment in properties.comments.comment:
commenttext = self._text(comment)
if commenttext:
comments_list.append(commenttext)
comment_text = self._text(comment)
if comment_text:
comments_list.append(comment_text)
song.comments = u'\n'.join(comments_list)
def _process_copyright(self, properties, song):
@ -746,13 +746,13 @@ class OpenLyrics(object):
song.song_number = u''
if hasattr(properties, u'songbooks'):
for songbook in properties.songbooks.songbook:
bookname = songbook.get(u'name', u'')
if bookname:
book_name = songbook.get(u'name', u'')
if book_name:
book = self.manager.get_object_filtered(Book,
Book.name == bookname)
Book.name == book_name)
if book is None:
# We need to create a book, because it does not exist.
book = Book.populate(name=bookname, publisher=u'')
book = Book.populate(name=book_name, publisher=u'')
self.manager.save_object(book)
song.song_book_id = book.id
song.song_number = songbook.get(u'entry', u'')
@ -787,14 +787,14 @@ class OpenLyrics(object):
The song object.
"""
if hasattr(properties, u'themes'):
for topictext in properties.themes.theme:
topictext = self._text(topictext)
if topictext:
for topic_text in properties.themes.theme:
topic_text = self._text(topic_text)
if topic_text:
topic = self.manager.get_object_filtered(Topic,
Topic.name == topictext)
Topic.name == topic_text)
if topic is None:
# We need to create a topic, because it does not exist.
topic = Topic.populate(name=topictext)
topic = Topic.populate(name=topic_text)
self.manager.save_object(topic)
song.topics.append(topic)
@ -813,6 +813,7 @@ class OpenLyricsError(Exception):
VerseError = 2
def __init__(self, type, log_message, display_message):
Exception.__init__(self)
self.type = type
self.log_message = log_message
self.display_message = display_message

View File

@ -144,7 +144,7 @@ class SongsPlugin(Plugin):
return
progressDialog = QtGui.QProgressDialog(
translate('SongsPlugin', 'Reindexing songs...'), UiStrings().Cancel,
0, maxSongs, self.formparent)
0, maxSongs, self.formParent)
progressDialog.setWindowModality(QtCore.Qt.WindowModal)
songs = self.manager.get_all_objects(Song)
for number, song in enumerate(songs):
@ -241,7 +241,7 @@ class SongsPlugin(Plugin):
song_dbs.append(os.path.join(db_dir, sfile))
if len(song_dbs) == 0:
return
progress = QtGui.QProgressDialog(self.formparent)
progress = QtGui.QProgressDialog(self.formParent)
progress.setWindowModality(QtCore.Qt.WindowModal)
progress.setLabelText(translate('OpenLP.Ui', 'Starting import...'))
progress.setCancelButton(None)

View File

@ -98,13 +98,13 @@ class SongUsagePlugin(Plugin):
self.songUsageMenu.addAction(self.songUsageReport)
self.songUsageMenu.addAction(self.songUsageDelete)
self.songUsageActiveButton = QtGui.QToolButton(
self.formparent.statusBar)
self.formParent.statusBar)
self.songUsageActiveButton.setCheckable(True)
self.songUsageActiveButton.setAutoRaise(True)
self.songUsageActiveButton.setStatusTip(translate('SongUsagePlugin',
'Toggle the tracking of song usage.'))
self.songUsageActiveButton.setObjectName(u'songUsageActiveButton')
self.formparent.statusBar.insertPermanentWidget(1,
self.formParent.statusBar.insertPermanentWidget(1,
self.songUsageActiveButton)
self.songUsageActiveButton.hide()
# Signals and slots
@ -138,8 +138,8 @@ class SongUsagePlugin(Plugin):
action_list.add_action(self.songUsageReport,
unicode(translate('SongUsagePlugin', 'Song Usage')))
self.songUsageDeleteForm = SongUsageDeleteForm(self.manager,
self.formparent)
self.songUsageDetailForm = SongUsageDetailForm(self, self.formparent)
self.formParent)
self.songUsageDetailForm = SongUsageDetailForm(self, self.formParent)
self.songUsageMenu.menuAction().setVisible(True)
self.songUsageActiveButton.show()