diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 9c72f7d56..17fc6cc15 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -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')) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 60b744c05..87c54a736 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -97,6 +97,12 @@ class ExceptionForm(QtGui.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): """ @@ -143,13 +149,6 @@ class ExceptionForm(QtGui.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 = QtGui.QFileDialog.getSaveFileName( self, translate('OpenLP.ExceptionForm', 'Save Crash Report'), @@ -158,7 +157,7 @@ class ExceptionForm(QtGui.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: @@ -178,14 +177,6 @@ class ExceptionForm(QtGui.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 = '' @@ -197,7 +188,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog, RegistryProperties): subject = 'Bug report: %s in %s' % (exception, source) mail_to_url = QtCore.QUrl('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) diff --git a/openlp/core/ui/formattingtagcontroller.py b/openlp/core/ui/formattingtagcontroller.py index f2fca420a..6c9d95190 100644 --- a/openlp/core/ui/formattingtagcontroller.py +++ b/openlp/core/ui/formattingtagcontroller.py @@ -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 diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 10c67e79a..8c717f599 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -566,7 +566,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): self.application.set_busy_cursor() # Simple message boxes Registry().register_function('theme_update_global', self.default_theme_changed) - QtCore.QObject.connect(self, QtCore.SIGNAL('openlp_version_check'), self.version_notice) + QtCore.QObject.connect(self, QtCore.SIGNAL('openlp_version_check'), self.version_notice) Registry().register_function('config_screen_changed', self.screen_changed) Registry().register_function('bootstrap_post_set_up', self.bootstrap_post_set_up) # Reset the cursor @@ -1089,13 +1089,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): 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: diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 1440c187f..96471edf3 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -476,9 +476,9 @@ class MediaController(RegistryMixin, OpenLPMixin, RegistryProperties): controller.media_info.media_type = MediaType.CD else: controller.media_info.media_type = MediaType.DVD - controller.media_info.start_time = start/1000 - controller.media_info.end_time = end/1000 - controller.media_info.length = (end - start)/1000 + controller.media_info.start_time = start / 1000 + controller.media_info.end_time = end / 1000 + controller.media_info.length = (end - start) / 1000 controller.media_info.title_track = title controller.media_info.audio_track = audio_track controller.media_info.subtitle_track = subtitle_track diff --git a/openlp/core/ui/projector/manager.py b/openlp/core/ui/projector/manager.py index f9485f364..a45c944ca 100644 --- a/openlp/core/ui/projector/manager.py +++ b/openlp/core/ui/projector/manager.py @@ -45,18 +45,18 @@ from openlp.core.ui.projector.editform import ProjectorEditForm from openlp.core.ui.projector.sourceselectform import SourceSelectTabs, SourceSelectSingle # Dict for matching projector status to display icon -STATUS_ICONS = {S_NOT_CONNECTED: ':/projector/projector_item_disconnect.png', - S_CONNECTING: ':/projector/projector_item_connect.png', - S_CONNECTED: ':/projector/projector_off.png', - S_OFF: ':/projector/projector_off.png', - S_INITIALIZE: ':/projector/projector_off.png', - S_STANDBY: ':/projector/projector_off.png', - S_WARMUP: ':/projector/projector_warmup.png', - S_ON: ':/projector/projector_on.png', - S_COOLDOWN: ':/projector/projector_cooldown.png', - E_ERROR: ':/projector/projector_error.png', - E_NETWORK: ':/projector/projector_not_connected_error.png', - E_AUTHENTICATION: ':/projector/projector_not_connected_error.png', +STATUS_ICONS = {S_NOT_CONNECTED: ':/projector/projector_item_disconnect.png', + S_CONNECTING: ':/projector/projector_item_connect.png', + S_CONNECTED: ':/projector/projector_off.png', + S_OFF: ':/projector/projector_off.png', + S_INITIALIZE: ':/projector/projector_off.png', + S_STANDBY: ':/projector/projector_off.png', + S_WARMUP: ':/projector/projector_warmup.png', + S_ON: ':/projector/projector_on.png', + S_COOLDOWN: ':/projector/projector_cooldown.png', + E_ERROR: ':/projector/projector_error.png', + E_NETWORK: ':/projector/projector_not_connected_error.png', + E_AUTHENTICATION: ':/projector/projector_not_connected_error.png', E_UNKNOWN_SOCKET_ERROR: ':/projector/projector_not_connected_error.png', E_NOT_CONNECTED: ':/projector/projector_not_connected_error.png' } diff --git a/openlp/core/ui/projector/sourceselectform.py b/openlp/core/ui/projector/sourceselectform.py index d539f2312..23f90cca3 100644 --- a/openlp/core/ui/projector/sourceselectform.py +++ b/openlp/core/ui/projector/sourceselectform.py @@ -443,7 +443,7 @@ class SourceSelectSingle(QDialog): QtGui.QDialogButtonBox.Cancel) self.button_box.clicked.connect(self.button_clicked) self.layout.addWidget(self.button_box) - self.setMinimumHeight(key_count*25) + self.setMinimumHeight(key_count * 25) set_button_tooltip(self.button_box) selected = super(SourceSelectSingle, self).exec_() return selected diff --git a/openlp/core/ui/wizard.py b/openlp/core/ui/wizard.py index c2de33cc5..5724e618f 100644 --- a/openlp/core/ui/wizard.py +++ b/openlp/core/ui/wizard.py @@ -277,7 +277,7 @@ class OpenLPWizard(QtGui.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 += ';;' diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index c97479e4a..4ab1d61c8 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -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') % ( diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index ae71541cb..fee83c9de 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -184,13 +184,13 @@ class PptviewDocument(PresentationDocument): # check if it is a slide match = re.search("slides/slide(.+)\.xml", zip_info.filename) if match: - index = int(match.group(1))-1 + index = int(match.group(1)) - 1 node_type = 'ctrTitle' list_to_add = titles # or a note match = re.search("notesSlides/notesSlide(.+)\.xml", zip_info.filename) if match: - index = int(match.group(1))-1 + index = int(match.group(1)) - 1 node_type = 'body' list_to_add = notes # if it is one of our files, index shouldn't be -1 diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 6be8cb52c..ad1c421f3 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -280,9 +280,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties): return True if len(tags) % 2 != 0: return False - for i in range(len(tags)-1): - if tags[i+1] == "{/" + tags[i][1:]: - del tags[i:i+2] + for i in range(len(tags) - 1): + if tags[i + 1] == "{/" + tags[i][1:]: + del tags[i:i + 2] return self._validate_tags(tags, False) return False diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index 10c20b225..1d08e2c36 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -191,14 +191,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'), diff --git a/openlp/plugins/songs/lib/importers/easyworship.py b/openlp/plugins/songs/lib/importers/easyworship.py index 7de9aa90a..893c07df2 100644 --- a/openlp/plugins/songs/lib/importers/easyworship.py +++ b/openlp/plugins/songs/lib/importers/easyworship.py @@ -123,7 +123,7 @@ class EasyWorshipSongImport(SongImport): log.debug('Given ews file is of unknown version.') return entry_count = self.get_i32(file_pos) - entry_length = self.get_i16(file_pos+4) + entry_length = self.get_i16(file_pos + 4) file_pos += 6 self.import_wizard.progress_bar.setMaximum(entry_count) # Loop over songs diff --git a/openlp/plugins/songs/lib/importers/openlp.py b/openlp/plugins/songs/lib/importers/openlp.py index fc1e89f9b..4f4b938e3 100644 --- a/openlp/plugins/songs/lib/importers/openlp.py +++ b/openlp/plugins/songs/lib/importers/openlp.py @@ -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 diff --git a/openlp/plugins/songs/lib/importers/opensong.py b/openlp/plugins/songs/lib/importers/opensong.py index c42727981..e5e959ef5 100644 --- a/openlp/plugins/songs/lib/importers/opensong.py +++ b/openlp/plugins/songs/lib/importers/opensong.py @@ -171,12 +171,12 @@ class OpenSongImport(SongImport): topics = set(self.topics) if 'theme' in fields: theme = str(root.theme) - subthemes = theme[theme.find(':')+1:].split('/') + subthemes = theme[theme.find(':') + 1:].split('/') for topic in subthemes: topics.add(topic.strip()) if 'alttheme' in fields: theme = str(root.alttheme) - subthemes = theme[theme.find(':')+1:].split('/') + subthemes = theme[theme.find(':') + 1:].split('/') for topic in subthemes: topics.add(topic.strip()) self.topics = list(topics) diff --git a/openlp/plugins/songs/lib/importers/wordsofworship.py b/openlp/plugins/songs/lib/importers/wordsofworship.py index a7ee57187..4f9076072 100644 --- a/openlp/plugins/songs/lib/importers/wordsofworship.py +++ b/openlp/plugins/songs/lib/importers/wordsofworship.py @@ -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) diff --git a/scripts/check_dependencies.py b/scripts/check_dependencies.py index 7969c1988..ce45fc1f3 100755 --- a/scripts/check_dependencies.py +++ b/scripts/check_dependencies.py @@ -93,7 +93,7 @@ OPTIONAL_MODULES = [ ('mysql.connector', '(MySQL support)', True), ('psycopg2', '(PostgreSQL support)', True), ('nose', '(testing framework)', True), - ('mock', '(testing module)', sys.version_info[1] < 3), + ('mock', '(testing module)', sys.version_info[1] < 3), ('jenkins', '(access jenkins api - package name: jenkins-webapi)', True), ] diff --git a/scripts/lp-merge.py b/scripts/lp-merge.py index 8a09f1e0c..4b2a94247 100755 --- a/scripts/lp-merge.py +++ b/scripts/lp-merge.py @@ -96,7 +96,7 @@ for row in bug_rows: #