diff --git a/openlp/core/common/applocation.py b/openlp/core/common/applocation.py index 7f2416676..1fce25000 100644 --- a/openlp/core/common/applocation.py +++ b/openlp/core/common/applocation.py @@ -76,7 +76,7 @@ class AppLocation(object): elif dir_type == AppLocation.PluginsDir: app_path = os.path.abspath(os.path.split(sys.argv[0])[0]) return get_frozen_path(os.path.join(app_path, 'plugins'), - os.path.join(os.path.split(openlp.__file__)[0], 'plugins')) + os.path.join(os.path.split(openlp.__file__)[0], 'plugins')) elif dir_type == AppLocation.VersionDir: return get_frozen_path(os.path.abspath(os.path.split(sys.argv[0])[0]), os.path.split(openlp.__file__)[0]) elif dir_type == AppLocation.LanguageDir: diff --git a/openlp/core/common/openlpmixin.py b/openlp/core/common/openlpmixin.py index 9e7b43539..1c7fe7d5a 100644 --- a/openlp/core/common/openlpmixin.py +++ b/openlp/core/common/openlpmixin.py @@ -91,4 +91,4 @@ class OpenLPMixin(object): Common log exception handler which prints the calling path """ trace_error_handler(self.logger) - self.logger.exception(message) \ No newline at end of file + self.logger.exception(message) diff --git a/openlp/core/common/registryproperties.py b/openlp/core/common/registryproperties.py index 663513c29..791fc33f7 100644 --- a/openlp/core/common/registryproperties.py +++ b/openlp/core/common/registryproperties.py @@ -149,4 +149,4 @@ class RegistryProperties(object): """ if not hasattr(self, '_alerts_manager') or not self._alerts_manager: self._alerts_manager = Registry().get('alerts_manager') - return self._alerts_manager \ No newline at end of file + return self._alerts_manager diff --git a/openlp/core/common/uistrings.py b/openlp/core/common/uistrings.py index 6bb44150c..3fe1485ba 100644 --- a/openlp/core/common/uistrings.py +++ b/openlp/core/common/uistrings.py @@ -73,8 +73,9 @@ class UiStrings(object): self.Default = translate('OpenLP.Ui', 'Default') self.DefaultColor = translate('OpenLP.Ui', 'Default Color:') self.DefaultServiceName = translate('OpenLP.Ui', 'Service %Y-%m-%d %H-%M', - 'This may not contain any of the following characters: /\\?*|<>\[\]":+\n' - 'See http://docs.python.org/library/datetime.html#strftime-strptime-behavior for more information.') + 'This may not contain any of the following characters: /\\?*|<>\[\]":+\n' + 'See http://docs.python.org/library/datetime' + '.html#strftime-strptime-behavior for more information.') self.Delete = translate('OpenLP.Ui', '&Delete') self.DisplayStyle = translate('OpenLP.Ui', 'Display style:') self.Duplicate = translate('OpenLP.Ui', 'Duplicate Error') @@ -132,7 +133,7 @@ class UiStrings(object): self.Service = translate('OpenLP.Ui', 'Service') self.Split = translate('OpenLP.Ui', 'Optional &Split') self.SplitToolTip = translate('OpenLP.Ui', - 'Split a slide into two only if it does not fit on the screen as one slide.') + 'Split a slide into two only if it does not fit on the screen as one slide.') self.StartTimeCode = translate('OpenLP.Ui', 'Start %s') self.StopPlaySlidesInLoop = translate('OpenLP.Ui', 'Stop Play Slides in Loop') self.StopPlaySlidesToEnd = translate('OpenLP.Ui', 'Stop Play Slides to End') diff --git a/openlp/core/lib/filedialog.py b/openlp/core/lib/filedialog.py index 989bafa6b..5bf012ee5 100644 --- a/openlp/core/lib/filedialog.py +++ b/openlp/core/lib/filedialog.py @@ -63,4 +63,4 @@ class FileDialog(QtGui.QFileDialog): UiStrings().FileNotFoundMessage % file) continue file_list.append(file) - return file_list \ No newline at end of file + return file_list diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index 7f6ab67b7..473aa9d7d 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -117,7 +117,9 @@ is the function which has to be called from outside. The generated and returned display: table-cell; word-wrap: break-word; -webkit-transition: opacity 0.4s ease; - white-space:pre-wrap; word-wrap: break-word; text-align: left; vertical-align: top; font-family: Nimbus Sans L; font-size: 40pt; color: #FFFFFF; line-height: 100%; margin: 0;padding: 0; padding-bottom: 0; padding-left: 4px; width: 1580px; height: 810px; + white-space:pre-wrap; word-wrap: break-word; text-align: left; vertical-align: top; font-family: Nimbus + Sans L; font-size: 40pt; color: #FFFFFF; line-height: 100%; margin: 0;padding: 0; padding-bottom: 0; + padding-left: 4px; width: 1580px; height: 810px; } .lyricsmain { -webkit-text-stroke: 0.125em #000000; -webkit-text-fill-color: #FFFFFF; text-shadow: #000000 5px 5px; @@ -720,12 +722,12 @@ def build_lyrics_format_css(theme_data, width, height): else: padding_bottom = '0' lyrics = '%s word-wrap: break-word; ' \ - 'text-align: %s; vertical-align: %s; font-family: %s; ' \ - 'font-size: %spt; color: %s; line-height: %d%%; margin: 0;' \ - 'padding: 0; padding-bottom: %s; padding-left: %spx; width: %spx; height: %spx; ' % \ + 'text-align: %s; vertical-align: %s; font-family: %s; ' \ + 'font-size: %spt; color: %s; line-height: %d%%; margin: 0;' \ + 'padding: 0; padding-bottom: %s; padding-left: %spx; width: %spx; height: %spx; ' % \ (justify, align, valign, theme_data.font_main_name, theme_data.font_main_size, - theme_data.font_main_color, 100 + int(theme_data.font_main_line_adjustment), padding_bottom, - left_margin, width, height) + theme_data.font_main_color, 100 + int(theme_data.font_main_line_adjustment), padding_bottom, + left_margin, width, height) if theme_data.font_main_italics: lyrics += 'font-style:italic; ' if theme_data.font_main_bold: diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py index a22de4140..cba393815 100644 --- a/openlp/core/lib/imagemanager.py +++ b/openlp/core/lib/imagemanager.py @@ -113,8 +113,8 @@ class Image(object): :param path: The image's file path. This should be an existing file path. :param source: The source describes the image's origin. Possible values are described in the :class:`~openlp.core.lib.ImageSource` class. - :param background: A ``QtGui.QColor`` object specifying the colour to be used to fill the gabs if the image's ratio does not - match with the display ratio. + :param background: A ``QtGui.QColor`` object specifying the colour to be used to fill the gabs if the image's + ratio does not match with the display ratio. """ self.path = path diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index cafc24d9b..e14fe8bb0 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -393,4 +393,4 @@ class Plugin(QtCore.QObject, RegistryProperties): """ The plugin's needs to handle a new song creation """ - pass \ No newline at end of file + pass diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py index d6eaafa7d..bb510d046 100644 --- a/openlp/core/lib/searchedit.py +++ b/openlp/core/lib/searchedit.py @@ -120,9 +120,8 @@ class SearchEdit(QtGui.QLineEdit): A list of tuples to be used in the search type menu. The first item in the list will be preselected as the default. - :param items: The list of tuples to use. The tuples should contain an integer identifier, an icon (QIcon instance or - - string) and a title for the item in the menu. In short, they should look like this:: + :param items: The list of tuples to use. The tuples should contain an integer identifier, an icon (QIcon + instance or string) and a title for the item in the menu. In short, they should look like this:: (, , , <place holder text>) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index 21343f039..276a073bb 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -92,578 +92,574 @@ class Ui_AboutDialog(object): Dynamically translate the UI. """ about_dialog.setWindowTitle('%s OpenLP' % UiStrings().About) - self.about_text_edit.setPlainText(translate('OpenLP.AboutForm', - 'OpenLP <version><revision> - Open Source Lyrics ' - 'Projection\n' - '\n' - 'OpenLP is free church presentation software, or lyrics ' - 'projection software, used to display slides of songs, Bible ' - 'verses, videos, images, and even presentations (if ' - 'Impress, PowerPoint or PowerPoint Viewer is installed) ' - 'for church worship using a computer and a data projector.\n' - '\n' - 'Find out more about OpenLP: http://openlp.org/\n' - '\n' - 'OpenLP is written and maintained by volunteers. If you would ' - 'like to see more free Christian software being written, please ' - 'consider volunteering by using the button below.' - )) + self.about_text_edit.setPlainText( + translate('OpenLP.AboutForm', + 'OpenLP <version><revision> - Open Source Lyrics Projection\n' + '\n' + 'OpenLP is free church presentation software, or lyrics ' + 'projection software, used to display slides of songs, Bible ' + 'verses, videos, images, and even presentations (if ' + 'Impress, PowerPoint or PowerPoint Viewer is installed) ' + 'for church worship using a computer and a data projector.\n' + '\n' + 'Find out more about OpenLP: http://openlp.org/\n' + '\n' + 'OpenLP is written and maintained by volunteers. If you would ' + 'like to see more free Christian software being written, please ' + 'consider volunteering by using the button below.')) self.about_notebook.setTabText(self.about_notebook.indexOf(self.about_tab), UiStrings().About) lead = 'Raoul "superfly" Snyman' developers = ['Tim "TRB143" Bentley', 'Jonathan "gushie" Corwin', - 'Michael "cocooncrash" Gorven', - 'Andreas "googol" Preikschat', 'Raoul "superfly" Snyman', - 'Martin "mijiti" Thompson', 'Jon "Meths" Tibble'] + 'Michael "cocooncrash" Gorven', + 'Andreas "googol" Preikschat', 'Raoul "superfly" Snyman', + 'Martin "mijiti" Thompson', 'Jon "Meths" Tibble'] contributors = ['Gerald "jerryb" Britton', - 'Samuel "MrGamgee" Findlay', 'Scott "sguerrieri" Guerrieri', - 'Matthias "matthub" Hub', 'Meinert "m2j" Jordan', - 'Armin "orangeshirt" K\xf6hler', 'Erik "luen" Lundin', - 'Edwin "edwinlunando" Lunando', 'Brian "brianmeyer" Meyer', - 'Joshua "milleja46" Miller', 'Stevan "ElderP" Pettit', - 'Mattias "mahfiaz" P\xf5ldaru', 'Christian "crichter" Richter', - 'Philip "Phill" Ridout', 'Simon "samscudder" Scudder', - 'Jeffrey "whydoubt" Smith', 'Maikel Stuivenberg', - 'Dave "Dave42W" Warnock', 'Frode "frodus" Woldsund', - 'Martin "matysek" Zibricky', 'Patrick "mohij" Zimmermann'] + 'Samuel "MrGamgee" Findlay', 'Scott "sguerrieri" Guerrieri', + 'Matthias "matthub" Hub', 'Meinert "m2j" Jordan', + 'Armin "orangeshirt" K\xf6hler', 'Erik "luen" Lundin', + 'Edwin "edwinlunando" Lunando', 'Brian "brianmeyer" Meyer', + 'Joshua "milleja46" Miller', 'Stevan "ElderP" Pettit', + 'Mattias "mahfiaz" P\xf5ldaru', 'Christian "crichter" Richter', + 'Philip "Phill" Ridout', 'Simon "samscudder" Scudder', + 'Jeffrey "whydoubt" Smith', 'Maikel Stuivenberg', + 'Dave "Dave42W" Warnock', 'Frode "frodus" Woldsund', + 'Martin "matysek" Zibricky', 'Patrick "mohij" Zimmermann'] testers = ['Philip "Phill" Ridout', 'Wesley "wrst" Stout', - 'John "jseagull1" Cegalis (lead)'] + 'John "jseagull1" Cegalis (lead)'] packagers = ['Thomas "tabthorpe" Abthorpe (FreeBSD)', - 'Tim "TRB143" Bentley (Fedora and Android)', - 'Matthias "matthub" Hub (Mac OS X)', - 'Joseph "jdmulloy" Mulloy (openSUSE)', - 'Stevan "ElderP" Pettit (Windows)', - 'Raoul "superfly" Snyman (Debian, Ubuntu)', - 'Garrett "floft" Wilson (Arch Linux)'] + 'Tim "TRB143" Bentley (Fedora and Android)', + 'Matthias "matthub" Hub (Mac OS X)', + 'Joseph "jdmulloy" Mulloy (openSUSE)', + 'Stevan "ElderP" Pettit (Windows)', + 'Raoul "superfly" Snyman (Debian, Ubuntu)', + 'Garrett "floft" Wilson (Arch Linux)'] translators = { 'af': ['Johan "nuvolari" Mynhardt'], 'cs': ['Martin "matysek" Zibricky'], 'da': ['Henrik "Hsonesson" Sonesson'], - 'de': ['Patrick "madmuffin" Br\xfcckner', - 'Meinert "m2j" Jordan', 'Andreas "googol" Preikschat', - 'Christian "crichter" Richter'], + 'de': ['Patrick "madmuffin" Br\xfcckner', 'Meinert "m2j" Jordan', 'Andreas "googol" Preikschat', + 'Christian "crichter" Richter'], 'en_GB': ['Tim "TRB143" Bentley', 'Jonathan "gushie" Corwin'], - 'en_ZA': ['Raoul "superfly" Snyman', - 'Johan "nuvolari" Mynhardt'], + 'en_ZA': ['Raoul "superfly" Snyman', 'Johan "nuvolari" Mynhardt'], 'el': ['Alexander Siozos'], 'es': ['Josu\xe9 Z\xfa\xf1iga', 'Christian Gonzalez'], 'et': ['Mattias "mahfiaz" P\xf5ldaru'], 'fi': ['Jori "joribu" Brander', 'Tobbe "tobbeb" Bildo'], - 'fr': ['Stephan\xe9 "stbrunner" Brunner', 'Jeremie "jnau05"', - 'Carl "carl.fischer" Fischer'], + 'fr': ['Stephan\xe9 "stbrunner" Brunner', 'Jeremie "jnau05"', 'Carl "carl.fischer" Fischer'], 'hu': ['Gyuris Gell\xe9rt'], 'id': ['Mico "bangmico" Siahaan', ' ign_christian'], 'ja': ['Kunio "Kunio" Nakamaru', 'Chris Haris'], 'nb': ['Atle "pendlaren" Weibell', 'Frode "frodus" Woldsund'], 'nl': ['Arjen "typovar" van Voorst'], - 'pt_BR': ['David Mederiros', 'Rafael "rafaellerm" Lerm', - 'Eduardo Levi Chaves', - 'Gustavo Bim', 'Rog\xeanio Bel\xe9m', 'Samuel' - 'Simon "samscudder" Scudder', 'Van Der Fran'], + 'pt_BR': ['David Mederiros', 'Rafael "rafaellerm" Lerm', 'Eduardo Levi Chaves', + 'Gustavo Bim', 'Rog\xeanio Bel\xe9m', 'Samuel Simon "samscudder" Scudder', 'Van Der Fran'], 'ru': ['Sergey "ratz" Ratz'], 'sv': ['Erik "luen" Lundin'], 'ta_LK': ['"Prasad"'], 'zh_CN': [' "executor" '] } - documentors = ['Wesley "wrst" Stout', - 'John "jseagull1" Cegalis (lead)'] - self.credits_text_edit.setPlainText(translate('OpenLP.AboutForm', - 'Project Lead\n' - ' %s\n' - '\n' - 'Developers\n' - ' %s\n' - '\n' - 'Contributors\n' - ' %s\n' - '\n' - 'Testers\n' - ' %s\n' - '\n' - 'Packagers\n' - ' %s\n' - '\n' - 'Translators\n' - ' Afrikaans (af)\n' - ' %s\n' - ' Czech (cs)\n' - ' %s\n' - ' Danish (da)\n' - ' %s\n' - ' German (de)\n' - ' %s\n' - ' Greek (el)\n' - ' %s\n' - ' English, United Kingdom (en_GB)\n' - ' %s\n' - ' English, South Africa (en_ZA)\n' - ' %s\n' - ' Spanish (es)\n' - ' %s\n' - ' Estonian (et)\n' - ' %s\n' - ' Finnish (fi)\n' - ' %s\n' - ' French (fr)\n' - ' %s\n' - ' Hungarian (hu)\n' - ' %s\n' - ' Indonesian (id)\n' - ' %s\n' - ' Japanese (ja)\n' - ' %s\n' - ' Norwegian Bokm\xe5l (nb)\n' - ' %s\n' - ' Dutch (nl)\n' - ' %s\n' - ' Portuguese, Brazil (pt_BR)\n' - ' %s\n' - ' Russian (ru)\n' - ' %s\n' - ' Swedish (sv)\n' - ' %s\n' - ' Tamil(Sri-Lanka) (ta_LK)\n' - ' %s\n' - ' Chinese(China) (zh_CN)\n' - ' %s\n' - '\n' - 'Documentation\n' - ' %s\n' - '\n' - 'Built With\n' - ' Python: http://www.python.org/\n' - ' Qt4: http://qt.digia.com/\n' - ' PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/' - 'intro\n' - ' Oxygen Icons: http://oxygen-icons.org/\n' - '\n' - 'Final Credit\n' - ' "For God so loved the world that He gave\n' - ' His one and only Son, so that whoever\n' - ' believes in Him will not perish but inherit\n' - ' eternal life." -- John 3:16\n\n' - ' And last but not least, final credit goes to\n' - ' God our Father, for sending His Son to die\n' - ' on the cross, setting us free from sin. We\n' - ' bring this software to you for free because\n' - ' He has set us free.') % (lead, '\n '.join(developers), - '\n '.join(contributors), '\n '.join(testers), - '\n '.join(packagers), '\n '.join(translators['af']), - '\n '.join(translators['cs']), - '\n '.join(translators['da']), - '\n '.join(translators['de']), - '\n '.join(translators['el']), - '\n '.join(translators['en_GB']), - '\n '.join(translators['en_ZA']), - '\n '.join(translators['es']), - '\n '.join(translators['et']), - '\n '.join(translators['fi']), - '\n '.join(translators['fr']), - '\n '.join(translators['hu']), - '\n '.join(translators['id']), - '\n '.join(translators['ja']), - '\n '.join(translators['nb']), - '\n '.join(translators['nl']), - '\n '.join(translators['pt_BR']), - '\n '.join(translators['ru']), - '\n '.join(translators['sv']), - '\n '.join(translators['ta_LK']), - '\n '.join(translators['zh_CN']), - '\n '.join(documentors))) + documentors = ['Wesley "wrst" Stout', 'John "jseagull1" Cegalis (lead)'] + self.credits_text_edit.setPlainText( + translate('OpenLP.AboutForm', + 'Project Lead\n' + ' %s\n' + '\n' + 'Developers\n' + ' %s\n' + '\n' + 'Contributors\n' + ' %s\n' + '\n' + 'Testers\n' + ' %s\n' + '\n' + 'Packagers\n' + ' %s\n' + '\n' + 'Translators\n' + ' Afrikaans (af)\n' + ' %s\n' + ' Czech (cs)\n' + ' %s\n' + ' Danish (da)\n' + ' %s\n' + ' German (de)\n' + ' %s\n' + ' Greek (el)\n' + ' %s\n' + ' English, United Kingdom (en_GB)\n' + ' %s\n' + ' English, South Africa (en_ZA)\n' + ' %s\n' + ' Spanish (es)\n' + ' %s\n' + ' Estonian (et)\n' + ' %s\n' + ' Finnish (fi)\n' + ' %s\n' + ' French (fr)\n' + ' %s\n' + ' Hungarian (hu)\n' + ' %s\n' + ' Indonesian (id)\n' + ' %s\n' + ' Japanese (ja)\n' + ' %s\n' + ' Norwegian Bokm\xe5l (nb)\n' + ' %s\n' + ' Dutch (nl)\n' + ' %s\n' + ' Portuguese, Brazil (pt_BR)\n' + ' %s\n' + ' Russian (ru)\n' + ' %s\n' + ' Swedish (sv)\n' + ' %s\n' + ' Tamil(Sri-Lanka) (ta_LK)\n' + ' %s\n' + ' Chinese(China) (zh_CN)\n' + ' %s\n' + '\n' + 'Documentation\n' + ' %s\n' + '\n' + 'Built With\n' + ' Python: http://www.python.org/\n' + ' Qt4: http://qt.digia.com/\n' + ' PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/' + 'intro\n' + ' Oxygen Icons: http://oxygen-icons.org/\n' + '\n' + 'Final Credit\n' + ' "For God so loved the world that He gave\n' + ' His one and only Son, so that whoever\n' + ' believes in Him will not perish but inherit\n' + ' eternal life." -- John 3:16\n\n' + ' And last but not least, final credit goes to\n' + ' God our Father, for sending His Son to die\n' + ' on the cross, setting us free from sin. We\n' + ' bring this software to you for free because\n' + ' He has set us free.') % + (lead, '\n '.join(developers), + '\n '.join(contributors), '\n '.join(testers), + '\n '.join(packagers), '\n '.join(translators['af']), + '\n '.join(translators['cs']), + '\n '.join(translators['da']), + '\n '.join(translators['de']), + '\n '.join(translators['el']), + '\n '.join(translators['en_GB']), + '\n '.join(translators['en_ZA']), + '\n '.join(translators['es']), + '\n '.join(translators['et']), + '\n '.join(translators['fi']), + '\n '.join(translators['fr']), + '\n '.join(translators['hu']), + '\n '.join(translators['id']), + '\n '.join(translators['ja']), + '\n '.join(translators['nb']), + '\n '.join(translators['nl']), + '\n '.join(translators['pt_BR']), + '\n '.join(translators['ru']), + '\n '.join(translators['sv']), + '\n '.join(translators['ta_LK']), + '\n '.join(translators['zh_CN']), + '\n '.join(documentors))) self.about_notebook.setTabText(self.about_notebook.indexOf(self.credits_tab), - translate('OpenLP.AboutForm', 'Credits')) + translate('OpenLP.AboutForm', 'Credits')) copyright_note = translate('OpenLP.AboutForm', - 'Copyright \xa9 2004-2014 %s\n' - 'Portions copyright \xa9 2004-2014 %s') % ('Raoul Snyman', - 'Tim Bentley, Gerald Britton, Jonathan Corwin, Samuel Findlay, ' - 'Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, ' - 'Armin K\xf6hler, Erik Lundin, Edwin Lunando, Joshua Miller, ' - 'Brian T. Meyer, Stevan Pettit, Andreas Preikschat, ' - 'Mattias P\xf5ldaru, Christian Richter, ' - 'Philip Ridout, Simon Scudder, Jeffrey Smith, Maikel Stuivenberg, ' - 'Martin Thompson, Jon Tibble, Dave Warnock, Frode Woldsund, ' - 'Martin Zibricky, Patrick Zimmermann') + 'Copyright \xa9 2004-2014 %s\n' + 'Portions copyright \xa9 2004-2014 %s') % \ + ('Raoul Snyman', + 'Tim Bentley, Gerald Britton, Jonathan Corwin, Samuel Findlay, ' + 'Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, ' + 'Armin K\xf6hler, Erik Lundin, Edwin Lunando, Joshua Miller, ' + 'Brian T. Meyer, Stevan Pettit, Andreas Preikschat, ' + 'Mattias P\xf5ldaru, Christian Richter, ' + 'Philip Ridout, Simon Scudder, Jeffrey Smith, Maikel Stuivenberg, ' + 'Martin Thompson, Jon Tibble, Dave Warnock, Frode Woldsund, ' + 'Martin Zibricky, Patrick Zimmermann') licence = translate('OpenLP.AboutForm', - 'This program is free software; you can redistribute it and/or ' - 'modify it under the terms of the GNU General Public License as ' - 'published by the Free Software Foundation; version 2 of the ' - 'License.') + 'This program is free software; you can redistribute it and/or ' + 'modify it under the terms of the GNU General Public License as ' + 'published by the Free Software Foundation; version 2 of the ' + 'License.') disclaimer = translate('OpenLP.AboutForm', - 'This program is distributed in the hope that it will be useful, ' - 'but WITHOUT ANY WARRANTY; without even the implied warranty of ' - 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See below ' - 'for more details.') + 'This program is distributed in the hope that it will be useful, ' + 'but WITHOUT ANY WARRANTY; without even the implied warranty of ' + 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See below ' + 'for more details.') gpl_text = ('GNU GENERAL PUBLIC LICENSE\n' - 'Version 2, June 1991\n' - '\n' - 'Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 ' - 'Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ' - 'Everyone is permitted to copy and distribute verbatim copies of ' - 'this license document, but changing it is not allowed.\n' - '\n' - 'Preamble\n' - '\n' - 'The licenses for most software are designed to take away your ' - 'freedom to share and change it. By contrast, the GNU General ' - 'Public License is intended to guarantee your freedom to share ' - 'and change free software--to make sure the software is free for ' - 'all its users. This General Public License applies to most of ' - 'the Free Software Foundation\'s software and to any other ' - 'program whose authors commit to using it. (Some other Free ' - 'Software Foundation software is covered by the GNU Lesser ' - 'General Public License instead.) You can apply it to your ' - 'programs, too.\n' - '\n' - 'When we speak of free software, we are referring to freedom, not ' - 'price. Our General Public Licenses are designed to make sure ' - 'that you have the freedom to distribute copies of free software ' - '(and charge for this service if you wish), that you receive ' - 'source code or can get it if you want it, that you can change ' - 'the software or use pieces of it in new free programs; and that ' - 'you know you can do these things.\n' - '\n' - 'To protect your rights, we need to make restrictions that forbid ' - 'anyone to deny you these rights or to ask you to surrender the ' - 'rights. These restrictions translate to certain responsibilities ' - 'for you if you distribute copies of the software, or if you ' - 'modify it.\n' - '\n' - 'For example, if you distribute copies of such a program, whether ' - 'gratis or for a fee, you must give the recipients all the rights ' - 'that you have. You must make sure that they, too, receive or ' - 'can get the source code. And you must show them these terms so ' - 'they know their rights.\n' - '\n' - 'We protect your rights with two steps: (1) copyright the ' - 'software, and (2) offer you this license which gives you legal ' - 'permission to copy, distribute and/or modify the software.\n' - '\n' - 'Also, for each author\'s protection and ours, we want to make ' - 'certain that everyone understands that there is no warranty for ' - 'this free software. If the software is modified by someone else ' - 'and passed on, we want its recipients to know that what they ' - 'have is not the original, so that any problems introduced by ' - 'others will not reflect on the original authors\' reputations.\n' - '\n' - 'Finally, any free program is threatened constantly by software ' - 'patents. We wish to avoid the danger that redistributors of a ' - 'free program will individually obtain patent licenses, in effect ' - 'making the program proprietary. To prevent this, we have made ' - 'it clear that any patent must be licensed for everyone\'s free ' - 'use or not licensed at all.\n' - '\n' - 'The precise terms and conditions for copying, distribution and ' - 'modification follow.\n' - '\n' - 'GNU GENERAL PUBLIC LICENSE\n' - 'TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n' - '\n' - '0. This License applies to any program or other work which ' - 'contains a notice placed by the copyright holder saying it may ' - 'be distributed under the terms of this General Public License. ' - 'The "Program", below, refers to any such program or work, and a ' - '"work based on the Program" means either the Program or any ' - 'derivative work under copyright law: that is to say, a work ' - 'containing the Program or a portion of it, either verbatim or ' - 'with modifications and/or translated into another language. ' - '(Hereinafter, translation is included without limitation in the ' - 'term "modification".) Each licensee is addressed as "you".\n' - '\n' - 'Activities other than copying, distribution and modification are ' - 'not covered by this License; they are outside its scope. The ' - 'act of running the Program is not restricted, and the output ' - 'from the Program is covered only if its contents constitute a ' - 'work based on the Program (independent of having been made by ' - 'running the Program). Whether that is true depends on what the ' - 'Program does.\n' - '\n' - '1. You may copy and distribute verbatim copies of the Program\'s ' - 'source code as you receive it, in any medium, provided that you ' - 'conspicuously and appropriately publish on each copy an ' - 'appropriate copyright notice and disclaimer of warranty; keep ' - 'intact all the notices that refer to this License and to the ' - 'absence of any warranty; and give any other recipients of the ' - 'Program a copy of this License along with the Program.\n' - '\n' - 'You may charge a fee for the physical act of transferring a ' - 'copy, and you may at your option offer warranty protection in ' - 'exchange for a fee.\n' - '\n' - '2. You may modify your copy or copies of the Program or any ' - 'portion of it, thus forming a work based on the Program, and ' - 'copy and distribute such modifications or work under the terms ' - 'of Section 1 above, provided that you also meet all of these ' - 'conditions:\n' - '\n' - 'a) You must cause the modified files to carry prominent notices ' - 'stating that you changed the files and the date of any change.\n' - '\n' - 'b) You must cause any work that you distribute or publish, that ' - 'in whole or in part contains or is derived from the Program or ' - 'any part thereof, to be licensed as a whole at no charge to all ' - 'third parties under the terms of this License.\n' - '\n' - 'c) If the modified program normally reads commands interactively ' - 'when run, you must cause it, when started running for such ' - 'interactive use in the most ordinary way, to print or display an ' - 'announcement including an appropriate copyright notice and a ' - 'notice that there is no warranty (or else, saying that you ' - 'provide a warranty) and that users may redistribute the program ' - 'under these conditions, and telling the user how to view a copy ' - 'of this License. (Exception: if the Program itself is ' - 'interactive but does not normally print such an announcement, ' - 'your work based on the Program is not required to print an ' - 'announcement.)\n' - '\n' - 'These requirements apply to the modified work as a whole. If ' - 'identifiable sections of that work are not derived from the ' - 'Program, and can be reasonably considered independent and ' - 'separate works in themselves, then this License, and its terms, ' - 'do not apply to those sections when you distribute them as ' - 'separate works. But when you distribute the same sections as ' - 'part of a whole which is a work based on the Program, the ' - 'distribution of the whole must be on the terms of this License, ' - 'whose permissions for other licensees extend to the entire ' - 'whole, and thus to each and every part regardless of who wrote ' - 'it.\n' - '\n' - 'Thus, it is not the intent of this section to claim rights or ' - 'contest your rights to work written entirely by you; rather, the ' - 'intent is to exercise the right to control the distribution of ' - 'derivative or collective works based on the Program.\n' - '\n' - 'In addition, mere aggregation of another work not based on the ' - 'Program with the Program (or with a work based on the Program) ' - 'on a volume of a storage or distribution medium does not bring ' - 'the other work under the scope of this License.\n' - '\n' - '3. You may copy and distribute the Program (or a work based on ' - 'it, under Section 2) in object code or executable form under the ' - 'terms of Sections 1 and 2 above provided that you also do one of ' - 'the following:\n' - '\n' - 'a) Accompany it with the complete corresponding machine-readable ' - 'source code, which must be distributed under the terms of ' - 'Sections 1 and 2 above on a medium customarily used for software ' - 'interchange; or,\n' - '\n' - 'b) Accompany it with a written offer, valid for at least three ' - 'years, to give any third party, for a charge no more than your ' - 'cost of physically performing source distribution, a complete ' - 'machine-readable copy of the corresponding source code, to be ' - 'distributed under the terms of Sections 1 and 2 above on a ' - 'medium customarily used for software interchange; or,\n' - '\n' - 'c) Accompany it with the information you received as to the ' - 'offer to distribute corresponding source code. (This ' - 'alternative is allowed only for noncommercial distribution and ' - 'only if you received the program in object code or executable ' - 'form with such an offer, in accord with Subsection b above.)\n' - '\n' - 'The source code for a work means the preferred form of the work ' - 'for making modifications to it. For an executable work, ' - 'complete source code means all the source code for all modules ' - 'it contains, plus any associated interface definition files, ' - 'plus the scripts used to control compilation and installation of ' - 'the executable. However, as a special exception, the source ' - 'code distributed need not include anything that is normally ' - 'distributed (in either source or binary form) with the major ' - 'components (compiler, kernel, and so on) of the operating system ' - 'on which the executable runs, unless that component itself ' - 'accompanies the executable.\n' - '\n' - 'If distribution of executable or object code is made by offering ' - 'access to copy from a designated place, then offering equivalent ' - 'access to copy the source code from the same place counts as ' - 'distribution of the source code, even though third parties are ' - 'not compelled to copy the source along with the object code.\n' - '\n' - '4. You may not copy, modify, sublicense, or distribute the ' - 'Program except as expressly provided under this License. Any ' - 'attempt otherwise to copy, modify, sublicense or distribute the ' - 'Program is void, and will automatically terminate your rights ' - 'under this License. However, parties who have received copies, ' - 'or rights, from you under this License will not have their ' - 'licenses terminated so long as such parties remain in full ' - 'compliance.\n' - '\n' - '5. You are not required to accept this License, since you have ' - 'not signed it. However, nothing else grants you permission to ' - 'modify or distribute the Program or its derivative works. These ' - 'actions are prohibited by law if you do not accept this ' - 'License. Therefore, by modifying or distributing the Program ' - '(or any work based on the Program), you indicate your acceptance ' - 'of this License to do so, and all its terms and conditions for ' - 'copying, distributing or modifying the Program or works based on ' - 'it.\n' - '\n' - '6. Each time you redistribute the Program (or any work based on ' - 'the Program), the recipient automatically receives a license ' - 'from the original licensor to copy, distribute or modify the ' - 'Program subject to these terms and conditions. You may not ' - 'impose any further restrictions on the recipients\' exercise of ' - 'the rights granted herein. You are not responsible for enforcing ' - 'compliance by third parties to this License.\n' - '\n' - '7. If, as a consequence of a court judgment or allegation of ' - 'patent infringement or for any other reason (not limited to ' - 'patent issues), conditions are imposed on you (whether by court ' - 'order, agreement or otherwise) that contradict the conditions of ' - 'this License, they do not excuse you from the conditions of this ' - 'License. If you cannot distribute so as to satisfy ' - 'simultaneously your obligations under this License and any other ' - 'pertinent obligations, then as a consequence you may not ' - 'distribute the Program at all. For example, if a patent license ' - 'would not permit royalty-free redistribution of the Program by ' - 'all those who receive copies directly or indirectly through you, ' - 'then the only way you could satisfy both it and this License ' - 'would be to refrain entirely from distribution of the Program.\n' - '\n' - 'If any portion of this section is held invalid or unenforceable ' - 'under any particular circumstance, the balance of the section is ' - 'intended to apply and the section as a whole is intended to ' - 'apply in other circumstances.\n' - '\n' - 'It is not the purpose of this section to induce you to infringe ' - 'any patents or other property right claims or to contest ' - 'validity of any such claims; this section has the sole purpose ' - 'of protecting the integrity of the free software distribution ' - 'system, which is implemented by public license practices. Many ' - 'people have made generous contributions to the wide range of ' - 'software distributed through that system in reliance on ' - 'consistent application of that system; it is up to the ' - 'author/donor to decide if he or she is willing to distribute ' - 'software through any other system and a licensee cannot impose ' - 'that choice.\n' - '\n' - 'This section is intended to make thoroughly clear what is ' - 'believed to be a consequence of the rest of this License.\n' - '\n' - '8. If the distribution and/or use of the Program is restricted ' - 'in certain countries either by patents or by copyrighted ' - 'interfaces, the original copyright holder who places the Program ' - 'under this License may add an explicit geographical distribution ' - 'limitation excluding those countries, so that distribution is ' - 'permitted only in or among countries not thus excluded. In such ' - 'case, this License incorporates the limitation as if written in ' - 'the body of this License.\n' - '\n' - '9. The Free Software Foundation may publish revised and/or new ' - 'versions of the General Public License from time to time. Such ' - 'new versions will be similar in spirit to the present version, ' - 'but may differ in detail to address new problems or concerns.\n' - '\n' - 'Each version is given a distinguishing version number. If the ' - 'Program specifies a version number of this License which applies ' - 'to it and "any later version", you have the option of ' - 'following the terms and conditions either of that version or of ' - 'any later version published by the Free Software Foundation. If ' - 'the Program does not specify a version number of this License, ' - 'you may choose any version ever published by the Free Software ' - 'Foundation.\n' - '\n' - '10. If you wish to incorporate parts of the Program into other ' - 'free programs whose distribution conditions are different, write ' - 'to the author to ask for permission. For software which is ' - 'copyrighted by the Free Software Foundation, write to the Free ' - 'Software Foundation; we sometimes make exceptions for this. Our ' - 'decision will be guided by the two goals of preserving the free ' - 'status of all derivatives of our free software and of promoting ' - 'the sharing and reuse of software generally.\n' - '\n' - 'NO WARRANTY\n' - '\n' - '11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO ' - 'WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE ' - 'LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT ' - 'HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT ' - 'WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, ' - 'BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ' - 'AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE ' - 'QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ' - 'PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY ' - 'SERVICING, REPAIR OR CORRECTION.\n' - '\n' - '12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO ' - 'IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY ' - 'MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE ' - 'LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, ' - 'INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR ' - 'INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS ' - 'OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ' - 'YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ' - 'ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ' - 'ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n' - '\n' - 'END OF TERMS AND CONDITIONS\n' - '\n' - 'How to Apply These Terms to Your New Programs\n' - '\n' - 'If you develop a new program, and you want it to be of the ' - 'greatest possible use to the public, the best way to achieve ' - 'this is to make it free software which everyone can redistribute ' - 'and change under these terms.\n' - '\n' - 'To do so, attach the following notices to the program. It is ' - 'safest to attach them to the start of each source file to most ' - 'effectively convey the exclusion of warranty; and each file ' - 'should have at least the "copyright" line and a pointer to where ' - 'the full notice is found.\n' - '\n' - '<one line to give the program\'s name and a brief idea of what ' - 'it does.>\n' - 'Copyright (C) <year> <name of author>\n' - '\n' - 'This program is free software; you can redistribute it and/or ' - 'modify it under the terms of the GNU General Public License as ' - 'published by the Free Software Foundation; either version 2 of ' - 'the License, or (at your option) any later version.\n' - '\n' - 'This program is distributed in the hope that it will be useful, ' - 'but WITHOUT ANY WARRANTY; without even the implied warranty of ' - 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' - 'GNU General Public License for more details.\n' - '\n' - 'You should have received a copy of the GNU General Public ' - 'License along with this program; if not, write to the Free ' - 'Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ' - 'Boston, MA 02110-1301 USA.\n' - '\n' - 'Also add information on how to contact you by electronic and ' - 'paper mail.\n' - '\n' - 'If the program is interactive, make it output a short notice ' - 'like this when it starts in an interactive mode:\n' - '\n' - 'Gnomovision version 69, Copyright (C) year name of author\n' - 'Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type ' - '"show w".\n' - 'This is free software, and you are welcome to redistribute it ' - 'under certain conditions; type "show c" for details.\n' - '\n' - 'The hypothetical commands "show w" and "show c" should show ' - 'the appropriate parts of the General Public License. Of course, ' - 'the commands you use may be called something other than "show ' - 'w" and "show c"; they could even be mouse-clicks or menu items--' - 'whatever suits your program.\n' - '\n' - 'You should also get your employer (if you work as a programmer) ' - 'or your school, if any, to sign a "copyright disclaimer" for the ' - 'program, if necessary. Here is a sample; alter the names:\n' - '\n' - 'Yoyodyne, Inc., hereby disclaims all copyright interest in the ' - 'program "Gnomovision" (which makes passes at compilers) written ' - 'by James Hacker.\n' - '\n' - '<signature of Ty Coon>, 1 April 1989\n' - 'Ty Coon, President of Vice\n' - '\n' - 'This General Public License does not permit incorporating your ' - 'program into proprietary programs. If your program is a ' - 'subroutine library, you may consider it more useful to permit ' - 'linking proprietary applications with the library. If this is ' - 'what you want to do, use the GNU Lesser General Public License ' - 'instead of this License.') + 'Version 2, June 1991\n' + '\n' + 'Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 ' + 'Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ' + 'Everyone is permitted to copy and distribute verbatim copies of ' + 'this license document, but changing it is not allowed.\n' + '\n' + 'Preamble\n' + '\n' + 'The licenses for most software are designed to take away your ' + 'freedom to share and change it. By contrast, the GNU General ' + 'Public License is intended to guarantee your freedom to share ' + 'and change free software--to make sure the software is free for ' + 'all its users. This General Public License applies to most of ' + 'the Free Software Foundation\'s software and to any other ' + 'program whose authors commit to using it. (Some other Free ' + 'Software Foundation software is covered by the GNU Lesser ' + 'General Public License instead.) You can apply it to your ' + 'programs, too.\n' + '\n' + 'When we speak of free software, we are referring to freedom, not ' + 'price. Our General Public Licenses are designed to make sure ' + 'that you have the freedom to distribute copies of free software ' + '(and charge for this service if you wish), that you receive ' + 'source code or can get it if you want it, that you can change ' + 'the software or use pieces of it in new free programs; and that ' + 'you know you can do these things.\n' + '\n' + 'To protect your rights, we need to make restrictions that forbid ' + 'anyone to deny you these rights or to ask you to surrender the ' + 'rights. These restrictions translate to certain responsibilities ' + 'for you if you distribute copies of the software, or if you ' + 'modify it.\n' + '\n' + 'For example, if you distribute copies of such a program, whether ' + 'gratis or for a fee, you must give the recipients all the rights ' + 'that you have. You must make sure that they, too, receive or ' + 'can get the source code. And you must show them these terms so ' + 'they know their rights.\n' + '\n' + 'We protect your rights with two steps: (1) copyright the ' + 'software, and (2) offer you this license which gives you legal ' + 'permission to copy, distribute and/or modify the software.\n' + '\n' + 'Also, for each author\'s protection and ours, we want to make ' + 'certain that everyone understands that there is no warranty for ' + 'this free software. If the software is modified by someone else ' + 'and passed on, we want its recipients to know that what they ' + 'have is not the original, so that any problems introduced by ' + 'others will not reflect on the original authors\' reputations.\n' + '\n' + 'Finally, any free program is threatened constantly by software ' + 'patents. We wish to avoid the danger that redistributors of a ' + 'free program will individually obtain patent licenses, in effect ' + 'making the program proprietary. To prevent this, we have made ' + 'it clear that any patent must be licensed for everyone\'s free ' + 'use or not licensed at all.\n' + '\n' + 'The precise terms and conditions for copying, distribution and ' + 'modification follow.\n' + '\n' + 'GNU GENERAL PUBLIC LICENSE\n' + 'TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n' + '\n' + '0. This License applies to any program or other work which ' + 'contains a notice placed by the copyright holder saying it may ' + 'be distributed under the terms of this General Public License. ' + 'The "Program", below, refers to any such program or work, and a ' + '"work based on the Program" means either the Program or any ' + 'derivative work under copyright law: that is to say, a work ' + 'containing the Program or a portion of it, either verbatim or ' + 'with modifications and/or translated into another language. ' + '(Hereinafter, translation is included without limitation in the ' + 'term "modification".) Each licensee is addressed as "you".\n' + '\n' + 'Activities other than copying, distribution and modification are ' + 'not covered by this License; they are outside its scope. The ' + 'act of running the Program is not restricted, and the output ' + 'from the Program is covered only if its contents constitute a ' + 'work based on the Program (independent of having been made by ' + 'running the Program). Whether that is true depends on what the ' + 'Program does.\n' + '\n' + '1. You may copy and distribute verbatim copies of the Program\'s ' + 'source code as you receive it, in any medium, provided that you ' + 'conspicuously and appropriately publish on each copy an ' + 'appropriate copyright notice and disclaimer of warranty; keep ' + 'intact all the notices that refer to this License and to the ' + 'absence of any warranty; and give any other recipients of the ' + 'Program a copy of this License along with the Program.\n' + '\n' + 'You may charge a fee for the physical act of transferring a ' + 'copy, and you may at your option offer warranty protection in ' + 'exchange for a fee.\n' + '\n' + '2. You may modify your copy or copies of the Program or any ' + 'portion of it, thus forming a work based on the Program, and ' + 'copy and distribute such modifications or work under the terms ' + 'of Section 1 above, provided that you also meet all of these ' + 'conditions:\n' + '\n' + 'a) You must cause the modified files to carry prominent notices ' + 'stating that you changed the files and the date of any change.\n' + '\n' + 'b) You must cause any work that you distribute or publish, that ' + 'in whole or in part contains or is derived from the Program or ' + 'any part thereof, to be licensed as a whole at no charge to all ' + 'third parties under the terms of this License.\n' + '\n' + 'c) If the modified program normally reads commands interactively ' + 'when run, you must cause it, when started running for such ' + 'interactive use in the most ordinary way, to print or display an ' + 'announcement including an appropriate copyright notice and a ' + 'notice that there is no warranty (or else, saying that you ' + 'provide a warranty) and that users may redistribute the program ' + 'under these conditions, and telling the user how to view a copy ' + 'of this License. (Exception: if the Program itself is ' + 'interactive but does not normally print such an announcement, ' + 'your work based on the Program is not required to print an ' + 'announcement.)\n' + '\n' + 'These requirements apply to the modified work as a whole. If ' + 'identifiable sections of that work are not derived from the ' + 'Program, and can be reasonably considered independent and ' + 'separate works in themselves, then this License, and its terms, ' + 'do not apply to those sections when you distribute them as ' + 'separate works. But when you distribute the same sections as ' + 'part of a whole which is a work based on the Program, the ' + 'distribution of the whole must be on the terms of this License, ' + 'whose permissions for other licensees extend to the entire ' + 'whole, and thus to each and every part regardless of who wrote ' + 'it.\n' + '\n' + 'Thus, it is not the intent of this section to claim rights or ' + 'contest your rights to work written entirely by you; rather, the ' + 'intent is to exercise the right to control the distribution of ' + 'derivative or collective works based on the Program.\n' + '\n' + 'In addition, mere aggregation of another work not based on the ' + 'Program with the Program (or with a work based on the Program) ' + 'on a volume of a storage or distribution medium does not bring ' + 'the other work under the scope of this License.\n' + '\n' + '3. You may copy and distribute the Program (or a work based on ' + 'it, under Section 2) in object code or executable form under the ' + 'terms of Sections 1 and 2 above provided that you also do one of ' + 'the following:\n' + '\n' + 'a) Accompany it with the complete corresponding machine-readable ' + 'source code, which must be distributed under the terms of ' + 'Sections 1 and 2 above on a medium customarily used for software ' + 'interchange; or,\n' + '\n' + 'b) Accompany it with a written offer, valid for at least three ' + 'years, to give any third party, for a charge no more than your ' + 'cost of physically performing source distribution, a complete ' + 'machine-readable copy of the corresponding source code, to be ' + 'distributed under the terms of Sections 1 and 2 above on a ' + 'medium customarily used for software interchange; or,\n' + '\n' + 'c) Accompany it with the information you received as to the ' + 'offer to distribute corresponding source code. (This ' + 'alternative is allowed only for noncommercial distribution and ' + 'only if you received the program in object code or executable ' + 'form with such an offer, in accord with Subsection b above.)\n' + '\n' + 'The source code for a work means the preferred form of the work ' + 'for making modifications to it. For an executable work, ' + 'complete source code means all the source code for all modules ' + 'it contains, plus any associated interface definition files, ' + 'plus the scripts used to control compilation and installation of ' + 'the executable. However, as a special exception, the source ' + 'code distributed need not include anything that is normally ' + 'distributed (in either source or binary form) with the major ' + 'components (compiler, kernel, and so on) of the operating system ' + 'on which the executable runs, unless that component itself ' + 'accompanies the executable.\n' + '\n' + 'If distribution of executable or object code is made by offering ' + 'access to copy from a designated place, then offering equivalent ' + 'access to copy the source code from the same place counts as ' + 'distribution of the source code, even though third parties are ' + 'not compelled to copy the source along with the object code.\n' + '\n' + '4. You may not copy, modify, sublicense, or distribute the ' + 'Program except as expressly provided under this License. Any ' + 'attempt otherwise to copy, modify, sublicense or distribute the ' + 'Program is void, and will automatically terminate your rights ' + 'under this License. However, parties who have received copies, ' + 'or rights, from you under this License will not have their ' + 'licenses terminated so long as such parties remain in full ' + 'compliance.\n' + '\n' + '5. You are not required to accept this License, since you have ' + 'not signed it. However, nothing else grants you permission to ' + 'modify or distribute the Program or its derivative works. These ' + 'actions are prohibited by law if you do not accept this ' + 'License. Therefore, by modifying or distributing the Program ' + '(or any work based on the Program), you indicate your acceptance ' + 'of this License to do so, and all its terms and conditions for ' + 'copying, distributing or modifying the Program or works based on ' + 'it.\n' + '\n' + '6. Each time you redistribute the Program (or any work based on ' + 'the Program), the recipient automatically receives a license ' + 'from the original licensor to copy, distribute or modify the ' + 'Program subject to these terms and conditions. You may not ' + 'impose any further restrictions on the recipients\' exercise of ' + 'the rights granted herein. You are not responsible for enforcing ' + 'compliance by third parties to this License.\n' + '\n' + '7. If, as a consequence of a court judgment or allegation of ' + 'patent infringement or for any other reason (not limited to ' + 'patent issues), conditions are imposed on you (whether by court ' + 'order, agreement or otherwise) that contradict the conditions of ' + 'this License, they do not excuse you from the conditions of this ' + 'License. If you cannot distribute so as to satisfy ' + 'simultaneously your obligations under this License and any other ' + 'pertinent obligations, then as a consequence you may not ' + 'distribute the Program at all. For example, if a patent license ' + 'would not permit royalty-free redistribution of the Program by ' + 'all those who receive copies directly or indirectly through you, ' + 'then the only way you could satisfy both it and this License ' + 'would be to refrain entirely from distribution of the Program.\n' + '\n' + 'If any portion of this section is held invalid or unenforceable ' + 'under any particular circumstance, the balance of the section is ' + 'intended to apply and the section as a whole is intended to ' + 'apply in other circumstances.\n' + '\n' + 'It is not the purpose of this section to induce you to infringe ' + 'any patents or other property right claims or to contest ' + 'validity of any such claims; this section has the sole purpose ' + 'of protecting the integrity of the free software distribution ' + 'system, which is implemented by public license practices. Many ' + 'people have made generous contributions to the wide range of ' + 'software distributed through that system in reliance on ' + 'consistent application of that system; it is up to the ' + 'author/donor to decide if he or she is willing to distribute ' + 'software through any other system and a licensee cannot impose ' + 'that choice.\n' + '\n' + 'This section is intended to make thoroughly clear what is ' + 'believed to be a consequence of the rest of this License.\n' + '\n' + '8. If the distribution and/or use of the Program is restricted ' + 'in certain countries either by patents or by copyrighted ' + 'interfaces, the original copyright holder who places the Program ' + 'under this License may add an explicit geographical distribution ' + 'limitation excluding those countries, so that distribution is ' + 'permitted only in or among countries not thus excluded. In such ' + 'case, this License incorporates the limitation as if written in ' + 'the body of this License.\n' + '\n' + '9. The Free Software Foundation may publish revised and/or new ' + 'versions of the General Public License from time to time. Such ' + 'new versions will be similar in spirit to the present version, ' + 'but may differ in detail to address new problems or concerns.\n' + '\n' + 'Each version is given a distinguishing version number. If the ' + 'Program specifies a version number of this License which applies ' + 'to it and "any later version", you have the option of ' + 'following the terms and conditions either of that version or of ' + 'any later version published by the Free Software Foundation. If ' + 'the Program does not specify a version number of this License, ' + 'you may choose any version ever published by the Free Software ' + 'Foundation.\n' + '\n' + '10. If you wish to incorporate parts of the Program into other ' + 'free programs whose distribution conditions are different, write ' + 'to the author to ask for permission. For software which is ' + 'copyrighted by the Free Software Foundation, write to the Free ' + 'Software Foundation; we sometimes make exceptions for this. Our ' + 'decision will be guided by the two goals of preserving the free ' + 'status of all derivatives of our free software and of promoting ' + 'the sharing and reuse of software generally.\n' + '\n' + 'NO WARRANTY\n' + '\n' + '11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO ' + 'WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE ' + 'LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT ' + 'HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT ' + 'WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, ' + 'BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ' + 'AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE ' + 'QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ' + 'PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY ' + 'SERVICING, REPAIR OR CORRECTION.\n' + '\n' + '12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO ' + 'IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY ' + 'MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE ' + 'LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, ' + 'INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR ' + 'INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS ' + 'OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ' + 'YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ' + 'ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ' + 'ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n' + '\n' + 'END OF TERMS AND CONDITIONS\n' + '\n' + 'How to Apply These Terms to Your New Programs\n' + '\n' + 'If you develop a new program, and you want it to be of the ' + 'greatest possible use to the public, the best way to achieve ' + 'this is to make it free software which everyone can redistribute ' + 'and change under these terms.\n' + '\n' + 'To do so, attach the following notices to the program. It is ' + 'safest to attach them to the start of each source file to most ' + 'effectively convey the exclusion of warranty; and each file ' + 'should have at least the "copyright" line and a pointer to where ' + 'the full notice is found.\n' + '\n' + '<one line to give the program\'s name and a brief idea of what ' + 'it does.>\n' + 'Copyright (C) <year> <name of author>\n' + '\n' + 'This program is free software; you can redistribute it and/or ' + 'modify it under the terms of the GNU General Public License as ' + 'published by the Free Software Foundation; either version 2 of ' + 'the License, or (at your option) any later version.\n' + '\n' + 'This program is distributed in the hope that it will be useful, ' + 'but WITHOUT ANY WARRANTY; without even the implied warranty of ' + 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' + 'GNU General Public License for more details.\n' + '\n' + 'You should have received a copy of the GNU General Public ' + 'License along with this program; if not, write to the Free ' + 'Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ' + 'Boston, MA 02110-1301 USA.\n' + '\n' + 'Also add information on how to contact you by electronic and ' + 'paper mail.\n' + '\n' + 'If the program is interactive, make it output a short notice ' + 'like this when it starts in an interactive mode:\n' + '\n' + 'Gnomovision version 69, Copyright (C) year name of author\n' + 'Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type ' + '"show w".\n' + 'This is free software, and you are welcome to redistribute it ' + 'under certain conditions; type "show c" for details.\n' + '\n' + 'The hypothetical commands "show w" and "show c" should show ' + 'the appropriate parts of the General Public License. Of course, ' + 'the commands you use may be called something other than "show ' + 'w" and "show c"; they could even be mouse-clicks or menu items--' + 'whatever suits your program.\n' + '\n' + 'You should also get your employer (if you work as a programmer) ' + 'or your school, if any, to sign a "copyright disclaimer" for the ' + 'program, if necessary. Here is a sample; alter the names:\n' + '\n' + 'Yoyodyne, Inc., hereby disclaims all copyright interest in the ' + 'program "Gnomovision" (which makes passes at compilers) written ' + 'by James Hacker.\n' + '\n' + '<signature of Ty Coon>, 1 April 1989\n' + 'Ty Coon, President of Vice\n' + '\n' + 'This General Public License does not permit incorporating your ' + 'program into proprietary programs. If your program is a ' + 'subroutine library, you may consider it more useful to permit ' + 'linking proprietary applications with the library. If this is ' + 'what you want to do, use the GNU Lesser General Public License ' + 'instead of this License.') self.license_text_edit.setPlainText('%s\n\n%s\n\n%s\n\n\n%s' % (copyright_note, licence, disclaimer, gpl_text)) self.about_notebook.setTabText(self.about_notebook.indexOf(self.license_tab), - translate('OpenLP.AboutForm', 'License')) + translate('OpenLP.AboutForm', 'License')) self.volunteer_button.setText(translate('OpenLP.AboutForm', 'Volunteer')) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index cb0de776f..b2c8cd14b 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -263,7 +263,7 @@ class AdvancedTab(SettingsTab): """ Setup the interface translation strings. """ - self.tabTitleVisible = UiStrings().Advanced + self.tab_title_visible = UiStrings().Advanced self.ui_group_box.setTitle(translate('OpenLP.AdvancedTab', 'UI Settings')) self.data_directory_group_box.setTitle(translate('OpenLP.AdvancedTab', 'Data Location')) self.recent_label.setText(translate('OpenLP.AdvancedTab', 'Number of recent files to display:')) @@ -319,7 +319,7 @@ class AdvancedTab(SettingsTab): translate('OpenLP.AdvancedTab', '<strong>WARNING:</strong> New data directory location contains ' 'OpenLP data files. These files WILL be replaced during a copy.')) self.display_workaround_group_box.setTitle(translate('OpenLP.AdvancedTab', 'Display Workarounds')) - self.x11_bypass_check_box.setText(translate('OpenLP.AdvancedTab','Bypass X11 Window Manager')) + self.x11_bypass_check_box.setText(translate('OpenLP.AdvancedTab', 'Bypass X11 Window Manager')) self.alternate_rows_check_box.setText(translate('OpenLP.AdvancedTab', 'Use alternating row colours in lists')) # Slide Limits self.slide_group_box.setTitle(translate('OpenLP.GeneralTab', 'Service Item Slide Limits')) @@ -375,7 +375,8 @@ class AdvancedTab(SettingsTab): self.current_data_path = AppLocation.get_data_path() if not os.path.exists(self.current_data_path): log.error('Data path not found %s' % self.current_data_path) - answer = QtGui.QMessageBox.critical(self, translate('OpenLP.AdvancedTab', 'Data Directory Error'), + answer = QtGui.QMessageBox.critical( + self, translate('OpenLP.AdvancedTab', 'Data Directory Error'), translate('OpenLP.AdvancedTab', 'OpenLP data directory was not found\n\n%s\n\n' 'This data directory was previously changed from the OpenLP ' 'default location. If the new location was on removable ' @@ -537,8 +538,9 @@ class AdvancedTab(SettingsTab): # Make sure they want to change the data. answer = QtGui.QMessageBox.question(self, translate('OpenLP.AdvancedTab', 'Confirm Data Directory Change'), translate('OpenLP.AdvancedTab', 'Are you sure you want to change the ' - 'location of the OpenLP data directory to:\n\n%s\n\nThe data directory ' - 'will be changed when OpenLP is closed.').replace('%s', new_data_path), + 'location of the OpenLP data directory to:\n\n%s\n\nThe data ' + 'directory will be changed when OpenLP is closed.'). + replace('%s', new_data_path), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No), QtGui.QMessageBox.No) @@ -561,8 +563,9 @@ class AdvancedTab(SettingsTab): # default. answer = QtGui.QMessageBox.question(self, translate('OpenLP.AdvancedTab', 'Reset Data Directory'), translate('OpenLP.AdvancedTab', 'Are you sure you want to change the ' - 'location of the OpenLP data directory to the default location?\n\nThis' - ' location will be used after OpenLP is closed.'), + 'location of the OpenLP data directory to the default ' + 'location?\n\nThis location will be used after OpenLP is ' + 'closed.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No), QtGui.QMessageBox.No) @@ -588,7 +591,7 @@ class AdvancedTab(SettingsTab): else: self.new_data_directory_has_files_label.hide() - def check_data_overwrite(self, data_path ): + def check_data_overwrite(self, data_path): """ Check if there's already data in the target directory. """ @@ -602,8 +605,8 @@ class AdvancedTab(SettingsTab): translate('OpenLP.AdvancedTab', 'WARNING: \n\nThe location you have selected \n\n%s\n\n' 'appears to contain OpenLP data files. Do you wish to ' - 'replace these files with the current data files?').replace - ('%s', os.path.abspath(data_path,)), + 'replace these files with the current data files?'). + replace('%s', os.path.abspath(data_path,)), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No), QtGui.QMessageBox.No) diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 21496ccb1..4d7abe708 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -83,9 +83,8 @@ class Ui_ExceptionDialog(object): self.attach_tile_button = create_button(exception_dialog, 'attach_tile_button', icon=':/general/general_open.png', click=self.on_attach_file_button_clicked) - self.button_box = create_button_box(exception_dialog, 'button_box', - ['close'], [self.send_report_button, - self.save_report_button, self.attach_tile_button]) + self.button_box = create_button_box(exception_dialog, 'button_box', ['close'], + [self.send_report_button, self.save_report_button, self.attach_tile_button]) self.exception_layout.addWidget(self.button_box) self.retranslateUi(exception_dialog) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 72e78ad28..ae3bc9db0 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -157,7 +157,8 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog, RegistryProperties): '--- Exception Traceback ---\n%s\n' '--- System information ---\n%s\n' '--- Library Versions ---\n%s\n') - filename = QtGui.QFileDialog.getSaveFileName(self, + filename = QtGui.QFileDialog.getSaveFileName( + self, translate('OpenLP.ExceptionForm', 'Save Crash Report'), Settings().value(self.settings_section + '/last directory'), translate('OpenLP.ExceptionForm', 'Text files (*.txt *.log *.text)')) @@ -185,14 +186,13 @@ 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.') + '*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 = '' diff --git a/openlp/core/ui/filerenameform.py b/openlp/core/ui/filerenameform.py index 8e80fd102..0483ea1dd 100644 --- a/openlp/core/ui/filerenameform.py +++ b/openlp/core/ui/filerenameform.py @@ -57,4 +57,4 @@ class FileRenameForm(QtGui.QDialog, Ui_FileRenameDialog, RegistryProperties): else: self.setWindowTitle(translate('OpenLP.FileRenameForm', 'File Rename')) self.file_name_edit.setFocus() - return QtGui.QDialog.exec_(self) \ No newline at end of file + return QtGui.QDialog.exec_(self) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index 56e43df77..aa89da6c0 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -468,4 +468,4 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard, RegistryProperties): Set the status of a plugin. """ status = PluginStatus.Active if field.checkState() == QtCore.Qt.Checked else PluginStatus.Inactive - Settings().setValue(tag, status) \ No newline at end of file + Settings().setValue(tag, status) diff --git a/openlp/core/ui/formattingtagcontroller.py b/openlp/core/ui/formattingtagcontroller.py index 7c4f7333d..353114643 100644 --- a/openlp/core/ui/formattingtagcontroller.py +++ b/openlp/core/ui/formattingtagcontroller.py @@ -174,4 +174,4 @@ class FormattingTagController(object): 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 - return None, None \ No newline at end of file + return None, None diff --git a/openlp/core/ui/formattingtagdialog.py b/openlp/core/ui/formattingtagdialog.py index 6e7822d9e..387bca0a7 100644 --- a/openlp/core/ui/formattingtagdialog.py +++ b/openlp/core/ui/formattingtagdialog.py @@ -102,8 +102,7 @@ class Ui_FormattingTagDialog(object): self.edit_button_layout.addWidget(self.delete_button) self.edit_button_layout.addStretch() self.list_data_grid_layout.addLayout(self.edit_button_layout) - self.button_box = create_button_box(formatting_tag_dialog, 'button_box', - ['cancel', 'save', 'defaults']) + self.button_box = create_button_box(formatting_tag_dialog, 'button_box', ['cancel', 'save', 'defaults']) self.save_button = self.button_box.button(QtGui.QDialogButtonBox.Save) self.save_button.setObjectName('save_button') self.restore_button = self.button_box.button(QtGui.QDialogButtonBox.RestoreDefaults) diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py index b1348b4e9..b7153429d 100644 --- a/openlp/core/ui/formattingtagform.py +++ b/openlp/core/ui/formattingtagform.py @@ -204,4 +204,3 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog, FormattingTagCont QtGui.QMessageBox.Ok) #self.tag_table_widget.selectRow(pre_row - 1) self.tag_table_widget.resizeRowsToContents() - diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 642dfc538..3aa3f28c0 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -223,7 +223,8 @@ class GeneralTab(SettingsTab): self.save_check_service_check_box.setText(translate('OpenLP.GeneralTab', 'Prompt to save before starting a new service')) self.auto_unblank_check_box.setText(translate('OpenLP.GeneralTab', 'Unblank display when adding new live item')) - self.auto_preview_check_box.setText(translate('OpenLP.GeneralTab', 'Automatically preview next item in service')) + self.auto_preview_check_box.setText(translate('OpenLP.GeneralTab', + 'Automatically preview next item in service')) self.timeout_label.setText(translate('OpenLP.GeneralTab', 'Timed slide interval:')) self.timeout_spin_box.setSuffix(translate('OpenLP.GeneralTab', ' sec')) self.ccli_group_box.setTitle(translate('OpenLP.GeneralTab', 'CCLI Details')) diff --git a/openlp/core/ui/listpreviewwidget.py b/openlp/core/ui/listpreviewwidget.py index ec007843d..7dbcfc2bd 100644 --- a/openlp/core/ui/listpreviewwidget.py +++ b/openlp/core/ui/listpreviewwidget.py @@ -160,4 +160,4 @@ class ListPreviewWidget(QtGui.QTableWidget, RegistryProperties): """ Returns the number of slides this widget holds. """ - return super(ListPreviewWidget, self).rowCount() \ No newline at end of file + return super(ListPreviewWidget, self).rowCount() diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index eced865ad..b9423046e 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -601,4 +601,3 @@ class AudioPlayer(OpenLPMixin, QtCore.QObject): :param signal: The signal to be fired """ QtCore.QObject.connect(self.media_object, signal, slot) - diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 3526e551f..703307e18 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -887,7 +887,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): # application terminates normally. We need to exit without saving configuration. QtGui.QMessageBox.information(self, translate('OpenLP.MainWindow', 'Import settings'), translate('OpenLP.MainWindow', 'OpenLP will now close. Imported settings will ' - 'be applied the next time you start OpenLP.'), + 'be applied the next time you start OpenLP.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.settings_imported = True self.clean_up() @@ -1042,8 +1042,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): 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.StandardButtons(QtGui.QMessageBox.Yes | + QtGui.QMessageBox.No), QtGui.QMessageBox.Yes) if ret == QtGui.QMessageBox.Yes: self.clean_up() @@ -1234,16 +1234,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): self.recent_files_menu.clear() for file_id, filename in enumerate(recent_files_to_display): log.debug('Recent file name: %s', filename) - action = create_action(self, '', - text='&%d %s' % (file_id + 1, + action = create_action(self, '', text='&%d %s' % (file_id + 1, os.path.splitext(os.path.basename(str(filename)))[0]), data=filename, triggers=self.service_manager_contents.on_recent_service_clicked) self.recent_files_menu.addAction(action) clear_recent_files_action = create_action(self, '', text=translate('OpenLP.MainWindow', 'Clear List', 'Clear List of ' - 'recent files'), + 'recent files'), statustip=translate('OpenLP.MainWindow', 'Clear the list of recent ' - 'files.'), + 'files.'), enabled=bool(self.recent_files), triggers=self.clear_recent_file_menu) add_actions(self.recent_files_menu, (None, clear_recent_files_action)) @@ -1352,8 +1351,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): self.application.set_normal_cursor() log.exception('Data copy failed %s' % str(why)) QtGui.QMessageBox.critical(self, translate('OpenLP.MainWindow', 'New Data Directory Error'), - translate('OpenLP.MainWindow', - 'OpenLP Data directory copy failed\n\n%s').replace('%s', str(why)), + translate('OpenLP.MainWindow', 'OpenLP Data directory copy failed\n\n%s'). + replace('%s', str(why)), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) return False else: @@ -1365,5 +1364,3 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow, RegistryProperties): if self.new_data_path == AppLocation.get_directory(AppLocation.DataDir): settings.remove('advanced/data path') self.application.set_normal_cursor() - - diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 54cc6cdf8..d846af0e4 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -383,7 +383,7 @@ class MediaController(RegistryMixin, OpenLPMixin, RegistryProperties): if not is_valid: # Media could not be loaded correctly critical_error_message_box(translate('MediaPlugin.MediaItem', 'Unsupported File'), - translate('MediaPlugin.MediaItem', 'Unsupported File')) + translate('MediaPlugin.MediaItem', 'Unsupported File')) return False # dont care about actual theme, set a black background if controller.is_live and not controller.media_info.is_background: @@ -402,7 +402,7 @@ class MediaController(RegistryMixin, OpenLPMixin, RegistryProperties): if autoplay: if not self.media_play(controller): critical_error_message_box(translate('MediaPlugin.MediaItem', 'Unsupported File'), - translate('MediaPlugin.MediaItem', 'Unsupported File')) + translate('MediaPlugin.MediaItem', 'Unsupported File')) return False self.set_controls_visible(controller, True) log.debug('use %s controller' % self.current_media_players[controller.controller_type]) @@ -644,9 +644,9 @@ class MediaController(RegistryMixin, OpenLPMixin, RegistryProperties): return display = self._define_display(self.live_controller) if self.live_controller.controller_type in self.current_media_players and \ - self.current_media_players[self.live_controller.controller_type].state == MediaState.Playing: - self.current_media_players[self.live_controller.controller_type].pause(display) - self.current_media_players[self.live_controller.controller_type].set_visible(display, False) + self.current_media_players[self.live_controller.controller_type].state == MediaState.Playing: + self.current_media_players[self.live_controller.controller_type].pause(display) + self.current_media_players[self.live_controller.controller_type].set_visible(display, False) def media_blank(self, msg): """ @@ -701,4 +701,4 @@ class MediaController(RegistryMixin, OpenLPMixin, RegistryProperties): """ if controller.is_live: return controller.display - return controller.preview_display \ No newline at end of file + return controller.preview_display diff --git a/openlp/core/ui/media/mediaplayer.py b/openlp/core/ui/media/mediaplayer.py index 49b699034..3246d58c4 100644 --- a/openlp/core/ui/media/mediaplayer.py +++ b/openlp/core/ui/media/mediaplayer.py @@ -150,4 +150,4 @@ class MediaPlayer(RegistryProperties): """ Returns Information about the player """ - return '' \ No newline at end of file + return '' diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index d08628004..5e94dbd0e 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -105,7 +105,7 @@ class PhononPlayer(MediaPlayer): if ext not in mime_type_list: mime_type_list.append(ext) log.info('MediaPlugin: %s additional extensions: %s' % - (mimetype, ' '.join(self.additional_extensions[mimetype]))) + (mimetype, ' '.join(self.additional_extensions[mimetype]))) def setup(self, display): """ diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 7c892a87c..c80bb6218 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -291,4 +291,4 @@ class VlcPlayer(MediaPlayer): '<br/> <strong>' + translate('Media.player', 'Audio') + '</strong><br/>' + str(AUDIO_EXT) + '<br/><strong>' + translate('Media.player', 'Video') + '</strong><br/>' + - str(VIDEO_EXT) + '<br/>') \ No newline at end of file + str(VIDEO_EXT) + '<br/>') diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index 9e6ac9663..91b98b97a 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -154,4 +154,4 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog, RegistryProperties): elif self.active_plugin.status == PluginStatus.Disabled: status_text = translate('OpenLP.PluginForm', '%s (Disabled)') self.plugin_list_widget.currentItem().setText( - status_text % self.active_plugin.name_strings['singular']) \ No newline at end of file + status_text % self.active_plugin.name_strings['singular']) diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index 753bb2a04..489eefa78 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -394,4 +394,4 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog, RegistryProperties) return for item in self.service_manager.service_items: # Trigger Audit requests - Registry().register_function('print_service_started', [item['service_item']]) \ No newline at end of file + Registry().register_function('print_service_started', [item['service_item']]) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index e7994b261..c2b36551a 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -689,8 +689,8 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ServiceManage if self._file_name.endswith('oszl') or self.service_has_all_original_files: file_name = QtGui.QFileDialog.getSaveFileName(self.main_window, UiStrings().SaveService, path, translate('OpenLP.ServiceManager', - 'OpenLP Service Files (*.osz);; OpenLP Service Files - lite ' - '(*.oszl)')) + 'OpenLP Service Files (*.osz);; OpenLP Service ' + 'Files - lite (*.oszl)')) else: file_name = QtGui.QFileDialog.getSaveFileName(self.main_window, UiStrings().SaveService, path, translate('OpenLP.ServiceManager', @@ -783,7 +783,8 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ServiceManage self.log_exception('Service file is cannot be extracted as zip: %s' % file_name) QtGui.QMessageBox.information(self, translate('OpenLP.ServiceManager', 'Corrupt File'), translate('OpenLP.ServiceManager', - 'This file is either corrupt or it is not an OpenLP 2 service file.')) + 'This file is either corrupt or it is not an OpenLP 2 service ' + 'file.')) self.application.set_normal_cursor() return finally: @@ -1253,8 +1254,7 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ServiceManage tree_widget_item.setText(0, service_item_from_item.get_display_title()) tips = [] if service_item_from_item.temporary_edit: - tips.append('<strong>%s:</strong> <em>%s</em>' % - (translate('OpenLP.ServiceManager', 'Edit'), + tips.append('<strong>%s:</strong> <em>%s</em>' % (translate('OpenLP.ServiceManager', 'Edit'), (translate('OpenLP.ServiceManager', 'Service copy only')))) if service_item_from_item.theme and service_item_from_item.theme != -1: tips.append('<strong>%s:</strong> <em>%s</em>' % @@ -1492,9 +1492,9 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ServiceManage def find_service_item(self): """ - Finds the first selected ServiceItem in the list and returns the position of the service_item_from_item and its selected - child item. For example, if the third child item (in the Slidecontroller known as slide) in the second service - item is selected this will return:: + Finds the first selected ServiceItem in the list and returns the position of the service_item_from_item and its + selected child item. For example, if the third child item (in the Slidecontroller known as slide) in the + second service item is selected this will return:: (1, 2) """ @@ -1632,4 +1632,4 @@ class ServiceManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ServiceManage Print a Service Order Sheet. """ setting_dialog = PrintServiceForm() - setting_dialog.exec_() \ No newline at end of file + setting_dialog.exec_() diff --git a/openlp/core/ui/servicenoteform.py b/openlp/core/ui/servicenoteform.py index ee24cf7cf..c91380a5d 100644 --- a/openlp/core/ui/servicenoteform.py +++ b/openlp/core/ui/servicenoteform.py @@ -74,4 +74,4 @@ class ServiceNoteForm(QtGui.QDialog, RegistryProperties): """ Translate the UI on the fly """ - self.setWindowTitle(translate('OpenLP.ServiceNoteForm', 'Service Item Notes')) \ No newline at end of file + self.setWindowTitle(translate('OpenLP.ServiceNoteForm', 'Service Item Notes')) diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 68b0b3b41..5aba66ef2 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -151,4 +151,4 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog, RegistryProperties): :param function: The function to be called """ if not function in self.processes: - self.processes.append(function) \ No newline at end of file + self.processes.append(function) diff --git a/openlp/core/ui/shortcutlistform.py b/openlp/core/ui/shortcutlistform.py index a8e4c6ba1..4b64c3b54 100644 --- a/openlp/core/ui/shortcutlistform.py +++ b/openlp/core/ui/shortcutlistform.py @@ -285,7 +285,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog, RegistryProperties) if QtGui.QMessageBox.question(self, translate('OpenLP.ShortcutListDialog', 'Restore Default Shortcuts'), translate('OpenLP.ShortcutListDialog', 'Do you want to restore all ' 'shortcuts to their defaults?'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)) == QtGui.QMessageBox.No: return self._adjust_button(self.primary_push_button, False, text='') diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 80835b97f..eb1f13fa6 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -170,14 +170,14 @@ class SlideController(DisplayController, RegistryProperties): size_toolbar_policy.setHeightForWidth(self.toolbar.sizePolicy().hasHeightForWidth()) self.toolbar.setSizePolicy(size_toolbar_policy) self.previous_item = create_action(self, 'previousItem_' + self.type_prefix, - text=translate('OpenLP.SlideController', 'Previous Slide'), + text=translate('OpenLP.SlideController', 'Previous Slide'), icon=':/slides/slide_previous.png', tooltip=translate('OpenLP.SlideController', 'Move to previous.'), can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category, triggers=self.on_slide_selected_previous) self.toolbar.addAction(self.previous_item) self.next_item = create_action(self, 'nextItem_' + self.type_prefix, - text=translate('OpenLP.SlideController', 'Next Slide'), + text=translate('OpenLP.SlideController', 'Next Slide'), icon=':/slides/slide_next.png', tooltip=translate('OpenLP.SlideController', 'Move to next.'), can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, @@ -195,17 +195,17 @@ class SlideController(DisplayController, RegistryProperties): self.hide_menu.setMenu(QtGui.QMenu(translate('OpenLP.SlideController', 'Hide'), self.toolbar)) self.toolbar.add_toolbar_widget(self.hide_menu) self.blank_screen = create_action(self, 'blankScreen', - text=translate('OpenLP.SlideController', 'Blank Screen'), + text=translate('OpenLP.SlideController', 'Blank Screen'), icon=':/slides/slide_blank.png', - checked=False, can_shortcuts=True, category=self.category, + checked=False, can_shortcuts=True, category=self.category, triggers=self.on_blank_display) self.theme_screen = create_action(self, 'themeScreen', - text=translate('OpenLP.SlideController', 'Blank to Theme'), + text=translate('OpenLP.SlideController', 'Blank to Theme'), icon=':/slides/slide_theme.png', checked=False, can_shortcuts=True, category=self.category, triggers=self.on_theme_display) self.desktop_screen = create_action(self, 'desktopScreen', - text=translate('OpenLP.SlideController', 'Show Desktop'), + text=translate('OpenLP.SlideController', 'Show Desktop'), icon=':/slides/slide_desktop.png', checked=False, can_shortcuts=True, category=self.category, triggers=self.on_hide_display) @@ -255,15 +255,16 @@ class SlideController(DisplayController, RegistryProperties): self.toolbar.add_toolbar_widget(self.delay_spin_box) else: self.toolbar.add_toolbar_action('goLive', icon=':/general/general_live.png', - tooltip=translate('OpenLP.SlideController', 'Move to live.'), + tooltip=translate('OpenLP.SlideController', 'Move to live.'), triggers=self.on_go_live) self.toolbar.add_toolbar_action('addToService', icon=':/general/general_add.png', - tooltip=translate('OpenLP.SlideController', 'Add to Service.'), + tooltip=translate('OpenLP.SlideController', 'Add to Service.'), triggers=self.on_preview_add_to_service) self.toolbar.addSeparator() self.toolbar.add_toolbar_action('editSong', icon=':/general/general_edit.png', - tooltip=translate('OpenLP.SlideController', 'Edit and reload song preview.') - , triggers=self.on_edit_song) + tooltip=translate('OpenLP.SlideController', + 'Edit and reload song preview.'), + triggers=self.on_edit_song) self.controller_layout.addWidget(self.toolbar) # Build the Media Toolbar self.media_controller.register_controller(self) @@ -355,7 +356,7 @@ class SlideController(DisplayController, RegistryProperties): {'key': 'O', 'configurable': True, 'text': translate('OpenLP.SlideController', 'Go to "Other"')} ] shortcuts.extend([{'key': str(number)} for number in range(10)]) - self.controller.addActions([create_action(self, 'shortcutAction_%s' % s['key'], + self.controller.addActions([create_action(self, 'shortcutAction_%s' % s['key'], text=s.get('text'), can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, @@ -394,9 +395,9 @@ class SlideController(DisplayController, RegistryProperties): """ Called, when a shortcut has been activated to jump to a chorus, verse, etc. - **Note**: This implementation is based on shortcuts. But it rather works like "key sequenes". You have to + **Note**: This implementation is based on shortcuts. But it rather works like "key sequenes". You have to press one key after the other and **not** at the same time. - For example to jump to "V3" you have to press "V" and afterwards but within a time frame of 350ms + For example to jump to "V3" you have to press "V" and afterwards but within a time frame of 350ms you have to press "3". """ try: @@ -456,17 +457,17 @@ class SlideController(DisplayController, RegistryProperties): """ self.previous_service = create_action(parent, 'previousService', text=translate('OpenLP.SlideController', 'Previous Service'), - can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, + can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category, triggers=self.service_previous) self.next_service = create_action(parent, 'nextService', text=translate('OpenLP.SlideController', 'Next Service'), - can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, + can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category, triggers=self.service_next) self.escape_item = create_action(parent, 'escapeItem', text=translate('OpenLP.SlideController', 'Escape Item'), - can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, + can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category, triggers=self.live_escape) @@ -1325,7 +1326,7 @@ class SlideController(DisplayController, RegistryProperties): """ Update how much time is remaining - :param time: the time remainings + :param time: the time remaining """ seconds = self.display.audio_player.media_object.remainingTime() // 1000 minutes = seconds // 60 diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 4ee9e565c..d005d167b 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -74,12 +74,12 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog, RegistryProperties): self.minute_finish_spin_box.value() * 60 + self.second_finish_spin_box.value() if end > self.item['service_item'].media_length: critical_error_message_box(title=translate('OpenLP.StartTime_form', 'Time Validation Error'), - message=translate('OpenLP.StartTime_form', + message=translate('OpenLP.StartTime_form', 'Finish time is set after the end of the media item')) return elif start > end: critical_error_message_box(title=translate('OpenLP.StartTime_form', 'Time Validation Error'), - message=translate('OpenLP.StartTime_form', + message=translate('OpenLP.StartTime_form', 'Start time is after the finish time of the media item')) return self.item['service_item'].start_time = start @@ -94,4 +94,4 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog, RegistryProperties): seconds -= 3600 * hours minutes = seconds // 60 seconds -= 60 * minutes - return hours, minutes, seconds \ No newline at end of file + return hours, minutes, seconds diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py index 7cb53e47b..fbfc1035c 100644 --- a/openlp/core/ui/themeform.py +++ b/openlp/core/ui/themeform.py @@ -180,7 +180,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard, RegistryProperties): self.theme.background_type == background_image and is_not_image_file(self.theme.background_filename): QtGui.QMessageBox.critical(self, translate('OpenLP.ThemeWizard', 'Background Image Empty'), translate('OpenLP.ThemeWizard', '_you have not selected a ' - 'background image. Please select one before continuing.')) + 'background image. Please select one before continuing.')) return False else: return True @@ -540,4 +540,4 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard, RegistryProperties): new_color = QtGui.QColorDialog.getColor(QtGui.QColor(field), self) if new_color.isValid(): field = new_color.name() - return field \ No newline at end of file + return field diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 98c2198c7..fdd2ea592 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -517,7 +517,7 @@ class ThemeManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ThemeManager, R """ ret = QtGui.QMessageBox.question(self, translate('OpenLP.ThemeManager', 'Theme Already Exists'), translate('OpenLP.ThemeManager', - 'Theme %s already exists. Do you want to replace it?') + 'Theme %s already exists. Do you want to replace it?') .replace('%s', theme_name), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No), @@ -753,4 +753,4 @@ class ThemeManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ThemeManager, R % (theme, plugin.name)) return False return True - return False \ No newline at end of file + return False diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 5cfc86d07..77ccb0663 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -385,10 +385,10 @@ class Ui_ThemeWizard(object): QtCore.SLOT('setDisabled(bool)')) QtCore.QObject.connect(self.footer_position_check_box, QtCore.SIGNAL('toggled(bool)'), self.footer_y_spin_box, QtCore.SLOT('setDisabled(bool)')) - QtCore.QObject.connect(self.footer_position_check_box, QtCore.SIGNAL('toggled(bool)'), self.footer_width_spin_box, - QtCore.SLOT('setDisabled(bool)')) - QtCore.QObject.connect(self.footer_position_check_box, QtCore.SIGNAL('toggled(bool)'), self.footer_height_spin_box, - QtCore.SLOT('setDisabled(bool)')) + QtCore.QObject.connect(self.footer_position_check_box, QtCore.SIGNAL('toggled(bool)'), + self.footer_width_spin_box, QtCore.SLOT('setDisabled(bool)')) + QtCore.QObject.connect(self.footer_position_check_box, QtCore.SIGNAL('toggled(bool)'), + self.footer_height_spin_box, QtCore.SLOT('setDisabled(bool)')) def retranslateUi(self, themeWizard): """ @@ -409,15 +409,18 @@ class Ui_ThemeWizard(object): self.background_combo_box.setItemText(BackgroundType.Gradient, translate('OpenLP.ThemeWizard', 'Gradient')) self.background_combo_box.setItemText(BackgroundType.Image, UiStrings().Image) - self.background_combo_box.setItemText(BackgroundType.Transparent, translate('OpenLP.ThemeWizard', 'Transparent')) + self.background_combo_box.setItemText(BackgroundType.Transparent, + translate('OpenLP.ThemeWizard', 'Transparent')) self.color_label.setText(translate('OpenLP.ThemeWizard', 'color:')) self.gradient_start_label.setText(translate('OpenLP.ThemeWizard', 'Starting color:')) self.gradient_end_label.setText(translate('OpenLP.ThemeWizard', 'Ending color:')) self.gradient_type_label.setText(translate('OpenLP.ThemeWizard', 'Gradient:')) self.gradient_combo_box.setItemText(BackgroundGradientType.Horizontal, translate('OpenLP.ThemeWizard', 'Horizontal')) - self.gradient_combo_box.setItemText(BackgroundGradientType.Vertical, translate('OpenLP.ThemeWizard', 'Vertical')) - self.gradient_combo_box.setItemText(BackgroundGradientType.Circular, translate('OpenLP.ThemeWizard', 'Circular')) + self.gradient_combo_box.setItemText(BackgroundGradientType.Vertical, + translate('OpenLP.ThemeWizard', 'Vertical')) + self.gradient_combo_box.setItemText(BackgroundGradientType.Circular, + translate('OpenLP.ThemeWizard', 'Circular')) self.gradient_combo_box.setItemText(BackgroundGradientType.LeftTop, translate('OpenLP.ThemeWizard', 'Top Left - Bottom Right')) self.gradient_combo_box.setItemText(BackgroundGradientType.LeftBottom, @@ -486,6 +489,6 @@ class Ui_ThemeWizard(object): self.preview_page.setSubTitle(translate('OpenLP.ThemeWizard', 'Preview the theme and save it.')) self.theme_name_label.setText(translate('OpenLP.ThemeWizard', 'Theme name:')) # Align all QFormLayouts towards each other. - label_width = max(self.background_label.minimumSizeHint().width(), + label_width = max(self.background_label.minimumSizeHint().width(), self.horizontal_label.minimumSizeHint().width()) self.spacer.changeSize(label_width, 0, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) diff --git a/openlp/core/ui/wizard.py b/openlp/core/ui/wizard.py index 4d9b4ebdf..05951d14a 100644 --- a/openlp/core/ui/wizard.py +++ b/openlp/core/ui/wizard.py @@ -303,4 +303,4 @@ class OpenLPWizard(QtGui.QWizard, RegistryProperties): QtGui.QFileDialog.ShowDirsOnly) if folder: editbox.setText(folder) - Settings().setValue(self.plugin.settings_section + '/' + setting_name, folder) \ No newline at end of file + Settings().setValue(self.plugin.settings_section + '/' + setting_name, folder) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index d9e060aed..746c50d71 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -72,13 +72,18 @@ USER_AGENTS = { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36' ], 'darwin': [ - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11', - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) ' + 'Chrome/26.0.1410.43 Safari/537.31', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/536.11 (KHTML, like Gecko) ' + 'Chrome/20.0.1132.57 Safari/536.11', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) ' + 'Chrome/20.0.1132.47 Safari/536.11', ], 'linux2': [ - 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22', - 'Mozilla/5.0 (X11; CrOS armv7l 2913.260.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.99 Safari/537.11', + 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 ' + 'Chrome/25.0.1364.160 Safari/537.22', + 'Mozilla/5.0 (X11; CrOS armv7l 2913.260.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.99 ' + 'Safari/537.11', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/26.0.1389.0 Safari/537.27' ], 'default': [ @@ -144,9 +149,9 @@ def get_application_version(): # If they are equal, then this tree is tarball with the source for the release. We do not want the revision # number in the full version. if tree_revision == tag_revision: - full_version = tag_version + full_version = tag_version else: - full_version = '%s-bzr%s' % (tag_version, tree_revision) + full_version = '%s-bzr%s' % (tag_version, tree_revision) else: # We're not running the development version, let's use the file. filepath = AppLocation.get_directory(AppLocation.VersionDir) diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index 6201dff52..29f2d279b 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -295,7 +295,7 @@ class ActionList(object): ActionList.shortcut_map[shortcuts[1]] = actions else: log.warn('Shortcut "%s" is removed from "%s" because another action already uses this shortcut.' % - (shortcuts[1], action.objectName())) + (shortcuts[1], action.objectName())) shortcuts.remove(shortcuts[1]) # Check the primary shortcut. existing_actions = ActionList.shortcut_map.get(shortcuts[0], []) @@ -306,7 +306,7 @@ class ActionList(object): ActionList.shortcut_map[shortcuts[0]] = actions else: log.warn('Shortcut "%s" is removed from "%s" because another action already uses this shortcut.' % - (shortcuts[0], action.objectName())) + (shortcuts[0], action.objectName())) shortcuts.remove(shortcuts[0]) action.setShortcuts([QtGui.QKeySequence(shortcut) for shortcut in shortcuts]) diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index 3e240778b..cd5ce7add 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -126,8 +126,9 @@ class LanguageManager(object): log.info('Language file: \'%s\' written to conf file' % language) if message: QtGui.QMessageBox.information(None, - translate('OpenLP.LanguageManager', 'Language'), - translate('OpenLP.LanguageManager', 'Please restart OpenLP to use your new language setting.')) + translate('OpenLP.LanguageManager', 'Language'), + translate('OpenLP.LanguageManager', 'Please restart OpenLP to use your new ' + 'language setting.')) @staticmethod def init_qm_list():