forked from openlp/openlp
r1715
This commit is contained in:
commit
40f15accfe
@ -48,9 +48,10 @@ class SpellTextEdit(QtGui.QPlainTextEdit):
|
|||||||
"""
|
"""
|
||||||
Spell checking widget based on QPlanTextEdit.
|
Spell checking widget based on QPlanTextEdit.
|
||||||
"""
|
"""
|
||||||
def __init__(self, *args):
|
def __init__(self, parent=None, formattingTagsAllowed=True):
|
||||||
global ENCHANT_AVAILABLE
|
global ENCHANT_AVAILABLE
|
||||||
QtGui.QPlainTextEdit.__init__(self, *args)
|
QtGui.QPlainTextEdit.__init__(self, parent)
|
||||||
|
self.formattingTagsAllowed = formattingTagsAllowed
|
||||||
# Default dictionary based on the current locale.
|
# Default dictionary based on the current locale.
|
||||||
if ENCHANT_AVAILABLE:
|
if ENCHANT_AVAILABLE:
|
||||||
try:
|
try:
|
||||||
@ -110,16 +111,17 @@ class SpellTextEdit(QtGui.QPlainTextEdit):
|
|||||||
spell_menu.addAction(action)
|
spell_menu.addAction(action)
|
||||||
# Only add the spelling suggests to the menu if there are
|
# Only add the spelling suggests to the menu if there are
|
||||||
# suggestions.
|
# suggestions.
|
||||||
if len(spell_menu.actions()):
|
if spell_menu.actions():
|
||||||
popupMenu.insertMenu(popupMenu.actions()[0], spell_menu)
|
popupMenu.insertMenu(popupMenu.actions()[0], spell_menu)
|
||||||
tagMenu = QtGui.QMenu(translate('OpenLP.SpellTextEdit',
|
tagMenu = QtGui.QMenu(translate('OpenLP.SpellTextEdit',
|
||||||
'Formatting Tags'))
|
'Formatting Tags'))
|
||||||
for html in FormattingTags.get_html_tags():
|
if self.formattingTagsAllowed:
|
||||||
action = SpellAction(html[u'desc'], tagMenu)
|
for html in FormattingTags.get_html_tags():
|
||||||
action.correct.connect(self.htmlTag)
|
action = SpellAction(html[u'desc'], tagMenu)
|
||||||
tagMenu.addAction(action)
|
action.correct.connect(self.htmlTag)
|
||||||
popupMenu.insertSeparator(popupMenu.actions()[0])
|
tagMenu.addAction(action)
|
||||||
popupMenu.insertMenu(popupMenu.actions()[0], tagMenu)
|
popupMenu.insertSeparator(popupMenu.actions()[0])
|
||||||
|
popupMenu.insertMenu(popupMenu.actions()[0], tagMenu)
|
||||||
popupMenu.exec_(event.globalPos())
|
popupMenu.exec_(event.globalPos())
|
||||||
|
|
||||||
def setLanguage(self, action):
|
def setLanguage(self, action):
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import shutil
|
||||||
from tempfile import gettempdir
|
from tempfile import gettempdir
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
@ -305,10 +306,10 @@ class Ui_MainWindow(object):
|
|||||||
add_actions(self.fileExportMenu,
|
add_actions(self.fileExportMenu,
|
||||||
(self.exportThemeItem, self.exportLanguageItem))
|
(self.exportThemeItem, self.exportLanguageItem))
|
||||||
add_actions(self.fileMenu, (self.fileNewItem, self.fileOpenItem,
|
add_actions(self.fileMenu, (self.fileNewItem, self.fileOpenItem,
|
||||||
self.fileSaveItem, self.fileSaveAsItem, None,
|
self.fileSaveItem, self.fileSaveAsItem,
|
||||||
self.recentFilesMenu.menuAction(), None, self.printServiceOrderItem,
|
self.recentFilesMenu.menuAction(), None,
|
||||||
None, self.fileImportMenu.menuAction(),
|
self.fileImportMenu.menuAction(), self.fileExportMenu.menuAction(),
|
||||||
self.fileExportMenu.menuAction(), self.fileExitItem))
|
None, self.printServiceOrderItem, self.fileExitItem))
|
||||||
add_actions(self.viewModeMenu, (self.modeDefaultItem,
|
add_actions(self.viewModeMenu, (self.modeDefaultItem,
|
||||||
self.modeSetupItem, self.modeLiveItem))
|
self.modeSetupItem, self.modeLiveItem))
|
||||||
add_actions(self.viewMenu, (self.viewModeMenu.menuAction(),
|
add_actions(self.viewMenu, (self.viewModeMenu.menuAction(),
|
||||||
@ -726,11 +727,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
plugin.firstTime()
|
plugin.firstTime()
|
||||||
Receiver.send_message(u'openlp_process_events')
|
Receiver.send_message(u'openlp_process_events')
|
||||||
temp_dir = os.path.join(unicode(gettempdir()), u'openlp')
|
temp_dir = os.path.join(unicode(gettempdir()), u'openlp')
|
||||||
if not os.path.exists(temp_dir):
|
shutil.rmtree(temp_dir, True)
|
||||||
return
|
|
||||||
for filename in os.listdir(temp_dir):
|
|
||||||
delete_file(os.path.join(temp_dir, filename))
|
|
||||||
os.removedirs(temp_dir)
|
|
||||||
|
|
||||||
def onFirstTimeWizardClicked(self):
|
def onFirstTimeWizardClicked(self):
|
||||||
"""
|
"""
|
||||||
|
@ -108,7 +108,7 @@ class Ui_PrintServiceDialog(object):
|
|||||||
self.footerLabel = QtGui.QLabel(self.optionsWidget)
|
self.footerLabel = QtGui.QLabel(self.optionsWidget)
|
||||||
self.footerLabel.setObjectName(u'footerLabel')
|
self.footerLabel.setObjectName(u'footerLabel')
|
||||||
self.optionsLayout.addWidget(self.footerLabel)
|
self.optionsLayout.addWidget(self.footerLabel)
|
||||||
self.footerTextEdit = SpellTextEdit(self.optionsWidget)
|
self.footerTextEdit = SpellTextEdit(self.optionsWidget, False)
|
||||||
self.footerTextEdit.setObjectName(u'footerTextEdit')
|
self.footerTextEdit.setObjectName(u'footerTextEdit')
|
||||||
self.optionsLayout.addWidget(self.footerTextEdit)
|
self.optionsLayout.addWidget(self.footerTextEdit)
|
||||||
self.optionsGroupBox = QtGui.QGroupBox()
|
self.optionsGroupBox = QtGui.QGroupBox()
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
import cgi
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
|
|
||||||
@ -183,7 +184,7 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
self._addElement(u'style', custom_css, html_data.head,
|
self._addElement(u'style', custom_css, html_data.head,
|
||||||
attribute=(u'type', u'text/css'))
|
attribute=(u'type', u'text/css'))
|
||||||
self._addElement(u'body', parent=html_data)
|
self._addElement(u'body', parent=html_data)
|
||||||
self._addElement(u'h1', unicode(self.titleLineEdit.text()),
|
self._addElement(u'h1', cgi.escape(unicode(self.titleLineEdit.text())),
|
||||||
html_data.body, classId=u'serviceTitle')
|
html_data.body, classId=u'serviceTitle')
|
||||||
for index, item in enumerate(self.serviceManager.serviceItems):
|
for index, item in enumerate(self.serviceManager.serviceItems):
|
||||||
self._addPreviewItem(html_data.body, item[u'service_item'], index)
|
self._addPreviewItem(html_data.body, item[u'service_item'], index)
|
||||||
@ -193,8 +194,9 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
classId=u'customNotes')
|
classId=u'customNotes')
|
||||||
self._addElement(u'span', translate('OpenLP.ServiceManager',
|
self._addElement(u'span', translate('OpenLP.ServiceManager',
|
||||||
'Custom Service Notes: '), div, classId=u'customNotesTitle')
|
'Custom Service Notes: '), div, classId=u'customNotesTitle')
|
||||||
self._addElement(u'span', self.footerTextEdit.toPlainText(), div,
|
self._addElement(u'span',
|
||||||
classId=u'customNotesText')
|
cgi.escape(self.footerTextEdit.toPlainText()),
|
||||||
|
div, classId=u'customNotesText')
|
||||||
self.document.setHtml(html.tostring(html_data))
|
self.document.setHtml(html.tostring(html_data))
|
||||||
self.previewWidget.updatePreview()
|
self.previewWidget.updatePreview()
|
||||||
|
|
||||||
@ -204,8 +206,8 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
item_title = self._addElement(u'h2', parent=div, classId=u'itemTitle')
|
item_title = self._addElement(u'h2', parent=div, classId=u'itemTitle')
|
||||||
self._addElement(u'img', parent=item_title,
|
self._addElement(u'img', parent=item_title,
|
||||||
attribute=(u'src', item.icon))
|
attribute=(u'src', item.icon))
|
||||||
self._addElement(u'span', u' ' + item.get_display_title(),
|
self._addElement(u'span',
|
||||||
item_title)
|
u' ' + cgi.escape(item.get_display_title()), item_title)
|
||||||
if self.slideTextCheckBox.isChecked():
|
if self.slideTextCheckBox.isChecked():
|
||||||
# Add the text of the service item.
|
# Add the text of the service item.
|
||||||
if item.is_text():
|
if item.is_text():
|
||||||
@ -230,8 +232,9 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
foot_text = item.foot_text
|
foot_text = item.foot_text
|
||||||
foot_text = foot_text.partition(u'<br>')[2]
|
foot_text = foot_text.partition(u'<br>')[2]
|
||||||
if foot_text:
|
if foot_text:
|
||||||
foot = self._addElement(u'div', foot_text, parent=div,
|
foot_text = cgi.escape(foot_text.replace(u'<br>', u'\n'))
|
||||||
classId=u'itemFooter')
|
self._addElement(u'div', foot_text.replace(u'\n', u'<br>'),
|
||||||
|
parent=div, classId=u'itemFooter')
|
||||||
# Add service items' notes.
|
# Add service items' notes.
|
||||||
if self.notesCheckBox.isChecked():
|
if self.notesCheckBox.isChecked():
|
||||||
if item.notes:
|
if item.notes:
|
||||||
@ -239,8 +242,8 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
self._addElement(u'span',
|
self._addElement(u'span',
|
||||||
translate('OpenLP.ServiceManager', 'Notes: '), p,
|
translate('OpenLP.ServiceManager', 'Notes: '), p,
|
||||||
classId=u'itemNotesTitle')
|
classId=u'itemNotesTitle')
|
||||||
notes = self._addElement(u'span',
|
self._addElement(u'span',
|
||||||
item.notes.replace(u'\n', u'<br>'), p,
|
cgi.escape(unicode(item.notes)).replace(u'\n', u'<br>'), p,
|
||||||
classId=u'itemNotesText')
|
classId=u'itemNotesText')
|
||||||
# Add play length of media files.
|
# Add play length of media files.
|
||||||
if item.is_media() and self.metaDataCheckBox.isChecked():
|
if item.is_media() and self.metaDataCheckBox.isChecked():
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
import cgi
|
||||||
import cPickle
|
import cPickle
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
@ -719,6 +720,9 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
self.setModified()
|
self.setModified()
|
||||||
|
|
||||||
def onStartTimeForm(self):
|
def onStartTimeForm(self):
|
||||||
|
"""
|
||||||
|
Opens a dialog to type in service item notes.
|
||||||
|
"""
|
||||||
item = self.findServiceItem()[0]
|
item = self.findServiceItem()[0]
|
||||||
self.startTimeForm.item = self.serviceItems[item]
|
self.startTimeForm.item = self.serviceItems[item]
|
||||||
if self.startTimeForm.exec_():
|
if self.startTimeForm.exec_():
|
||||||
@ -957,7 +961,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
if serviceitem.notes:
|
if serviceitem.notes:
|
||||||
tips.append(u'<strong>%s: </strong> %s' %
|
tips.append(u'<strong>%s: </strong> %s' %
|
||||||
(unicode(translate('OpenLP.ServiceManager', 'Notes')),
|
(unicode(translate('OpenLP.ServiceManager', 'Notes')),
|
||||||
unicode(serviceitem.notes)))
|
cgi.escape(unicode(serviceitem.notes))))
|
||||||
if item[u'service_item'] \
|
if item[u'service_item'] \
|
||||||
.is_capable(ItemCapabilities.AllowsVariableStartTime):
|
.is_capable(ItemCapabilities.AllowsVariableStartTime):
|
||||||
tips.append(item[u'service_item'].get_media_time())
|
tips.append(item[u'service_item'].get_media_time())
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import translate
|
from openlp.core.lib import translate, SpellTextEdit
|
||||||
from openlp.core.lib.ui import create_accept_reject_button_box
|
from openlp.core.lib.ui import create_accept_reject_button_box
|
||||||
|
|
||||||
class ServiceNoteForm(QtGui.QDialog):
|
class ServiceNoteForm(QtGui.QDialog):
|
||||||
@ -52,7 +52,7 @@ class ServiceNoteForm(QtGui.QDialog):
|
|||||||
self.dialogLayout.setContentsMargins(8, 8, 8, 8)
|
self.dialogLayout.setContentsMargins(8, 8, 8, 8)
|
||||||
self.dialogLayout.setSpacing(8)
|
self.dialogLayout.setSpacing(8)
|
||||||
self.dialogLayout.setObjectName(u'verticalLayout')
|
self.dialogLayout.setObjectName(u'verticalLayout')
|
||||||
self.textEdit = QtGui.QTextEdit(self)
|
self.textEdit = SpellTextEdit(self, False)
|
||||||
self.textEdit.setObjectName(u'textEdit')
|
self.textEdit.setObjectName(u'textEdit')
|
||||||
self.dialogLayout.addWidget(self.textEdit)
|
self.dialogLayout.addWidget(self.textEdit)
|
||||||
self.dialogLayout.addWidget(create_accept_reject_button_box(self))
|
self.dialogLayout.addWidget(create_accept_reject_button_box(self))
|
||||||
|
@ -386,6 +386,17 @@ def split_filename(path):
|
|||||||
else:
|
else:
|
||||||
return os.path.split(path)
|
return os.path.split(path)
|
||||||
|
|
||||||
|
def clean_filename(filename):
|
||||||
|
"""
|
||||||
|
Removes invalid characters from the given ``filename``.
|
||||||
|
|
||||||
|
``filename``
|
||||||
|
The "dirty" file name to clean.
|
||||||
|
"""
|
||||||
|
if not isinstance(filename, unicode):
|
||||||
|
filename = unicode(filename, u'utf-8')
|
||||||
|
return re.sub(r'[/\\?*|<>\[\]":<>+%]+', u'_', filename).strip(u'_')
|
||||||
|
|
||||||
def delete_file(file_path_name):
|
def delete_file(file_path_name):
|
||||||
"""
|
"""
|
||||||
Deletes a file from the system.
|
Deletes a file from the system.
|
||||||
@ -492,4 +503,4 @@ from actions import ActionList
|
|||||||
__all__ = [u'AppLocation', u'get_application_version', u'check_latest_version',
|
__all__ = [u'AppLocation', u'get_application_version', u'check_latest_version',
|
||||||
u'add_actions', u'get_filesystem_encoding', u'LanguageManager',
|
u'add_actions', u'get_filesystem_encoding', u'LanguageManager',
|
||||||
u'ActionList', u'get_web_page', u'file_is_unicode', u'get_uno_command',
|
u'ActionList', u'get_web_page', u'file_is_unicode', u'get_uno_command',
|
||||||
u'get_uno_instance', u'delete_file']
|
u'get_uno_instance', u'delete_file', u'clean_filename']
|
||||||
|
@ -44,85 +44,85 @@ class AlertsTab(SettingsTab):
|
|||||||
self.fontGroupBox.setObjectName(u'fontGroupBox')
|
self.fontGroupBox.setObjectName(u'fontGroupBox')
|
||||||
self.fontLayout = QtGui.QFormLayout(self.fontGroupBox)
|
self.fontLayout = QtGui.QFormLayout(self.fontGroupBox)
|
||||||
self.fontLayout.setObjectName(u'fontLayout')
|
self.fontLayout.setObjectName(u'fontLayout')
|
||||||
self.FontLabel = QtGui.QLabel(self.fontGroupBox)
|
self.fontLabel = QtGui.QLabel(self.fontGroupBox)
|
||||||
self.FontLabel.setObjectName(u'FontLabel')
|
self.fontLabel.setObjectName(u'fontLabel')
|
||||||
self.FontComboBox = QtGui.QFontComboBox(self.fontGroupBox)
|
self.fontComboBox = QtGui.QFontComboBox(self.fontGroupBox)
|
||||||
self.FontComboBox.setObjectName(u'FontComboBox')
|
self.fontComboBox.setObjectName(u'fontComboBox')
|
||||||
self.fontLayout.addRow(self.FontLabel, self.FontComboBox)
|
self.fontLayout.addRow(self.fontLabel, self.fontComboBox)
|
||||||
self.FontColorLabel = QtGui.QLabel(self.fontGroupBox)
|
self.fontColorLabel = QtGui.QLabel(self.fontGroupBox)
|
||||||
self.FontColorLabel.setObjectName(u'FontColorLabel')
|
self.fontColorLabel.setObjectName(u'fontColorLabel')
|
||||||
self.ColorLayout = QtGui.QHBoxLayout()
|
self.colorLayout = QtGui.QHBoxLayout()
|
||||||
self.ColorLayout.setObjectName(u'ColorLayout')
|
self.colorLayout.setObjectName(u'colorLayout')
|
||||||
self.FontColorButton = QtGui.QPushButton(self.fontGroupBox)
|
self.fontColorButton = QtGui.QPushButton(self.fontGroupBox)
|
||||||
self.FontColorButton.setObjectName(u'FontColorButton')
|
self.fontColorButton.setObjectName(u'fontColorButton')
|
||||||
self.ColorLayout.addWidget(self.FontColorButton)
|
self.colorLayout.addWidget(self.fontColorButton)
|
||||||
self.ColorLayout.addSpacing(20)
|
self.colorLayout.addSpacing(20)
|
||||||
self.BackgroundColorLabel = QtGui.QLabel(self.fontGroupBox)
|
self.backgroundColorLabel = QtGui.QLabel(self.fontGroupBox)
|
||||||
self.BackgroundColorLabel.setObjectName(u'BackgroundColorLabel')
|
self.backgroundColorLabel.setObjectName(u'backgroundColorLabel')
|
||||||
self.ColorLayout.addWidget(self.BackgroundColorLabel)
|
self.colorLayout.addWidget(self.backgroundColorLabel)
|
||||||
self.BackgroundColorButton = QtGui.QPushButton(self.fontGroupBox)
|
self.backgroundColorButton = QtGui.QPushButton(self.fontGroupBox)
|
||||||
self.BackgroundColorButton.setObjectName(u'BackgroundColorButton')
|
self.backgroundColorButton.setObjectName(u'backgroundColorButton')
|
||||||
self.ColorLayout.addWidget(self.BackgroundColorButton)
|
self.colorLayout.addWidget(self.backgroundColorButton)
|
||||||
self.fontLayout.addRow(self.FontColorLabel, self.ColorLayout)
|
self.fontLayout.addRow(self.fontColorLabel, self.colorLayout)
|
||||||
self.FontSizeLabel = QtGui.QLabel(self.fontGroupBox)
|
self.fontSizeLabel = QtGui.QLabel(self.fontGroupBox)
|
||||||
self.FontSizeLabel.setObjectName(u'FontSizeLabel')
|
self.fontSizeLabel.setObjectName(u'fontSizeLabel')
|
||||||
self.FontSizeSpinBox = QtGui.QSpinBox(self.fontGroupBox)
|
self.fontSizeSpinBox = QtGui.QSpinBox(self.fontGroupBox)
|
||||||
self.FontSizeSpinBox.setObjectName(u'FontSizeSpinBox')
|
self.fontSizeSpinBox.setObjectName(u'fontSizeSpinBox')
|
||||||
self.fontLayout.addRow(self.FontSizeLabel, self.FontSizeSpinBox)
|
self.fontLayout.addRow(self.fontSizeLabel, self.fontSizeSpinBox)
|
||||||
self.TimeoutLabel = QtGui.QLabel(self.fontGroupBox)
|
self.timeoutLabel = QtGui.QLabel(self.fontGroupBox)
|
||||||
self.TimeoutLabel.setObjectName(u'TimeoutLabel')
|
self.timeoutLabel.setObjectName(u'timeoutLabel')
|
||||||
self.TimeoutSpinBox = QtGui.QSpinBox(self.fontGroupBox)
|
self.timeoutSpinBox = QtGui.QSpinBox(self.fontGroupBox)
|
||||||
self.TimeoutSpinBox.setMaximum(180)
|
self.timeoutSpinBox.setMaximum(180)
|
||||||
self.TimeoutSpinBox.setObjectName(u'TimeoutSpinBox')
|
self.timeoutSpinBox.setObjectName(u'timeoutSpinBox')
|
||||||
self.fontLayout.addRow(self.TimeoutLabel, self.TimeoutSpinBox)
|
self.fontLayout.addRow(self.timeoutLabel, self.timeoutSpinBox)
|
||||||
create_valign_combo(self, self.fontGroupBox, self.fontLayout)
|
create_valign_combo(self, self.fontGroupBox, self.fontLayout)
|
||||||
self.leftLayout.addWidget(self.fontGroupBox)
|
self.leftLayout.addWidget(self.fontGroupBox)
|
||||||
self.leftLayout.addStretch()
|
self.leftLayout.addStretch()
|
||||||
self.PreviewGroupBox = QtGui.QGroupBox(self.rightColumn)
|
self.previewGroupBox = QtGui.QGroupBox(self.rightColumn)
|
||||||
self.PreviewGroupBox.setObjectName(u'PreviewGroupBox')
|
self.previewGroupBox.setObjectName(u'previewGroupBox')
|
||||||
self.PreviewLayout = QtGui.QVBoxLayout(self.PreviewGroupBox)
|
self.previewLayout = QtGui.QVBoxLayout(self.previewGroupBox)
|
||||||
self.PreviewLayout.setObjectName(u'PreviewLayout')
|
self.previewLayout.setObjectName(u'previewLayout')
|
||||||
self.FontPreview = QtGui.QLineEdit(self.PreviewGroupBox)
|
self.fontPreview = QtGui.QLineEdit(self.previewGroupBox)
|
||||||
self.FontPreview.setObjectName(u'FontPreview')
|
self.fontPreview.setObjectName(u'fontPreview')
|
||||||
self.PreviewLayout.addWidget(self.FontPreview)
|
self.previewLayout.addWidget(self.fontPreview)
|
||||||
self.rightLayout.addWidget(self.PreviewGroupBox)
|
self.rightLayout.addWidget(self.previewGroupBox)
|
||||||
self.rightLayout.addStretch()
|
self.rightLayout.addStretch()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
QtCore.QObject.connect(self.BackgroundColorButton,
|
QtCore.QObject.connect(self.backgroundColorButton,
|
||||||
QtCore.SIGNAL(u'pressed()'), self.onBackgroundColorButtonClicked)
|
QtCore.SIGNAL(u'pressed()'), self.onBackgroundColorButtonClicked)
|
||||||
QtCore.QObject.connect(self.FontColorButton,
|
QtCore.QObject.connect(self.fontColorButton,
|
||||||
QtCore.SIGNAL(u'pressed()'), self.onFontColorButtonClicked)
|
QtCore.SIGNAL(u'pressed()'), self.onFontColorButtonClicked)
|
||||||
QtCore.QObject.connect(self.FontComboBox,
|
QtCore.QObject.connect(self.fontComboBox,
|
||||||
QtCore.SIGNAL(u'activated(int)'), self.onFontComboBoxClicked)
|
QtCore.SIGNAL(u'activated(int)'), self.onFontComboBoxClicked)
|
||||||
QtCore.QObject.connect(self.TimeoutSpinBox,
|
QtCore.QObject.connect(self.timeoutSpinBox,
|
||||||
QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
|
QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
|
||||||
QtCore.QObject.connect(self.FontSizeSpinBox,
|
QtCore.QObject.connect(self.fontSizeSpinBox,
|
||||||
QtCore.SIGNAL(u'valueChanged(int)'), self.onFontSizeSpinBoxChanged)
|
QtCore.SIGNAL(u'valueChanged(int)'), self.onFontSizeSpinBoxChanged)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.fontGroupBox.setTitle(
|
self.fontGroupBox.setTitle(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Font'))
|
translate('AlertsPlugin.AlertsTab', 'Font'))
|
||||||
self.FontLabel.setText(
|
self.fontLabel.setText(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Font name:'))
|
translate('AlertsPlugin.AlertsTab', 'Font name:'))
|
||||||
self.FontColorLabel.setText(
|
self.fontColorLabel.setText(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Font color:'))
|
translate('AlertsPlugin.AlertsTab', 'Font color:'))
|
||||||
self.BackgroundColorLabel.setText(
|
self.backgroundColorLabel.setText(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Background color:'))
|
translate('AlertsPlugin.AlertsTab', 'Background color:'))
|
||||||
self.FontSizeLabel.setText(
|
self.fontSizeLabel.setText(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Font size:'))
|
translate('AlertsPlugin.AlertsTab', 'Font size:'))
|
||||||
self.FontSizeSpinBox.setSuffix(UiStrings().FontSizePtUnit)
|
self.fontSizeSpinBox.setSuffix(UiStrings().FontSizePtUnit)
|
||||||
self.TimeoutLabel.setText(
|
self.timeoutLabel.setText(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
||||||
self.TimeoutSpinBox.setSuffix(UiStrings().Seconds)
|
self.timeoutSpinBox.setSuffix(UiStrings().Seconds)
|
||||||
self.PreviewGroupBox.setTitle(UiStrings().Preview)
|
self.previewGroupBox.setTitle(UiStrings().Preview)
|
||||||
self.FontPreview.setText(UiStrings().OLPV2)
|
self.fontPreview.setText(UiStrings().OLPV2)
|
||||||
|
|
||||||
def onBackgroundColorButtonClicked(self):
|
def onBackgroundColorButtonClicked(self):
|
||||||
new_color = QtGui.QColorDialog.getColor(
|
new_color = QtGui.QColorDialog.getColor(
|
||||||
QtGui.QColor(self.bg_color), self)
|
QtGui.QColor(self.bg_color), self)
|
||||||
if new_color.isValid():
|
if new_color.isValid():
|
||||||
self.bg_color = new_color.name()
|
self.bg_color = new_color.name()
|
||||||
self.BackgroundColorButton.setStyleSheet(
|
self.backgroundColorButton.setStyleSheet(
|
||||||
u'background-color: %s' % self.bg_color)
|
u'background-color: %s' % self.bg_color)
|
||||||
self.updateDisplay()
|
self.updateDisplay()
|
||||||
|
|
||||||
@ -134,15 +134,15 @@ class AlertsTab(SettingsTab):
|
|||||||
QtGui.QColor(self.font_color), self)
|
QtGui.QColor(self.font_color), self)
|
||||||
if new_color.isValid():
|
if new_color.isValid():
|
||||||
self.font_color = new_color.name()
|
self.font_color = new_color.name()
|
||||||
self.FontColorButton.setStyleSheet(
|
self.fontColorButton.setStyleSheet(
|
||||||
u'background-color: %s' % self.font_color)
|
u'background-color: %s' % self.font_color)
|
||||||
self.updateDisplay()
|
self.updateDisplay()
|
||||||
|
|
||||||
def onTimeoutSpinBoxChanged(self):
|
def onTimeoutSpinBoxChanged(self):
|
||||||
self.timeout = self.TimeoutSpinBox.value()
|
self.timeout = self.timeoutSpinBox.value()
|
||||||
|
|
||||||
def onFontSizeSpinBoxChanged(self):
|
def onFontSizeSpinBoxChanged(self):
|
||||||
self.font_size = self.FontSizeSpinBox.value()
|
self.font_size = self.fontSizeSpinBox.value()
|
||||||
self.updateDisplay()
|
self.updateDisplay()
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
@ -160,16 +160,16 @@ class AlertsTab(SettingsTab):
|
|||||||
self.location = settings.value(
|
self.location = settings.value(
|
||||||
u'location', QtCore.QVariant(1)).toInt()[0]
|
u'location', QtCore.QVariant(1)).toInt()[0]
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.FontSizeSpinBox.setValue(self.font_size)
|
self.fontSizeSpinBox.setValue(self.font_size)
|
||||||
self.TimeoutSpinBox.setValue(self.timeout)
|
self.timeoutSpinBox.setValue(self.timeout)
|
||||||
self.FontColorButton.setStyleSheet(
|
self.fontColorButton.setStyleSheet(
|
||||||
u'background-color: %s' % self.font_color)
|
u'background-color: %s' % self.font_color)
|
||||||
self.BackgroundColorButton.setStyleSheet(
|
self.backgroundColorButton.setStyleSheet(
|
||||||
u'background-color: %s' % self.bg_color)
|
u'background-color: %s' % self.bg_color)
|
||||||
self.verticalComboBox.setCurrentIndex(self.location)
|
self.verticalComboBox.setCurrentIndex(self.location)
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily(self.font_face)
|
font.setFamily(self.font_face)
|
||||||
self.FontComboBox.setCurrentFont(font)
|
self.fontComboBox.setCurrentFont(font)
|
||||||
self.updateDisplay()
|
self.updateDisplay()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
@ -178,7 +178,7 @@ class AlertsTab(SettingsTab):
|
|||||||
settings.setValue(u'background color', QtCore.QVariant(self.bg_color))
|
settings.setValue(u'background color', QtCore.QVariant(self.bg_color))
|
||||||
settings.setValue(u'font color', QtCore.QVariant(self.font_color))
|
settings.setValue(u'font color', QtCore.QVariant(self.font_color))
|
||||||
settings.setValue(u'font size', QtCore.QVariant(self.font_size))
|
settings.setValue(u'font size', QtCore.QVariant(self.font_size))
|
||||||
self.font_face = self.FontComboBox.currentFont().family()
|
self.font_face = self.fontComboBox.currentFont().family()
|
||||||
settings.setValue(u'font face', QtCore.QVariant(self.font_face))
|
settings.setValue(u'font face', QtCore.QVariant(self.font_face))
|
||||||
settings.setValue(u'timeout', QtCore.QVariant(self.timeout))
|
settings.setValue(u'timeout', QtCore.QVariant(self.timeout))
|
||||||
self.location = self.verticalComboBox.currentIndex()
|
self.location = self.verticalComboBox.currentIndex()
|
||||||
@ -187,10 +187,10 @@ class AlertsTab(SettingsTab):
|
|||||||
|
|
||||||
def updateDisplay(self):
|
def updateDisplay(self):
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily(self.FontComboBox.currentFont().family())
|
font.setFamily(self.fontComboBox.currentFont().family())
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setPointSize(self.font_size)
|
font.setPointSize(self.font_size)
|
||||||
self.FontPreview.setFont(font)
|
self.fontPreview.setFont(font)
|
||||||
self.FontPreview.setStyleSheet(u'background-color: %s; color: %s' %
|
self.fontPreview.setStyleSheet(u'background-color: %s; color: %s' %
|
||||||
(self.bg_color, self.font_color))
|
(self.bg_color, self.font_color))
|
||||||
|
|
||||||
|
@ -29,17 +29,17 @@ The bible import functions for OpenLP
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
from tempfile import gettempdir
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Receiver, SettingsManager, translate, \
|
from openlp.core.lib import Receiver, SettingsManager, translate, \
|
||||||
check_directory_exists
|
check_directory_exists
|
||||||
from openlp.core.lib.db import delete_database
|
|
||||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box
|
from openlp.core.lib.ui import UiStrings, critical_error_message_box
|
||||||
from openlp.core.ui.wizard import OpenLPWizard, WizardStrings
|
from openlp.core.ui.wizard import OpenLPWizard, WizardStrings
|
||||||
from openlp.core.utils import AppLocation, delete_file
|
from openlp.core.utils import AppLocation, delete_file
|
||||||
from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, OldBibleDB, \
|
from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, OldBibleDB, \
|
||||||
BiblesResourcesDB, clean_filename
|
BiblesResourcesDB
|
||||||
from openlp.plugins.bibles.lib.http import BSExtract, BGExtract, CWExtract
|
from openlp.plugins.bibles.lib.http import BSExtract, BGExtract, CWExtract
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -70,6 +70,7 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
self.suffix = u'.sqlite'
|
self.suffix = u'.sqlite'
|
||||||
self.settingsSection = u'bibles'
|
self.settingsSection = u'bibles'
|
||||||
self.path = AppLocation.get_section_data_path(self.settingsSection)
|
self.path = AppLocation.get_section_data_path(self.settingsSection)
|
||||||
|
self.temp_dir = os.path.join(gettempdir(), u'openlp')
|
||||||
self.files = self.manager.old_bible_databases
|
self.files = self.manager.old_bible_databases
|
||||||
self.success = {}
|
self.success = {}
|
||||||
self.newbibles = {}
|
self.newbibles = {}
|
||||||
@ -91,20 +92,6 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
log.debug(u'Stopping import')
|
log.debug(u'Stopping import')
|
||||||
self.stop_import_flag = True
|
self.stop_import_flag = True
|
||||||
|
|
||||||
def onCheckBoxIndexChanged(self, index):
|
|
||||||
"""
|
|
||||||
Show/Hide warnings if CheckBox state has changed
|
|
||||||
"""
|
|
||||||
for number, filename in enumerate(self.files):
|
|
||||||
if not self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
|
||||||
self.verticalWidget[number].hide()
|
|
||||||
self.formWidget[number].hide()
|
|
||||||
else:
|
|
||||||
version_name = unicode(self.versionNameEdit[number].text())
|
|
||||||
if self.manager.exists(version_name):
|
|
||||||
self.verticalWidget[number].show()
|
|
||||||
self.formWidget[number].show()
|
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
"""
|
"""
|
||||||
Stop the wizard on cancel button, close button or ESC key.
|
Stop the wizard on cancel button, close button or ESC key.
|
||||||
@ -113,8 +100,6 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
self.stop_import_flag = True
|
self.stop_import_flag = True
|
||||||
if not self.currentPage() == self.progressPage:
|
if not self.currentPage() == self.progressPage:
|
||||||
self.done(QtGui.QDialog.Rejected)
|
self.done(QtGui.QDialog.Rejected)
|
||||||
else:
|
|
||||||
self.postWizard()
|
|
||||||
|
|
||||||
def onCurrentIdChanged(self, pageId):
|
def onCurrentIdChanged(self, pageId):
|
||||||
"""
|
"""
|
||||||
@ -124,7 +109,7 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
self.preWizard()
|
self.preWizard()
|
||||||
self.performWizard()
|
self.performWizard()
|
||||||
self.postWizard()
|
self.postWizard()
|
||||||
elif self.page(pageId) == self.selectPage and self.maxBibles == 0:
|
elif self.page(pageId) == self.selectPage and not self.files:
|
||||||
self.next()
|
self.next()
|
||||||
|
|
||||||
def onBackupBrowseButtonClicked(self):
|
def onBackupBrowseButtonClicked(self):
|
||||||
@ -243,78 +228,13 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
Add the content to the scrollArea.
|
Add the content to the scrollArea.
|
||||||
"""
|
"""
|
||||||
self.checkBox = {}
|
self.checkBox = {}
|
||||||
self.versionNameEdit = {}
|
|
||||||
self.versionNameLabel = {}
|
|
||||||
self.versionInfoLabel = {}
|
|
||||||
self.versionInfoPixmap = {}
|
|
||||||
self.verticalWidget = {}
|
|
||||||
self.horizontalLayout = {}
|
|
||||||
self.formWidget = {}
|
|
||||||
self.formLayoutAttention = {}
|
|
||||||
for number, filename in enumerate(self.files):
|
for number, filename in enumerate(self.files):
|
||||||
bible = OldBibleDB(self.mediaItem, path=self.path, file=filename[0])
|
bible = OldBibleDB(self.mediaItem, path=self.path, file=filename[0])
|
||||||
self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents)
|
self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents)
|
||||||
checkBoxName = u'checkBox[%d]' % number
|
self.checkBox[number].setObjectName(u'checkBox[%d]' % number)
|
||||||
self.checkBox[number].setObjectName(checkBoxName)
|
|
||||||
self.checkBox[number].setText(bible.get_name())
|
self.checkBox[number].setText(bible.get_name())
|
||||||
self.checkBox[number].setCheckState(QtCore.Qt.Checked)
|
self.checkBox[number].setCheckState(QtCore.Qt.Checked)
|
||||||
self.formLayout.addWidget(self.checkBox[number])
|
self.formLayout.addWidget(self.checkBox[number])
|
||||||
self.verticalWidget[number] = QtGui.QWidget(self.scrollAreaContents)
|
|
||||||
verticalWidgetName = u'verticalWidget[%d]' % number
|
|
||||||
self.verticalWidget[number].setObjectName(verticalWidgetName)
|
|
||||||
self.horizontalLayout[number] = QtGui.QHBoxLayout(
|
|
||||||
self.verticalWidget[number])
|
|
||||||
self.horizontalLayout[number].setContentsMargins(25, 0, 0, 0)
|
|
||||||
horizontalLayoutName = u'horizontalLayout[%d]' % number
|
|
||||||
self.horizontalLayout[number].setObjectName(horizontalLayoutName)
|
|
||||||
self.versionInfoPixmap[number] = QtGui.QLabel(
|
|
||||||
self.verticalWidget[number])
|
|
||||||
versionInfoPixmapName = u'versionInfoPixmap[%d]' % number
|
|
||||||
self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName)
|
|
||||||
self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap(
|
|
||||||
u':/bibles/bibles_upgrade_alert.png'))
|
|
||||||
self.versionInfoPixmap[number].setAlignment(QtCore.Qt.AlignRight)
|
|
||||||
self.horizontalLayout[number].addWidget(
|
|
||||||
self.versionInfoPixmap[number])
|
|
||||||
self.versionInfoLabel[number] = QtGui.QLabel(
|
|
||||||
self.verticalWidget[number])
|
|
||||||
versionInfoLabelName = u'versionInfoLabel[%d]' % number
|
|
||||||
self.versionInfoLabel[number].setObjectName(versionInfoLabelName)
|
|
||||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
|
|
||||||
QtGui.QSizePolicy.Preferred)
|
|
||||||
sizePolicy.setHorizontalStretch(0)
|
|
||||||
sizePolicy.setVerticalStretch(0)
|
|
||||||
sizePolicy.setHeightForWidth(
|
|
||||||
self.versionInfoLabel[number].sizePolicy().hasHeightForWidth())
|
|
||||||
self.versionInfoLabel[number].setSizePolicy(sizePolicy)
|
|
||||||
self.horizontalLayout[number].addWidget(
|
|
||||||
self.versionInfoLabel[number])
|
|
||||||
self.formLayout.addWidget(self.verticalWidget[number])
|
|
||||||
self.formWidget[number] = QtGui.QWidget(self.scrollAreaContents)
|
|
||||||
formWidgetName = u'formWidget[%d]' % number
|
|
||||||
self.formWidget[number].setObjectName(formWidgetName)
|
|
||||||
self.formLayoutAttention[number] = QtGui.QFormLayout(
|
|
||||||
self.formWidget[number])
|
|
||||||
self.formLayoutAttention[number].setContentsMargins(25, 0, 0, 5)
|
|
||||||
formLayoutAttentionName = u'formLayoutAttention[%d]' % number
|
|
||||||
self.formLayoutAttention[number].setObjectName(
|
|
||||||
formLayoutAttentionName)
|
|
||||||
self.versionNameLabel[number] = QtGui.QLabel(
|
|
||||||
self.formWidget[number])
|
|
||||||
self.versionNameLabel[number].setObjectName(u'VersionNameLabel')
|
|
||||||
self.formLayoutAttention[number].setWidget(0,
|
|
||||||
QtGui.QFormLayout.LabelRole, self.versionNameLabel[number])
|
|
||||||
self.versionNameEdit[number] = QtGui.QLineEdit(
|
|
||||||
self.formWidget[number])
|
|
||||||
self.versionNameEdit[number].setObjectName(u'VersionNameEdit')
|
|
||||||
self.formLayoutAttention[number].setWidget(0,
|
|
||||||
QtGui.QFormLayout.FieldRole, self.versionNameEdit[number])
|
|
||||||
self.versionNameEdit[number].setText(bible.get_name())
|
|
||||||
self.formLayout.addWidget(self.formWidget[number])
|
|
||||||
# Set up the Signal for the checkbox.
|
|
||||||
QtCore.QObject.connect(self.checkBox[number],
|
|
||||||
QtCore.SIGNAL(u'stateChanged(int)'),
|
|
||||||
self.onCheckBoxIndexChanged)
|
|
||||||
self.spacerItem = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum,
|
self.spacerItem = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum,
|
||||||
QtGui.QSizePolicy.Expanding)
|
QtGui.QSizePolicy.Expanding)
|
||||||
self.formLayout.addItem(self.spacerItem)
|
self.formLayout.addItem(self.spacerItem)
|
||||||
@ -327,23 +247,6 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
for number, filename in enumerate(self.files):
|
for number, filename in enumerate(self.files):
|
||||||
self.formLayout.removeWidget(self.checkBox[number])
|
self.formLayout.removeWidget(self.checkBox[number])
|
||||||
self.checkBox[number].setParent(None)
|
self.checkBox[number].setParent(None)
|
||||||
self.horizontalLayout[number].removeWidget(
|
|
||||||
self.versionInfoPixmap[number])
|
|
||||||
self.versionInfoPixmap[number].setParent(None)
|
|
||||||
self.horizontalLayout[number].removeWidget(
|
|
||||||
self.versionInfoLabel[number])
|
|
||||||
self.versionInfoLabel[number].setParent(None)
|
|
||||||
self.formLayout.removeWidget(self.verticalWidget[number])
|
|
||||||
self.verticalWidget[number].setParent(None)
|
|
||||||
self.formLayoutAttention[number].removeWidget(
|
|
||||||
self.versionNameLabel[number])
|
|
||||||
self.versionNameLabel[number].setParent(None)
|
|
||||||
self.formLayoutAttention[number].removeWidget(
|
|
||||||
self.versionNameEdit[number])
|
|
||||||
self.formLayoutAttention[number].deleteLater()
|
|
||||||
self.versionNameEdit[number].setParent(None)
|
|
||||||
self.formLayout.removeWidget(self.formWidget[number])
|
|
||||||
self.formWidget[number].setParent(None)
|
|
||||||
self.formLayout.removeItem(self.spacerItem)
|
self.formLayout.removeItem(self.spacerItem)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
@ -385,12 +288,6 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
self.selectPage.setSubTitle(
|
self.selectPage.setSubTitle(
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
translate('BiblesPlugin.UpgradeWizardForm',
|
||||||
'Please select the Bibles to upgrade'))
|
'Please select the Bibles to upgrade'))
|
||||||
for number, bible in enumerate(self.files):
|
|
||||||
self.versionNameLabel[number].setText(
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm', 'Version name:'))
|
|
||||||
self.versionInfoLabel[number].setText(
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm', 'This '
|
|
||||||
'Bible still exists. Please change the name or uncheck it.'))
|
|
||||||
self.progressPage.setTitle(translate('BiblesPlugin.UpgradeWizardForm',
|
self.progressPage.setTitle(translate('BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading'))
|
'Upgrading'))
|
||||||
self.progressPage.setSubTitle(
|
self.progressPage.setSubTitle(
|
||||||
@ -425,58 +322,16 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
elif self.currentPage() == self.selectPage:
|
elif self.currentPage() == self.selectPage:
|
||||||
|
check_directory_exists(self.temp_dir)
|
||||||
for number, filename in enumerate(self.files):
|
for number, filename in enumerate(self.files):
|
||||||
if not self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
if not self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
||||||
continue
|
continue
|
||||||
version_name = unicode(self.versionNameEdit[number].text())
|
# Move bibles to temp dir.
|
||||||
if not version_name:
|
if not os.path.exists(os.path.join(self.temp_dir, filename[0])):
|
||||||
critical_error_message_box(UiStrings().EmptyField,
|
shutil.move(
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
os.path.join(self.path, filename[0]), self.temp_dir)
|
||||||
'You need to specify a version name for your Bible.'))
|
else:
|
||||||
self.versionNameEdit[number].setFocus()
|
delete_file(os.path.join(self.path, filename[0]))
|
||||||
return False
|
|
||||||
elif self.manager.exists(version_name):
|
|
||||||
critical_error_message_box(
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'Bible Exists'),
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'This Bible already exists. Please upgrade '
|
|
||||||
'a different Bible, delete the existing one or '
|
|
||||||
'uncheck.'))
|
|
||||||
self.versionNameEdit[number].setFocus()
|
|
||||||
return False
|
|
||||||
elif os.path.exists(os.path.join(self.path, clean_filename(
|
|
||||||
version_name))) and version_name == filename[1]:
|
|
||||||
newfilename = u'old_database_%s' % filename[0]
|
|
||||||
if not os.path.exists(os.path.join(self.path,
|
|
||||||
newfilename)):
|
|
||||||
os.rename(os.path.join(self.path, filename[0]),
|
|
||||||
os.path.join(self.path, newfilename))
|
|
||||||
self.files[number] = [newfilename, filename[1]]
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
critical_error_message_box(
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'Bible Exists'),
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'This Bible already exists. Please upgrade '
|
|
||||||
'a different Bible, delete the existing one or '
|
|
||||||
'uncheck.'))
|
|
||||||
self.verticalWidget[number].show()
|
|
||||||
self.formWidget[number].show()
|
|
||||||
self.versionNameEdit[number].setFocus()
|
|
||||||
return False
|
|
||||||
elif os.path.exists(os.path.join(self.path,
|
|
||||||
clean_filename(version_name))):
|
|
||||||
critical_error_message_box(
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'Bible Exists'),
|
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'This Bible already exists. Please upgrade '
|
|
||||||
'a different Bible, delete the existing one or '
|
|
||||||
'uncheck.'))
|
|
||||||
self.versionNameEdit[number].setFocus()
|
|
||||||
return False
|
|
||||||
return True
|
return True
|
||||||
if self.currentPage() == self.progressPage:
|
if self.currentPage() == self.progressPage:
|
||||||
return True
|
return True
|
||||||
@ -495,16 +350,8 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
self.files = self.manager.old_bible_databases
|
self.files = self.manager.old_bible_databases
|
||||||
self.addScrollArea()
|
self.addScrollArea()
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
self.maxBibles = len(self.files)
|
|
||||||
for number, filename in enumerate(self.files):
|
for number, filename in enumerate(self.files):
|
||||||
self.checkBox[number].setCheckState(QtCore.Qt.Checked)
|
self.checkBox[number].setCheckState(QtCore.Qt.Checked)
|
||||||
oldname = filename[1]
|
|
||||||
if self.manager.exists(oldname):
|
|
||||||
self.verticalWidget[number].show()
|
|
||||||
self.formWidget[number].show()
|
|
||||||
else:
|
|
||||||
self.verticalWidget[number].hide()
|
|
||||||
self.formWidget[number].hide()
|
|
||||||
self.progressBar.show()
|
self.progressBar.show()
|
||||||
self.restart()
|
self.restart()
|
||||||
self.finishButton.setVisible(False)
|
self.finishButton.setVisible(False)
|
||||||
@ -516,9 +363,8 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
Prepare the UI for the upgrade.
|
Prepare the UI for the upgrade.
|
||||||
"""
|
"""
|
||||||
OpenLPWizard.preWizard(self)
|
OpenLPWizard.preWizard(self)
|
||||||
self.progressLabel.setText(translate(
|
self.progressLabel.setText(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
translate('BiblesPlugin.UpgradeWizardForm', 'Starting upgrade...'))
|
||||||
'Starting upgrade...'))
|
|
||||||
Receiver.send_message(u'openlp_process_events')
|
Receiver.send_message(u'openlp_process_events')
|
||||||
|
|
||||||
def performWizard(self):
|
def performWizard(self):
|
||||||
@ -527,48 +373,42 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
"""
|
"""
|
||||||
self.include_webbible = False
|
self.include_webbible = False
|
||||||
proxy_server = None
|
proxy_server = None
|
||||||
if self.maxBibles == 0:
|
if not self.files:
|
||||||
self.progressLabel.setText(
|
self.progressLabel.setText(
|
||||||
translate('BiblesPlugin.UpgradeWizardForm', 'There are no '
|
translate('BiblesPlugin.UpgradeWizardForm', 'There are no '
|
||||||
'Bibles that need to be upgraded.'))
|
'Bibles that need to be upgraded.'))
|
||||||
self.progressBar.hide()
|
self.progressBar.hide()
|
||||||
return
|
return
|
||||||
self.maxBibles = 0
|
max_bibles = 0
|
||||||
for number, file in enumerate(self.files):
|
for number, file in enumerate(self.files):
|
||||||
if self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
if self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
||||||
self.maxBibles += 1
|
max_bibles += 1
|
||||||
number = 0
|
oldBible = None
|
||||||
for biblenumber, filename in enumerate(self.files):
|
for number, filename in enumerate(self.files):
|
||||||
|
# Close the previous bible's connection.
|
||||||
|
if oldBible is not None:
|
||||||
|
oldBible.close_connection()
|
||||||
|
# Set to None to make obvious that we have already closed the
|
||||||
|
# database.
|
||||||
|
oldBible = None
|
||||||
if self.stop_import_flag:
|
if self.stop_import_flag:
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
bible_failed = False
|
if not self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
||||||
self.success[biblenumber] = False
|
self.success[number] = False
|
||||||
if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked:
|
|
||||||
continue
|
continue
|
||||||
self.progressBar.reset()
|
self.progressBar.reset()
|
||||||
oldbible = OldBibleDB(self.mediaItem, path=self.path,
|
oldBible = OldBibleDB(self.mediaItem, path=self.temp_dir,
|
||||||
file=filename[0])
|
file=filename[0])
|
||||||
name = filename[1]
|
name = filename[1]
|
||||||
if name is None:
|
|
||||||
delete_file(os.path.join(self.path, filename[0]))
|
|
||||||
self.incrementProgressBar(unicode(translate(
|
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
|
||||||
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
|
||||||
(number + 1, self.maxBibles, name),
|
|
||||||
self.progressBar.maximum() - self.progressBar.value())
|
|
||||||
number += 1
|
|
||||||
continue
|
|
||||||
self.progressLabel.setText(unicode(translate(
|
self.progressLabel.setText(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\nUpgrading ...')) %
|
'Upgrading Bible %s of %s: "%s"\nUpgrading ...')) %
|
||||||
(number + 1, self.maxBibles, name))
|
(number + 1, max_bibles, name))
|
||||||
if os.path.exists(os.path.join(self.path, filename[0])):
|
|
||||||
name = unicode(self.versionNameEdit[biblenumber].text())
|
|
||||||
self.newbibles[number] = BibleDB(self.mediaItem, path=self.path,
|
self.newbibles[number] = BibleDB(self.mediaItem, path=self.path,
|
||||||
name=name)
|
name=name, file=filename[0])
|
||||||
self.newbibles[number].register(self.plugin.upgrade_wizard)
|
self.newbibles[number].register(self.plugin.upgrade_wizard)
|
||||||
metadata = oldbible.get_metadata()
|
metadata = oldBible.get_metadata()
|
||||||
webbible = False
|
webbible = False
|
||||||
meta_data = {}
|
meta_data = {}
|
||||||
for meta in metadata:
|
for meta in metadata:
|
||||||
@ -595,7 +435,7 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
u'name: "%s" failed' % (
|
u'name: "%s" failed' % (
|
||||||
meta_data[u'download source'],
|
meta_data[u'download source'],
|
||||||
meta_data[u'download name']))
|
meta_data[u'download name']))
|
||||||
delete_database(self.path, clean_filename(name))
|
self.newbibles[number].session.close()
|
||||||
del self.newbibles[number]
|
del self.newbibles[number]
|
||||||
critical_error_message_box(
|
critical_error_message_box(
|
||||||
translate('BiblesPlugin.UpgradeWizardForm',
|
translate('BiblesPlugin.UpgradeWizardForm',
|
||||||
@ -606,9 +446,9 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
self.incrementProgressBar(unicode(translate(
|
self.incrementProgressBar(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
||||||
(number + 1, self.maxBibles, name),
|
(number + 1, max_bibles, name),
|
||||||
self.progressBar.maximum() - self.progressBar.value())
|
self.progressBar.maximum() - self.progressBar.value())
|
||||||
number += 1
|
self.success[number] = False
|
||||||
continue
|
continue
|
||||||
bible = BiblesResourcesDB.get_webbible(
|
bible = BiblesResourcesDB.get_webbible(
|
||||||
meta_data[u'download name'],
|
meta_data[u'download name'],
|
||||||
@ -621,25 +461,25 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
language_id = self.newbibles[number].get_language(name)
|
language_id = self.newbibles[number].get_language(name)
|
||||||
if not language_id:
|
if not language_id:
|
||||||
log.warn(u'Upgrading from "%s" failed' % filename[0])
|
log.warn(u'Upgrading from "%s" failed' % filename[0])
|
||||||
delete_database(self.path, clean_filename(name))
|
self.newbibles[number].session.close()
|
||||||
del self.newbibles[number]
|
del self.newbibles[number]
|
||||||
self.incrementProgressBar(unicode(translate(
|
self.incrementProgressBar(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
||||||
(number + 1, self.maxBibles, name),
|
(number + 1, max_bibles, name),
|
||||||
self.progressBar.maximum() - self.progressBar.value())
|
self.progressBar.maximum() - self.progressBar.value())
|
||||||
number += 1
|
self.success[number] = False
|
||||||
continue
|
continue
|
||||||
self.progressBar.setMaximum(len(books))
|
self.progressBar.setMaximum(len(books))
|
||||||
for book in books:
|
for book in books:
|
||||||
if self.stop_import_flag:
|
if self.stop_import_flag:
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
self.incrementProgressBar(unicode(translate(
|
self.incrementProgressBar(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\n'
|
'Upgrading Bible %s of %s: "%s"\n'
|
||||||
'Upgrading %s ...')) %
|
'Upgrading %s ...')) %
|
||||||
(number + 1, self.maxBibles, name, book))
|
(number + 1, max_bibles, name, book))
|
||||||
book_ref_id = self.newbibles[number].\
|
book_ref_id = self.newbibles[number].\
|
||||||
get_book_ref_id_by_name(book, len(books), language_id)
|
get_book_ref_id_by_name(book, len(books), language_id)
|
||||||
if not book_ref_id:
|
if not book_ref_id:
|
||||||
@ -647,24 +487,24 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
u'name: "%s" aborted by user' % (
|
u'name: "%s" aborted by user' % (
|
||||||
meta_data[u'download source'],
|
meta_data[u'download source'],
|
||||||
meta_data[u'download name']))
|
meta_data[u'download name']))
|
||||||
delete_database(self.path, clean_filename(name))
|
self.newbibles[number].session.close()
|
||||||
del self.newbibles[number]
|
del self.newbibles[number]
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
|
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
|
||||||
db_book = self.newbibles[number].create_book(book,
|
db_book = self.newbibles[number].create_book(book,
|
||||||
book_ref_id, book_details[u'testament_id'])
|
book_ref_id, book_details[u'testament_id'])
|
||||||
# Try to import still downloaded verses
|
# Try to import already downloaded verses.
|
||||||
oldbook = oldbible.get_book(book)
|
oldbook = oldBible.get_book(book)
|
||||||
if oldbook:
|
if oldbook:
|
||||||
verses = oldbible.get_verses(oldbook[u'id'])
|
verses = oldBible.get_verses(oldbook[u'id'])
|
||||||
if not verses:
|
if not verses:
|
||||||
log.warn(u'No verses found to import for book '
|
log.warn(u'No verses found to import for book '
|
||||||
u'"%s"', book)
|
u'"%s"', book)
|
||||||
continue
|
continue
|
||||||
for verse in verses:
|
for verse in verses:
|
||||||
if self.stop_import_flag:
|
if self.stop_import_flag:
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
self.newbibles[number].create_verse(db_book.id,
|
self.newbibles[number].create_verse(db_book.id,
|
||||||
int(verse[u'chapter']),
|
int(verse[u'chapter']),
|
||||||
@ -678,40 +518,40 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
language_id = self.newbibles[number].get_language(name)
|
language_id = self.newbibles[number].get_language(name)
|
||||||
if not language_id:
|
if not language_id:
|
||||||
log.warn(u'Upgrading books from "%s" failed' % name)
|
log.warn(u'Upgrading books from "%s" failed' % name)
|
||||||
delete_database(self.path, clean_filename(name))
|
self.newbibles[number].session.close()
|
||||||
del self.newbibles[number]
|
del self.newbibles[number]
|
||||||
self.incrementProgressBar(unicode(translate(
|
self.incrementProgressBar(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
||||||
(number + 1, self.maxBibles, name),
|
(number + 1, max_bibles, name),
|
||||||
self.progressBar.maximum() - self.progressBar.value())
|
self.progressBar.maximum() - self.progressBar.value())
|
||||||
number += 1
|
self.success[number] = False
|
||||||
continue
|
continue
|
||||||
books = oldbible.get_books()
|
books = oldBible.get_books()
|
||||||
self.progressBar.setMaximum(len(books))
|
self.progressBar.setMaximum(len(books))
|
||||||
for book in books:
|
for book in books:
|
||||||
if self.stop_import_flag:
|
if self.stop_import_flag:
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
self.incrementProgressBar(unicode(translate(
|
self.incrementProgressBar(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\n'
|
'Upgrading Bible %s of %s: "%s"\n'
|
||||||
'Upgrading %s ...')) %
|
'Upgrading %s ...')) %
|
||||||
(number + 1, self.maxBibles, name, book[u'name']))
|
(number + 1, max_bibles, name, book[u'name']))
|
||||||
book_ref_id = self.newbibles[number].\
|
book_ref_id = self.newbibles[number].\
|
||||||
get_book_ref_id_by_name(book[u'name'], len(books),
|
get_book_ref_id_by_name(book[u'name'], len(books),
|
||||||
language_id)
|
language_id)
|
||||||
if not book_ref_id:
|
if not book_ref_id:
|
||||||
log.warn(u'Upgrading books from %s " '\
|
log.warn(u'Upgrading books from %s " '\
|
||||||
'failed - aborted by user' % name)
|
'failed - aborted by user' % name)
|
||||||
delete_database(self.path, clean_filename(name))
|
self.newbibles[number].session.close()
|
||||||
del self.newbibles[number]
|
del self.newbibles[number]
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
|
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
|
||||||
db_book = self.newbibles[number].create_book(book[u'name'],
|
db_book = self.newbibles[number].create_book(book[u'name'],
|
||||||
book_ref_id, book_details[u'testament_id'])
|
book_ref_id, book_details[u'testament_id'])
|
||||||
verses = oldbible.get_verses(book[u'id'])
|
verses = oldBible.get_verses(book[u'id'])
|
||||||
if not verses:
|
if not verses:
|
||||||
log.warn(u'No verses found to import for book '
|
log.warn(u'No verses found to import for book '
|
||||||
u'"%s"', book[u'name'])
|
u'"%s"', book[u'name'])
|
||||||
@ -719,31 +559,32 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
continue
|
continue
|
||||||
for verse in verses:
|
for verse in verses:
|
||||||
if self.stop_import_flag:
|
if self.stop_import_flag:
|
||||||
bible_failed = True
|
self.success[number] = False
|
||||||
break
|
break
|
||||||
self.newbibles[number].create_verse(db_book.id,
|
self.newbibles[number].create_verse(db_book.id,
|
||||||
int(verse[u'chapter']),
|
int(verse[u'chapter']),
|
||||||
int(verse[u'verse']), unicode(verse[u'text']))
|
int(verse[u'verse']), unicode(verse[u'text']))
|
||||||
Receiver.send_message(u'openlp_process_events')
|
Receiver.send_message(u'openlp_process_events')
|
||||||
self.newbibles[number].session.commit()
|
self.newbibles[number].session.commit()
|
||||||
if not bible_failed:
|
if self.success.has_key(number) and not self.success[number]:
|
||||||
|
self.incrementProgressBar(unicode(translate(
|
||||||
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
|
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
||||||
|
(number + 1, max_bibles, name),
|
||||||
|
self.progressBar.maximum() - self.progressBar.value())
|
||||||
|
else:
|
||||||
|
self.success[number] = True
|
||||||
self.newbibles[number].create_meta(u'Version', name)
|
self.newbibles[number].create_meta(u'Version', name)
|
||||||
oldbible.close_connection()
|
|
||||||
delete_file(os.path.join(self.path, filename[0]))
|
|
||||||
self.incrementProgressBar(unicode(translate(
|
self.incrementProgressBar(unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
'Upgrading Bible %s of %s: "%s"\n'
|
'Upgrading Bible %s of %s: "%s"\n'
|
||||||
'Complete')) %
|
'Complete')) %
|
||||||
(number + 1, self.maxBibles, name))
|
(number + 1, max_bibles, name))
|
||||||
self.success[biblenumber] = True
|
if self.newbibles.has_key(number):
|
||||||
else:
|
self.newbibles[number].session.close()
|
||||||
self.incrementProgressBar(unicode(translate(
|
# Close the last bible's connection if possible.
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
if oldBible is not None:
|
||||||
'Upgrading Bible %s of %s: "%s"\nFailed')) %
|
oldBible.close_connection()
|
||||||
(number + 1, self.maxBibles, name),
|
|
||||||
self.progressBar.maximum() - self.progressBar.value())
|
|
||||||
delete_database(self.path, clean_filename(name))
|
|
||||||
number += 1
|
|
||||||
|
|
||||||
def postWizard(self):
|
def postWizard(self):
|
||||||
"""
|
"""
|
||||||
@ -752,10 +593,14 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
successful_import = 0
|
successful_import = 0
|
||||||
failed_import = 0
|
failed_import = 0
|
||||||
for number, filename in enumerate(self.files):
|
for number, filename in enumerate(self.files):
|
||||||
if number in self.success and self.success[number] == True:
|
if self.success.has_key(number) and self.success[number]:
|
||||||
successful_import += 1
|
successful_import += 1
|
||||||
elif self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
elif self.checkBox[number].checkState() == QtCore.Qt.Checked:
|
||||||
failed_import += 1
|
failed_import += 1
|
||||||
|
# Delete upgraded (but not complete, corrupted, ...) bible.
|
||||||
|
delete_file(os.path.join(self.path, filename[0]))
|
||||||
|
# Copy not upgraded bible back.
|
||||||
|
shutil.move(os.path.join(self.temp_dir, filename[0]), self.path)
|
||||||
if failed_import > 0:
|
if failed_import > 0:
|
||||||
failed_import_text = unicode(translate(
|
failed_import_text = unicode(translate(
|
||||||
'BiblesPlugin.UpgradeWizardForm',
|
'BiblesPlugin.UpgradeWizardForm',
|
||||||
@ -776,7 +621,8 @@ class BibleUpgradeForm(OpenLPWizard):
|
|||||||
'Bible(s): %s successful%s')) % (successful_import,
|
'Bible(s): %s successful%s')) % (successful_import,
|
||||||
failed_import_text))
|
failed_import_text))
|
||||||
else:
|
else:
|
||||||
self.progressLabel.setText(
|
self.progressLabel.setText(translate(
|
||||||
translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade '
|
'BiblesPlugin.UpgradeWizardForm', 'Upgrade failed.'))
|
||||||
'failed.'))
|
# Remove temp directory.
|
||||||
|
shutil.rmtree(self.temp_dir, True)
|
||||||
OpenLPWizard.postWizard(self)
|
OpenLPWizard.postWizard(self)
|
||||||
|
@ -45,7 +45,7 @@ class LanguageForm(QDialog, Ui_LanguageDialog):
|
|||||||
"""
|
"""
|
||||||
log.info(u'LanguageForm loaded')
|
log.info(u'LanguageForm loaded')
|
||||||
|
|
||||||
def __init__(self, parent = None):
|
def __init__(self, parent=None):
|
||||||
"""
|
"""
|
||||||
Constructor
|
Constructor
|
||||||
"""
|
"""
|
||||||
@ -57,12 +57,11 @@ class LanguageForm(QDialog, Ui_LanguageDialog):
|
|||||||
if bible_name:
|
if bible_name:
|
||||||
self.bibleLabel.setText(unicode(bible_name))
|
self.bibleLabel.setText(unicode(bible_name))
|
||||||
items = BiblesResourcesDB.get_languages()
|
items = BiblesResourcesDB.get_languages()
|
||||||
for item in items:
|
self.languageComboBox.addItems([item[u'name'] for item in items])
|
||||||
self.languageComboBox.addItem(item[u'name'])
|
|
||||||
return QDialog.exec_(self)
|
return QDialog.exec_(self)
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
if self.languageComboBox.currentText() == u'':
|
if not self.languageComboBox.currentText():
|
||||||
critical_error_message_box(
|
critical_error_message_box(
|
||||||
message=translate('BiblesPlugin.LanguageForm',
|
message=translate('BiblesPlugin.LanguageForm',
|
||||||
'You need to choose a language.'))
|
'You need to choose a language.'))
|
||||||
|
@ -39,7 +39,7 @@ from sqlalchemy.orm.exc import UnmappedClassError
|
|||||||
from openlp.core.lib import Receiver, translate
|
from openlp.core.lib import Receiver, translate
|
||||||
from openlp.core.lib.db import BaseModel, init_db, Manager
|
from openlp.core.lib.db import BaseModel, init_db, Manager
|
||||||
from openlp.core.lib.ui import critical_error_message_box
|
from openlp.core.lib.ui import critical_error_message_box
|
||||||
from openlp.core.utils import AppLocation
|
from openlp.core.utils import AppLocation, clean_filename
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -63,19 +63,6 @@ class Verse(BaseModel):
|
|||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def clean_filename(filename):
|
|
||||||
"""
|
|
||||||
Clean up the version name of the Bible and convert it into a valid
|
|
||||||
file name.
|
|
||||||
|
|
||||||
``filename``
|
|
||||||
The "dirty" file name or version name.
|
|
||||||
"""
|
|
||||||
if not isinstance(filename, unicode):
|
|
||||||
filename = unicode(filename, u'utf-8')
|
|
||||||
filename = re.sub(r'[^\w]+', u'_', filename).strip(u'_')
|
|
||||||
return filename + u'.sqlite'
|
|
||||||
|
|
||||||
def init_schema(url):
|
def init_schema(url):
|
||||||
"""
|
"""
|
||||||
Setup a bible database connection and initialise the database schema.
|
Setup a bible database connection and initialise the database schema.
|
||||||
@ -158,7 +145,7 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
self.name = kwargs[u'name']
|
self.name = kwargs[u'name']
|
||||||
if not isinstance(self.name, unicode):
|
if not isinstance(self.name, unicode):
|
||||||
self.name = unicode(self.name, u'utf-8')
|
self.name = unicode(self.name, u'utf-8')
|
||||||
self.file = clean_filename(self.name)
|
self.file = clean_filename(self.name) + u'.sqlite'
|
||||||
if u'file' in kwargs:
|
if u'file' in kwargs:
|
||||||
self.file = kwargs[u'file']
|
self.file = kwargs[u'file']
|
||||||
Manager.__init__(self, u'bibles', init_schema, self.file)
|
Manager.__init__(self, u'bibles', init_schema, self.file)
|
||||||
|
@ -151,9 +151,10 @@ class BibleManager(object):
|
|||||||
name = bible.get_name()
|
name = bible.get_name()
|
||||||
# Remove corrupted files.
|
# Remove corrupted files.
|
||||||
if name is None:
|
if name is None:
|
||||||
|
bible.session.close()
|
||||||
delete_file(os.path.join(self.path, filename))
|
delete_file(os.path.join(self.path, filename))
|
||||||
continue
|
continue
|
||||||
# Find old database versions
|
# Find old database versions.
|
||||||
if bible.is_old_database():
|
if bible.is_old_database():
|
||||||
self.old_bible_databases.append([filename, name])
|
self.old_bible_databases.append([filename, name])
|
||||||
bible.session.close()
|
bible.session.close()
|
||||||
|
@ -395,6 +395,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
log.debug(u'Reloading Bibles')
|
log.debug(u'Reloading Bibles')
|
||||||
self.plugin.manager.reload_bibles()
|
self.plugin.manager.reload_bibles()
|
||||||
self.loadBibles()
|
self.loadBibles()
|
||||||
|
self.updateAutoCompleter()
|
||||||
|
|
||||||
def initialiseAdvancedBible(self, bible):
|
def initialiseAdvancedBible(self, bible):
|
||||||
"""
|
"""
|
||||||
@ -612,7 +613,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
if restore:
|
if restore:
|
||||||
old_text = unicode(combo.currentText())
|
old_text = unicode(combo.currentText())
|
||||||
combo.clear()
|
combo.clear()
|
||||||
combo.addItems([unicode(i) for i in range(range_from, range_to + 1)])
|
combo.addItems(map(unicode, range(range_from, range_to + 1)))
|
||||||
if restore and combo.findText(old_text) != -1:
|
if restore and combo.findText(old_text) != -1:
|
||||||
combo.setCurrentIndex(combo.findText(old_text))
|
combo.setCurrentIndex(combo.findText(old_text))
|
||||||
|
|
||||||
|
Binary file not shown.
@ -35,6 +35,7 @@ import re
|
|||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
|
||||||
from openlp.core.lib import check_directory_exists, Receiver, translate
|
from openlp.core.lib import check_directory_exists, Receiver, translate
|
||||||
|
from openlp.core.utils import clean_filename
|
||||||
from openlp.plugins.songs.lib import OpenLyrics
|
from openlp.plugins.songs.lib import OpenLyrics
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -72,8 +73,7 @@ class OpenLyricsExport(object):
|
|||||||
tree = etree.ElementTree(etree.fromstring(xml))
|
tree = etree.ElementTree(etree.fromstring(xml))
|
||||||
filename = u'%s (%s)' % (song.title,
|
filename = u'%s (%s)' % (song.title,
|
||||||
u', '.join([author.display_name for author in song.authors]))
|
u', '.join([author.display_name for author in song.authors]))
|
||||||
filename = re.sub(
|
filename = clean_filename(filename)
|
||||||
r'[/\\?*|<>\[\]":<>+%]+', u'_', filename).strip(u'_')
|
|
||||||
# Ensure the filename isn't too long for some filesystems
|
# Ensure the filename isn't too long for some filesystems
|
||||||
filename = u'%s.xml' % filename[0:250 - len(self.save_path)]
|
filename = u'%s.xml' % filename[0:250 - len(self.save_path)]
|
||||||
# Pass a file object, because lxml does not cope with some special
|
# Pass a file object, because lxml does not cope with some special
|
||||||
|
@ -102,7 +102,6 @@ class SongShowPlusImport(SongImport):
|
|||||||
if not isinstance(self.import_source, list):
|
if not isinstance(self.import_source, list):
|
||||||
return
|
return
|
||||||
self.import_wizard.progressBar.setMaximum(len(self.import_source))
|
self.import_wizard.progressBar.setMaximum(len(self.import_source))
|
||||||
|
|
||||||
for file in self.import_source:
|
for file in self.import_source:
|
||||||
self.sspVerseOrderList = []
|
self.sspVerseOrderList = []
|
||||||
otherCount = 0
|
otherCount = 0
|
||||||
@ -111,7 +110,6 @@ class SongShowPlusImport(SongImport):
|
|||||||
self.import_wizard.incrementProgressBar(
|
self.import_wizard.incrementProgressBar(
|
||||||
WizardStrings.ImportingType % file_name, 0)
|
WizardStrings.ImportingType % file_name, 0)
|
||||||
songData = open(file, 'rb')
|
songData = open(file, 'rb')
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
blockKey, = struct.unpack("I", songData.read(4))
|
blockKey, = struct.unpack("I", songData.read(4))
|
||||||
# The file ends with 4 NUL's
|
# The file ends with 4 NUL's
|
||||||
@ -126,8 +124,9 @@ class SongShowPlusImport(SongImport):
|
|||||||
songData.read(2))
|
songData.read(2))
|
||||||
verseName = songData.read(verseNameLength)
|
verseName = songData.read(verseNameLength)
|
||||||
lengthDescriptorSize, = struct.unpack("B", songData.read(1))
|
lengthDescriptorSize, = struct.unpack("B", songData.read(1))
|
||||||
|
log.debug(lengthDescriptorSize)
|
||||||
# Detect if/how long the length descriptor is
|
# Detect if/how long the length descriptor is
|
||||||
if lengthDescriptorSize == 12:
|
if lengthDescriptorSize == 12 or lengthDescriptorSize == 20:
|
||||||
lengthDescriptor, = struct.unpack("I", songData.read(4))
|
lengthDescriptor, = struct.unpack("I", songData.read(4))
|
||||||
elif lengthDescriptorSize == 2:
|
elif lengthDescriptorSize == 2:
|
||||||
lengthDescriptor = 1
|
lengthDescriptor = 1
|
||||||
@ -135,6 +134,7 @@ class SongShowPlusImport(SongImport):
|
|||||||
lengthDescriptor = 0
|
lengthDescriptor = 0
|
||||||
else:
|
else:
|
||||||
lengthDescriptor, = struct.unpack("B", songData.read(1))
|
lengthDescriptor, = struct.unpack("B", songData.read(1))
|
||||||
|
log.debug(lengthDescriptorSize)
|
||||||
data = songData.read(lengthDescriptor)
|
data = songData.read(lengthDescriptor)
|
||||||
if blockKey == TITLE:
|
if blockKey == TITLE:
|
||||||
self.title = unicode(data, u'cp1252')
|
self.title = unicode(data, u'cp1252')
|
||||||
|
Loading…
Reference in New Issue
Block a user