← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~sam92/openlp/fixes22 into lp:openlp

 

Samuel Mehrbrodt has proposed merging lp:~sam92/openlp/fixes22 into lp:openlp.

Requested reviews:
  Tim Bentley (trb143)
  Tomas Groth (tomasgroth)

For more details, see:
https://code.launchpad.net/~sam92/openlp/fixes22/+merge/280924

Small fixes:
  * Multiple '%s' in one string need to be named for translations (otherwise the order might get confused)
  * OpenLP 2.0 -> OpenLP 2
  * Change buttons of "Do you really want to close" dialog: Instead of ("No", "Yes") use ("Cancel", "Close OpenLP")
  * Improve exception dialog (mention that description should be english and relevant files should be attached)
  * Do not translate the bug report labels
  * Ignore "E402 module level import not at top of file" pep8 errors (added to setup.cfg)
  * Add import test for Words of Worship

lp:~sam92/openlp/fixes22 (revision 2561)
[SUCCESS] https//ci.openlp.io/job/Branch-01-Pull/1193/
[SUCCESS] https//ci.openlp.io/job/Branch-02-Functional-Tests/1116/
[SUCCESS] https//ci.openlp.io/job/Branch-03-Interface-Tests/1057/
[SUCCESS] https//ci.openlp.io/job/Branch-04a-Windows_Functional_Tests/904/
[SUCCESS] https//ci.openlp.io/job/Branch-04b-Windows_Interface_Tests/500/
[FAILURE] https//ci.openlp.io/job/Branch-05a-Code_Analysis/615/
Stopping after failure
-- 
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/exceptiondialog.py'
--- openlp/core/ui/exceptiondialog.py	2015-01-18 13:39:21 +0000
+++ openlp/core/ui/exceptiondialog.py	2015-12-17 21:34:13 +0000
@@ -90,14 +90,15 @@
         """
         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@xxxxxxxxxx, 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'))

=== modified file 'openlp/core/ui/exceptionform.py'
--- openlp/core/ui/exceptionform.py	2015-01-18 13:39:21 +0000
+++ openlp/core/ui/exceptionform.py	2015-12-17 21:34:13 +0000
@@ -97,6 +97,12 @@
         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):
         """
@@ -143,13 +149,6 @@
         """
         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 = QtGui.QFileDialog.getSaveFileName(
             self,
             translate('OpenLP.ExceptionForm', 'Save Crash Report'),
@@ -158,7 +157,7 @@
         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:
@@ -178,14 +177,6 @@
         """
         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 = ''
@@ -197,7 +188,7 @@
         subject = 'Bug report: %s in %s' % (exception, source)
         mail_to_url = QtCore.QUrl('mailto:bugs@xxxxxxxxxx')
         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)

=== modified file 'openlp/core/ui/formattingtagcontroller.py'
--- openlp/core/ui/formattingtagcontroller.py	2015-02-27 21:14:08 +0000
+++ openlp/core/ui/formattingtagcontroller.py	2015-12-17 21:34:13 +0000
@@ -166,5 +166,6 @@
             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

=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py	2015-10-16 16:30:13 +0000
+++ openlp/core/ui/mainwindow.py	2015-12-17 21:34:13 +0000
@@ -1089,13 +1089,13 @@
                 event.ignore()
         else:
             if Settings().value('advanced/enable exit confirmation'):
