forked from openlp/openlp
merge trunk
This commit is contained in:
commit
bee587fa67
@ -90,14 +90,15 @@ class Ui_ExceptionDialog(object):
|
||||
"""
|
||||
exception_dialog.setWindowTitle(translate('OpenLP.ExceptionDialog', 'Error Occurred'))
|
||||
self.description_explanation.setText(
|
||||
translate('OpenLP.ExceptionDialog', 'Please enter a description of what you were doing to cause this error '
|
||||
translate('OpenLP.ExceptionDialog', 'Please enter a description of what you were doing to cause this error.'
|
||||
' If possible, write in English.'
|
||||
'\n(Minimum 20 characters)'))
|
||||
self.message_label.setText(
|
||||
translate('OpenLP.ExceptionDialog', 'Oops! OpenLP hit a problem, and couldn\'t recover. The text in the '
|
||||
'box below contains information that might be helpful to the OpenLP '
|
||||
'developers, so please e-mail it to bugs@openlp.org, along with a '
|
||||
'detailed description of what you were doing when the problem '
|
||||
'occurred.'))
|
||||
'occurred. Also attach any files that triggered the problem.'))
|
||||
self.send_report_button.setText(translate('OpenLP.ExceptionDialog', 'Send E-Mail'))
|
||||
self.save_report_button.setText(translate('OpenLP.ExceptionDialog', 'Save to File'))
|
||||
self.attach_tile_button.setText(translate('OpenLP.ExceptionDialog', 'Attach File'))
|
||||
|
@ -92,6 +92,12 @@ class ExceptionForm(QtWidgets.QDialog, Ui_ExceptionDialog, RegistryProperties):
|
||||
super(ExceptionForm, self).__init__()
|
||||
self.setupUi(self)
|
||||
self.settings_section = 'crashreport'
|
||||
self.report_text = '**OpenLP Bug Report**\n' \
|
||||
'Version: %s\n\n' \
|
||||
'--- Details of the Exception. ---\n\n%s\n\n ' \
|
||||
'--- Exception Traceback ---\n%s\n' \
|
||||
'--- System information ---\n%s\n' \
|
||||
'--- Library Versions ---\n%s\n'
|
||||
|
||||
def exec(self):
|
||||
"""
|
||||
@ -137,13 +143,6 @@ class ExceptionForm(QtWidgets.QDialog, Ui_ExceptionDialog, RegistryProperties):
|
||||
"""
|
||||
Saving exception log and system information to a file.
|
||||
"""
|
||||
report_text = translate('OpenLP.ExceptionForm',
|
||||
'**OpenLP Bug Report**\n'
|
||||
'Version: %s\n\n'
|
||||
'--- Details of the Exception. ---\n\n%s\n\n '
|
||||
'--- Exception Traceback ---\n%s\n'
|
||||
'--- System information ---\n%s\n'
|
||||
'--- Library Versions ---\n%s\n')
|
||||
filename = QtWidgets.QFileDialog.getSaveFileName(
|
||||
self,
|
||||
translate('OpenLP.ExceptionForm', 'Save Crash Report'),
|
||||
@ -152,7 +151,7 @@ class ExceptionForm(QtWidgets.QDialog, Ui_ExceptionDialog, RegistryProperties):
|
||||
if filename:
|
||||
filename = str(filename).replace('/', os.path.sep)
|
||||
Settings().setValue(self.settings_section + '/last directory', os.path.dirname(filename))
|
||||
report_text = report_text % self._create_report()
|
||||
report_text = self.report_text % self._create_report()
|
||||
try:
|
||||
report_file = open(filename, 'w')
|
||||
try:
|
||||
@ -172,14 +171,6 @@ class ExceptionForm(QtWidgets.QDialog, Ui_ExceptionDialog, RegistryProperties):
|
||||
"""
|
||||
Opening systems default email client and inserting exception log and system information.
|
||||
"""
|
||||
body = translate('OpenLP.ExceptionForm',
|
||||
'*OpenLP Bug Report*\n'
|
||||
'Version: %s\n\n'
|
||||
'--- Details of the Exception. ---\n\n%s\n\n '
|
||||
'--- Exception Traceback ---\n%s\n'
|
||||
'--- System information ---\n%s\n'
|
||||
'--- Library Versions ---\n%s\n',
|
||||
'Please add the information that bug reports are favoured written in English.')
|
||||
content = self._create_report()
|
||||
source = ''
|
||||
exception = ''
|
||||
@ -191,7 +182,7 @@ class ExceptionForm(QtWidgets.QDialog, Ui_ExceptionDialog, RegistryProperties):
|
||||
subject = 'Bug report: %s in %s' % (exception, source)
|
||||
mail_to_url = QtCore.QUrlQuery('mailto:bugs@openlp.org')
|
||||
mail_to_url.addQueryItem('subject', subject)
|
||||
mail_to_url.addQueryItem('body', body % content)
|
||||
mail_to_url.addQueryItem('body', self.report_text % content)
|
||||
if self.file_attachment:
|
||||
mail_to_url.addQueryItem('attach', self.file_attachment)
|
||||
QtGui.QDesktopServices.openUrl(mail_to_url)
|
||||
|
@ -166,5 +166,6 @@ class FormattingTagController(object):
|
||||
return None, end
|
||||
if end and end != end_html:
|
||||
return translate('OpenLP.FormattingTagForm',
|
||||
'End tag %s does not match end tag for start tag %s') % (end, start_html), None
|
||||
'End tag %(end)s does not match end tag for start tag %(start)s') % \
|
||||
{'end': end, 'start': start_html}, None
|
||||
return None, None
|
||||
|
@ -1096,13 +1096,15 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties):
|
||||
event.ignore()
|
||||
else:
|
||||
if Settings().value('advanced/enable exit confirmation'):
|
||||
ret = QtWidgets.QMessageBox.question(self, translate('OpenLP.MainWindow', 'Close OpenLP'),
|
||||
translate('OpenLP.MainWindow', 'Are you sure you want to close '
|
||||
'OpenLP?'),
|
||||
QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes |
|
||||
QtWidgets.QMessageBox.No),
|
||||
QtWidgets.QMessageBox.Yes)
|
||||
if ret == QtWidgets.QMessageBox.Yes:
|
||||
msg_box = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Question,
|
||||
translate('OpenLP.MainWindow', 'Exit OpenLP'),
|
||||
translate('OpenLP.MainWindow', 'Are you sure you want to exit OpenLP?'),
|
||||
QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Close |
|
||||
QtWidgets.QMessageBox.Cancel),
|
||||
self)
|
||||
msg_box.setButtonText(QtWidgets.QMessageBox.Close, translate('OpenLP.MainWindow', '&Exit OpenLP'))
|
||||
msg_box.setDefaultButton(QtWidgets.QMessageBox.Close)
|
||||
if msg_box.exec() == QtWidgets.QMessageBox.Close:
|
||||
self.clean_up()
|
||||
event.accept()
|
||||
else:
|
||||
|
@ -277,7 +277,7 @@ class OpenLPWizard(QtWidgets.QWizard, RegistryProperties):
|
||||
:param filters: The file extension filters. It should contain the file description
|
||||
as well as the file extension. For example::
|
||||
|
||||
'OpenLP 2.0 Databases (*.sqlite)'
|
||||
'OpenLP 2 Databases (*.sqlite)'
|
||||
"""
|
||||
if filters:
|
||||
filters += ';;'
|
||||
|
@ -547,9 +547,9 @@ class BibleUpgradeForm(OpenLPWizard):
|
||||
if self.includeWebBible:
|
||||
self.progress_label.setText(
|
||||
translate('BiblesPlugin.UpgradeWizardForm',
|
||||
'Upgrading Bible(s): %s successful%s\nPlease note that verses from Web Bibles will be '
|
||||
'downloaded on demand and so an Internet connection is required.') %
|
||||
(successful_import, failed_import_text))
|
||||
'Upgrading Bible(s): %(success)d successful%(failed_text)s\nPlease note that verses '
|
||||
'from Web Bibles will be downloaded on demand and so an Internet connection is required.')
|
||||
% {'success': successful_import, 'failed_text': failed_import_text})
|
||||
else:
|
||||
self.progress_label.setText(
|
||||
translate('BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible(s): %s successful%s') % (
|
||||
|
@ -187,14 +187,14 @@ class SongFormat(object):
|
||||
'name': 'OpenLyrics',
|
||||
'prefix': 'openLyrics',
|
||||
'filter': '%s (*.xml)' % translate('SongsPlugin.ImportWizardForm', 'OpenLyrics Files'),
|
||||
'comboBoxText': translate('SongsPlugin.ImportWizardForm', 'OpenLyrics or OpenLP 2.0 Exported Song')
|
||||
'comboBoxText': translate('SongsPlugin.ImportWizardForm', 'OpenLyrics or OpenLP 2 Exported Song')
|
||||
},
|
||||
OpenLP2: {
|
||||
'class': OpenLPSongImport,
|
||||
'name': UiStrings().OLPV2,
|
||||
'prefix': 'openLP2',
|
||||
'selectMode': SongFormatSelect.SingleFile,
|
||||
'filter': '%s (*.sqlite)' % (translate('SongsPlugin.ImportWizardForm', 'OpenLP 2.0 Databases'))
|
||||
'filter': '%s (*.sqlite)' % (translate('SongsPlugin.ImportWizardForm', 'OpenLP 2 Databases'))
|
||||
},
|
||||
Generic: {
|
||||
'name': translate('SongsPlugin.ImportWizardForm', 'Generic Document/Presentation'),
|
||||
|
@ -94,7 +94,7 @@ class OpenLPSongImport(SongImport):
|
||||
# Check the file type
|
||||
if not self.import_source.endswith('.sqlite'):
|
||||
self.log_error(self.import_source, translate('SongsPlugin.OpenLPSongImport',
|
||||
'Not a valid OpenLP 2.0 song database.'))
|
||||
'Not a valid OpenLP 2 song database.'))
|
||||
return
|
||||
self.import_source = 'sqlite:///%s' % self.import_source
|
||||
# Load the db file
|
||||
|
@ -108,8 +108,8 @@ class WordsOfWorshipImport(SongImport):
|
||||
if song_data.read(19).decode() != 'WoW File\nSong Words':
|
||||
self.log_error(source,
|
||||
str(translate('SongsPlugin.WordsofWorshipSongImport',
|
||||
'Invalid Words of Worship song file. Missing "WoW File\\nSong '
|
||||
'Words" header.')))
|
||||
'Invalid Words of Worship song file. Missing "%s" header.'
|
||||
% 'WoW File\\nSong Words')))
|
||||
continue
|
||||
# Seek to byte which stores number of blocks in the song
|
||||
song_data.seek(56)
|
||||
@ -118,8 +118,8 @@ class WordsOfWorshipImport(SongImport):
|
||||
if song_data.read(16).decode() != 'CSongDoc::CBlock':
|
||||
self.log_error(source,
|
||||
str(translate('SongsPlugin.WordsofWorshipSongImport',
|
||||
'Invalid Words of Worship song file. Missing "CSongDoc::CBlock" '
|
||||
'string.')))
|
||||
'Invalid Words of Worship song file. Missing "%s" '
|
||||
'string.' % 'CSongDoc::CBlock')))
|
||||
continue
|
||||
# Seek to the beginning of the first block
|
||||
song_data.seek(82)
|
||||
|
@ -1,3 +1,4 @@
|
||||
[pep8]
|
||||
exclude=resources.py,vlc.py
|
||||
max-line-length = 120
|
||||
ignore = E402
|
||||
|
@ -47,3 +47,6 @@ class TestWordsOfWorshipFileImport(SongImportTestHelper):
|
||||
self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace (6 Verses).json')))
|
||||
self.file_import([os.path.join(TEST_PATH, 'When morning gilds the skies.wsg')],
|
||||
self.load_external_result_data(os.path.join(TEST_PATH, 'When morning gilds the skies.json')))
|
||||
self.file_import([os.path.join(TEST_PATH, 'Holy Holy Holy Lord God Almighty.wow-song')],
|
||||
self.load_external_result_data(os.path.join(TEST_PATH,
|
||||
'Holy Holy Holy Lord God Almighty.json')))
|
||||
|
@ -0,0 +1,25 @@
|
||||
{
|
||||
"authors": [
|
||||
"Words: Reginald Heber (1783-1826). Music: John B. Dykes (1823-1876)"
|
||||
],
|
||||
"title": "Holy Holy Holy Lord God Almighty",
|
||||
"verse_order_list": [],
|
||||
"verses": [
|
||||
[
|
||||
"Holy, holy, holy, Lord God Almighty\nEarly in the morning\nOur song shall rise to Thee:\nHoly, holy, holy, merciful and mighty,\nGod in three Persons, blessed Trinity!",
|
||||
"V"
|
||||
],
|
||||
[
|
||||
"Holy, holy, holy! all the saints adore Thee,\nCasting down their golden crowns\nAround the glassy sea;\nCherubim and seraphim falling down before Thee,\nWho were and are and evermore shall be.",
|
||||
"V"
|
||||
],
|
||||
[
|
||||
"Holy, holy, holy! though the darkness hide Thee,\nThough the eye of sinful man\nThy glory may not see;\nOnly Thou art holy, there is none beside Thee,\nPerfect in power, in love and purity.",
|
||||
"V"
|
||||
],
|
||||
[
|
||||
"Holy, holy, holy, Lord God Almighty!\nAll Thy works shall praise Thy name\nIn earth, and sky, and sea;\nHoly, holy, holy, merciful and mighty\nGod in three Persons, blessed Trinity!",
|
||||
"V"
|
||||
]
|
||||
]
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user