-                ret = QtGui.QMessageBox.question(self, translate('OpenLP.MainWindow', 'Close OpenLP'),
-                                                 translate('OpenLP.MainWindow', 'Are you sure you want to close '
-                                                                                'OpenLP?'),
-                                                 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
-                                                                                   QtGui.QMessageBox.No),
-                                                 QtGui.QMessageBox.Yes)
-                if ret == QtGui.QMessageBox.Yes:
+                msg_box = QtGui.QMessageBox(QtGui.QMessageBox.Question, translate('OpenLP.MainWindow', 'Exit OpenLP'),
+                                            translate('OpenLP.MainWindow', 'Are you sure you want to exit OpenLP?'),
+                                            QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Close |
+                                                                              QtGui.QMessageBox.Cancel), self)
+                msg_box.setButtonText(QtGui.QMessageBox.Close, translate('OpenLP.MainWindow', '&Exit OpenLP'))
+                msg_box.setDefaultButton(QtGui.QMessageBox.Close)
+                if msg_box.exec() == QtGui.QMessageBox.Close:
                     self.clean_up()
                     event.accept()
                 else:

=== modified file 'openlp/core/ui/wizard.py'
--- openlp/core/ui/wizard.py	2015-01-18 13:39:21 +0000
+++ openlp/core/ui/wizard.py	2015-12-17 21:34:13 +0000
@@ -277,7 +277,7 @@
         :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 += ';;'

=== modified file 'openlp/plugins/bibles/forms/bibleupgradeform.py'
--- openlp/plugins/bibles/forms/bibleupgradeform.py	2015-01-18 13:39:21 +0000
+++ openlp/plugins/bibles/forms/bibleupgradeform.py	2015-12-17 21:34:13 +0000
@@ -547,9 +547,9 @@
             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') % (

=== modified file 'openlp/plugins/songs/lib/importer.py'
--- openlp/plugins/songs/lib/importer.py	2015-01-18 13:39:21 +0000
+++ openlp/plugins/songs/lib/importer.py	2015-12-17 21:34:13 +0000
@@ -187,14 +187,14 @@
             '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'),

=== modified file 'openlp/plugins/songs/lib/importers/openlp.py'
--- openlp/plugins/songs/lib/importers/openlp.py	2015-01-18 13:39:21 +0000
+++ openlp/plugins/songs/lib/importers/openlp.py	2015-12-17 21:34:13 +0000
@@ -94,7 +94,7 @@
         # 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

=== modified file 'openlp/plugins/songs/lib/importers/wordsofworship.py'
--- openlp/plugins/songs/lib/importers/wordsofworship.py	2015-01-18 13:39:21 +0000
+++ openlp/plugins/songs/lib/importers/wordsofworship.py	2015-12-17 21:34:13 +0000
@@ -108,8 +108,8 @@
                 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 @@
                 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)

=== modified file 'setup.cfg'
--- setup.cfg	2014-05-21 19:57:06 +0000
+++ setup.cfg	2015-12-17 21:34:13 +0000
@@ -1,3 +1,4 @@
 [pep8]
 exclude=resources.py,vlc.py
 max-line-length = 120
+ignore = E402

=== modified file 'tests/functional/openlp_plugins/songs/test_wordsofworshipimport.py'
--- tests/functional/openlp_plugins/songs/test_wordsofworshipimport.py	2015-01-18 13:39:21 +0000
+++ tests/functional/openlp_plugins/songs/test_wordsofworshipimport.py	2015-12-17 21:34:13 +0000
@@ -47,3 +47,6 @@
                          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')))

=== added file 'tests/resources/wordsofworshipsongs/Holy Holy Holy Lord God Almighty.json'
--- tests/resources/wordsofworshipsongs/Holy Holy Holy Lord God Almighty.json	1970-01-01 00:00:00 +0000
+++ tests/resources/wordsofworshipsongs/Holy Holy Holy Lord God Almighty.json	2015-12-17 21:34:13 +0000
@@ -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"
+        ]
+    ]
+}

=== added file 'tests/resources/wordsofworshipsongs/Holy Holy Holy Lord God Almighty.wow-song'
Binary files tests/resources/wordsofworshipsongs/Holy Holy Holy Lord God Almighty.wow-song	1970-01-01 00:00:00 +0000 and tests/resources/wordsofworshipsongs/Holy Holy Holy Lord God Almighty.wow-song	2015-12-17 21:34:13 +0000 differ

References