From bf3e013e9ce36e485941e604d79701867281a3d3 Mon Sep 17 00:00:00 2001 From: M2j Date: Tue, 4 Jan 2011 00:59:42 +0100 Subject: [PATCH 001/105] i18n of Bible book names and Bible reference separators --- openlp/plugins/bibles/lib/__init__.py | 108 +++++++++++++++++- openlp/plugins/bibles/lib/db.py | 3 +- openlp/plugins/bibles/lib/manager.py | 8 ++ openlp/plugins/bibles/lib/mediaitem.py | 80 ++++++++----- openlp/plugins/bibles/resources/osisbooks.csv | 4 +- 5 files changed, 169 insertions(+), 34 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index f2797e16d..7068c7410 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -30,19 +30,26 @@ plugin. import logging import re +from openlp.core.lib import translate + log = logging.getLogger(__name__) def get_reference_match(match_type): - local_separator = unicode(u':;;\s*[:vV]\s*;;-;;\s*-\s*;;,;;\s*,\s*;;end' - ).split(u';;') # English - # local_separator = unicode(u',;;\s*,\s*;;-;;\s*-\s*;;.;;\.;;[Ee]nde' - # ).split(u';;') # German + local_separator = unicode(translate('BiblesPlugin', + ':;;\\s*[:vV]\\s*;;-;;\\s*-\\s*;;,;;\\s*,\\s*;;end', + 'Seperators for parsing references. There are 7 values separated each ' + 'by two semicolons. Verse, range and list separators have each one ' + 'display symbol which appears on slides and in the GUI and a regular ' + 'expression for detecting this symbols.\n' + 'Please ask a developer to double check your translation or make ' + 'yourself familar with regular experssions on: ' + 'http://docs.python.org/library/re.html') + ).split(u';;') separators = { u'sep_v_display': local_separator[0], u'sep_v': local_separator[1], u'sep_r_display': local_separator[2], u'sep_r': local_separator[3], u'sep_l_display': local_separator[4], u'sep_l': local_separator[5], u'sep_e': local_separator[6]} - # verse range match: (:)?(-((:)?|end)?)? range_string = str(r'(?:(?P[0-9]+)%(sep_v)s)?(?P' r'[0-9]+)(?P%(sep_r)s(?:(?:(?P[0-9]+)%(sep_v)s)?' @@ -131,6 +138,9 @@ def parse_reference(reference): if match: log.debug(u'Matched reference %s' % reference) book = match.group(u'book') + bookname_dict = get_system_bookname_dict() + if book.lower() in bookname_dict: + book = bookname_dict[book.lower()] ranges = match.group(u'ranges') range_list = get_reference_match(u'range_separator').split(ranges) ref_list = [] @@ -191,6 +201,94 @@ def parse_reference(reference): log.debug(u'Invalid reference: %s' % reference) return None +def get_local_bookname_dict(): + raw_dict = get_raw_bookname_dict() + local_bookname_dict = {} + for key in raw_dict.keys(): + local_bookname_dict[key] = raw_dict[key][0] + return local_bookname_dict + +def get_system_bookname_dict(): + raw_dict = get_raw_bookname_dict() + system_bookname_dict = {} + for key in raw_dict.keys(): + for alias in raw_dict[key]: + system_bookname_dict[alias.lower()] = key + return system_bookname_dict + +def get_raw_bookname_dict(): + raw_bookname_dict = {u'Genesis': translate('BiblesPlugin', 'Genesis;;Gen'), + u'Exodus': translate('BiblesPlugin', 'Exodus;;Exod'), + u'Leviticus': translate('BiblesPlugin', 'Leviticus;;Lev'), + u'Numbers': translate('BiblesPlugin', 'Numbers;;Num'), + u'Deuteronomy': translate('BiblesPlugin', 'Deuteronomy;;Deut'), + u'Joshua': translate('BiblesPlugin', 'Joshua;;Josh'), + u'Judges': translate('BiblesPlugin', 'Judges;;Judg'), + u'Ruth': translate('BiblesPlugin', 'Ruth;;Ruth'), + u'1 Samuel': translate('BiblesPlugin', '1 Samuel;;1Sam'), + u'2 Samuel': translate('BiblesPlugin', '2 Samuel;;2Sam'), + u'1 Kings': translate('BiblesPlugin', '1 Kings;;1Kgs'), + u'2 Kings': translate('BiblesPlugin', '2 Kings;;2Kgs'), + u'1 Chronicles': translate('BiblesPlugin', '1 Chronicles;;1Chr'), + u'2 Chronicles': translate('BiblesPlugin', '2 Chronicles;;2Chr'), + u'Ezra': translate('BiblesPlugin', 'Ezra;;Ezra'), + u'Nehemiah': translate('BiblesPlugin', 'Nehemiah;;Neh'), + u'Esther': translate('BiblesPlugin', 'Esther;;Esth'), + u'Job': translate('BiblesPlugin', 'Job;;Job'), + u'Psalms': translate('BiblesPlugin', 'Psalms;;Ps'), + u'Proverbs': translate('BiblesPlugin', 'Proverbs;;Prov'), + u'Ecclesiastes': translate('BiblesPlugin', 'Ecclesiastes;;Eccl'), + u'Song of Songs': translate('BiblesPlugin', 'Song of Songs;;Song'), + u'Isaiah': translate('BiblesPlugin', 'Isaiah;;Isa'), + u'Jeremiah': translate('BiblesPlugin', 'Jeremiah;;Jer'), + u'Lamentations': translate('BiblesPlugin', 'Lamentations;;Lam'), + u'Ezekiel': translate('BiblesPlugin', 'Ezekiel;;Ezek'), + u'Daniel': translate('BiblesPlugin', 'Daniel;;Dan'), + u'Hosea': translate('BiblesPlugin', 'Hosea;;Hos'), + u'Joel': translate('BiblesPlugin', 'Joel;;Joel'), + u'Amos': translate('BiblesPlugin', 'Amos;;Amos'), + u'Obad': translate('BiblesPlugin', 'Obad;;Obad'), + u'Jonah': translate('BiblesPlugin', 'Jonah;;Jonah'), + u'Micah': translate('BiblesPlugin', 'Micah;;Mic'), + u'Naham': translate('BiblesPlugin', 'Naham;;Nah'), + u'Habakkuk': translate('BiblesPlugin', 'Habakkuk;;Hab'), + u'Zephaniah': translate('BiblesPlugin', 'Zephaniah;;Zeph'), + u'Haggai': translate('BiblesPlugin', 'Haggai;;Hag'), + u'Zechariah': translate('BiblesPlugin', 'Zechariah;;Zech'), + u'Malachi': translate('BiblesPlugin', 'Malachi;;Mal'), + u'Matthew': translate('BiblesPlugin', 'Matthew;;Matt'), + u'Mark': translate('BiblesPlugin', 'Mark;;Mark'), + u'Luke': translate('BiblesPlugin', 'Luke;;Luke'), + u'John': translate('BiblesPlugin', 'John;;John'), + u'Acts': translate('BiblesPlugin', 'Acts;;Acts'), + u'Romans': translate('BiblesPlugin', 'Romans;;Rom'), + u'1 Corinthians': translate('BiblesPlugin', '1 Corinthians;;1Cor'), + u'2 Corinthians': translate('BiblesPlugin', '2 Corinthians;;2Cor'), + u'Galatians': translate('BiblesPlugin', 'Galatians;;Gal'), + u'Ephesians': translate('BiblesPlugin', 'Ephesians;;Eph'), + u'Philippians': translate('BiblesPlugin', 'Philippians;;Phil'), + u'Colossians': translate('BiblesPlugin', 'Colossians;;Col'), + u'1 Thessalonians': translate('BiblesPlugin', + '1 Thessalonians;;1Thess'), + u'2 Thessalonians': translate('BiblesPlugin', + '2 Thessalonians;;2Thess'), + u'1 Timothy': translate('BiblesPlugin', '1 Timothy;;1Tim'), + u'2 Timothy': translate('BiblesPlugin', '2 Timothy;;2Tim'), + u'Titus': translate('BiblesPlugin', 'Titus;;Titus'), + u'Philemon': translate('BiblesPlugin', 'Philemon;;Phlm'), + u'Hebrews': translate('BiblesPlugin', 'Hebrews;;Heb'), + u'James': translate('BiblesPlugin', 'James;;Jas'), + u'1 Peter': translate('BiblesPlugin', '1 Peter;;1Pet'), + u'2 Peter': translate('BiblesPlugin', '2 Peter;;2Pet'), + u'1 John': translate('BiblesPlugin', '1 John;;1John'), + u'2 John': translate('BiblesPlugin', '2 John;;2John'), + u'3 John': translate('BiblesPlugin', '3 John;;3John'), + u'Jude': translate('BiblesPlugin', 'Jude;;Jude'), + u'Revelation': translate('BiblesPlugin', 'Revelation;;Rev')} + for key in raw_bookname_dict.keys(): + raw_bookname_dict[key] = unicode(raw_bookname_dict[key]).split(u';;') + return raw_bookname_dict + class SearchResults(object): """ diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 62068437a..2c86c6977 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -190,7 +190,8 @@ class BibleDB(QtCore.QObject, Manager): """ if not isinstance(old_filename, unicode): old_filename = unicode(old_filename, u'utf-8') - old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') + old_filename = \ + re.sub(r'[^\w]+', u'_', old_filename, re.UNICODE).strip(u'_') return old_filename + u'.sqlite' def register(self, wizard): diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 9dc70e85a..cea812968 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -257,6 +257,14 @@ class BibleManager(object): - Genesis 1:1-10,2:1-10 """ log.debug(u'BibleManager.get_verses("%s", "%s")', bible, versetext) + if not bible: + QtGui.QMessageBox.information(self.parent.mediaItem, + translate('BiblesPlugin.BibleManager', + 'No Bibles available'), + translate('BiblesPlugin.BibleManager', + 'There are no Bibles currently installed. Please use the ' + 'Import Wizard to install one or more Bibles.')) + return None reflist = parse_reference(versetext) if reflist: return self.db_cache[bible].get_verses(reflist) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index d557897ed..9a703c68d 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -32,7 +32,8 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, Receiver, BaseListWithDnD, \ ItemCapabilities, translate from openlp.plugins.bibles.forms import BibleImportForm -from openlp.plugins.bibles.lib import get_reference_match +from openlp.plugins.bibles.lib import get_reference_match, \ + get_local_bookname_dict, get_system_bookname_dict log = logging.getLogger(__name__) @@ -330,6 +331,10 @@ class BibleMediaItem(MediaManagerItem): translate('BiblesPlugin.MediaItem', 'Clear')) self.ClearAdvancedSearchComboBox.addItem( translate('BiblesPlugin.MediaItem', 'Keep')) + self.verse_separator = get_reference_match(u'sep_v_display') + self.range_separator = get_reference_match(u'sep_r_display') + self.local_bookname = get_local_bookname_dict() + self.system_bookname = get_local_bookname_dict() def initialise(self): log.debug(u'bible manager initialise') @@ -410,7 +415,12 @@ class BibleMediaItem(MediaManagerItem): first = True for book in book_data: row = self.AdvancedBookComboBox.count() - self.AdvancedBookComboBox.addItem(book[u'name']) + local_name = book[u'name'] + if local_name in self.local_bookname: + local_name = self.local_bookname[local_name] + else: + log.debug(u'bookname %s not translatable', local_name) + self.AdvancedBookComboBox.addItem(local_name) self.AdvancedBookComboBox.setItemData( row, QtCore.QVariant(book[u'chapters'])) if first: @@ -446,8 +456,12 @@ class BibleMediaItem(MediaManagerItem): bibles = self.parent.manager.get_bibles() bible = unicode(self.QuickVersionComboBox.currentText()) if bible: - book_data = bibles[bible].get_books() - books = [book.name for book in book_data] + books = [] + for book in bibles[bible].get_books(): + if book.name in self.local_bookname: + books.append(self.local_bookname[book.name]) + else: + books.append(book.name) books.sort() completer = QtGui.QCompleter(books) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) @@ -459,10 +473,12 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedBookComboBox(self): item = int(self.AdvancedBookComboBox.currentIndex()) + bookname = unicode(self.AdvancedBookComboBox.currentText()) + if bookname in self.system_bookname: + bookname = self.system_bookname[bookname] self.initialiseChapterVerse( unicode(self.AdvancedVersionComboBox.currentText()), - unicode(self.AdvancedBookComboBox.currentText()), - self.AdvancedBookComboBox.itemData(item).toInt()[0]) + bookname, self.AdvancedBookComboBox.itemData(item).toInt()[0]) def onAdvancedFromVerse(self): chapter_from = int(self.AdvancedFromChapter.currentText()) @@ -470,6 +486,8 @@ class BibleMediaItem(MediaManagerItem): if chapter_from == chapter_to: bible = unicode(self.AdvancedVersionComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) + if book in self.system_bookname: + book = self.system_bookname[book] verse_from = int(self.AdvancedFromVerse.currentText()) verse_count = self.parent.manager.get_verse_count(bible, book, chapter_to) @@ -479,6 +497,8 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedToChapter(self): bible = unicode(self.AdvancedVersionComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) + if book in self.system_bookname: + book = self.system_bookname[book] chapter_from = int(self.AdvancedFromChapter.currentText()) chapter_to = int(self.AdvancedToChapter.currentText()) verse_from = int(self.AdvancedFromVerse.currentText()) @@ -493,6 +513,8 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedFromChapter(self): bible = unicode(self.AdvancedVersionComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) + if book in self.system_bookname: + book = self.system_bookname[book] chapter_from = int(self.AdvancedFromChapter.currentText()) chapter_to = int(self.AdvancedToChapter.currentText()) verse_count = self.parent.manager.get_verse_count(bible, book, @@ -545,14 +567,14 @@ class BibleMediaItem(MediaManagerItem): bible = unicode(self.AdvancedVersionComboBox.currentText()) second_bible = unicode(self.AdvancedSecondBibleComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) + if book in self.system_bookname: + book = self.system_bookname[book] chapter_from = self.AdvancedFromChapter.currentText() chapter_to = self.AdvancedToChapter.currentText() verse_from = self.AdvancedFromVerse.currentText() verse_to = self.AdvancedToVerse.currentText() - verse_separator = get_reference_match(u'sep_v_display') - range_separator = get_reference_match(u'sep_r_display') - verse_range = chapter_from + verse_separator + verse_from + \ - range_separator + chapter_to + verse_separator + verse_to + verse_range = chapter_from + self.verse_separator + verse_from + \ + self.range_separator + chapter_to + self.verse_separator + verse_to versetext = u'%s %s' % (book, verse_range) self.search_results = self.parent.manager.get_verses(bible, versetext) if second_bible: @@ -648,9 +670,12 @@ class BibleMediaItem(MediaManagerItem): second_permissions = u'' for count, verse in enumerate(self.search_results): if second_bible: + book = verse.book.name try: + if book in self.local_bookname: + book = self.local_bookname[book] vdict = { - 'book': QtCore.QVariant(verse.book.name), + 'book': QtCore.QVariant(book), 'chapter': QtCore.QVariant(verse.chapter), 'verse': QtCore.QVariant(verse.verse), 'bible': QtCore.QVariant(bible), @@ -669,12 +694,15 @@ class BibleMediaItem(MediaManagerItem): } except IndexError: break - bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name, - verse.chapter, verse.verse, version.value, - second_version.value) + bible_text = u' %s %d%s%d (%s, %s)' % (book, + verse.chapter, self.verse_separator, verse.verse, + version.value, second_version.value) else: + book = verse.book.name + if book in self.local_bookname: + book = self.local_bookname[book] vdict = { - 'book': QtCore.QVariant(verse.book.name), + 'book': QtCore.QVariant(book), 'chapter': QtCore.QVariant(verse.chapter), 'verse': QtCore.QVariant(verse.verse), 'bible': QtCore.QVariant(bible), @@ -688,8 +716,9 @@ class BibleMediaItem(MediaManagerItem): 'second_permissions': QtCore.QVariant(u''), 'second_text': QtCore.QVariant(u'') } - bible_text = u'%s %d:%d (%s)' % (verse.book.name, - verse.chapter, verse.verse, version.value) + bible_text = u'%s %d%s%d (%s)' % (book, + verse.chapter, self.verse_separator, verse.verse, + version.value) bible_verse = QtGui.QListWidgetItem(bible_text) bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict)) self.listView.addItem(bible_verse) @@ -812,8 +841,6 @@ class BibleMediaItem(MediaManagerItem): ``old_item`` The last item of a range. """ - verse_separator = get_reference_match(u'sep_v_display') - range_separator = get_reference_match(u'sep_r_display') old_bitem = self.listView.item(old_item.row()) old_chapter = self._decodeQtObject(old_bitem, 'chapter') old_verse = self._decodeQtObject(old_bitem, 'verse') @@ -829,13 +856,14 @@ class BibleMediaItem(MediaManagerItem): bibles = start_bible if start_chapter == old_chapter: if start_verse == old_verse: - verse_range = start_chapter + verse_separator + start_verse + verse_range = start_chapter + self.verse_separator + start_verse else: - verse_range = start_chapter + verse_separator + start_verse + \ - range_separator + old_verse + verse_range = start_chapter + self.verse_separator + \ + start_verse + self.range_separator + old_verse else: - verse_range = start_chapter + verse_separator + start_verse + \ - range_separator + old_chapter + verse_separator + old_verse + verse_range = start_chapter + self.verse_separator + start_verse + \ + self.range_separator + old_chapter + self.verse_separator + \ + old_verse title = u'%s %s (%s)' % (start_book, verse_range, bibles) return title @@ -898,10 +926,10 @@ class BibleMediaItem(MediaManagerItem): ``verse`` The verse number (int). """ - verse_separator = get_reference_match(u'sep_v_display') if not self.parent.settings_tab.show_new_chapters or \ old_chapter != chapter: - verse_text = unicode(chapter) + verse_separator + unicode(verse) + verse_text = unicode(chapter) + self.verse_separator + \ + unicode(verse) else: verse_text = unicode(verse) if self.parent.settings_tab.display_style == 1: diff --git a/openlp/plugins/bibles/resources/osisbooks.csv b/openlp/plugins/bibles/resources/osisbooks.csv index d65e89297..c14f76ded 100644 --- a/openlp/plugins/bibles/resources/osisbooks.csv +++ b/openlp/plugins/bibles/resources/osisbooks.csv @@ -43,8 +43,8 @@ Luke,Luke,Luke John,John,John Acts,Acts,Acts Rom,Romans,Rom -1Cor,1 Corinthans,1Cor -2Cor,2 Corinthans,2Cor +1Cor,1 Corinthians,1Cor +2Cor,2 Corinthians,2Cor Gal,Galatians,Gal Eph,Ephesians,Eph Phil,Philippians,Phil From 3da2fada664304966434036d3c765431099e447d Mon Sep 17 00:00:00 2001 From: Martin Zibricky Date: Sat, 19 Nov 2011 00:42:05 +0100 Subject: [PATCH 002/105] remove some unneeded stuff from mac build script (like macdeployqt or qt_menu.nib) --- resources/osx/build.py | 38 +++++--------------------------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/resources/osx/build.py b/resources/osx/build.py index 38e56e42a..53033c943 100644 --- a/resources/osx/build.py +++ b/resources/osx/build.py @@ -31,8 +31,8 @@ Mac OS X Build Script This script is used to build the OS X binary and the accompanying installer. For this script to work out of the box, it depends on a number of things: -Python 2.6 - This build script only works with Python 2.6. +Python 2.6/2.7 + This build script only works with Python 2.6/2.7 PyQt4 You should already have this installed, OpenLP doesn't work without it. @@ -76,7 +76,6 @@ build process you can specify different make targets make bundle -- compresses the dmg file and sets the dmg file icon """ -import time import os import ConfigParser import logging @@ -93,27 +92,14 @@ script_name = "build" def build_application(settings, app_name_lower, app_dir): logging.info('[%s] now building the app with pyinstaller at "%s"...', script_name, settings['pyinstaller_basedir']) - full_python_dir = os.path.join('/opt/local/Library/Frameworks', - 'Python.framework/Versions/2.6/Resources/', - 'Python.app/Contents/MacOS/Python') - result = os.system('arch -i386 %s %s/pyinstaller.py openlp.spec' \ - % ( full_python_dir, + result = os.system('%s %s/pyinstaller.py openlp.spec' \ + % ( sys.executable, settings['pyinstaller_basedir']) ) if (result != 0): logging.error('[%s] The pyinstaller build reported an error, cannot \ continue!', script_name) sys.exit(1) - logging.info('[%s] copying the qt_menu files...', script_name) - # see http://www.pyinstaller.org/ticket/157 - result = os.system('cp -R %(qt_menu_directory)s \ - %(application_directory)s/Contents/Resources' \ - % { 'qt_menu_directory' : settings['qt_menu_basedir'], - 'application_directory' : app_dir }) - if (result != 0): - logging.error('[%s] could not copy the qt_menu files, cannot \ - continue!', script_name) - sys.exit(1) dist_folder = os.getcwd() + '/dist/' + app_name_lower @@ -178,15 +164,6 @@ def build_application(settings, app_name_lower, app_dir): creation failed!', script_name) sys.exit(1) -def deploy_qt(settings): - logging.info('[%s] running mac deploy qt on %s.app...', script_name, - settings['openlp_appname']); - - result = os.system('macdeployqt %s.app' % settings['openlp_appname']); - if (result != 0): - logging.error('[%s] could not create dmg file!', script_name) - sys.exit(1) - def create_dmg(settings): logging.info('[%s] creating the dmg...', script_name) dmg_file = os.getcwd() + '/' + settings['openlp_dmgname'] + '.dmg' @@ -308,7 +285,6 @@ if __name__ == '__main__': do_package_view = True do_create_dmg = True do_compress_dmg = True - do_deploy_qt = True parser = optparse.OptionParser() parser.add_option('-c', '--config', dest='config', help='config file', @@ -335,7 +311,6 @@ if __name__ == '__main__': if (options.package_view is True or options.compress_view is True or options.package is True or options.compress is True): do_build = False - do_deploy_qt = False do_package_view = options.package_view do_compress_view = options.compress_view do_create_dmg = options.package @@ -366,7 +341,7 @@ if __name__ == '__main__': version = platform.mac_ver()[0] # we only need the differenciation between leopard and snow leopard - if version.startswith("10.6"): + if version.startswith("10.6") or version.startswith("10.7"): SNOWLEOPARD = True logging.info('[%s] using snow leopard scripts (version = %s)', script_name, version) @@ -408,9 +383,6 @@ if __name__ == '__main__': if (do_build is True): build_application(settings, app_name_lower, app_dir) - if (do_deploy_qt is True): - deploy_qt(settings) - if (do_create_dmg is True): (volume_basedir, dmg_file) = create_dmg(settings) else: From 11acf005e2c19ea0c42085a855e51c463755a669 Mon Sep 17 00:00:00 2001 From: rimach Date: Fri, 2 Dec 2011 16:15:31 +0100 Subject: [PATCH 003/105] add empty line --- openlp/core/ui/media/vlcplayer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 2739ccd8b..24bc56b64 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -205,3 +205,4 @@ class VlcPlayer(MediaPlayer): if not controller.seekSlider.isSliderDown(): controller.seekSlider.setSliderPosition( \ display.vlcMediaPlayer.get_time()) + From 2c225c19a023946a84e8b9135bce45bca6dc7051 Mon Sep 17 00:00:00 2001 From: rimach Date: Fri, 2 Dec 2011 23:00:28 +0100 Subject: [PATCH 004/105] bugfixing --- openlp/core/ui/media/vlcplayer.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 24bc56b64..19f70ba28 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -30,9 +30,8 @@ import sys, os from datetime import datetime try: import vlc - if vlc.get_default_instance(): - vlc_available = True -except: + vlc_available = bool(vlc.get_default_instance()) +except ImportError: vlc_available = False from PyQt4 import QtCore, QtGui @@ -90,10 +89,14 @@ class VlcPlayer(MediaPlayer): def setup(self, display): display.vlcWidget = QtGui.QFrame(display) # creating a basic vlc instance - if display.hasAudio: - display.vlcInstance = vlc.Instance() - else: - display.vlcInstance = vlc.Instance('--no-audio') + command_line_options = u'--no-video-title-show' + if not display.hasAudio: + command_line_options += u' --no-audio --no-video-title-show' + if QtCore.QSettings().value(u'advanced/hide mouse', + QtCore.QVariant(False)).toBool() and \ + display.controller.isLive: + command_line_options += u' --mouse-hide-timeout=0' + display.vlcInstance = vlc.Instance(command_line_options) display.vlcInstance.set_log_verbosity(2) # creating an empty vlc media player display.vlcMediaPlayer = display.vlcInstance.media_player_new() @@ -135,14 +138,14 @@ class VlcPlayer(MediaPlayer): def media_state_wait(self, display, mediaState): """ Wait for the video to change its state - Wait no longer than 5 seconds. + Wait no longer than 60 seconds. (loading an iso file needs a long time) """ start = datetime.now() while not mediaState == display.vlcMedia.get_state(): if display.vlcMedia.get_state() == vlc.State.Error: return False Receiver.send_message(u'openlp_process_events') - if (datetime.now() - start).seconds > 50: + if (datetime.now() - start).seconds > 60: return False return True @@ -157,10 +160,10 @@ class VlcPlayer(MediaPlayer): display.vlcMediaPlayer.play() if self.media_state_wait(display, vlc.State.Playing): if start_time > 0: - self.seek(display, controller.media_info.start_time*1000) + self.seek(display, controller.media_info.start_time * 1000) controller.media_info.length = \ - int(display.vlcMediaPlayer.get_media().get_duration()/1000) - controller.seekSlider.setMaximum(controller.media_info.length*1000) + int(display.vlcMediaPlayer.get_media().get_duration() / 1000) + controller.seekSlider.setMaximum(controller.media_info.length * 1000) self.state = MediaState.Playing display.vlcWidget.raise_() return True @@ -199,7 +202,7 @@ class VlcPlayer(MediaPlayer): controller = display.controller if controller.media_info.end_time > 0: if display.vlcMediaPlayer.get_time() > \ - controller.media_info.end_time*1000: + controller.media_info.end_time * 1000: self.stop(display) self.set_visible(display, False) if not controller.seekSlider.isSliderDown(): From 8412caf006d0a338c438cc573b236a08590b9a40 Mon Sep 17 00:00:00 2001 From: rimach Date: Sat, 3 Dec 2011 00:45:05 +0100 Subject: [PATCH 005/105] new version of vlc.py --- openlp/core/ui/media/vlc.py | 491 ++++++++++++++------------- openlp/core/ui/media/webkitplayer.py | 3 +- 2 files changed, 259 insertions(+), 235 deletions(-) diff --git a/openlp/core/ui/media/vlc.py b/openlp/core/ui/media/vlc.py index 1b6510993..4d3fa2673 100644 --- a/openlp/core/ui/media/vlc.py +++ b/openlp/core/ui/media/vlc.py @@ -47,71 +47,76 @@ import sys from inspect import getargspec __version__ = "N/A" -build_date = "Wed May 18 15:32:47 2011" +build_date = "Tue Sep 13 17:50:18 2011" - # Used on win32 and MacOS in override.py -plugin_path = None +# Internal guard to prevent internal classes to be directly +# instanciated. +_internal_guard = object() -if sys.platform.startswith('linux'): - p = find_library('vlc') - try: - dll = ctypes.CDLL(p) - except OSError: # may fail - dll = ctypes.CDLL('libvlc.so.5') +def find_lib(): + dll = None + plugin_path = None + if sys.platform.startswith('linux'): + p = find_library('vlc') + try: + dll = ctypes.CDLL(p) + except OSError: # may fail + dll = ctypes.CDLL('libvlc.so.5') + elif sys.platform.startswith('win'): + p = find_library('libvlc.dll') + if p is None: + try: # some registry settings + import _winreg as w # leaner than win32api, win32con + for r in w.HKEY_LOCAL_MACHINE, w.HKEY_CURRENT_USER: + try: + r = w.OpenKey(r, 'Software\\VideoLAN\\VLC') + plugin_path, _ = w.QueryValueEx(r, 'InstallDir') + w.CloseKey(r) + break + except w.error: + pass + except ImportError: # no PyWin32 + pass + if plugin_path is None: + # try some standard locations. + for p in ('Program Files\\VideoLan\\', 'VideoLan\\', + 'Program Files\\', ''): + p = 'C:\\' + p + 'VLC\\libvlc.dll' + if os.path.exists(p): + plugin_path = os.path.dirname(p) + break + if plugin_path is not None: # try loading + p = os.getcwd() + os.chdir(plugin_path) + # if chdir failed, this will raise an exception + dll = ctypes.CDLL('libvlc.dll') + # restore cwd after dll has been loaded + os.chdir(p) + else: # may fail + dll = ctypes.CDLL('libvlc.dll') + else: + plugin_path = os.path.dirname(p) + dll = ctypes.CDLL(p) + + elif sys.platform.startswith('darwin'): + # FIXME: should find a means to configure path + d = '/Applications/VLC.app/Contents/MacOS/' + p = d + 'lib/libvlc.dylib' + if os.path.exists(p): + dll = ctypes.CDLL(p) + d += 'modules' + if os.path.isdir(d): + plugin_path = d + else: # hope, some PATH is set... + dll = ctypes.CDLL('libvlc.dylib') -elif sys.platform.startswith('win'): - p = find_library('libvlc.dll') - if p is None: - try: # some registry settings - import _winreg as w # leaner than win32api, win32con - for r in w.HKEY_LOCAL_MACHINE, w.HKEY_CURRENT_USER: - try: - r = w.OpenKey(r, 'Software\\VideoLAN\\VLC') - plugin_path, _ = w.QueryValueEx(r, 'InstallDir') - w.CloseKey(r) - break - except w.error: - pass - del r, w - except ImportError: # no PyWin32 - pass - if plugin_path is None: - # try some standard locations. - for p in ('Program Files\\VideoLan\\', 'VideoLan\\', - 'Program Files\\', ''): - p = 'C:\\' + p + 'VLC\\libvlc.dll' - if os.path.exists(p): - plugin_path = os.path.dirname(p) - break - if plugin_path is not None: # try loading - p = os.getcwd() - os.chdir(plugin_path) - # if chdir failed, this will raise an exception - dll = ctypes.CDLL('libvlc.dll') - # restore cwd after dll has been loaded - os.chdir(p) - else: # may fail - dll = ctypes.CDLL('libvlc.dll') else: - plugin_path = os.path.dirname(p) - dll = ctypes.CDLL(p) - del p#, u + raise NotImplementedError('%s: %s not supported' % (sys.argv[0], sys.platform)) -elif sys.platform.startswith('darwin'): - # FIXME: should find a means to configure path - d = '/Applications/VLC.app/Contents/MacOS/' - p = d + 'lib/libvlc.dylib' - if os.path.exists(p): - dll = ctypes.CDLL(p) - d += 'modules' - if os.path.isdir(d): - plugin_path = d - else: # hope, some PATH is set... - dll = ctypes.CDLL('libvlc.dylib') - del d, p + return (dll, plugin_path) -else: - raise NotImplementedError('%s: %s not supported' % (sys.argv[0], sys.platform)) +# plugin_path used on win32 and MacOS in override.py +dll, plugin_path = find_lib() class VLCException(Exception): """Exception raised by libvlc methods. @@ -158,12 +163,12 @@ def _Cobject(cls, ctype): o._as_parameter_ = ctype return o -def _Constructor(cls, ptr=None): +def _Constructor(cls, ptr=_internal_guard): """(INTERNAL) New wrapper from ctypes. """ - if ptr is None: - raise VLCException('(INTERNAL) ctypes class.') - if ptr == 0: + if ptr == _internal_guard: + raise VLCException("(INTERNAL) ctypes class. You should get references for this class through methods of the LibVLC API.") + if ptr is None or ptr == 0: return None return _Cobject(cls, ctypes.c_void_p(ptr)) @@ -174,6 +179,8 @@ class _Ctype(object): def from_param(this): # not self """(INTERNAL) ctypes parameter conversion method. """ + if this is None: + return None return this._as_parameter_ class ListPOINTER(object): @@ -204,12 +211,14 @@ def class_result(classname): """Errcheck function. Returns a function that creates the specified class. """ def wrap_errcheck(result, func, arguments): + if result is None: + return None return classname(result) return wrap_errcheck # Generated enum types # -class _Enum(ctypes.c_ulong): +class _Enum(ctypes.c_uint): '''(INTERNAL) Base class ''' _enum_names_ = {} @@ -775,17 +784,15 @@ class EventManager(_Ctype): @note: Only a single notification can be registered for each event type in an EventManager instance. - + ''' _callback_handler = None _callbacks = {} - def __new__(cls, ptr=None): - if ptr is None: - raise VLCException("(INTERNAL) ctypes class.") - if ptr == 0: - return None + def __new__(cls, ptr=_internal_guard): + if ptr == _internal_guard: + raise VLCException("(INTERNAL) ctypes class.\nYou should get a reference to EventManager through the MediaPlayer.event_manager() method.") return _Constructor(cls, ptr) def event_attach(self, eventtype, callback, *args, **kwds): @@ -854,23 +861,22 @@ class Instance(_Ctype): - a string - a list of strings as first parameters - the parameters given as the constructor parameters (must be strings) - + ''' def __new__(cls, *args): - if args: + if len(args) == 1: + # Only 1 arg. It is either a C pointer, or an arg string, + # or a tuple. i = args[0] - if i == 0: - return None if isinstance(i, _Ints): return _Constructor(cls, i) - if len(args) == 1: - if isinstance(i, basestring): - args = i.strip().split() - elif isinstance(i, _Seqs): - args = i - else: - raise VLCException('Instance %r' % (args,)) + elif isinstance(i, basestring): + args = i.strip().split() + elif isinstance(i, _Seqs): + args = i + else: + raise VLCException('Instance %r' % (args,)) if not args and plugin_path is not None: # no parameters passed, for win32 and MacOS, @@ -947,20 +953,14 @@ class Instance(_Ctype): libvlc_audio_output_list_release(head) return r - def module_description_list_get(self, capability ): - """Returns a list of modules matching a capability. - - """ - return module_description_list(libvlc_module_description_list_get(self, capability)) - def audio_filter_list_get(self): - """Returns a list of audio filters that are available. + """Returns a list of available audio filters. """ return module_description_list(libvlc_audio_filter_list_get(self)) def video_filter_list_get(self): - """Returns a list of video filters that are available. + """Returns a list of available video filters. """ return module_description_list(libvlc_video_filter_list_get(self)) @@ -1001,20 +1001,23 @@ class Instance(_Ctype): return libvlc_set_user_agent(self, name, http) def get_log_verbosity(self): - '''Return the VLC messaging verbosity level. - @return: verbosity level for messages. + '''Always returns minus one. + This function is only provided for backward compatibility. + @return: always -1. ''' return libvlc_get_log_verbosity(self) def set_log_verbosity(self, level): - '''Set the VLC messaging verbosity level. - @param level: log level. + '''This function does nothing. + It is only provided for backward compatibility. + @param level: ignored. ''' return libvlc_set_log_verbosity(self, level) def log_open(self): - '''Open a VLC message log instance. - @return: log message instance or NULL on error. + '''This function does nothing useful. + It is only provided for backward compatibility. + @return: an unique pointer or NULL on error. ''' return libvlc_log_open(self) @@ -1321,10 +1324,10 @@ class Instance(_Ctype): class Log(_Ctype): '''Create a new VLC log instance. - + ''' - def __new__(cls, ptr=None): + def __new__(cls, ptr=_internal_guard): '''(INTERNAL) ctypes wrapper constructor. ''' return _Constructor(cls, ptr) @@ -1337,13 +1340,14 @@ class Log(_Ctype): def close(self): - '''Close a VLC message log instance. + '''Frees memory allocated by L{open}(). ''' return libvlc_log_close(self) def count(self): - '''Returns the number of messages in a log instance. - @return: number of log messages, 0 if p_log is NULL. + '''Always returns zero. + This function is only provided for backward compatibility. + @return: always zero. ''' return libvlc_log_count(self) @@ -1351,24 +1355,24 @@ class Log(_Ctype): return libvlc_log_count(self) def clear(self): - '''Clear a log instance. - All messages in the log are removed. The log should be cleared on a - regular basis to avoid clogging. + '''This function does nothing. + It is only provided for backward compatibility. ''' return libvlc_log_clear(self) def get_iterator(self): - '''Allocate and returns a new iterator to messages in log. - @return: log iterator object or NULL on error. + '''This function does nothing useful. + It is only provided for backward compatibility. + @return: an unique pointer or NULL on error or if the parameter was NULL. ''' return libvlc_log_get_iterator(self) class LogIterator(_Ctype): '''Create a new VLC log iterator. - + ''' - def __new__(cls, ptr=None): + def __new__(cls, ptr=_internal_guard): '''(INTERNAL) ctypes wrapper constructor. ''' return _Constructor(cls, ptr) @@ -1385,30 +1389,29 @@ class LogIterator(_Ctype): def free(self): - '''Release a previoulsy allocated iterator. + '''Frees memory allocated by L{log_get_iterator}(). ''' return libvlc_log_iterator_free(self) def has_next(self): - '''Return whether log iterator has more messages. - @return: true if iterator has more message objects, else false. + '''Always returns zero. + This function is only provided for backward compatibility. + @return: always zero. ''' return libvlc_log_iterator_has_next(self) class Media(_Ctype): '''Create a new Media instance. - + Usage: Media(MRL, *options) See vlc.Instance.media_new documentation for details. - + ''' def __new__(cls, *args): if args: i = args[0] - if i == 0: - return None if isinstance(i, _Ints): return _Constructor(cls, i) if isinstance(i, Instance): @@ -1527,7 +1530,7 @@ class Media(_Ctype): def get_stats(self, p_stats): '''Get the current statistics about the media. @param p_stats:: structure that contain the statistics about the media (this structure must be allocated by the caller). - @return: true if the statistics are available, false otherwise. + @return: true if the statistics are available, false otherwise \libvlc_return_bool. ''' return libvlc_media_get_stats(self, p_stats) @@ -1571,7 +1574,7 @@ class Media(_Ctype): def is_parsed(self): '''Get Parsed status for media descriptor object. See libvlc_MediaParsedChanged. - @return: true if media object has been parsed otherwise it returns false. + @return: true if media object has been parsed otherwise it returns false \libvlc_return_bool. ''' return libvlc_media_is_parsed(self) @@ -1610,7 +1613,7 @@ class MediaDiscoverer(_Ctype): '''N/A ''' - def __new__(cls, ptr=None): + def __new__(cls, ptr=_internal_guard): '''(INTERNAL) ctypes wrapper constructor. ''' return _Constructor(cls, ptr) @@ -1640,7 +1643,7 @@ class MediaDiscoverer(_Ctype): def is_running(self): '''Query if media service discover object is running. - @return: true if running, false if not. + @return: true if running, false if not \libvlc_return_bool. ''' return libvlc_media_discoverer_is_running(self) @@ -1648,7 +1651,7 @@ class MediaLibrary(_Ctype): '''N/A ''' - def __new__(cls, ptr=None): + def __new__(cls, ptr=_internal_guard): '''(INTERNAL) ctypes wrapper constructor. ''' return _Constructor(cls, ptr) @@ -1680,18 +1683,16 @@ class MediaLibrary(_Ctype): class MediaList(_Ctype): '''Create a new MediaList instance. - + Usage: MediaList(list_of_MRLs) See vlc.Instance.media_list_new documentation for details. - + ''' def __new__(cls, *args): if args: i = args[0] - if i == 0: - return None if isinstance(i, _Ints): return _Constructor(cls, i) if isinstance(i, Instance): @@ -1702,10 +1703,10 @@ class MediaList(_Ctype): def get_instance(self): return getattr(self, '_instance', None) - + def add_media(self, mrl): """Add media instance to media list. - + The L{lock} should be held upon entering this function. @param p_md: a media instance or a MRL. @return: 0 on success, -1 if the media list is read-only. @@ -1714,12 +1715,6 @@ class MediaList(_Ctype): mrl = (self.get_instance() or get_default_instance()).media_new(mrl) return libvlc_media_list_add_media(self, mrl) - def __len__(self): - return self.count() - - def __getitem__(self, i): - return self.item_at_index(i) - def release(self): '''Release media list created with L{new}(). @@ -1752,7 +1747,7 @@ class MediaList(_Ctype): The L{lock} should be held upon entering this function. @param p_md: a media instance. @param i_pos: position in array where to insert. - @return: 0 on success, -1 if the media list si read-only. + @return: 0 on success, -1 if the media list is read-only. ''' return libvlc_media_list_insert_media(self, p_md, i_pos) @@ -1793,14 +1788,14 @@ class MediaList(_Ctype): '''Find index position of List media instance in media list. Warning: the function will return the first matched position. The L{lock} should be held upon entering this function. - @param p_md: media list instance. - @return: position of media instance. + @param p_md: media instance. + @return: position of media instance or -1 if media not found. ''' return libvlc_media_list_index_of_item(self, p_md) def is_readonly(self): '''This indicates if this media list is read-only from a user point of view. - @return: 0 on readonly, 1 on readwrite. + @return: 1 on readonly, 0 on readwrite \libvlc_return_bool. ''' return libvlc_media_list_is_readonly(self) @@ -1828,23 +1823,19 @@ class MediaListPlayer(_Ctype): It may take as parameter either: - a vlc.Instance - nothing - + ''' - def __new__(cls, *args): - if len(args) == 1: - i = args[0] - if i == 0: - return None - if isinstance(i, _Ints): - return _Constructor(cls, i) - if isinstance(i, _Seqs): - args = i - - if args and isinstance(args[0], Instance): - i = args[0] - else: + def __new__(cls, arg=None): + if arg is None: i = get_default_instance() + elif isinstance(arg, Instance): + i = arg + elif isinstance(arg, _Ints): + return _Constructor(cls, arg) + else: + raise TypeError('MediaListPlayer %r' % (arg,)) + return i.media_list_player_new() def get_instance(self): @@ -1854,10 +1845,20 @@ class MediaListPlayer(_Ctype): def release(self): - '''Release media_list_player. + '''Release a media_list_player after use + Decrement the reference count of a media player object. If the + reference count is 0, then L{release}() will + release the media player object. If the media player object + has been released, then it should not be used again. ''' return libvlc_media_list_player_release(self) + def retain(self): + '''Retain a reference to a media player list object. Use + L{release}() to decrement reference count. + ''' + return libvlc_media_list_player_retain(self) + def event_manager(self): '''Return the event manager of this media_list_player. @return: the event manager. @@ -1888,7 +1889,7 @@ class MediaListPlayer(_Ctype): def is_playing(self): '''Is media list playing? - @return: true for playing and false for not playing. + @return: true for playing and false for not playing \libvlc_return_bool. ''' return libvlc_media_list_player_is_playing(self) @@ -1946,25 +1947,24 @@ class MediaPlayer(_Ctype): '''Create a new MediaPlayer instance. It may take as parameter either: - - a string (media URI). In this case, a vlc.Instance will be created. - - a vlc.Instance - + - a string (media URI), options... In this case, a vlc.Instance will be created. + - a vlc.Instance, a string (media URI), options... + ''' def __new__(cls, *args): - if args: - i = args[0] - if i == 0: - return None - if isinstance(i, _Ints): - return _Constructor(cls, i) - if isinstance(i, Instance): - return i.media_player_new() + if len(args) == 1 and isinstance(args[0], _Ints): + return _Constructor(cls, args[0]) + + if args and isinstance(args[0], Instance): + instance = args[0] + args = args[1:] + else: + instance = get_default_instance() - i = get_default_instance() - o = i.media_player_new() + o = instance.media_player_new() if args: - o.set_media(i.media_new(*args)) # args[0] + o.set_media(instance.media_new(*args)) return o def get_instance(self): @@ -2027,13 +2027,13 @@ class MediaPlayer(_Ctype): Specify where the media player should render its video output. If LibVLC was built without Win32/Win64 API output support, then this has no effects. - + @param drawable: windows handle of the drawable. """ if not isinstance(drawable, ctypes.c_void_p): drawable = ctypes.c_void_p(int(drawable)) libvlc_media_player_set_hwnd(self, drawable) - + def video_get_width(self, num=0): """Get the width of a video in pixels. @@ -2109,7 +2109,7 @@ class MediaPlayer(_Ctype): def is_playing(self): '''is_playing. - @return: 1 if the media player is playing, 0 otherwise. + @return: 1 if the media player is playing, 0 otherwise \libvlc_return_bool. ''' return libvlc_media_player_is_playing(self) @@ -2164,12 +2164,12 @@ class MediaPlayer(_Ctype): If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then the following code should work: @begincode - + NSView *video = [[NSView alloc] init]; QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent); L{set_nsobject}(mp, video); [video release]; - + @endcode You can find a live example in VLCVideoView in VLCKit.framework. @param drawable: the drawable that is either an NSView or an object following the VLCOpenGLVideoViewEmbedding protocol. @@ -2228,7 +2228,7 @@ class MediaPlayer(_Ctype): '''Set decoded audio format. This only works in combination with libvlc_audio_set_callbacks(), and is mutually exclusive with libvlc_audio_set_format_callbacks(). - @param fourcc: a four-characters string identifying the sample format (e.g. "S16N" or "FL32"). + @param format: a four-characters string identifying the sample format (e.g. "S16N" or "FL32"). @param rate: sample rate (expressed in Hz). @param channels: channels count. @version: LibVLC 1.2.0 or later. @@ -2287,7 +2287,7 @@ class MediaPlayer(_Ctype): def will_play(self): '''Is the player able to play. - @return: boolean. + @return: boolean \libvlc_return_bool. ''' return libvlc_media_player_will_play(self) @@ -2361,13 +2361,13 @@ class MediaPlayer(_Ctype): def is_seekable(self): '''Is this media player seekable? - @return: true if the media player can seek. + @return: true if the media player can seek \libvlc_return_bool. ''' return libvlc_media_player_is_seekable(self) def can_pause(self): '''Can this media player be paused? - @return: true if the media player can pause. + @return: true if the media player can pause \libvlc_return_bool. ''' return libvlc_media_player_can_pause(self) @@ -2404,7 +2404,7 @@ class MediaPlayer(_Ctype): def get_fullscreen(self): '''Get current fullscreen status. - @return: the fullscreen status (boolean). + @return: the fullscreen status (boolean) \libvlc_return_bool. ''' return libvlc_get_fullscreen(self) @@ -2425,7 +2425,7 @@ class MediaPlayer(_Ctype): '''Enable or disable mouse click events handling. By default, those events are handled. This is needed for DVD menus to work, as well as a few video filters such as "puzzle". - @note: See also L{video_set_key_input}(). + See L{video_set_key_input}(). @warning: This function is only implemented for X11 and Win32 at the moment. @param on: true to handle mouse click events, false to ignore them. ''' @@ -2642,7 +2642,7 @@ class MediaPlayer(_Ctype): '''Set the audio output. Change will be applied after stop and play. @param psz_name: name of audio output, use psz_name of See L{AudioOutput}. - @return: true if function succeded. + @return: 0 if function succeded, -1 on error. ''' return libvlc_audio_output_set(self, psz_name) @@ -2673,7 +2673,7 @@ class MediaPlayer(_Ctype): def audio_get_mute(self): '''Get current mute status. - @return: the mute status (boolean). + @return: the mute status (boolean) \libvlc_return_bool. ''' return libvlc_audio_get_mute(self) @@ -2684,14 +2684,14 @@ class MediaPlayer(_Ctype): return libvlc_audio_set_mute(self, status) def audio_get_volume(self): - '''Get current audio level. - @return: the audio level (int). + '''Get current software audio volume. + @return: the software volume in percents (0 = mute, 100 = nominal / 0dB). ''' return libvlc_audio_get_volume(self) def audio_set_volume(self, i_volume): - '''Set current audio level. - @param i_volume: the volume (int). + '''Set current software audio volume. + @param i_volume: the volume in percents (0 = mute, 100 = 0dB). @return: 0 if the volume was set, -1 if it was out of range. ''' return libvlc_audio_set_volume(self, i_volume) @@ -2957,9 +2957,10 @@ def libvlc_event_type_name(event_type): return f(event_type) def libvlc_get_log_verbosity(p_instance): - '''Return the VLC messaging verbosity level. - @param p_instance: libvlc instance. - @return: verbosity level for messages. + '''Always returns minus one. + This function is only provided for backward compatibility. + @param p_instance: ignored. + @return: always -1. ''' f = _Cfunctions.get('libvlc_get_log_verbosity', None) or \ _Cfunction('libvlc_get_log_verbosity', ((1,),), None, @@ -2970,9 +2971,10 @@ def libvlc_get_log_verbosity(p_instance): return f(p_instance) def libvlc_set_log_verbosity(p_instance, level): - '''Set the VLC messaging verbosity level. - @param p_instance: libvlc log instance. - @param level: log level. + '''This function does nothing. + It is only provided for backward compatibility. + @param p_instance: ignored. + @param level: ignored. ''' f = _Cfunctions.get('libvlc_set_log_verbosity', None) or \ _Cfunction('libvlc_set_log_verbosity', ((1,), (1,),), None, @@ -2983,9 +2985,10 @@ def libvlc_set_log_verbosity(p_instance, level): return f(p_instance, level) def libvlc_log_open(p_instance): - '''Open a VLC message log instance. + '''This function does nothing useful. + It is only provided for backward compatibility. @param p_instance: libvlc instance. - @return: log message instance or NULL on error. + @return: an unique pointer or NULL on error. ''' f = _Cfunctions.get('libvlc_log_open', None) or \ _Cfunction('libvlc_log_open', ((1,),), class_result(Log), @@ -2996,7 +2999,7 @@ def libvlc_log_open(p_instance): return f(p_instance) def libvlc_log_close(p_log): - '''Close a VLC message log instance. + '''Frees memory allocated by L{libvlc_log_open}(). @param p_log: libvlc log instance or NULL. ''' f = _Cfunctions.get('libvlc_log_close', None) or \ @@ -3008,9 +3011,10 @@ def libvlc_log_close(p_log): return f(p_log) def libvlc_log_count(p_log): - '''Returns the number of messages in a log instance. - @param p_log: libvlc log instance or NULL. - @return: number of log messages, 0 if p_log is NULL. + '''Always returns zero. + This function is only provided for backward compatibility. + @param p_log: ignored. + @return: always zero. ''' f = _Cfunctions.get('libvlc_log_count', None) or \ _Cfunction('libvlc_log_count', ((1,),), None, @@ -3021,10 +3025,9 @@ def libvlc_log_count(p_log): return f(p_log) def libvlc_log_clear(p_log): - '''Clear a log instance. - All messages in the log are removed. The log should be cleared on a - regular basis to avoid clogging. - @param p_log: libvlc log instance or NULL. + '''This function does nothing. + It is only provided for backward compatibility. + @param p_log: ignored. ''' f = _Cfunctions.get('libvlc_log_clear', None) or \ _Cfunction('libvlc_log_clear', ((1,),), None, @@ -3035,9 +3038,10 @@ def libvlc_log_clear(p_log): return f(p_log) def libvlc_log_get_iterator(p_log): - '''Allocate and returns a new iterator to messages in log. - @param p_log: libvlc log instance. - @return: log iterator object or NULL on error. + '''This function does nothing useful. + It is only provided for backward compatibility. + @param p_log: ignored. + @return: an unique pointer or NULL on error or if the parameter was NULL. ''' f = _Cfunctions.get('libvlc_log_get_iterator', None) or \ _Cfunction('libvlc_log_get_iterator', ((1,),), class_result(LogIterator), @@ -3048,7 +3052,7 @@ def libvlc_log_get_iterator(p_log): return f(p_log) def libvlc_log_iterator_free(p_iter): - '''Release a previoulsy allocated iterator. + '''Frees memory allocated by L{libvlc_log_get_iterator}(). @param p_iter: libvlc log iterator or NULL. ''' f = _Cfunctions.get('libvlc_log_iterator_free', None) or \ @@ -3060,9 +3064,10 @@ def libvlc_log_iterator_free(p_iter): return f(p_iter) def libvlc_log_iterator_has_next(p_iter): - '''Return whether log iterator has more messages. - @param p_iter: libvlc log iterator or NULL. - @return: true if iterator has more message objects, else false. + '''Always returns zero. + This function is only provided for backward compatibility. + @param p_iter: ignored. + @return: always zero. ''' f = _Cfunctions.get('libvlc_log_iterator_has_next', None) or \ _Cfunction('libvlc_log_iterator_has_next', ((1,),), None, @@ -3073,11 +3078,11 @@ def libvlc_log_iterator_has_next(p_iter): return f(p_iter) def libvlc_log_iterator_next(p_iter, p_buffer): - '''Return the next log message. - The message contents must not be freed. + '''Always returns NULL. + This function is only provided for backward compatibility. @param p_iter: libvlc log iterator or NULL. - @param p_buffer: log buffer. - @return: log message object or NULL if none left. + @param p_buffer: ignored. + @return: always NULL. ''' f = _Cfunctions.get('libvlc_log_iterator_next', None) or \ _Cfunction('libvlc_log_iterator_next', ((1,), (1,),), None, @@ -3379,7 +3384,7 @@ def libvlc_media_get_stats(p_md, p_stats): '''Get the current statistics about the media. @param p_md:: media descriptor object. @param p_stats:: structure that contain the statistics about the media (this structure must be allocated by the caller). - @return: true if the statistics are available, false otherwise. + @return: true if the statistics are available, false otherwise \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_get_stats', None) or \ _Cfunction('libvlc_media_get_stats', ((1,), (1,),), None, @@ -3458,7 +3463,7 @@ def libvlc_media_is_parsed(p_md): '''Get Parsed status for media descriptor object. See libvlc_MediaParsedChanged. @param p_md: media descriptor object. - @return: true if media object has been parsed otherwise it returns false. + @return: true if media object has been parsed otherwise it returns false \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_is_parsed', None) or \ _Cfunction('libvlc_media_is_parsed', ((1,),), None, @@ -3583,7 +3588,7 @@ def libvlc_media_discoverer_event_manager(p_mdis): def libvlc_media_discoverer_is_running(p_mdis): '''Query if media service discover object is running. @param p_mdis: media service discover object. - @return: true if running, false if not. + @return: true if running, false if not \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_discoverer_is_running', None) or \ _Cfunction('libvlc_media_discoverer_is_running', ((1,),), None, @@ -3748,7 +3753,7 @@ def libvlc_media_list_insert_media(p_ml, p_md, i_pos): @param p_ml: a media list instance. @param p_md: a media instance. @param i_pos: position in array where to insert. - @return: 0 on success, -1 if the media list si read-only. + @return: 0 on success, -1 if the media list is read-only. ''' f = _Cfunctions.get('libvlc_media_list_insert_media', None) or \ _Cfunction('libvlc_media_list_insert_media', ((1,), (1,), (1,),), None, @@ -3807,8 +3812,8 @@ def libvlc_media_list_index_of_item(p_ml, p_md): Warning: the function will return the first matched position. The L{libvlc_media_list_lock} should be held upon entering this function. @param p_ml: a media list instance. - @param p_md: media list instance. - @return: position of media instance. + @param p_md: media instance. + @return: position of media instance or -1 if media not found. ''' f = _Cfunctions.get('libvlc_media_list_index_of_item', None) or \ _Cfunction('libvlc_media_list_index_of_item', ((1,), (1,),), None, @@ -3821,7 +3826,7 @@ def libvlc_media_list_index_of_item(p_ml, p_md): def libvlc_media_list_is_readonly(p_ml): '''This indicates if this media list is read-only from a user point of view. @param p_ml: media list instance. - @return: 0 on readonly, 1 on readwrite. + @return: 1 on readonly, 0 on readwrite \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_list_is_readonly', None) or \ _Cfunction('libvlc_media_list_is_readonly', ((1,),), None, @@ -3884,7 +3889,11 @@ def libvlc_media_list_player_new(p_instance): return f(p_instance) def libvlc_media_list_player_release(p_mlp): - '''Release media_list_player. + '''Release a media_list_player after use + Decrement the reference count of a media player object. If the + reference count is 0, then L{libvlc_media_list_player_release}() will + release the media player object. If the media player object + has been released, then it should not be used again. @param p_mlp: media list player instance. ''' f = _Cfunctions.get('libvlc_media_list_player_release', None) or \ @@ -3895,6 +3904,19 @@ def libvlc_media_list_player_release(p_mlp): libvlc_media_list_player_release = f return f(p_mlp) +def libvlc_media_list_player_retain(p_mlp): + '''Retain a reference to a media player list object. Use + L{libvlc_media_list_player_release}() to decrement reference count. + @param p_mlp: media player list object. + ''' + f = _Cfunctions.get('libvlc_media_list_player_retain', None) or \ + _Cfunction('libvlc_media_list_player_retain', ((1,),), None, + None, MediaListPlayer) + if not __debug__: # i.e. python -O or -OO + global libvlc_media_list_player_retain + libvlc_media_list_player_retain = f + return f(p_mlp) + def libvlc_media_list_player_event_manager(p_mlp): '''Return the event manager of this media_list_player. @param p_mlp: media list player instance. @@ -3961,7 +3983,7 @@ def libvlc_media_list_player_pause(p_mlp): def libvlc_media_list_player_is_playing(p_mlp): '''Is media list playing? @param p_mlp: media list player instance. - @return: true for playing and false for not playing. + @return: true for playing and false for not playing \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_list_player_is_playing', None) or \ _Cfunction('libvlc_media_list_player_is_playing', ((1,),), None, @@ -4161,7 +4183,7 @@ def libvlc_media_player_event_manager(p_mi): def libvlc_media_player_is_playing(p_mi): '''is_playing. @param p_mi: the Media Player. - @return: 1 if the media player is playing, 0 otherwise. + @return: 1 if the media player is playing, 0 otherwise \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_player_is_playing', None) or \ _Cfunction('libvlc_media_player_is_playing', ((1,),), None, @@ -4257,12 +4279,12 @@ def libvlc_media_player_set_nsobject(p_mi, drawable): If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then the following code should work: @begincode - + NSView *video = [[NSView alloc] init]; QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent); L{libvlc_media_player_set_nsobject}(mp, video); [video release]; - + @endcode You can find a live example in VLCVideoView in VLCKit.framework. @param p_mi: the Media Player. @@ -4386,7 +4408,7 @@ def libvlc_audio_set_format(mp, format, rate, channels): This only works in combination with libvlc_audio_set_callbacks(), and is mutually exclusive with libvlc_audio_set_format_callbacks(). @param mp: the media player. - @param fourcc: a four-characters string identifying the sample format (e.g. "S16N" or "FL32"). + @param format: a four-characters string identifying the sample format (e.g. "S16N" or "FL32"). @param rate: sample rate (expressed in Hz). @param channels: channels count. @version: LibVLC 1.2.0 or later. @@ -4508,7 +4530,7 @@ def libvlc_media_player_get_chapter_count(p_mi): def libvlc_media_player_will_play(p_mi): '''Is the player able to play. @param p_mi: the Media Player. - @return: boolean. + @return: boolean \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_player_will_play', None) or \ _Cfunction('libvlc_media_player_will_play', ((1,),), None, @@ -4666,7 +4688,7 @@ def libvlc_media_player_has_vout(p_mi): def libvlc_media_player_is_seekable(p_mi): '''Is this media player seekable? @param p_mi: the media player. - @return: true if the media player can seek. + @return: true if the media player can seek \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_player_is_seekable', None) or \ _Cfunction('libvlc_media_player_is_seekable', ((1,),), None, @@ -4679,7 +4701,7 @@ def libvlc_media_player_is_seekable(p_mi): def libvlc_media_player_can_pause(p_mi): '''Can this media player be paused? @param p_mi: the media player. - @return: true if the media player can pause. + @return: true if the media player can pause \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_media_player_can_pause', None) or \ _Cfunction('libvlc_media_player_can_pause', ((1,),), None, @@ -4763,7 +4785,7 @@ def libvlc_set_fullscreen(p_mi, b_fullscreen): def libvlc_get_fullscreen(p_mi): '''Get current fullscreen status. @param p_mi: the media player. - @return: the fullscreen status (boolean). + @return: the fullscreen status (boolean) \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_get_fullscreen', None) or \ _Cfunction('libvlc_get_fullscreen', ((1,),), None, @@ -4797,7 +4819,7 @@ def libvlc_video_set_mouse_input(p_mi, on): '''Enable or disable mouse click events handling. By default, those events are handled. This is needed for DVD menus to work, as well as a few video filters such as "puzzle". - @note: See also L{libvlc_video_set_key_input}(). + See L{libvlc_video_set_key_input}(). @warning: This function is only implemented for X11 and Win32 at the moment. @param p_mi: the media player. @param on: true to handle mouse click events, false to ignore them. @@ -5341,7 +5363,7 @@ def libvlc_audio_output_set(p_mi, psz_name): Change will be applied after stop and play. @param p_mi: media player. @param psz_name: name of audio output, use psz_name of See L{AudioOutput}. - @return: true if function succeded. + @return: 0 if function succeded, -1 on error. ''' f = _Cfunctions.get('libvlc_audio_output_set', None) or \ _Cfunction('libvlc_audio_output_set', ((1,), (1,),), None, @@ -5452,7 +5474,7 @@ def libvlc_audio_toggle_mute(p_mi): def libvlc_audio_get_mute(p_mi): '''Get current mute status. @param p_mi: media player. - @return: the mute status (boolean). + @return: the mute status (boolean) \libvlc_return_bool. ''' f = _Cfunctions.get('libvlc_audio_get_mute', None) or \ _Cfunction('libvlc_audio_get_mute', ((1,),), None, @@ -5476,9 +5498,9 @@ def libvlc_audio_set_mute(p_mi, status): return f(p_mi, status) def libvlc_audio_get_volume(p_mi): - '''Get current audio level. + '''Get current software audio volume. @param p_mi: media player. - @return: the audio level (int). + @return: the software volume in percents (0 = mute, 100 = nominal / 0dB). ''' f = _Cfunctions.get('libvlc_audio_get_volume', None) or \ _Cfunction('libvlc_audio_get_volume', ((1,),), None, @@ -5489,9 +5511,9 @@ def libvlc_audio_get_volume(p_mi): return f(p_mi) def libvlc_audio_set_volume(p_mi, i_volume): - '''Set current audio level. + '''Set current software audio volume. @param p_mi: media player. - @param i_volume: the volume (int). + @param i_volume: the volume in percents (0 = mute, 100 = 0dB). @return: 0 if the volume was set, -1 if it was out of range. ''' f = _Cfunctions.get('libvlc_audio_set_volume', None) or \ @@ -5989,9 +6011,10 @@ def libvlc_vlm_get_event_manager(p_instance): return f(p_instance) -# 5 function(s) blacklisted: +# 6 function(s) blacklisted: # libvlc_audio_set_callbacks # libvlc_audio_set_format_callbacks +# libvlc_audio_set_volume_callback # libvlc_set_exit_handler # libvlc_video_set_callbacks # libvlc_video_set_format_callbacks diff --git a/openlp/core/ui/media/webkitplayer.py b/openlp/core/ui/media/webkitplayer.py index 058f30f58..af1f5a876 100644 --- a/openlp/core/ui/media/webkitplayer.py +++ b/openlp/core/ui/media/webkitplayer.py @@ -297,11 +297,12 @@ class WebkitPlayer(MediaPlayer): def load(self, display): log.debug(u'load vid in Webkit Controller') controller = display.controller - if display.hasAudio: + if display.hasAudio and not controller.media_info.is_background: volume = controller.media_info.volume vol = float(volume) / float(100) else: vol = 0 + print vol path = controller.media_info.file_info.absoluteFilePath() if controller.media_info.is_background: loop = u'true' From 2df4a1903e5b2775fcbc3c25e959ed815b524685 Mon Sep 17 00:00:00 2001 From: rimach Date: Mon, 5 Dec 2011 19:48:32 +0100 Subject: [PATCH 006/105] bugfixing --- openlp/core/ui/media/mediacontroller.py | 8 ++++++-- openlp/core/ui/media/vlcplayer.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index c4e3e7fa9..c9e6e94a6 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -311,8 +311,12 @@ class MediaController(object): isValid = self.check_file_type(controller, display) display.override[u'theme'] = u'' display.override[u'video'] = True - controller.media_info.start_time = display.serviceItem.start_time - controller.media_info.end_time = display.serviceItem.end_time + if not controller.media_info.is_background: + controller.media_info.start_time = display.serviceItem.start_time + controller.media_info.end_time = display.serviceItem.end_time + else: + controller.media_info.start_time = 0 + controller.media_info.end_time = 0 elif controller.previewDisplay: display = controller.previewDisplay isValid = self.check_file_type(controller, display) diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 19f70ba28..ae15f1901 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -31,7 +31,7 @@ from datetime import datetime try: import vlc vlc_available = bool(vlc.get_default_instance()) -except ImportError: +except (ImportError, WindowsError): vlc_available = False from PyQt4 import QtCore, QtGui From bb4f2fd1139a4c94a6b2ce3e24c1295f8d5d7a05 Mon Sep 17 00:00:00 2001 From: rimach Date: Tue, 6 Dec 2011 22:19:37 +0100 Subject: [PATCH 007/105] correct import check --- openlp/core/ui/media/mediacontroller.py | 8 ++------ openlp/core/ui/media/vlcplayer.py | 10 +++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index c9e6e94a6..c4e3e7fa9 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -311,12 +311,8 @@ class MediaController(object): isValid = self.check_file_type(controller, display) display.override[u'theme'] = u'' display.override[u'video'] = True - if not controller.media_info.is_background: - controller.media_info.start_time = display.serviceItem.start_time - controller.media_info.end_time = display.serviceItem.end_time - else: - controller.media_info.start_time = 0 - controller.media_info.end_time = 0 + controller.media_info.start_time = display.serviceItem.start_time + controller.media_info.end_time = display.serviceItem.end_time elif controller.previewDisplay: display = controller.previewDisplay isValid = self.check_file_type(controller, display) diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index ae15f1901..836b82c95 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -31,8 +31,16 @@ from datetime import datetime try: import vlc vlc_available = bool(vlc.get_default_instance()) -except (ImportError, WindowsError): +except (ImportError, NameError): vlc_available = False +except OSError, e: + if sys.platform.startswith('win'): + if isinstance(e, WindowsError) and e.winerror == 126: + vlc_available = False + else: + raise + else: + raise from PyQt4 import QtCore, QtGui from openlp.core.lib import Receiver From f1bc18c33c48162ad3b5c8bbb356b5a27a6227bb Mon Sep 17 00:00:00 2001 From: rimach Date: Wed, 7 Dec 2011 21:20:23 +0100 Subject: [PATCH 008/105] remove print statement from webkitplayer.py --- openlp/core/ui/media/webkitplayer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/ui/media/webkitplayer.py b/openlp/core/ui/media/webkitplayer.py index b2324c28e..abb5355d0 100644 --- a/openlp/core/ui/media/webkitplayer.py +++ b/openlp/core/ui/media/webkitplayer.py @@ -299,7 +299,6 @@ class WebkitPlayer(MediaPlayer): vol = float(volume) / float(100) else: vol = 0 - print vol path = controller.media_info.file_info.absoluteFilePath() if controller.media_info.is_background: loop = u'true' From cd565fe4a9c31b82cdd6d5e65a89a8bcaddc09ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Thu, 15 Dec 2011 20:13:45 +0200 Subject: [PATCH 009/105] First almost working example. I suppose someone suggest to make specific class now. You may be right :) --- openlp/core/ui/advancedtab.py | 103 ++++++++++++++++++++++++++++++- openlp/core/ui/servicemanager.py | 12 +++- 2 files changed, 111 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 43e2a9915..dc15b80ef 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -32,6 +32,8 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, translate, build_icon from openlp.core.lib.ui import UiStrings from openlp.core.utils import get_images_filter +from datetime import datetime +import re class AdvancedTab(SettingsTab): """ @@ -42,7 +44,14 @@ class AdvancedTab(SettingsTab): """ Initialise the settings tab """ - advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') + advancedTranslated = translate(u'OpenLP.AdvancedTab', u'Advanced') + self.default_service_name = unicode(translate(u'OpenLP.AdvancedTab', + u'Service %Y-%m-%d')) + self.default_service_example = unicode(translate(u'OpenLP.AdvancedTab', + u'%Y-%m-%d', + u'This should be the date part of default service name.')) + self.wrong_characters_expression = \ + re.compile(r'[\[\]/\;,><&*:%=+@!#^()|?^]+') self.default_image = u':/graphics/openlp-splash-screen.png' self.default_color = u'#ffffff' self.icon_path = u':/system/system_settings.png' @@ -83,6 +92,40 @@ class AdvancedTab(SettingsTab): u'enableAutoCloseCheckBox') self.uiLayout.addRow(self.enableAutoCloseCheckBox) self.leftLayout.addWidget(self.uiGroupBox) + self.defaultServiceGroupBox = QtGui.QGroupBox(self.leftColumn) + self.defaultServiceGroupBox.setObjectName(u'defaultServiceGroupBox') + self.defaultServiceLayout = QtGui.QFormLayout( + self.defaultServiceGroupBox) + self.defaultServiceLayout.setObjectName(u'defaultServiceLayout') + self.defaultServiceLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceLabel.setObjectName(u'defaultServiceLabel') + self.defaultServiceEdit = QtGui.QLineEdit(self.defaultServiceGroupBox) + self.defaultServiceEdit.setObjectName(u'defaultServiceEdit') + self.defaultServiceRevertButton = QtGui.QToolButton( + self.defaultServiceGroupBox) + self.defaultServiceRevertButton.setObjectName( + u'defaultServiceRevertButton') + self.defaultServiceRevertButton.setIcon( + build_icon(u':/general/general_revert.png')) + self.defaultServiceHBox = QtGui.QHBoxLayout() + self.defaultServiceHBox.setObjectName(u'defaultServiceHBox') + self.defaultServiceHBox.addWidget(self.defaultServiceLabel) + self.defaultServiceHBox.addWidget(self.defaultServiceEdit) + self.defaultServiceHBox.addWidget(self.defaultServiceRevertButton) + self.defaultServiceLayout.addRow(self.defaultServiceHBox) + self.defaultServiceExampleLabel = QtGui.QLabel( + self.defaultServiceGroupBox) + self.defaultServiceExampleLabel.setObjectName( + u'defaultServiceExampleLabel') + self.defaultServiceExample = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceExample.setObjectName(u'defaultServiceExample') + self.defaultServiceLayout.addRow(self.defaultServiceExampleLabel, + self.defaultServiceExample) + self.defaultServiceNoteLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceNoteLabel.setWordWrap(True) + self.defaultServiceNoteLabel.setObjectName(u'defaultServiceNoteLabel') + self.defaultServiceLayout.addRow(self.defaultServiceNoteLabel) + self.leftLayout.addWidget(self.defaultServiceGroupBox) self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) self.defaultImageGroupBox.setObjectName(u'defaultImageGroupBox') @@ -124,6 +167,12 @@ class AdvancedTab(SettingsTab): self.rightLayout.addWidget(self.hideMouseGroupBox) self.rightLayout.addStretch() + QtCore.QObject.connect(self.defaultServiceEdit, + QtCore.SIGNAL(u'textChanged(QString)'), + self.onDefaultServiceUpdated) + QtCore.QObject.connect(self.defaultServiceRevertButton, + QtCore.SIGNAL(u'pressed()'), + self.onDefaultServiceRevertButtonPressed) QtCore.QObject.connect(self.defaultColorButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultColorButtonPressed) QtCore.QObject.connect(self.defaultBrowseButton, @@ -151,6 +200,22 @@ class AdvancedTab(SettingsTab): 'Expand new service items on creation')) self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab', 'Enable application exit confirmation')) + self.defaultServiceGroupBox.setTitle( + translate(u'OpenLP.AdvancedTab', u'Default Service')) + self.defaultServiceLabel.setText( + translate(u'OpenLP.AdvancedTab', u'Default service name:')) + self.defaultServiceRevertButton.setToolTip(unicode( + translate(u'OpenLP.AdvancedTab', + u'Revert to the default service name "%s".')) % + self.default_service_name) + self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', + u'Example:')) + self.defaultServiceNoteLabel.setText(unicode( + translate(u'OpenLP.AdvancedTab', u'Default service name when ' + 'saving a new service. You can use date placeholders, e.g %s ' + 'results in %s. Leave it empty to use no default value.')) % + (self.default_service_example, + datetime.now().strftime(self.default_service_example))) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', @@ -198,6 +263,9 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) + self.service_name = unicode(settings.value(u'default service name', + self.default_service_name).toString()) + self.defaultServiceEdit.setText(self.service_name) self.default_color = settings.value(u'default color', QtCore.QVariant(u'#ffffff')).toString() self.defaultFileEdit.setText(settings.value(u'default image', @@ -211,8 +279,18 @@ class AdvancedTab(SettingsTab): """ Save settings to disk. """ + self.service_name = unicode(self.defaultServiceEdit.text()) + preset_okay, name_example = self.generate_service_name_example( + self.service_name) + if not preset_okay: + # should alert or something + pass settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) + if self.service_name == self.default_service_name: + settings.remove(u'default service name') + else: + settings.setValue(u'default service name', self.service_name) settings.setValue(u'recent file count', QtCore.QVariant(self.recentSpinBox.value())) settings.setValue(u'save current plugin', @@ -231,6 +309,29 @@ class AdvancedTab(SettingsTab): settings.setValue(u'default image', self.defaultFileEdit.text()) settings.endGroup() + def generate_service_name_example(self, service_name_preset): + preset_okay = True + try: + service_name_example = datetime.now().strftime( + unicode(service_name_preset)) + if self.wrong_characters_expression.search(service_name_example): + service_name_example = translate(u'OpenLP.AdvancedTab', + u'Filename contains wrong characters.') + preset_okay = False + except ValueError: + service_name_example = translate(u'OpenLP.AdvancedTab', + u'Syntax error.') + preset_okay = False + return preset_okay, service_name_example + + def onDefaultServiceUpdated(self, preset): + preset_okay, name_example = self.generate_service_name_example(preset) + self.defaultServiceExample.setText(name_example) + + def onDefaultServiceRevertButtonPressed(self): + self.defaultServiceEdit.setText(self.default_service_name) + self.defaultServiceEdit.setFocus() + def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( QtGui.QColor(self.default_color), self) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 0eb1e77c5..036db96c3 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -31,6 +31,7 @@ import os import shutil import zipfile from tempfile import mkstemp +from datetime import datetime log = logging.getLogger(__name__) @@ -610,10 +611,15 @@ class ServiceManager(QtGui.QWidget): Get a file name and then call :func:`ServiceManager.saveFile` to save the file. """ + default_pattern = unicode(QtCore.QSettings().value( + u'advanced/default service name', + translate(u'OpenLP.AdvancedTab', u'Service %Y-%m-%d')).toString()) + default_filename = datetime.now().strftime(default_pattern) + directory = unicode(SettingsManager.get_last_dir( + self.mainwindow.servicemanagerSettingsSection)) + path = os.path.join(directory, default_filename) fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.mainwindow, - UiStrings().SaveService, - SettingsManager.get_last_dir( - self.mainwindow.servicemanagerSettingsSection), + UiStrings().SaveService, path, translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)'))) if not fileName: return False From d7a5a9ae97ea0c10bcfb1f0b056b47734bd98c10 Mon Sep 17 00:00:00 2001 From: M2j Date: Sun, 18 Dec 2011 18:08:37 +0100 Subject: [PATCH 010/105] revert 1153 --- openlp/plugins/bibles/lib/__init__.py | 108 +----------------- openlp/plugins/bibles/lib/db.py | 3 +- openlp/plugins/bibles/lib/manager.py | 8 -- openlp/plugins/bibles/lib/mediaitem.py | 80 +++++-------- openlp/plugins/bibles/resources/osisbooks.csv | 4 +- 5 files changed, 34 insertions(+), 169 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 7068c7410..f2797e16d 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -30,26 +30,19 @@ plugin. import logging import re -from openlp.core.lib import translate - log = logging.getLogger(__name__) def get_reference_match(match_type): - local_separator = unicode(translate('BiblesPlugin', - ':;;\\s*[:vV]\\s*;;-;;\\s*-\\s*;;,;;\\s*,\\s*;;end', - 'Seperators for parsing references. There are 7 values separated each ' - 'by two semicolons. Verse, range and list separators have each one ' - 'display symbol which appears on slides and in the GUI and a regular ' - 'expression for detecting this symbols.\n' - 'Please ask a developer to double check your translation or make ' - 'yourself familar with regular experssions on: ' - 'http://docs.python.org/library/re.html') - ).split(u';;') + local_separator = unicode(u':;;\s*[:vV]\s*;;-;;\s*-\s*;;,;;\s*,\s*;;end' + ).split(u';;') # English + # local_separator = unicode(u',;;\s*,\s*;;-;;\s*-\s*;;.;;\.;;[Ee]nde' + # ).split(u';;') # German separators = { u'sep_v_display': local_separator[0], u'sep_v': local_separator[1], u'sep_r_display': local_separator[2], u'sep_r': local_separator[3], u'sep_l_display': local_separator[4], u'sep_l': local_separator[5], u'sep_e': local_separator[6]} + # verse range match: (:)?(-((:)?|end)?)? range_string = str(r'(?:(?P[0-9]+)%(sep_v)s)?(?P' r'[0-9]+)(?P%(sep_r)s(?:(?:(?P[0-9]+)%(sep_v)s)?' @@ -138,9 +131,6 @@ def parse_reference(reference): if match: log.debug(u'Matched reference %s' % reference) book = match.group(u'book') - bookname_dict = get_system_bookname_dict() - if book.lower() in bookname_dict: - book = bookname_dict[book.lower()] ranges = match.group(u'ranges') range_list = get_reference_match(u'range_separator').split(ranges) ref_list = [] @@ -201,94 +191,6 @@ def parse_reference(reference): log.debug(u'Invalid reference: %s' % reference) return None -def get_local_bookname_dict(): - raw_dict = get_raw_bookname_dict() - local_bookname_dict = {} - for key in raw_dict.keys(): - local_bookname_dict[key] = raw_dict[key][0] - return local_bookname_dict - -def get_system_bookname_dict(): - raw_dict = get_raw_bookname_dict() - system_bookname_dict = {} - for key in raw_dict.keys(): - for alias in raw_dict[key]: - system_bookname_dict[alias.lower()] = key - return system_bookname_dict - -def get_raw_bookname_dict(): - raw_bookname_dict = {u'Genesis': translate('BiblesPlugin', 'Genesis;;Gen'), - u'Exodus': translate('BiblesPlugin', 'Exodus;;Exod'), - u'Leviticus': translate('BiblesPlugin', 'Leviticus;;Lev'), - u'Numbers': translate('BiblesPlugin', 'Numbers;;Num'), - u'Deuteronomy': translate('BiblesPlugin', 'Deuteronomy;;Deut'), - u'Joshua': translate('BiblesPlugin', 'Joshua;;Josh'), - u'Judges': translate('BiblesPlugin', 'Judges;;Judg'), - u'Ruth': translate('BiblesPlugin', 'Ruth;;Ruth'), - u'1 Samuel': translate('BiblesPlugin', '1 Samuel;;1Sam'), - u'2 Samuel': translate('BiblesPlugin', '2 Samuel;;2Sam'), - u'1 Kings': translate('BiblesPlugin', '1 Kings;;1Kgs'), - u'2 Kings': translate('BiblesPlugin', '2 Kings;;2Kgs'), - u'1 Chronicles': translate('BiblesPlugin', '1 Chronicles;;1Chr'), - u'2 Chronicles': translate('BiblesPlugin', '2 Chronicles;;2Chr'), - u'Ezra': translate('BiblesPlugin', 'Ezra;;Ezra'), - u'Nehemiah': translate('BiblesPlugin', 'Nehemiah;;Neh'), - u'Esther': translate('BiblesPlugin', 'Esther;;Esth'), - u'Job': translate('BiblesPlugin', 'Job;;Job'), - u'Psalms': translate('BiblesPlugin', 'Psalms;;Ps'), - u'Proverbs': translate('BiblesPlugin', 'Proverbs;;Prov'), - u'Ecclesiastes': translate('BiblesPlugin', 'Ecclesiastes;;Eccl'), - u'Song of Songs': translate('BiblesPlugin', 'Song of Songs;;Song'), - u'Isaiah': translate('BiblesPlugin', 'Isaiah;;Isa'), - u'Jeremiah': translate('BiblesPlugin', 'Jeremiah;;Jer'), - u'Lamentations': translate('BiblesPlugin', 'Lamentations;;Lam'), - u'Ezekiel': translate('BiblesPlugin', 'Ezekiel;;Ezek'), - u'Daniel': translate('BiblesPlugin', 'Daniel;;Dan'), - u'Hosea': translate('BiblesPlugin', 'Hosea;;Hos'), - u'Joel': translate('BiblesPlugin', 'Joel;;Joel'), - u'Amos': translate('BiblesPlugin', 'Amos;;Amos'), - u'Obad': translate('BiblesPlugin', 'Obad;;Obad'), - u'Jonah': translate('BiblesPlugin', 'Jonah;;Jonah'), - u'Micah': translate('BiblesPlugin', 'Micah;;Mic'), - u'Naham': translate('BiblesPlugin', 'Naham;;Nah'), - u'Habakkuk': translate('BiblesPlugin', 'Habakkuk;;Hab'), - u'Zephaniah': translate('BiblesPlugin', 'Zephaniah;;Zeph'), - u'Haggai': translate('BiblesPlugin', 'Haggai;;Hag'), - u'Zechariah': translate('BiblesPlugin', 'Zechariah;;Zech'), - u'Malachi': translate('BiblesPlugin', 'Malachi;;Mal'), - u'Matthew': translate('BiblesPlugin', 'Matthew;;Matt'), - u'Mark': translate('BiblesPlugin', 'Mark;;Mark'), - u'Luke': translate('BiblesPlugin', 'Luke;;Luke'), - u'John': translate('BiblesPlugin', 'John;;John'), - u'Acts': translate('BiblesPlugin', 'Acts;;Acts'), - u'Romans': translate('BiblesPlugin', 'Romans;;Rom'), - u'1 Corinthians': translate('BiblesPlugin', '1 Corinthians;;1Cor'), - u'2 Corinthians': translate('BiblesPlugin', '2 Corinthians;;2Cor'), - u'Galatians': translate('BiblesPlugin', 'Galatians;;Gal'), - u'Ephesians': translate('BiblesPlugin', 'Ephesians;;Eph'), - u'Philippians': translate('BiblesPlugin', 'Philippians;;Phil'), - u'Colossians': translate('BiblesPlugin', 'Colossians;;Col'), - u'1 Thessalonians': translate('BiblesPlugin', - '1 Thessalonians;;1Thess'), - u'2 Thessalonians': translate('BiblesPlugin', - '2 Thessalonians;;2Thess'), - u'1 Timothy': translate('BiblesPlugin', '1 Timothy;;1Tim'), - u'2 Timothy': translate('BiblesPlugin', '2 Timothy;;2Tim'), - u'Titus': translate('BiblesPlugin', 'Titus;;Titus'), - u'Philemon': translate('BiblesPlugin', 'Philemon;;Phlm'), - u'Hebrews': translate('BiblesPlugin', 'Hebrews;;Heb'), - u'James': translate('BiblesPlugin', 'James;;Jas'), - u'1 Peter': translate('BiblesPlugin', '1 Peter;;1Pet'), - u'2 Peter': translate('BiblesPlugin', '2 Peter;;2Pet'), - u'1 John': translate('BiblesPlugin', '1 John;;1John'), - u'2 John': translate('BiblesPlugin', '2 John;;2John'), - u'3 John': translate('BiblesPlugin', '3 John;;3John'), - u'Jude': translate('BiblesPlugin', 'Jude;;Jude'), - u'Revelation': translate('BiblesPlugin', 'Revelation;;Rev')} - for key in raw_bookname_dict.keys(): - raw_bookname_dict[key] = unicode(raw_bookname_dict[key]).split(u';;') - return raw_bookname_dict - class SearchResults(object): """ diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 2c86c6977..62068437a 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -190,8 +190,7 @@ class BibleDB(QtCore.QObject, Manager): """ if not isinstance(old_filename, unicode): old_filename = unicode(old_filename, u'utf-8') - old_filename = \ - re.sub(r'[^\w]+', u'_', old_filename, re.UNICODE).strip(u'_') + old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') return old_filename + u'.sqlite' def register(self, wizard): diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index cea812968..9dc70e85a 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -257,14 +257,6 @@ class BibleManager(object): - Genesis 1:1-10,2:1-10 """ log.debug(u'BibleManager.get_verses("%s", "%s")', bible, versetext) - if not bible: - QtGui.QMessageBox.information(self.parent.mediaItem, - translate('BiblesPlugin.BibleManager', - 'No Bibles available'), - translate('BiblesPlugin.BibleManager', - 'There are no Bibles currently installed. Please use the ' - 'Import Wizard to install one or more Bibles.')) - return None reflist = parse_reference(versetext) if reflist: return self.db_cache[bible].get_verses(reflist) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 9a703c68d..d557897ed 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -32,8 +32,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, Receiver, BaseListWithDnD, \ ItemCapabilities, translate from openlp.plugins.bibles.forms import BibleImportForm -from openlp.plugins.bibles.lib import get_reference_match, \ - get_local_bookname_dict, get_system_bookname_dict +from openlp.plugins.bibles.lib import get_reference_match log = logging.getLogger(__name__) @@ -331,10 +330,6 @@ class BibleMediaItem(MediaManagerItem): translate('BiblesPlugin.MediaItem', 'Clear')) self.ClearAdvancedSearchComboBox.addItem( translate('BiblesPlugin.MediaItem', 'Keep')) - self.verse_separator = get_reference_match(u'sep_v_display') - self.range_separator = get_reference_match(u'sep_r_display') - self.local_bookname = get_local_bookname_dict() - self.system_bookname = get_local_bookname_dict() def initialise(self): log.debug(u'bible manager initialise') @@ -415,12 +410,7 @@ class BibleMediaItem(MediaManagerItem): first = True for book in book_data: row = self.AdvancedBookComboBox.count() - local_name = book[u'name'] - if local_name in self.local_bookname: - local_name = self.local_bookname[local_name] - else: - log.debug(u'bookname %s not translatable', local_name) - self.AdvancedBookComboBox.addItem(local_name) + self.AdvancedBookComboBox.addItem(book[u'name']) self.AdvancedBookComboBox.setItemData( row, QtCore.QVariant(book[u'chapters'])) if first: @@ -456,12 +446,8 @@ class BibleMediaItem(MediaManagerItem): bibles = self.parent.manager.get_bibles() bible = unicode(self.QuickVersionComboBox.currentText()) if bible: - books = [] - for book in bibles[bible].get_books(): - if book.name in self.local_bookname: - books.append(self.local_bookname[book.name]) - else: - books.append(book.name) + book_data = bibles[bible].get_books() + books = [book.name for book in book_data] books.sort() completer = QtGui.QCompleter(books) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) @@ -473,12 +459,10 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedBookComboBox(self): item = int(self.AdvancedBookComboBox.currentIndex()) - bookname = unicode(self.AdvancedBookComboBox.currentText()) - if bookname in self.system_bookname: - bookname = self.system_bookname[bookname] self.initialiseChapterVerse( unicode(self.AdvancedVersionComboBox.currentText()), - bookname, self.AdvancedBookComboBox.itemData(item).toInt()[0]) + unicode(self.AdvancedBookComboBox.currentText()), + self.AdvancedBookComboBox.itemData(item).toInt()[0]) def onAdvancedFromVerse(self): chapter_from = int(self.AdvancedFromChapter.currentText()) @@ -486,8 +470,6 @@ class BibleMediaItem(MediaManagerItem): if chapter_from == chapter_to: bible = unicode(self.AdvancedVersionComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) - if book in self.system_bookname: - book = self.system_bookname[book] verse_from = int(self.AdvancedFromVerse.currentText()) verse_count = self.parent.manager.get_verse_count(bible, book, chapter_to) @@ -497,8 +479,6 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedToChapter(self): bible = unicode(self.AdvancedVersionComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) - if book in self.system_bookname: - book = self.system_bookname[book] chapter_from = int(self.AdvancedFromChapter.currentText()) chapter_to = int(self.AdvancedToChapter.currentText()) verse_from = int(self.AdvancedFromVerse.currentText()) @@ -513,8 +493,6 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedFromChapter(self): bible = unicode(self.AdvancedVersionComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) - if book in self.system_bookname: - book = self.system_bookname[book] chapter_from = int(self.AdvancedFromChapter.currentText()) chapter_to = int(self.AdvancedToChapter.currentText()) verse_count = self.parent.manager.get_verse_count(bible, book, @@ -567,14 +545,14 @@ class BibleMediaItem(MediaManagerItem): bible = unicode(self.AdvancedVersionComboBox.currentText()) second_bible = unicode(self.AdvancedSecondBibleComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) - if book in self.system_bookname: - book = self.system_bookname[book] chapter_from = self.AdvancedFromChapter.currentText() chapter_to = self.AdvancedToChapter.currentText() verse_from = self.AdvancedFromVerse.currentText() verse_to = self.AdvancedToVerse.currentText() - verse_range = chapter_from + self.verse_separator + verse_from + \ - self.range_separator + chapter_to + self.verse_separator + verse_to + verse_separator = get_reference_match(u'sep_v_display') + range_separator = get_reference_match(u'sep_r_display') + verse_range = chapter_from + verse_separator + verse_from + \ + range_separator + chapter_to + verse_separator + verse_to versetext = u'%s %s' % (book, verse_range) self.search_results = self.parent.manager.get_verses(bible, versetext) if second_bible: @@ -670,12 +648,9 @@ class BibleMediaItem(MediaManagerItem): second_permissions = u'' for count, verse in enumerate(self.search_results): if second_bible: - book = verse.book.name try: - if book in self.local_bookname: - book = self.local_bookname[book] vdict = { - 'book': QtCore.QVariant(book), + 'book': QtCore.QVariant(verse.book.name), 'chapter': QtCore.QVariant(verse.chapter), 'verse': QtCore.QVariant(verse.verse), 'bible': QtCore.QVariant(bible), @@ -694,15 +669,12 @@ class BibleMediaItem(MediaManagerItem): } except IndexError: break - bible_text = u' %s %d%s%d (%s, %s)' % (book, - verse.chapter, self.verse_separator, verse.verse, - version.value, second_version.value) + bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name, + verse.chapter, verse.verse, version.value, + second_version.value) else: - book = verse.book.name - if book in self.local_bookname: - book = self.local_bookname[book] vdict = { - 'book': QtCore.QVariant(book), + 'book': QtCore.QVariant(verse.book.name), 'chapter': QtCore.QVariant(verse.chapter), 'verse': QtCore.QVariant(verse.verse), 'bible': QtCore.QVariant(bible), @@ -716,9 +688,8 @@ class BibleMediaItem(MediaManagerItem): 'second_permissions': QtCore.QVariant(u''), 'second_text': QtCore.QVariant(u'') } - bible_text = u'%s %d%s%d (%s)' % (book, - verse.chapter, self.verse_separator, verse.verse, - version.value) + bible_text = u'%s %d:%d (%s)' % (verse.book.name, + verse.chapter, verse.verse, version.value) bible_verse = QtGui.QListWidgetItem(bible_text) bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict)) self.listView.addItem(bible_verse) @@ -841,6 +812,8 @@ class BibleMediaItem(MediaManagerItem): ``old_item`` The last item of a range. """ + verse_separator = get_reference_match(u'sep_v_display') + range_separator = get_reference_match(u'sep_r_display') old_bitem = self.listView.item(old_item.row()) old_chapter = self._decodeQtObject(old_bitem, 'chapter') old_verse = self._decodeQtObject(old_bitem, 'verse') @@ -856,14 +829,13 @@ class BibleMediaItem(MediaManagerItem): bibles = start_bible if start_chapter == old_chapter: if start_verse == old_verse: - verse_range = start_chapter + self.verse_separator + start_verse + verse_range = start_chapter + verse_separator + start_verse else: - verse_range = start_chapter + self.verse_separator + \ - start_verse + self.range_separator + old_verse + verse_range = start_chapter + verse_separator + start_verse + \ + range_separator + old_verse else: - verse_range = start_chapter + self.verse_separator + start_verse + \ - self.range_separator + old_chapter + self.verse_separator + \ - old_verse + verse_range = start_chapter + verse_separator + start_verse + \ + range_separator + old_chapter + verse_separator + old_verse title = u'%s %s (%s)' % (start_book, verse_range, bibles) return title @@ -926,10 +898,10 @@ class BibleMediaItem(MediaManagerItem): ``verse`` The verse number (int). """ + verse_separator = get_reference_match(u'sep_v_display') if not self.parent.settings_tab.show_new_chapters or \ old_chapter != chapter: - verse_text = unicode(chapter) + self.verse_separator + \ - unicode(verse) + verse_text = unicode(chapter) + verse_separator + unicode(verse) else: verse_text = unicode(verse) if self.parent.settings_tab.display_style == 1: diff --git a/openlp/plugins/bibles/resources/osisbooks.csv b/openlp/plugins/bibles/resources/osisbooks.csv index c14f76ded..d65e89297 100644 --- a/openlp/plugins/bibles/resources/osisbooks.csv +++ b/openlp/plugins/bibles/resources/osisbooks.csv @@ -43,8 +43,8 @@ Luke,Luke,Luke John,John,John Acts,Acts,Acts Rom,Romans,Rom -1Cor,1 Corinthians,1Cor -2Cor,2 Corinthians,2Cor +1Cor,1 Corinthans,1Cor +2Cor,2 Corinthans,2Cor Gal,Galatians,Gal Eph,Ephesians,Eph Phil,Philippians,Phil From 15449372e178fc58c74e962f571f36497026ae3f Mon Sep 17 00:00:00 2001 From: M2j Date: Mon, 19 Dec 2011 01:20:39 +0100 Subject: [PATCH 011/105] use ICU collator on Windows systems --- openlp/core/ui/thememanager.py | 5 ++--- openlp/core/utils/__init__.py | 22 ++++++++++++++++++- .../plugins/bibles/forms/bibleimportform.py | 5 ++--- openlp/plugins/bibles/lib/mediaitem.py | 6 ++--- openlp/plugins/custom/lib/mediaitem.py | 4 ++-- openlp/plugins/images/lib/mediaitem.py | 6 ++--- openlp/plugins/media/lib/mediaitem.py | 6 ++--- openlp/plugins/presentations/lib/mediaitem.py | 4 ++-- openlp/plugins/songs/forms/songexportform.py | 4 ++-- openlp/plugins/songs/lib/mediaitem.py | 5 ++--- 10 files changed, 42 insertions(+), 25 deletions(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index b8767d736..64ede2f16 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -29,7 +29,6 @@ import os import zipfile import shutil import logging -import locale from xml.etree.ElementTree import ElementTree, XML from PyQt4 import QtCore, QtGui @@ -44,7 +43,7 @@ from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ from openlp.core.theme import Theme from openlp.core.ui import FileRenameForm, ThemeForm from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \ - get_filesystem_encoding + get_filesystem_encoding, get_local_collator log = logging.getLogger(__name__) @@ -458,7 +457,7 @@ class ThemeManager(QtGui.QWidget): # Sort the themes by its name considering language specific characters. # lower() is needed for windows! files.sort(key=lambda filename: unicode(filename).lower(), - cmp=locale.strcoll) + cmp=get_local_collator) # now process the file list of png files for name in files: # check to see file is in theme root directory diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index fbf185474..bbfc02b0f 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -33,6 +33,7 @@ import re import sys import time import urllib2 +import locale from datetime import datetime from subprocess import Popen, PIPE @@ -45,6 +46,18 @@ if sys.platform != u'win32' and sys.platform != u'darwin': except ImportError: XDG_BASE_AVAILABLE = False +LOCALE_COLLATOR = locale.strcoll +if sys.platform == u'win32': + try: + import icu + try: + icu_locale = icu.Locale(locale.getlocale()[0]) + LOCALE_COLLATOR = icu.Collator.createInstance(icu_locale).compare + except icu.InvalidArgsError: + pass + except ImportError: + pass + import openlp from openlp.core.lib import Receiver, translate, check_directory_exists @@ -502,10 +515,17 @@ def get_uno_instance(resolver): return resolver.resolve(u'uno:socket,host=localhost,port=2002;' \ + u'urp;StarOffice.ComponentContext') +def get_local_collator(string1, string2): + """ + Returns a collator for locale aware string sorting. + """ + return LOCALE_COLLATOR(string1, string2) + from languagemanager import LanguageManager from actions import ActionList __all__ = [u'AppLocation', u'get_application_version', u'check_latest_version', u'add_actions', u'get_filesystem_encoding', u'LanguageManager', u'ActionList', u'get_web_page', u'file_is_unicode', u'get_uno_command', - u'get_uno_instance', u'delete_file', u'clean_filename'] + u'get_uno_instance', u'get_local_collator', u'delete_file', + u'clean_filename'] diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 7577e86a3..0774bd3c9 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -30,7 +30,6 @@ The bible import functions for OpenLP import logging import os import os.path -import locale from PyQt4 import QtCore, QtGui @@ -38,7 +37,7 @@ from openlp.core.lib import Receiver, translate from openlp.core.lib.db import delete_database from openlp.core.lib.ui import UiStrings, critical_error_message_box from openlp.core.ui.wizard import OpenLPWizard, WizardStrings -from openlp.core.utils import AppLocation +from openlp.core.utils import AppLocation, get_local_collator from openlp.plugins.bibles.lib.manager import BibleFormat from openlp.plugins.bibles.lib.db import BiblesResourcesDB, clean_filename @@ -522,7 +521,7 @@ class BibleImportForm(OpenLPWizard): """ self.webTranslationComboBox.clear() bibles = self.web_bible_list[index].keys() - bibles.sort(cmp=locale.strcoll) + bibles.sort(cmp=get_local_collator) self.webTranslationComboBox.addItems(bibles) def onOsisBrowseButtonClicked(self): diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 31effe189..74e3fa6a1 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -26,7 +26,6 @@ ############################################################################### import logging -import locale from PyQt4 import QtCore, QtGui @@ -36,6 +35,7 @@ from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings, add_widget_completer, \ media_item_combo_box, critical_error_message_box, \ find_and_set_in_combo_box, build_icon +from openlp.core.utils import get_local_collator from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ VerseReferenceList, get_reference_match @@ -373,7 +373,7 @@ class BibleMediaItem(MediaManagerItem): self.advancedSecondComboBox.addItem(u'') # Get all bibles and sort the list. bibles = self.plugin.manager.get_bibles().keys() - bibles.sort(cmp=locale.strcoll) + bibles.sort(cmp=get_local_collator) # Load the bibles into the combo boxes. for bible in bibles: if bible: @@ -481,7 +481,7 @@ class BibleMediaItem(MediaManagerItem): book_data_temp.append(book) book_data = book_data_temp books = [book.name + u' ' for book in book_data] - books.sort(cmp=locale.strcoll) + books.sort(cmp=get_local_collator) add_widget_completer(books, self.quickSearchEdit) def onQuickVersionComboBox(self): diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 59d6b4fb6..4c2e1f3c9 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -26,7 +26,6 @@ ############################################################################### import logging -import locale from PyQt4 import QtCore, QtGui from sqlalchemy.sql import or_, func @@ -35,6 +34,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ check_item_selected, translate from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings +from oprnlp.core.utils import get_local_collator from openlp.plugins.custom.forms import EditCustomForm from openlp.plugins.custom.lib import CustomXMLParser from openlp.plugins.custom.lib.db import CustomSlide @@ -137,7 +137,7 @@ class CustomMediaItem(MediaManagerItem): # Sort the customs by its title considering language specific # characters. lower() is needed for windows! custom_slides.sort( - cmp=locale.strcoll, key=lambda custom: custom.title.lower()) + cmp=get_local_collator, key=lambda custom: custom.title.lower()) for custom_slide in custom_slides: custom_name = QtGui.QListWidgetItem(custom_slide.title) custom_name.setData( diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index b1e815a3a..7dfbdce35 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -27,7 +27,6 @@ import logging import os -import locale from PyQt4 import QtCore, QtGui @@ -35,7 +34,8 @@ from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \ SettingsManager, translate, check_item_selected, check_directory_exists, \ Receiver, create_thumb, validate_thumb from openlp.core.lib.ui import UiStrings, critical_error_message_box -from openlp.core.utils import AppLocation, delete_file, get_images_filter +from openlp.core.utils import AppLocation, delete_file, get_images_filter, \ + get_local_collator log = logging.getLogger(__name__) @@ -120,7 +120,7 @@ class ImageMediaItem(MediaManagerItem): self.plugin.formparent.displayProgressBar(len(images)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! - images.sort(cmp=locale.strcoll, + images.sort(cmp=get_local_collator, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for imageFile in images: if not initialLoad: diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 8a7eb86eb..eb7abc76a 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -27,7 +27,6 @@ import logging import os -import locale from PyQt4 import QtCore, QtGui @@ -37,6 +36,7 @@ from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \ from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ media_item_combo_box from openlp.core.ui import Controller, Display +from openlp.core.utils import get_local_collator log = logging.getLogger(__name__) @@ -278,7 +278,7 @@ class MediaMediaItem(MediaManagerItem): def loadList(self, media): # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! - media.sort(cmp=locale.strcoll, + media.sort(cmp=get_local_collator, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for track in media: track_info = QtCore.QFileInfo(track) @@ -298,7 +298,7 @@ class MediaMediaItem(MediaManagerItem): def getList(self, type=MediaType.Audio): media = SettingsManager.load_list(self.settingsSection, u'media') - media.sort(cmp=locale.strcoll, + media.sort(cmp=get_local_collator, key=lambda filename: os.path.split(unicode(filename))[1].lower()) ext = [] if type == MediaType.Audio: diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 6dc57373a..f070a05c2 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -27,7 +27,6 @@ import logging import os -import locale from PyQt4 import QtCore, QtGui @@ -36,6 +35,7 @@ from openlp.core.lib import MediaManagerItem, build_icon, SettingsManager, \ validate_thumb from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ media_item_combo_box +from openlp.core.utils import get_local_collator from openlp.plugins.presentations.lib import MessageListener log = logging.getLogger(__name__) @@ -168,7 +168,7 @@ class PresentationMediaItem(MediaManagerItem): self.plugin.formparent.displayProgressBar(len(files)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! - files.sort(cmp=locale.strcoll, + files.sort(cmp=get_local_collator, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for file in files: if not initialLoad: diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 20a52c82d..02f89e621 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -28,7 +28,6 @@ The :mod:`songexportform` module provides the wizard for exporting songs to the OpenLyrics format. """ -import locale import logging from PyQt4 import QtCore, QtGui @@ -36,6 +35,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import build_icon, Receiver, SettingsManager, translate from openlp.core.lib.ui import UiStrings, critical_error_message_box from openlp.core.ui.wizard import OpenLPWizard, WizardStrings +from openlp.core.utils import get_local_collator from openlp.plugins.songs.lib.db import Song from openlp.plugins.songs.lib.openlyricsexport import OpenLyricsExport @@ -250,7 +250,7 @@ class SongExportForm(OpenLPWizard): # Load the list of songs. Receiver.send_message(u'cursor_busy') songs = self.plugin.manager.get_all_objects(Song) - songs.sort(cmp=locale.strcoll, key=lambda song: song.title.lower()) + songs.sort(cmp=get_local_collator, key=lambda song: song.title.lower()) for song in songs: # No need to export temporary songs. if song.temporary: diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 052fb5b7b..59e53f5c1 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -26,7 +26,6 @@ ############################################################################### import logging -import locale import re import os import shutil @@ -39,7 +38,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings, context_menu_action, \ context_menu_separator -from openlp.core.utils import AppLocation +from openlp.core.utils import AppLocation, get_local_collator from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \ SongImportForm, SongExportForm from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType, \ @@ -268,7 +267,7 @@ class SongMediaItem(MediaManagerItem): # Sort the songs by its title considering language specific characters. # lower() is needed for windows! searchresults.sort( - cmp=locale.strcoll, key=lambda song: song.title.lower()) + cmp=get_local_collator, key=lambda song: song.title.lower()) for song in searchresults: # Do not display temporary songs if song.temporary: From 69490c8f2ca0c9b24fece64045330e9f298f670d Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 22 Dec 2011 20:11:52 +0000 Subject: [PATCH 012/105] Ensure visible flags correct, and display if single screen works on Windows --- openlp/core/ui/maindisplay.py | 10 ++++++++++ openlp/core/ui/slidecontroller.py | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 03b5da7e6..2abfac841 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -405,6 +405,11 @@ class MainDisplay(Display): Store the images so they can be replaced when required """ log.debug(u'hideDisplay mode = %d', mode) + if self.screens.display_count == 1: + # Only make visible if setting enabled + if not QtCore.QSettings().value(u'general/display on monitor', + QtCore.QVariant(True)).toBool(): + return if mode == HideMode.Screen: self.frame.evaluateJavaScript(u'show_blank("desktop");') self.setVisible(False) @@ -425,6 +430,11 @@ class MainDisplay(Display): Make the stored images None to release memory. """ log.debug(u'showDisplay') + if self.screens.display_count == 1: + # Only make visible if setting enabled + if not QtCore.QSettings().value(u'general/display on monitor', + QtCore.QVariant(True)).toBool(): + return self.frame.evaluateJavaScript('show_blank("show");') if self.isHidden(): self.setVisible(True) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index b6e18c32a..c11aa79e4 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -967,7 +967,7 @@ class SlideController(Controller): else: Receiver.send_message(u'live_display_show') else: - Receiver.send_message(u'live_display_hide', HideMode.Screen) + self.liveEscape() def onSlideBlank(self): """ From 3a5723cbaa649280fda73a850ee92f593f8615d1 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 23 Dec 2011 14:38:02 +0000 Subject: [PATCH 013/105] Don't show initial display window if on same screen as application window, override or not. --- openlp/core/ui/screen.py | 14 ++++++++++++++ openlp/core/ui/slidecontroller.py | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index 5b81c8be8..fab2e0f35 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -222,6 +222,20 @@ class ScreenList(object): log.debug(u'reset_current_display') self.set_current_display(self.current[u'number']) + def which_screen(self, window): + """ + Return the Screen number that the centre of the passed window is in + Window is a QWidget + """ + x = window.x() + (window.width() / 2) + y = window.y() + (window.height() / 2) + for screen in self.screen_list: + size = screen[u'size'] + if x >= size.x() and x <= (size.x() + size.width()) \ + and y >= size.y() and y <= (size.y() + size.height()): + return screen[u'number'] + return None + def _load_screen_settings(self): """ Loads the screen size and the monitor number from the settings. diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c11aa79e4..ae46d9e95 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -956,7 +956,8 @@ class SlideController(Controller): display_type = QtCore.QSettings().value( self.parent().generalSettingsSection + u'/screen blank', QtCore.QVariant(u'')).toString() - if not self.display.primary: + if self.screens.which_screen(self.window()) != \ + self.screens.which_screen(self.display): # Order done to handle initial conversion if display_type == u'themed': self.onThemeDisplay(True) From ec035d6d379269c1bb947687303a53f6ac3afce6 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 23 Dec 2011 17:25:05 +0000 Subject: [PATCH 014/105] Set correct monitor in wizard --- openlp/core/ui/firsttimeform.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index 9a5a2ea9d..e7f516980 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -421,6 +421,8 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): if self.displayComboBox.currentIndex() != -1: QtCore.QSettings().setValue(u'General/monitor', QtCore.QVariant(self.displayComboBox.currentIndex())) + self.screens.set_current_display( + self.displayComboBox.currentIndex()) # Set Global Theme if self.themeComboBox.currentIndex() != -1: QtCore.QSettings().setValue(u'themes/global theme', From b48dda3c741477a281f692f857459226211bcfb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Fri, 23 Dec 2011 21:14:49 +0200 Subject: [PATCH 015/105] Converts <> marks to <> to make it impossible to insert HTML to alerts. Fixes: https://launchpad.net/bugs/908197 --- openlp/core/ui/maindisplay.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index de8fce454..021ca4cf6 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -240,12 +240,14 @@ class MainDisplay(Display): not self.isVisible(): shrink = True js = u'show_alert("%s", "%s")' % ( - text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'), + text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"') + .replace(u'<', u'<').replace(u'>', u'>'), u'top') else: shrink = False js = u'show_alert("%s", "")' % ( - text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"')) + text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"') + .replace(u'<', u'<').replace(u'>', u'>')) height = self.frame.evaluateJavaScript(js) if shrink: if text: From 2b9f09b32ad688b48df5171fcf47c8c55856f6a6 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 23 Dec 2011 21:52:54 +0000 Subject: [PATCH 016/105] Minor fixes --- openlp/core/ui/screen.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index fab2e0f35..1f3a1e7f8 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -224,8 +224,10 @@ class ScreenList(object): def which_screen(self, window): """ - Return the Screen number that the centre of the passed window is in - Window is a QWidget + Return the screen number that the centre of the passed window is in. + + ``window`` + A QWidget we are finding the location of. """ x = window.x() + (window.width() / 2) y = window.y() + (window.height() / 2) @@ -234,7 +236,6 @@ class ScreenList(object): if x >= size.x() and x <= (size.x() + size.width()) \ and y >= size.y() and y <= (size.y() + size.height()): return screen[u'number'] - return None def _load_screen_settings(self): """ From 70c0125255d4dd5717b9243904f69e4c7f4a0558 Mon Sep 17 00:00:00 2001 From: Martin Zibricky Date: Sat, 24 Dec 2011 13:26:50 +0100 Subject: [PATCH 017/105] Include media player files with build for Mac OS X --- resources/osx/build.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/resources/osx/build.py b/resources/osx/build.py index 53033c943..ea8531239 100644 --- a/resources/osx/build.py +++ b/resources/osx/build.py @@ -86,13 +86,16 @@ import platform import re import subprocess as subp +from shutil import copy + # set the script name script_name = "build" + def build_application(settings, app_name_lower, app_dir): logging.info('[%s] now building the app with pyinstaller at "%s"...', script_name, settings['pyinstaller_basedir']) - result = os.system('%s %s/pyinstaller.py openlp.spec' \ + result = os.system('arch -i386 %s %s/pyinstaller.py openlp.spec' \ % ( sys.executable, settings['pyinstaller_basedir']) ) if (result != 0): @@ -152,7 +155,7 @@ def build_application(settings, app_name_lower, app_dir): sys.exit(1) logging.info('[%s] copying the translations...', script_name) - os.mkdir(app_dir + '/Contents/MacOS/i18n') + os.makedirs(app_dir + '/Contents/MacOS/i18n') for ts_file in glob.glob(os.path.join(settings['openlp_basedir'] + '/resources/i18n/', '*ts')): result = os.system('lconvert -i %(ts_file)s \ @@ -164,6 +167,22 @@ def build_application(settings, app_name_lower, app_dir): creation failed!', script_name) sys.exit(1) + # Backported from windows build script. + logging.info('[%s] copying the media player...', script_name) + os.makedirs(os.path.join(app_dir, 'Contents/MacOS/core/ui/media')) + source = os.path.join(settings['openlp_basedir'], u'openlp', u'core', u'ui', u'media') + dest = os.path.join(app_dir, u'Contents/MacOS/core/ui/media') + for root, dirs, files in os.walk(source): + for filename in files: + print filename + if not filename.endswith(u'.pyc'): + dest_path = os.path.join(dest, root[len(source)+1:]) + if not os.path.exists(dest_path): + os.makedirs(dest_path) + copy(os.path.join(root, filename), + os.path.join(dest_path, filename)) + + def create_dmg(settings): logging.info('[%s] creating the dmg...', script_name) dmg_file = os.getcwd() + '/' + settings['openlp_dmgname'] + '.dmg' @@ -405,4 +424,3 @@ if __name__ == '__main__': if (do_compress_dmg is True): logging.info('[%s] finished creating dmg file, resulting file is "%s"', script_name, dmg_file) - From b25fe75070e1882430a8c2f2426d1fbc01a7b875 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 26 Dec 2011 16:33:11 +0000 Subject: [PATCH 018/105] Fix unused imports --- openlp/plugins/remotes/lib/httpserver.py | 1 - openlp/plugins/songs/lib/upgrade.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py index 0da445ede..0bddc23b2 100644 --- a/openlp/plugins/remotes/lib/httpserver.py +++ b/openlp/plugins/remotes/lib/httpserver.py @@ -125,7 +125,6 @@ from PyQt4 import QtCore, QtNetwork from mako.template import Template from openlp.core.lib import Receiver, PluginStatus, StringContent -from openlp.core.ui import HideMode from openlp.core.utils import AppLocation, translate log = logging.getLogger(__name__) diff --git a/openlp/plugins/songs/lib/upgrade.py b/openlp/plugins/songs/lib/upgrade.py index 25f90e860..444be5960 100644 --- a/openlp/plugins/songs/lib/upgrade.py +++ b/openlp/plugins/songs/lib/upgrade.py @@ -33,8 +33,6 @@ from sqlalchemy import Column, Table, types from sqlalchemy.sql.expression import func from migrate.changeset.constraint import ForeignKeyConstraint -from openlp.plugins.songs.lib.db import Song - __version__ = 3 def upgrade_setup(metadata): From 2a5e8935bb297382ac3958e1ad2044aafbfae9a0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 27 Dec 2011 10:33:55 +0000 Subject: [PATCH 019/105] New year merge --- copyright.txt | 2 +- openlp.pyw | 4 ++-- openlp/__init__.py | 4 ++-- openlp/core/__init__.py | 4 ++-- openlp/core/lib/__init__.py | 4 ++-- openlp/core/lib/db.py | 4 ++-- openlp/core/lib/dockwidget.py | 4 ++-- openlp/core/lib/eventreceiver.py | 4 ++-- openlp/core/lib/formattingtags.py | 4 ++-- openlp/core/lib/htmlbuilder.py | 4 ++-- openlp/core/lib/imagemanager.py | 4 ++-- openlp/core/lib/listwidgetwithdnd.py | 4 ++-- openlp/core/lib/mediamanageritem.py | 4 ++-- openlp/core/lib/mediaplayer.py | 4 ++-- openlp/core/lib/plugin.py | 4 ++-- openlp/core/lib/pluginmanager.py | 4 ++-- openlp/core/lib/renderer.py | 4 ++-- openlp/core/lib/searchedit.py | 4 ++-- openlp/core/lib/serviceitem.py | 4 ++-- openlp/core/lib/settingsmanager.py | 4 ++-- openlp/core/lib/settingstab.py | 4 ++-- openlp/core/lib/spelltextedit.py | 4 ++-- openlp/core/lib/theme.py | 4 ++-- openlp/core/lib/toolbar.py | 4 ++-- openlp/core/lib/ui.py | 4 ++-- openlp/core/theme/__init__.py | 4 ++-- openlp/core/theme/theme.py | 4 ++-- openlp/core/ui/__init__.py | 4 ++-- openlp/core/ui/aboutdialog.py | 8 ++++---- openlp/core/ui/aboutform.py | 4 ++-- openlp/core/ui/advancedtab.py | 4 ++-- openlp/core/ui/exceptiondialog.py | 4 ++-- openlp/core/ui/exceptionform.py | 4 ++-- openlp/core/ui/filerenamedialog.py | 4 ++-- openlp/core/ui/filerenameform.py | 4 ++-- openlp/core/ui/firsttimeform.py | 4 ++-- openlp/core/ui/firsttimelanguagedialog.py | 4 ++-- openlp/core/ui/firsttimelanguageform.py | 4 ++-- openlp/core/ui/firsttimewizard.py | 4 ++-- openlp/core/ui/formattingtagdialog.py | 4 ++-- openlp/core/ui/formattingtagform.py | 4 ++-- openlp/core/ui/generaltab.py | 4 ++-- openlp/core/ui/maindisplay.py | 4 ++-- openlp/core/ui/mainwindow.py | 4 ++-- openlp/core/ui/mediadockmanager.py | 4 ++-- openlp/core/ui/plugindialog.py | 4 ++-- openlp/core/ui/pluginform.py | 4 ++-- openlp/core/ui/printservicedialog.py | 4 ++-- openlp/core/ui/printserviceform.py | 4 ++-- openlp/core/ui/screen.py | 4 ++-- openlp/core/ui/serviceitemeditdialog.py | 4 ++-- openlp/core/ui/serviceitemeditform.py | 4 ++-- openlp/core/ui/servicemanager.py | 4 ++-- openlp/core/ui/servicenoteform.py | 4 ++-- openlp/core/ui/settingsdialog.py | 4 ++-- openlp/core/ui/settingsform.py | 4 ++-- openlp/core/ui/shortcutlistdialog.py | 4 ++-- openlp/core/ui/shortcutlistform.py | 4 ++-- openlp/core/ui/slidecontroller.py | 4 ++-- openlp/core/ui/splashscreen.py | 4 ++-- openlp/core/ui/starttimedialog.py | 4 ++-- openlp/core/ui/starttimeform.py | 4 ++-- openlp/core/ui/themeform.py | 4 ++-- openlp/core/ui/themelayoutdialog.py | 4 ++-- openlp/core/ui/themelayoutform.py | 4 ++-- openlp/core/ui/thememanager.py | 4 ++-- openlp/core/ui/themestab.py | 4 ++-- openlp/core/ui/themewizard.py | 4 ++-- openlp/core/ui/wizard.py | 4 ++-- openlp/core/utils/__init__.py | 4 ++-- openlp/core/utils/actions.py | 4 ++-- openlp/core/utils/languagemanager.py | 4 ++-- openlp/plugins/__init__.py | 4 ++-- openlp/plugins/alerts/__init__.py | 4 ++-- openlp/plugins/alerts/alertsplugin.py | 4 ++-- openlp/plugins/alerts/forms/__init__.py | 4 ++-- openlp/plugins/alerts/forms/alertdialog.py | 4 ++-- openlp/plugins/alerts/forms/alertform.py | 4 ++-- openlp/plugins/alerts/lib/__init__.py | 4 ++-- openlp/plugins/alerts/lib/alertsmanager.py | 4 ++-- openlp/plugins/alerts/lib/alertstab.py | 4 ++-- openlp/plugins/alerts/lib/db.py | 4 ++-- openlp/plugins/bibles/__init__.py | 4 ++-- openlp/plugins/bibles/bibleplugin.py | 4 ++-- openlp/plugins/bibles/forms/__init__.py | 4 ++-- openlp/plugins/bibles/forms/bibleimportform.py | 4 ++-- openlp/plugins/bibles/forms/bibleupgradeform.py | 4 ++-- openlp/plugins/bibles/forms/booknamedialog.py | 4 ++-- openlp/plugins/bibles/forms/booknameform.py | 4 ++-- openlp/plugins/bibles/forms/languagedialog.py | 4 ++-- openlp/plugins/bibles/forms/languageform.py | 4 ++-- openlp/plugins/bibles/lib/__init__.py | 4 ++-- openlp/plugins/bibles/lib/biblestab.py | 4 ++-- openlp/plugins/bibles/lib/csvbible.py | 4 ++-- openlp/plugins/bibles/lib/db.py | 4 ++-- openlp/plugins/bibles/lib/http.py | 4 ++-- openlp/plugins/bibles/lib/manager.py | 4 ++-- openlp/plugins/bibles/lib/mediaitem.py | 4 ++-- openlp/plugins/bibles/lib/openlp1.py | 4 ++-- openlp/plugins/bibles/lib/opensong.py | 4 ++-- openlp/plugins/bibles/lib/osis.py | 4 ++-- openlp/plugins/bibles/lib/versereferencelist.py | 4 ++-- openlp/plugins/custom/__init__.py | 4 ++-- openlp/plugins/custom/customplugin.py | 4 ++-- openlp/plugins/custom/forms/__init__.py | 4 ++-- openlp/plugins/custom/forms/editcustomdialog.py | 4 ++-- openlp/plugins/custom/forms/editcustomform.py | 4 ++-- openlp/plugins/custom/forms/editcustomslidedialog.py | 4 ++-- openlp/plugins/custom/forms/editcustomslideform.py | 4 ++-- openlp/plugins/custom/lib/__init__.py | 4 ++-- openlp/plugins/custom/lib/customtab.py | 4 ++-- openlp/plugins/custom/lib/customxmlhandler.py | 4 ++-- openlp/plugins/custom/lib/db.py | 4 ++-- openlp/plugins/custom/lib/mediaitem.py | 4 ++-- openlp/plugins/images/__init__.py | 4 ++-- openlp/plugins/images/imageplugin.py | 4 ++-- openlp/plugins/images/lib/__init__.py | 4 ++-- openlp/plugins/images/lib/imagetab.py | 4 ++-- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/media/__init__.py | 4 ++-- openlp/plugins/media/lib/__init__.py | 4 ++-- openlp/plugins/media/lib/mediaitem.py | 4 ++-- openlp/plugins/media/lib/mediatab.py | 4 ++-- openlp/plugins/media/mediaplugin.py | 4 ++-- openlp/plugins/presentations/__init__.py | 4 ++-- openlp/plugins/presentations/lib/__init__.py | 4 ++-- openlp/plugins/presentations/lib/impresscontroller.py | 4 ++-- openlp/plugins/presentations/lib/mediaitem.py | 4 ++-- openlp/plugins/presentations/lib/messagelistener.py | 4 ++-- openlp/plugins/presentations/lib/powerpointcontroller.py | 4 ++-- openlp/plugins/presentations/lib/pptviewcontroller.py | 4 ++-- openlp/plugins/presentations/lib/pptviewlib/ppttest.py | 4 ++-- .../plugins/presentations/lib/presentationcontroller.py | 4 ++-- openlp/plugins/presentations/lib/presentationtab.py | 4 ++-- openlp/plugins/presentations/presentationplugin.py | 4 ++-- openlp/plugins/remotes/__init__.py | 4 ++-- openlp/plugins/remotes/lib/__init__.py | 4 ++-- openlp/plugins/remotes/lib/httpserver.py | 4 ++-- openlp/plugins/remotes/lib/remotetab.py | 4 ++-- openlp/plugins/remotes/remoteplugin.py | 4 ++-- openlp/plugins/songs/__init__.py | 4 ++-- openlp/plugins/songs/forms/__init__.py | 4 ++-- openlp/plugins/songs/forms/authorsdialog.py | 4 ++-- openlp/plugins/songs/forms/authorsform.py | 4 ++-- openlp/plugins/songs/forms/editsongdialog.py | 4 ++-- openlp/plugins/songs/forms/editsongform.py | 4 ++-- openlp/plugins/songs/forms/editversedialog.py | 4 ++-- openlp/plugins/songs/forms/editverseform.py | 4 ++-- openlp/plugins/songs/forms/mediafilesdialog.py | 4 ++-- openlp/plugins/songs/forms/mediafilesform.py | 4 ++-- openlp/plugins/songs/forms/songbookdialog.py | 4 ++-- openlp/plugins/songs/forms/songbookform.py | 4 ++-- openlp/plugins/songs/forms/songexportform.py | 4 ++-- openlp/plugins/songs/forms/songimportform.py | 4 ++-- openlp/plugins/songs/forms/songmaintenancedialog.py | 4 ++-- openlp/plugins/songs/forms/songmaintenanceform.py | 4 ++-- openlp/plugins/songs/forms/topicsdialog.py | 4 ++-- openlp/plugins/songs/forms/topicsform.py | 4 ++-- openlp/plugins/songs/lib/__init__.py | 4 ++-- openlp/plugins/songs/lib/cclifileimport.py | 4 ++-- openlp/plugins/songs/lib/db.py | 4 ++-- openlp/plugins/songs/lib/easislidesimport.py | 4 ++-- openlp/plugins/songs/lib/ewimport.py | 4 ++-- openlp/plugins/songs/lib/foilpresenterimport.py | 6 +++--- openlp/plugins/songs/lib/importer.py | 4 ++-- openlp/plugins/songs/lib/mediaitem.py | 4 ++-- openlp/plugins/songs/lib/olp1import.py | 4 ++-- openlp/plugins/songs/lib/olpimport.py | 4 ++-- openlp/plugins/songs/lib/oooimport.py | 4 ++-- openlp/plugins/songs/lib/openlyricsexport.py | 4 ++-- openlp/plugins/songs/lib/openlyricsimport.py | 4 ++-- openlp/plugins/songs/lib/opensongimport.py | 4 ++-- openlp/plugins/songs/lib/sofimport.py | 4 ++-- openlp/plugins/songs/lib/songbeamerimport.py | 4 ++-- openlp/plugins/songs/lib/songimport.py | 4 ++-- openlp/plugins/songs/lib/songshowplusimport.py | 4 ++-- openlp/plugins/songs/lib/songstab.py | 4 ++-- openlp/plugins/songs/lib/ui.py | 4 ++-- openlp/plugins/songs/lib/upgrade.py | 4 ++-- openlp/plugins/songs/lib/wowimport.py | 4 ++-- openlp/plugins/songs/lib/xml.py | 6 +++--- openlp/plugins/songs/songsplugin.py | 4 ++-- openlp/plugins/songusage/__init__.py | 4 ++-- openlp/plugins/songusage/forms/__init__.py | 4 ++-- openlp/plugins/songusage/forms/songusagedeletedialog.py | 4 ++-- openlp/plugins/songusage/forms/songusagedeleteform.py | 4 ++-- openlp/plugins/songusage/forms/songusagedetaildialog.py | 4 ++-- openlp/plugins/songusage/forms/songusagedetailform.py | 4 ++-- openlp/plugins/songusage/lib/__init__.py | 4 ++-- openlp/plugins/songusage/lib/db.py | 4 ++-- openlp/plugins/songusage/lib/upgrade.py | 4 ++-- openlp/plugins/songusage/songusageplugin.py | 4 ++-- setup.py | 4 ++-- 193 files changed, 389 insertions(+), 389 deletions(-) diff --git a/copyright.txt b/copyright.txt index df5563844..cef2e1072 100644 --- a/copyright.txt +++ b/copyright.txt @@ -5,7 +5,7 @@ # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # # Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp.pyw b/openlp.pyw index 64ffb3321..cc58c6a21 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -5,8 +5,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/__init__.py b/openlp/__init__.py index 5f7608770..c0e8a73dc 100644 --- a/openlp/__init__.py +++ b/openlp/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 82a30b19f..b6efd5595 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index a687ded64..150ad2ea6 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index b6f12d180..2e7757324 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index 8c942171c..4f74784ad 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index 40cac8e35..e3914d98a 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/formattingtags.py b/openlp/core/lib/formattingtags.py index bc0055325..bb5f1e716 100644 --- a/openlp/core/lib/formattingtags.py +++ b/openlp/core/lib/formattingtags.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index e4cdecd72..bdfcb3870 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py index 0dcc2246b..8fa2127ad 100644 --- a/openlp/core/lib/imagemanager.py +++ b/openlp/core/lib/imagemanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/listwidgetwithdnd.py b/openlp/core/lib/listwidgetwithdnd.py index 31be1f5be..67fa45f74 100644 --- a/openlp/core/lib/listwidgetwithdnd.py +++ b/openlp/core/lib/listwidgetwithdnd.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 1bddb2d93..5f10fe65f 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/mediaplayer.py b/openlp/core/lib/mediaplayer.py index 9a86f708b..e4c8dc88f 100644 --- a/openlp/core/lib/mediaplayer.py +++ b/openlp/core/lib/mediaplayer.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 624ce2083..f3bfb68c6 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index d63a37dde..80160911d 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 503c60b04..135bb9078 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py index c172ba21d..c212dcc24 100644 --- a/openlp/core/lib/searchedit.py +++ b/openlp/core/lib/searchedit.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 62418f49e..9878e1f24 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index 9bcbf2f07..c21b58a45 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py index f36f9f561..aaa1e5af4 100644 --- a/openlp/core/lib/settingstab.py +++ b/openlp/core/lib/settingstab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/spelltextedit.py b/openlp/core/lib/spelltextedit.py index 25e4e24ae..38077a590 100644 --- a/openlp/core/lib/spelltextedit.py +++ b/openlp/core/lib/spelltextedit.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py index 34a3b9d98..6c5645c6c 100644 --- a/openlp/core/lib/theme.py +++ b/openlp/core/lib/theme.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/toolbar.py b/openlp/core/lib/toolbar.py index cf550d875..1418b501a 100644 --- a/openlp/core/lib/toolbar.py +++ b/openlp/core/lib/toolbar.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 756df36c3..72bdd8b0c 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/theme/__init__.py b/openlp/core/theme/__init__.py index 44a937608..76223d78a 100644 --- a/openlp/core/theme/__init__.py +++ b/openlp/core/theme/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py index 48e364dbd..90ca6cf6c 100644 --- a/openlp/core/theme/theme.py +++ b/openlp/core/theme/theme.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index a24d357f0..e9c593337 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index 92849e0b9..5032f0d40 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # @@ -227,8 +227,8 @@ class Ui_AboutDialog(object): self.aboutNotebook.indexOf(self.creditsTab), translate('OpenLP.AboutForm', 'Credits')) copyright = unicode(translate('OpenLP.AboutForm', - 'Copyright \xa9 2004-2011 %s\n' - 'Portions copyright \xa9 2004-2011 %s')) % (u'Raoul Snyman', + 'Copyright \xa9 2004-2012 %s\n' + 'Portions copyright \xa9 2004-2012 %s')) % (u'Raoul Snyman', u'Tim Bentley, Jonathan Corwin, Michael Gorven, Gerald Britton, ' u'Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin K\xf6hler, ' u'Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias ' diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index 4e031656c..e2ccbc3c3 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 43e2a9915..50e330362 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 6ed45c5d8..26f90e11f 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 83a6d4344..d2469c092 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/filerenamedialog.py b/openlp/core/ui/filerenamedialog.py index 7d233a4fa..4822d4751 100644 --- a/openlp/core/ui/filerenamedialog.py +++ b/openlp/core/ui/filerenamedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/filerenameform.py b/openlp/core/ui/filerenameform.py index 0bdbdf892..3396d68cb 100644 --- a/openlp/core/ui/filerenameform.py +++ b/openlp/core/ui/filerenameform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index 9a5a2ea9d..00b89848c 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/firsttimelanguagedialog.py b/openlp/core/ui/firsttimelanguagedialog.py index 172fd3e0f..b021c9d8e 100644 --- a/openlp/core/ui/firsttimelanguagedialog.py +++ b/openlp/core/ui/firsttimelanguagedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/firsttimelanguageform.py b/openlp/core/ui/firsttimelanguageform.py index dcde212eb..3ffbc1b00 100644 --- a/openlp/core/ui/firsttimelanguageform.py +++ b/openlp/core/ui/firsttimelanguageform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py index 0f152a396..e402134c6 100644 --- a/openlp/core/ui/firsttimewizard.py +++ b/openlp/core/ui/firsttimewizard.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/formattingtagdialog.py b/openlp/core/ui/formattingtagdialog.py index 186f4739b..b73816635 100644 --- a/openlp/core/ui/formattingtagdialog.py +++ b/openlp/core/ui/formattingtagdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py index e7435e5b7..d99758476 100644 --- a/openlp/core/ui/formattingtagform.py +++ b/openlp/core/ui/formattingtagform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index be02b3caa..d86c122b7 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index de8fce454..e5b518b29 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 07c90e62f..3490dfada 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py index cc6cc92bc..1b8666cd3 100644 --- a/openlp/core/ui/mediadockmanager.py +++ b/openlp/core/ui/mediadockmanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/plugindialog.py b/openlp/core/ui/plugindialog.py index 3fc4bf34b..a9a38a9eb 100644 --- a/openlp/core/ui/plugindialog.py +++ b/openlp/core/ui/plugindialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index 6933bd8fc..435181568 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/printservicedialog.py b/openlp/core/ui/printservicedialog.py index 8287ef02a..6d39fea55 100644 --- a/openlp/core/ui/printservicedialog.py +++ b/openlp/core/ui/printservicedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index 4d1dc71c8..3e650765d 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index 5b81c8be8..7cf560bd9 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index d821430b2..362687137 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 974133c3d..3541870ba 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 67c12ed4a..ecfe07d60 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/servicenoteform.py b/openlp/core/ui/servicenoteform.py index ddfcb3381..392a6f32d 100644 --- a/openlp/core/ui/servicenoteform.py +++ b/openlp/core/ui/servicenoteform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py index 643ab0a6e..8d692de7b 100644 --- a/openlp/core/ui/settingsdialog.py +++ b/openlp/core/ui/settingsdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index b25a3a856..0aa5d44d0 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/shortcutlistdialog.py b/openlp/core/ui/shortcutlistdialog.py index a9b9b22cf..eaee35afa 100644 --- a/openlp/core/ui/shortcutlistdialog.py +++ b/openlp/core/ui/shortcutlistdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/shortcutlistform.py b/openlp/core/ui/shortcutlistform.py index 711b46c43..211946793 100644 --- a/openlp/core/ui/shortcutlistform.py +++ b/openlp/core/ui/shortcutlistform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index b6e18c32a..263fe0488 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py index 036daf968..7ab2d9798 100644 --- a/openlp/core/ui/splashscreen.py +++ b/openlp/core/ui/splashscreen.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 61e4eb662..236795b01 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 45c0b70b7..61c57e417 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py index 9ccd91d08..54d6287f1 100644 --- a/openlp/core/ui/themeform.py +++ b/openlp/core/ui/themeform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/themelayoutdialog.py b/openlp/core/ui/themelayoutdialog.py index 56bfe79bb..26346392b 100644 --- a/openlp/core/ui/themelayoutdialog.py +++ b/openlp/core/ui/themelayoutdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/themelayoutform.py b/openlp/core/ui/themelayoutform.py index 57d8bd952..1a28a5397 100644 --- a/openlp/core/ui/themelayoutform.py +++ b/openlp/core/ui/themelayoutform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 5dfb6a0f0..a0fd83897 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index 572efdf4b..3439ade28 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 1135db274..3031266b7 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/ui/wizard.py b/openlp/core/ui/wizard.py index 9d8a106ed..fbec69c9b 100644 --- a/openlp/core/ui/wizard.py +++ b/openlp/core/ui/wizard.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 2e73fbb80..9fa5bcd77 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index 857e8ceed..a66d7a270 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index 7b57ee2bc..929105ad2 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/__init__.py b/openlp/plugins/__init__.py index 48fe8cb77..63bbf5147 100644 --- a/openlp/plugins/__init__.py +++ b/openlp/plugins/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/__init__.py b/openlp/plugins/alerts/__init__.py index 006db9361..6c511cb8b 100644 --- a/openlp/plugins/alerts/__init__.py +++ b/openlp/plugins/alerts/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index ba2af74e8..e67ef0686 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/forms/__init__.py b/openlp/plugins/alerts/forms/__init__.py index 3b11d7c92..ab18207e3 100644 --- a/openlp/plugins/alerts/forms/__init__.py +++ b/openlp/plugins/alerts/forms/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index e42680165..6cd59f9a2 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 45d283f28..188914c5d 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/lib/__init__.py b/openlp/plugins/alerts/lib/__init__.py index 780f295a8..f9c6e626d 100644 --- a/openlp/plugins/alerts/lib/__init__.py +++ b/openlp/plugins/alerts/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index e73273fe7..7c92df75e 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 90e06caab..fc7c74ea5 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/alerts/lib/db.py b/openlp/plugins/alerts/lib/db.py index b5c4f8d60..7cc1227e6 100644 --- a/openlp/plugins/alerts/lib/db.py +++ b/openlp/plugins/alerts/lib/db.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py index d468ae0dc..202cd0edd 100644 --- a/openlp/plugins/bibles/__init__.py +++ b/openlp/plugins/bibles/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 68b4d1ce8..2f9a4fd6d 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index 5b19d9f24..89bfbfff3 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 7577e86a3..ee7b5a063 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 322e3219a..7c7f14979 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # # Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # # Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index e9211b3d5..4b67fa826 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Meinert Jordan, Armin Köhler, Andreas Preikschat, # # Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon # # Tibble, Carsten Tinggaard, Frode Woldsund # diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index b07f28bf1..e786d720a 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Meinert Jordan, Armin Köhler, Andreas Preikschat, # # Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon # # Tibble, Carsten Tinggaard, Frode Woldsund # diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py index 5c1325a54..390977ee9 100644 --- a/openlp/plugins/bibles/forms/languagedialog.py +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Meinert Jordan, Armin Köhler, Andreas Preikschat, # # Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon # # Tibble, Carsten Tinggaard, Frode Woldsund # diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index c5069815b..cf027341d 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Meinert Jordan, Armin Köhler, Andreas Preikschat, # # Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon # # Tibble, Carsten Tinggaard, Frode Woldsund # diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 7e40b6230..0539aef0c 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 4a24c146d..8402d6e11 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 55feae7d4..cd4b921a1 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 243e7f967..5f3b7a6c9 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index e2cbcdef0..72ffed487 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 934aa2d90..873b42cee 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 31effe189..d7b3fff01 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 7701f1828..25aa109de 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 16820229c..ab03ef22f 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index d4d797513..3fac48f19 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/bibles/lib/versereferencelist.py b/openlp/plugins/bibles/lib/versereferencelist.py index a1727655e..73710468b 100644 --- a/openlp/plugins/bibles/lib/versereferencelist.py +++ b/openlp/plugins/bibles/lib/versereferencelist.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/__init__.py b/openlp/plugins/custom/__init__.py index 3446f597e..2d28ae53c 100644 --- a/openlp/plugins/custom/__init__.py +++ b/openlp/plugins/custom/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index e9260f926..51206901d 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py index e901095c2..71605ebd7 100644 --- a/openlp/plugins/custom/forms/__init__.py +++ b/openlp/plugins/custom/forms/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 3eee1cfd4..1d79968f5 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index a85daa38b..6a72907a9 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index 759f6b19d..a616075c0 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index 71696ebc1..d7d022a66 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py index 0e343b6cc..c7737441d 100644 --- a/openlp/plugins/custom/lib/__init__.py +++ b/openlp/plugins/custom/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index 8a7762f37..0466cf696 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/lib/customxmlhandler.py b/openlp/plugins/custom/lib/customxmlhandler.py index ff9fab7a7..a2210f8c6 100644 --- a/openlp/plugins/custom/lib/customxmlhandler.py +++ b/openlp/plugins/custom/lib/customxmlhandler.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/lib/db.py b/openlp/plugins/custom/lib/db.py index 0cefaf012..b8d96ecea 100644 --- a/openlp/plugins/custom/lib/db.py +++ b/openlp/plugins/custom/lib/db.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 59d6b4fb6..61f50e6c0 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/images/__init__.py b/openlp/plugins/images/__init__.py index b95ac000d..d724ebd57 100644 --- a/openlp/plugins/images/__init__.py +++ b/openlp/plugins/images/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 4b5a6f3c0..5997498d7 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/images/lib/__init__.py b/openlp/plugins/images/lib/__init__.py index e216623cd..08396a358 100644 --- a/openlp/plugins/images/lib/__init__.py +++ b/openlp/plugins/images/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/images/lib/imagetab.py b/openlp/plugins/images/lib/imagetab.py index 1aa39b63c..be54e207c 100644 --- a/openlp/plugins/images/lib/imagetab.py +++ b/openlp/plugins/images/lib/imagetab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index b1e815a3a..92779b991 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/media/__init__.py b/openlp/plugins/media/__init__.py index 32cff0c44..8625277ca 100644 --- a/openlp/plugins/media/__init__.py +++ b/openlp/plugins/media/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/media/lib/__init__.py b/openlp/plugins/media/lib/__init__.py index 25b8d531a..02a589ce6 100644 --- a/openlp/plugins/media/lib/__init__.py +++ b/openlp/plugins/media/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 8a7eb86eb..111a86209 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index 1b75016cc..d175e1b88 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 3b790dd93..cd3f8b3dd 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/__init__.py b/openlp/plugins/presentations/__init__.py index d7cb7afe5..96f5e9539 100644 --- a/openlp/plugins/presentations/__init__.py +++ b/openlp/plugins/presentations/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py index 3c4e0499d..1092a7458 100644 --- a/openlp/plugins/presentations/lib/__init__.py +++ b/openlp/plugins/presentations/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 8355da5a8..3e6c5450a 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 6dc57373a..03fdadb1b 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 0f38cf02f..1b795624b 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 8f551e411..da828b436 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index cd940da5c..4f3e43c6d 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py index 50cf515dc..f41a228b0 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py +++ b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 7ff04179f..7702f19cd 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index c11f36c20..aaa1fd21a 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index e35659638..7121aff27 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/remotes/__init__.py b/openlp/plugins/remotes/__init__.py index ab1d8adbc..7012c14d4 100644 --- a/openlp/plugins/remotes/__init__.py +++ b/openlp/plugins/remotes/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/remotes/lib/__init__.py b/openlp/plugins/remotes/lib/__init__.py index e1291f2a0..089d15e6c 100644 --- a/openlp/plugins/remotes/lib/__init__.py +++ b/openlp/plugins/remotes/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py index 0da445ede..5fcf8cc21 100644 --- a/openlp/plugins/remotes/lib/httpserver.py +++ b/openlp/plugins/remotes/lib/httpserver.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 95bb27f1c..a1276800a 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index dfaff9675..d51c3b147 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/__init__.py b/openlp/plugins/songs/__init__.py index 7f8c55e77..3db4ec0f4 100644 --- a/openlp/plugins/songs/__init__.py +++ b/openlp/plugins/songs/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index d82e3dea3..6d9f09997 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index ba44a81ff..fb537d04b 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index d53f347b8..758f76ca8 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 469716f6b..b1f8e4c6a 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 776c3c88b..cfc1772ef 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 6b1e13b7d..7c78ae355 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 0a9505a44..f4c9e6cb3 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/mediafilesdialog.py b/openlp/plugins/songs/forms/mediafilesdialog.py index 252dac5ff..332cda6b8 100644 --- a/openlp/plugins/songs/forms/mediafilesdialog.py +++ b/openlp/plugins/songs/forms/mediafilesdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/mediafilesform.py b/openlp/plugins/songs/forms/mediafilesform.py index 34dac0390..db40eea63 100644 --- a/openlp/plugins/songs/forms/mediafilesform.py +++ b/openlp/plugins/songs/forms/mediafilesform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index ecaf3b89b..b9b0cd137 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index ec6afa194..219c4965b 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 20a52c82d..679330ec5 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 53e70cde6..6538aa61c 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index b14374cf9..4f347a768 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 09457c5d4..135351782 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 4f6c5ada7..851897b89 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 31fa17425..b57eae866 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 19397d4ac..1c3fb76df 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 1e750ddbe..f15ef1819 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py index ce228e5f8..3c5fa5b82 100644 --- a/openlp/plugins/songs/lib/db.py +++ b/openlp/plugins/songs/lib/db.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/easislidesimport.py b/openlp/plugins/songs/lib/easislidesimport.py index a3dd553f1..b4ed010c3 100644 --- a/openlp/plugins/songs/lib/easislidesimport.py +++ b/openlp/plugins/songs/lib/easislidesimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py index 8dfa636e8..f17900fd5 100644 --- a/openlp/plugins/songs/lib/ewimport.py +++ b/openlp/plugins/songs/lib/ewimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/foilpresenterimport.py b/openlp/plugins/songs/lib/foilpresenterimport.py index 90ffde8a0..fd2a9992b 100644 --- a/openlp/plugins/songs/lib/foilpresenterimport.py +++ b/openlp/plugins/songs/lib/foilpresenterimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # @@ -30,7 +30,7 @@ The XML of `Foilpresenter `_ songs is of the format:: 2004.6.18.18.44.37.0767 - 2011.1.21.8.53.5 + 2012.1.21.8.53.5 Above all diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index c24313be1..2a220b6cb 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 052fb5b7b..923c1cfe1 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/olp1import.py b/openlp/plugins/songs/lib/olp1import.py index f564eb774..b4f0721a6 100644 --- a/openlp/plugins/songs/lib/olp1import.py +++ b/openlp/plugins/songs/lib/olp1import.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index 7187950b7..888383034 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index f817bfb45..f98cf2dda 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/openlyricsexport.py b/openlp/plugins/songs/lib/openlyricsexport.py index 515674618..d5ffcb1a4 100644 --- a/openlp/plugins/songs/lib/openlyricsexport.py +++ b/openlp/plugins/songs/lib/openlyricsexport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/openlyricsimport.py b/openlp/plugins/songs/lib/openlyricsimport.py index f3639fc3b..6aafdce16 100644 --- a/openlp/plugins/songs/lib/openlyricsimport.py +++ b/openlp/plugins/songs/lib/openlyricsimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/opensongimport.py b/openlp/plugins/songs/lib/opensongimport.py index da5809095..29806f93a 100644 --- a/openlp/plugins/songs/lib/opensongimport.py +++ b/openlp/plugins/songs/lib/opensongimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 7bd0a50d6..cf87ba00b 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/songbeamerimport.py b/openlp/plugins/songs/lib/songbeamerimport.py index 2ed900544..43ed4d846 100644 --- a/openlp/plugins/songs/lib/songbeamerimport.py +++ b/openlp/plugins/songs/lib/songbeamerimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index ee6c7da41..d820998c9 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/songshowplusimport.py b/openlp/plugins/songs/lib/songshowplusimport.py index 109b7389f..aba2f6d05 100644 --- a/openlp/plugins/songs/lib/songshowplusimport.py +++ b/openlp/plugins/songs/lib/songshowplusimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index f24d12f58..e662cee78 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/ui.py b/openlp/plugins/songs/lib/ui.py index 066e2eef6..d1e532bcb 100644 --- a/openlp/plugins/songs/lib/ui.py +++ b/openlp/plugins/songs/lib/ui.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/upgrade.py b/openlp/plugins/songs/lib/upgrade.py index 25f90e860..f2bafd7b7 100644 --- a/openlp/plugins/songs/lib/upgrade.py +++ b/openlp/plugins/songs/lib/upgrade.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/wowimport.py b/openlp/plugins/songs/lib/wowimport.py index 19ed3e9c0..1ea43b22a 100644 --- a/openlp/plugins/songs/lib/wowimport.py +++ b/openlp/plugins/songs/lib/wowimport.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py index b16db7e94..9eb867856 100644 --- a/openlp/plugins/songs/lib/xml.py +++ b/openlp/plugins/songs/lib/xml.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # @@ -276,7 +276,7 @@ class OpenLyrics(object): application_name = u'OpenLP ' + get_application_version()[u'version'] song_xml.set(u'createdIn', application_name) song_xml.set(u'modifiedIn', application_name) - # "Convert" 2011-08-27 11:49:15 to 2011-08-27T11:49:15. + # "Convert" 2012-08-27 11:49:15 to 2012-08-27T11:49:15. song_xml.set(u'modifiedDate', unicode(song.last_modified).replace(u' ', u'T')) properties = etree.SubElement(song_xml, u'properties') diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 5402ec1fa..59fc2920b 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/__init__.py b/openlp/plugins/songusage/__init__.py index 739ce7fa7..c8933aa1f 100644 --- a/openlp/plugins/songusage/__init__.py +++ b/openlp/plugins/songusage/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/forms/__init__.py b/openlp/plugins/songusage/forms/__init__.py index ff8176001..fd78b9c44 100644 --- a/openlp/plugins/songusage/forms/__init__.py +++ b/openlp/plugins/songusage/forms/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py index a6f7fb2b0..8f9e19a1e 100644 --- a/openlp/plugins/songusage/forms/songusagedeletedialog.py +++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index bd73ea2f0..501b62e83 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index 16021c4ac..ec88c9624 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index f7b04a656..1555c653e 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/lib/__init__.py b/openlp/plugins/songusage/lib/__init__.py index 855e95138..29a64be92 100644 --- a/openlp/plugins/songusage/lib/__init__.py +++ b/openlp/plugins/songusage/lib/__init__.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/lib/db.py b/openlp/plugins/songusage/lib/db.py index bbd645634..11940ecee 100644 --- a/openlp/plugins/songusage/lib/db.py +++ b/openlp/plugins/songusage/lib/db.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/lib/upgrade.py b/openlp/plugins/songusage/lib/upgrade.py index e9a508b76..d71899faf 100644 --- a/openlp/plugins/songusage/lib/upgrade.py +++ b/openlp/plugins/songusage/lib/upgrade.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 29c5c4927..ec6187b0f 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # diff --git a/setup.py b/setup.py index 0d9562197..80ae259d2 100755 --- a/setup.py +++ b/setup.py @@ -5,8 +5,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # From 93cd4b4f46d44035f70e58b72180a9b48dc20674 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 27 Dec 2011 11:46:44 +0000 Subject: [PATCH 020/105] Raoul felt left out --- copyright.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/copyright.txt b/copyright.txt index cef2e1072..b8385cc89 100644 --- a/copyright.txt +++ b/copyright.txt @@ -4,7 +4,7 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # +# Copyright (c) 2008-2012 Raoul Snyman # # Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # # Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # From 20ef9b9730be8ceeb67161380054a2d62ea0c35a Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 29 Dec 2011 13:26:37 +0100 Subject: [PATCH 021/105] download theme screenshots in a thread --- openlp/core/ui/firsttimeform.py | 71 +++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index e7f516980..aa1d89bc3 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -29,6 +29,7 @@ import io import logging import os import sys +import time import urllib import urllib2 from tempfile import gettempdir @@ -43,6 +44,29 @@ from firsttimewizard import Ui_FirstTimeWizard, FirstTimePage log = logging.getLogger(__name__) +class ThemeScreenshotThread(QtCore.QThread): + """ + This thread downloads the theme screenshots. + """ + def __init__(self, parent): + QtCore.QThread.__init__(self, parent) + + def run(self): + themes = self.parent().config.get(u'themes', u'files') + themes = themes.split(u',') + config = self.parent().config + for theme in themes: + title = config.get(u'theme_%s' % theme, u'title') + filename = config.get(u'theme_%s' % theme, u'filename') + screenshot = config.get(u'theme_%s' % theme, u'screenshot') + urllib.urlretrieve(u'%s%s' % (self.parent().web, screenshot), + os.path.join(gettempdir(), u'openlp', screenshot)) + item = QtGui.QListWidgetItem(title, self.parent().themesListWidget) + item.setData(QtCore.Qt.UserRole, QtCore.QVariant(filename)) + item.setCheckState(QtCore.Qt.Unchecked) + item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) + + class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): """ This is the Theme Import Wizard, which allows easy creation and editing of @@ -125,21 +149,9 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): item.setCheckState(0, QtCore.Qt.Unchecked) item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) self.biblesTreeWidget.expandAll() - themes = self.config.get(u'themes', u'files') - themes = themes.split(u',') - for theme in themes: - title = self.config.get(u'theme_%s' % theme, u'title') - filename = self.config.get(u'theme_%s' % theme, u'filename') - screenshot = self.config.get(u'theme_%s' % theme, u'screenshot') - urllib.urlretrieve(u'%s%s' % (self.web, screenshot), - os.path.join(gettempdir(), u'openlp', screenshot)) - item = QtGui.QListWidgetItem(title, self.themesListWidget) - item.setData(QtCore.Qt.UserRole, - QtCore.QVariant(filename)) - item.setIcon(build_icon( - os.path.join(gettempdir(), u'openlp', screenshot))) - item.setCheckState(QtCore.Qt.Unchecked) - item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) + # Download the theme screenshots. + self.themeScreenshotThread = ThemeScreenshotThread(self) + self.themeScreenshotThread.start() Receiver.send_message(u'cursor_normal') def nextId(self): @@ -156,6 +168,14 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): return -1 elif self.currentId() == FirstTimePage.NoInternet: return FirstTimePage.Progress + elif self.currentId() == FirstTimePage.Themes: + Receiver.send_message(u'cursor_busy') + while not self.themeScreenshotThread.isFinished(): + time.sleep(0.1) + # Build the screenshot icons, as this can not be done in the thread. + self._buildThemeScreenshot() + Receiver.send_message(u'cursor_normal') + return FirstTimePage.Defaults else: return self.currentId() + 1 @@ -172,7 +192,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): if self.hasRunWizard: self.noInternetLabel.setText(self.noInternetText) else: - self.noInternetLabel.setText(self.noInternetText + + self.noInternetLabel.setText(self.noInternetText + self.cancelWizardText) elif pageId == FirstTimePage.Defaults: self.themeComboBox.clear() @@ -264,6 +284,23 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): if self.downloadCanceled: os.remove(fpath) + def _buildThemeScreenshot(self): + """ + This method builds the theme screenshots' icons for all items in the + ``self.themesListWidget``. + """ + themes = self.config.get(u'themes', u'files') + themes = themes.split(u',') + for theme in themes: + filename = self.config.get(u'theme_%s' % theme, u'filename') + screenshot = self.config.get(u'theme_%s' % theme, u'screenshot') + for index in xrange(self.themesListWidget.count()): + item = self.themesListWidget.item(index) + if item.data(QtCore.Qt.UserRole) == QtCore.QVariant(filename): + break + item.setIcon(build_icon( + os.path.join(gettempdir(), u'openlp', screenshot))) + def _getFileSize(self, url): site = urllib.urlopen(url) meta = site.info() @@ -273,7 +310,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): increment = (count * block_size) - self.previous_size self._incrementProgressBar(None, increment) self.previous_size = count * block_size - + def _incrementProgressBar(self, status_text, increment=1): """ Update the wizard progress page. From 214bd37057ba027285dbd5cd409d7ff29dac33bc Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 29 Dec 2011 20:41:25 +0100 Subject: [PATCH 022/105] fixed method name --- openlp/core/ui/firsttimeform.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index aa1d89bc3..9522b7c8c 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -173,7 +173,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): while not self.themeScreenshotThread.isFinished(): time.sleep(0.1) # Build the screenshot icons, as this can not be done in the thread. - self._buildThemeScreenshot() + self._buildThemeScreenshots() Receiver.send_message(u'cursor_normal') return FirstTimePage.Defaults else: @@ -284,7 +284,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): if self.downloadCanceled: os.remove(fpath) - def _buildThemeScreenshot(self): + def _buildThemeScreenshots(self): """ This method builds the theme screenshots' icons for all items in the ``self.themesListWidget``. From 185cc5487a0622c0331ca67c46ee01268f39bff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Fri, 30 Dec 2011 15:00:08 +0200 Subject: [PATCH 023/105] Use cgi.escape instead of simply replacing tags, also escaping & was missing. --- openlp/core/ui/maindisplay.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 021ca4cf6..56237c528 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -28,6 +28,7 @@ The :mod:`maindisplay` module provides the functionality to display screens and play multimedia within OpenLP. """ +import cgi import logging import os import sys @@ -239,15 +240,13 @@ class MainDisplay(Display): if self.height() != self.screen[u'size'].height() or \ not self.isVisible(): shrink = True - js = u'show_alert("%s", "%s")' % ( - text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"') - .replace(u'<', u'<').replace(u'>', u'>'), + js = u'show_alert("%s", "%s")' % (cgi.escape( + text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"')), u'top') else: shrink = False - js = u'show_alert("%s", "")' % ( - text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"') - .replace(u'<', u'<').replace(u'>', u'>')) + js = u'show_alert("%s", "")' % (cgi.escape( + text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'))) height = self.frame.evaluateJavaScript(js) if shrink: if text: From 89f3929bf733cdb7df7494742d7bdd18059c58bc Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Fri, 30 Dec 2011 21:40:13 +0000 Subject: [PATCH 024/105] Dedupe media search --- openlp/core/lib/mediamanageritem.py | 35 ++++++++++++++++++++++++++ openlp/plugins/custom/lib/mediaitem.py | 30 +--------------------- openlp/plugins/songs/lib/mediaitem.py | 30 +--------------------- 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 5f10fe65f..d7b15a0cb 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -35,6 +35,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsManager, OpenLPToolbar, ServiceItem, \ StringContent, build_icon, translate, Receiver, ListWidgetWithDnD +from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings, context_menu_action, \ context_menu_separator, critical_error_message_box @@ -301,6 +302,40 @@ class MediaManagerItem(QtGui.QWidget): QtCore.SIGNAL('customContextMenuRequested(QPoint)'), self.contextMenu) + def addSearchToToolBar(self): + """ + Creates a search field with button and related signal handling. + """ + self.searchWidget = QtGui.QWidget(self) + self.searchWidget.setObjectName(u'searchWidget') + self.searchLayout = QtGui.QVBoxLayout(self.searchWidget) + self.searchLayout.setObjectName(u'searchLayout') + self.searchTextLayout = QtGui.QFormLayout() + self.searchTextLayout.setObjectName(u'searchTextLayout') + self.searchTextLabel = QtGui.QLabel(self.searchWidget) + self.searchTextLabel.setObjectName(u'searchTextLabel') + self.searchTextEdit = SearchEdit(self.searchWidget) + self.searchTextEdit.setObjectName(u'searchTextEdit') + self.searchTextLabel.setBuddy(self.searchTextEdit) + self.searchTextLayout.addRow(self.searchTextLabel, self.searchTextEdit) + self.searchLayout.addLayout(self.searchTextLayout) + self.searchButtonLayout = QtGui.QHBoxLayout() + self.searchButtonLayout.setObjectName(u'searchButtonLayout') + self.searchButtonLayout.addStretch() + self.searchTextButton = QtGui.QPushButton(self.searchWidget) + self.searchTextButton.setObjectName(u'searchTextButton') + self.searchButtonLayout.addWidget(self.searchTextButton) + self.searchLayout.addLayout(self.searchButtonLayout) + self.pageLayout.addWidget(self.searchWidget) + # Signals and slots + QtCore.QObject.connect(self.searchTextEdit, + QtCore.SIGNAL(u'returnPressed()'), self.onSearchTextButtonClick) + QtCore.QObject.connect(self.searchTextButton, + QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick) + QtCore.QObject.connect(self.searchTextEdit, + QtCore.SIGNAL(u'textChanged(const QString&)'), + self.onSearchTextEditChanged) + def addCustomContextActions(self): """ Implement this method in your descendent media manager item to diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 61f50e6c0..584f22e7b 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -33,7 +33,6 @@ from sqlalchemy.sql import or_, func from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ check_item_selected, translate -from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings from openlp.plugins.custom.forms import EditCustomForm from openlp.plugins.custom.lib import CustomXMLParser @@ -70,35 +69,8 @@ class CustomMediaItem(MediaManagerItem): def addEndHeaderBar(self): self.addToolbarSeparator() - self.searchWidget = QtGui.QWidget(self) - self.searchWidget.setObjectName(u'searchWidget') - self.searchLayout = QtGui.QVBoxLayout(self.searchWidget) - self.searchLayout.setObjectName(u'searchLayout') - self.searchTextLayout = QtGui.QFormLayout() - self.searchTextLayout.setObjectName(u'searchTextLayout') - self.searchTextLabel = QtGui.QLabel(self.searchWidget) - self.searchTextLabel.setObjectName(u'searchTextLabel') - self.searchTextEdit = SearchEdit(self.searchWidget) - self.searchTextEdit.setObjectName(u'searchTextEdit') - self.searchTextLabel.setBuddy(self.searchTextEdit) - self.searchTextLayout.addRow(self.searchTextLabel, self.searchTextEdit) - self.searchLayout.addLayout(self.searchTextLayout) - self.searchButtonLayout = QtGui.QHBoxLayout() - self.searchButtonLayout.setObjectName(u'searchButtonLayout') - self.searchButtonLayout.addStretch() - self.searchTextButton = QtGui.QPushButton(self.searchWidget) - self.searchTextButton.setObjectName(u'searchTextButton') - self.searchButtonLayout.addWidget(self.searchTextButton) - self.searchLayout.addLayout(self.searchButtonLayout) - self.pageLayout.addWidget(self.searchWidget) + self.addSearchToToolBar() # Signals and slots - QtCore.QObject.connect(self.searchTextEdit, - QtCore.SIGNAL(u'returnPressed()'), self.onSearchTextButtonClick) - QtCore.QObject.connect(self.searchTextButton, - QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick) - QtCore.QObject.connect(self.searchTextEdit, - QtCore.SIGNAL(u'textChanged(const QString&)'), - self.onSearchTextEditChanged) QtCore.QObject.connect(self.searchTextEdit, QtCore.SIGNAL(u'cleared()'), self.onClearTextButtonClick) QtCore.QObject.connect(self.searchTextEdit, diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 923c1cfe1..1e62dd64b 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -36,7 +36,6 @@ from sqlalchemy.sql import or_ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ translate, check_item_selected, PluginStatus -from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings, context_menu_action, \ context_menu_separator from openlp.core.utils import AppLocation @@ -103,35 +102,8 @@ class SongMediaItem(MediaManagerItem): ## Song Maintenance Button ## self.maintenanceAction = self.addToolbarButton(u'', u'', ':/songs/song_maintenance.png', self.onSongMaintenanceClick) - self.searchWidget = QtGui.QWidget(self) - self.searchWidget.setObjectName(u'searchWidget') - self.searchLayout = QtGui.QVBoxLayout(self.searchWidget) - self.searchLayout.setObjectName(u'searchLayout') - self.searchTextLayout = QtGui.QFormLayout() - self.searchTextLayout.setObjectName(u'searchTextLayout') - self.searchTextLabel = QtGui.QLabel(self.searchWidget) - self.searchTextLabel.setObjectName(u'searchTextLabel') - self.searchTextEdit = SearchEdit(self.searchWidget) - self.searchTextEdit.setObjectName(u'searchTextEdit') - self.searchTextLabel.setBuddy(self.searchTextEdit) - self.searchTextLayout.addRow(self.searchTextLabel, self.searchTextEdit) - self.searchLayout.addLayout(self.searchTextLayout) - self.searchButtonLayout = QtGui.QHBoxLayout() - self.searchButtonLayout.setObjectName(u'searchButtonLayout') - self.searchButtonLayout.addStretch() - self.searchTextButton = QtGui.QPushButton(self.searchWidget) - self.searchTextButton.setObjectName(u'searchTextButton') - self.searchButtonLayout.addWidget(self.searchTextButton) - self.searchLayout.addLayout(self.searchButtonLayout) - self.pageLayout.addWidget(self.searchWidget) + self.addSearchToToolBar() # Signals and slots - QtCore.QObject.connect(self.searchTextEdit, - QtCore.SIGNAL(u'returnPressed()'), self.onSearchTextButtonClick) - QtCore.QObject.connect(self.searchTextButton, - QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick) - QtCore.QObject.connect(self.searchTextEdit, - QtCore.SIGNAL(u'textChanged(const QString&)'), - self.onSearchTextEditChanged) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'songs_load_list'), self.onSongListLoad) QtCore.QObject.connect(Receiver.get_receiver(), From a0ecae3f47ba78a1845c3682015271f10602b3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sat, 31 Dec 2011 16:18:05 +0200 Subject: [PATCH 025/105] Rename EasiSlides to EasySlides. Fixes: https://launchpad.net/bugs/904384 --- openlp/core/ui/wizard.py | 2 +- openlp/plugins/songs/forms/songimportform.py | 34 +++++++++---------- ...asislidesimport.py => easyslidesimport.py} | 8 ++--- openlp/plugins/songs/lib/importer.py | 10 +++--- 4 files changed, 27 insertions(+), 27 deletions(-) rename openlp/plugins/songs/lib/{easislidesimport.py => easyslidesimport.py} (98%) diff --git a/openlp/core/ui/wizard.py b/openlp/core/ui/wizard.py index fbec69c9b..91aa42e43 100644 --- a/openlp/core/ui/wizard.py +++ b/openlp/core/ui/wizard.py @@ -47,7 +47,7 @@ class WizardStrings(object): CCLI = u'CCLI/SongSelect' CSV = u'CSV' EW = u'EasyWorship' - ES = u'EasiSlides' + ES = u'EasySlides' FP = u'Foilpresenter' OL = u'OpenLyrics' OS = u'OpenSong' diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 6538aa61c..db4d9bf56 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -141,9 +141,9 @@ class SongImportForm(OpenLPWizard): QtCore.QObject.connect(self.genericRemoveButton, QtCore.SIGNAL(u'clicked()'), self.onGenericRemoveButtonClicked) - QtCore.QObject.connect(self.easiSlidesBrowseButton, + QtCore.QObject.connect(self.easySlidesBrowseButton, QtCore.SIGNAL(u'clicked()'), - self.onEasiSlidesBrowseButtonClicked) + self.onEasySlidesBrowseButtonClicked) QtCore.QObject.connect(self.ewBrowseButton, QtCore.SIGNAL(u'clicked()'), self.onEWBrowseButtonClicked) @@ -201,8 +201,8 @@ class SongImportForm(OpenLPWizard): self.addFileSelectItem(u'generic', None, True) # CCLI File import self.addFileSelectItem(u'ccli') - # EasiSlides - self.addFileSelectItem(u'easiSlides', single_select=True) + # EasySlides + self.addFileSelectItem(u'easySlides', single_select=True) # EasyWorship self.addFileSelectItem(u'ew', single_select=True) # Foilpresenter @@ -248,7 +248,7 @@ class SongImportForm(OpenLPWizard): 'Generic Document/Presentation')) self.formatComboBox.setItemText(SongFormat.CCLI, WizardStrings.CCLI) self.formatComboBox.setItemText( - SongFormat.EasiSlides, WizardStrings.ES) + SongFormat.EasySlides, WizardStrings.ES) self.formatComboBox.setItemText( SongFormat.EasyWorship, WizardStrings.EW) self.formatComboBox.setItemText( @@ -307,9 +307,9 @@ class SongImportForm(OpenLPWizard): translate('SongsPlugin.ImportWizardForm', 'The generic document/' 'presentation importer has been disabled because OpenLP cannot ' 'access OpenOffice or LibreOffice.')) - self.easiSlidesFilenameLabel.setText( + self.easySlidesFilenameLabel.setText( translate('SongsPlugin.ImportWizardForm', 'Filename:')) - self.easiSlidesBrowseButton.setText(UiStrings().Browse) + self.easySlidesBrowseButton.setText(UiStrings().Browse) self.ewFilenameLabel.setText( translate('SongsPlugin.ImportWizardForm', 'Filename:')) self.ewBrowseButton.setText(UiStrings().Browse) @@ -411,11 +411,11 @@ class SongImportForm(OpenLPWizard): 'presentation file to import from.')) self.genericAddButton.setFocus() return False - elif source_format == SongFormat.EasiSlides: - if self.easiSlidesFilenameEdit.text().isEmpty(): + elif source_format == SongFormat.EasySlides: + if self.easySlidesFilenameEdit.text().isEmpty(): critical_error_message_box(UiStrings().NFSp, WizardStrings.YouSpecifyFile % WizardStrings.ES) - self.easiSlidesBrowseButton.setFocus() + self.easySlidesBrowseButton.setFocus() return False elif source_format == SongFormat.EasyWorship: if self.ewFilenameEdit.text().isEmpty(): @@ -594,9 +594,9 @@ class SongImportForm(OpenLPWizard): """ self.removeSelectedItems(self.genericFileListWidget) - def onEasiSlidesBrowseButtonClicked(self): + def onEasySlidesBrowseButtonClicked(self): self.getFileName(WizardStrings.OpenTypeFile % WizardStrings.ES, - self.easiSlidesFilenameEdit) + self.easySlidesFilenameEdit) def onEWBrowseButtonClicked(self): """ @@ -673,7 +673,7 @@ class SongImportForm(OpenLPWizard): self.ccliFileListWidget.clear() self.songsOfFellowshipFileListWidget.clear() self.genericFileListWidget.clear() - self.easiSlidesFilenameEdit.setText(u'') + self.easySlidesFilenameEdit.setText(u'') self.ewFilenameEdit.setText(u'') self.songBeamerFileListWidget.clear() self.songShowPlusFileListWidget.clear() @@ -743,10 +743,10 @@ class SongImportForm(OpenLPWizard): importer = self.plugin.importSongs(SongFormat.Generic, filenames=self.getListOfFiles(self.genericFileListWidget) ) - elif source_format == SongFormat.EasiSlides: - # Import an EasiSlides export file - importer = self.plugin.importSongs(SongFormat.EasiSlides, - filename=unicode(self.easiSlidesFilenameEdit.text()) + elif source_format == SongFormat.EasySlides: + # Import an EasySlides export file + importer = self.plugin.importSongs(SongFormat.EasySlides, + filename=unicode(self.easySlidesFilenameEdit.text()) ) elif source_format == SongFormat.EasyWorship: # Import an EasyWorship database diff --git a/openlp/plugins/songs/lib/easislidesimport.py b/openlp/plugins/songs/lib/easyslidesimport.py similarity index 98% rename from openlp/plugins/songs/lib/easislidesimport.py rename to openlp/plugins/songs/lib/easyslidesimport.py index b4ed010c3..a5e2b5696 100644 --- a/openlp/plugins/songs/lib/easislidesimport.py +++ b/openlp/plugins/songs/lib/easyslidesimport.py @@ -35,9 +35,9 @@ from openlp.plugins.songs.lib.songimport import SongImport log = logging.getLogger(__name__) -class EasiSlidesImport(SongImport): +class EasySlidesImport(SongImport): """ - Import songs exported from EasiSlides + Import songs exported from EasySlides The format example is here: http://wiki.openlp.org/Development:EasiSlides_-_Song_Data_Format @@ -56,7 +56,7 @@ class EasiSlidesImport(SongImport): multiple opensong files. If `self.commit` is set False, the import will not be committed to the database (useful for test scripts). """ - log.info(u'Importing EasiSlides XML file %s', self.importSource) + log.info(u'Importing EasySlides XML file %s', self.importSource) parser = etree.XMLParser(remove_blank_text=True) parsed_file = etree.parse(self.importSource, parser) xml = unicode(etree.tostring(parsed_file)) @@ -177,7 +177,7 @@ class EasiSlidesImport(SongImport): separators = (separatorlines > 0) # the number of different regions in song - 1 if len(regionlines) > 1: - log.info(u'EasiSlidesImport: the file contained a song named "%s"' + log.info(u'EasySlidesImport: the file contained a song named "%s"' u'with more than two regions, but only two regions are', u'tested, encountered regions were: %s', self.title, u','.join(regionlines.keys())) diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index 2a220b6cb..867b28c91 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -30,7 +30,7 @@ The :mod:`importer` modules provides the general song import functionality. import logging from opensongimport import OpenSongImport -from easislidesimport import EasiSlidesImport +from easyslidesimport import EasySlidesImport from olpimport import OpenLPSongImport from openlyricsimport import OpenLyricsImport from wowimport import WowImport @@ -73,7 +73,7 @@ class SongFormat(object): OpenLP1 = 2 Generic = 3 CCLI = 4 - EasiSlides = 5 + EasySlides = 5 EasyWorship = 6 FoilPresenter = 7 OpenSong = 8 @@ -107,8 +107,8 @@ class SongFormat(object): return OooImport elif format == SongFormat.CCLI: return CCLIFileImport - elif format == SongFormat.EasiSlides: - return EasiSlidesImport + elif format == SongFormat.EasySlides: + return EasySlidesImport elif format == SongFormat.EasyWorship: return EasyWorshipSongImport elif format == SongFormat.SongBeamer: @@ -130,7 +130,7 @@ class SongFormat(object): SongFormat.OpenLP1, SongFormat.Generic, SongFormat.CCLI, - SongFormat.EasiSlides, + SongFormat.EasySlides, SongFormat.EasyWorship, SongFormat.FoilPresenter, SongFormat.OpenSong, From e1a4837a1965ab07e1984ac8e9ddb1a508ebd237 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 31 Dec 2011 17:36:23 +0000 Subject: [PATCH 026/105] Long line --- openlp/core/ui/media/mediacontroller.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 8697cc7a0..1a4b3a2cd 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -318,7 +318,8 @@ class MediaController(object): controller.media_info.start_time = 0 controller.media_info.end_time = 0 else: - controller.media_info.start_time = display.serviceItem.start_time + controller.media_info.start_time = \ + display.serviceItem.start_time controller.media_info.end_time = display.serviceItem.end_time elif controller.previewDisplay: display = controller.previewDisplay From 768c0999715de3bc096d1dd7ce5810d7107e90a1 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 31 Dec 2011 17:36:58 +0000 Subject: [PATCH 027/105] Indentation --- openlp/core/utils/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index a66d7a270..d363f1426 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -358,7 +358,7 @@ class ActionList(object): if action is existing_action: continue if existing_action.parent() is action.parent(): - return False + return False if existing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]: return False From fb34a3e86d679236a1fde2e351b0c759fb9e5082 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 31 Dec 2011 17:37:56 +0000 Subject: [PATCH 028/105] Fix crashes in media settings (Bug #908252) --- openlp/plugins/media/lib/mediatab.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index d175e1b88..aed6b96cc 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -36,6 +36,7 @@ class MediaTab(SettingsTab): """ def __init__(self, parent, title, visible_title, media_players, icon_path): self.mediaPlayers = media_players + self.savedUsedPlayers = None SettingsTab.__init__(self, parent, title, visible_title, icon_path) def setupUi(self): @@ -138,7 +139,8 @@ class MediaTab(SettingsTab): if player not in self.usedPlayers: self.usedPlayers.append(player) else: - self.usedPlayers.takeAt(self.usedPlayers.indexOf(player)) + if player in self.usedPlayers: + self.usedPlayers.takeAt(self.usedPlayers.indexOf(player)) self.updatePlayerList() def updatePlayerList(self): @@ -146,7 +148,7 @@ class MediaTab(SettingsTab): for player in self.usedPlayers: if player in self.playerCheckBoxes.keys(): if len(self.usedPlayers) == 1: - # at least one media player have to stay active + # At least one media player has to stay active self.playerCheckBoxes[u'%s' % player].setEnabled(False) else: self.playerCheckBoxes[u'%s' % player].setEnabled(True) @@ -169,14 +171,20 @@ class MediaTab(SettingsTab): self.usedPlayers.move(currentRow, currentRow + 1) def load(self): + if self.savedUsedPlayers: + self.usedPlayers = self.savedUsedPlayers + self.savedUsedPlayers = None self.usedPlayers = QtCore.QSettings().value( self.settingsSection + u'/players', QtCore.QVariant(u'webkit')).toString().split(u',') + self.savedUsedPlayers = self.usedPlayers for key in self.mediaPlayers: player = self.mediaPlayers[key] checkbox = self.playerCheckBoxes[player.name] if player.available and player.name in self.usedPlayers: checkbox.setChecked(True) + else: + checkbox.setChecked(False) self.updatePlayerList() self.overridePlayerCheckBox.setChecked(QtCore.QSettings().value( self.settingsSection + u'/override player', From 011e9637518278e3a09a36d108a0f6aa951c5ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sat, 31 Dec 2011 21:00:27 +0200 Subject: [PATCH 029/105] Wiki page is renamed as well. --- openlp/plugins/songs/lib/easyslidesimport.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/easyslidesimport.py b/openlp/plugins/songs/lib/easyslidesimport.py index a5e2b5696..206c127f5 100644 --- a/openlp/plugins/songs/lib/easyslidesimport.py +++ b/openlp/plugins/songs/lib/easyslidesimport.py @@ -40,7 +40,7 @@ class EasySlidesImport(SongImport): Import songs exported from EasySlides The format example is here: - http://wiki.openlp.org/Development:EasiSlides_-_Song_Data_Format + http://wiki.openlp.org/Development:EasySlides_-_Song_Data_Format """ def __init__(self, manager, **kwargs): """ From 3b58fe88f24101c3c664fd249b3c9bfa9c500ccb Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Sat, 31 Dec 2011 23:09:49 -0500 Subject: [PATCH 030/105] Added test to open save-as dialog if save location is unavailable --- openlp/core/ui/servicemanager.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index ecfe07d60..9451026d9 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -595,7 +595,10 @@ class ServiceManager(QtGui.QWidget): self.mainwindow.finishedProgressBar() Receiver.send_message(u'cursor_normal') if success: - shutil.copy(temp_file_name, path_file_name) + try: + shutil.copy(temp_file_name, path_file_name) + except: + self.saveFileAs() self.mainwindow.addRecentFile(path_file_name) self.setModified(False) try: From 34eb37a4f448909a187e69b434f276f97a0833ce Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Sun, 1 Jan 2012 08:43:43 -0500 Subject: [PATCH 031/105] Modified statement to avoid duplicate code execution --- openlp/core/ui/servicemanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9451026d9..e23e68ef5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -598,7 +598,7 @@ class ServiceManager(QtGui.QWidget): try: shutil.copy(temp_file_name, path_file_name) except: - self.saveFileAs() + return self.saveFileAs() self.mainwindow.addRecentFile(path_file_name) self.setModified(False) try: From 85a92455d1214a6d9e904c5995d1c19505d373a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 3 Jan 2012 01:43:59 +0200 Subject: [PATCH 032/105] Apply formatting tags to alerts. --- openlp/core/ui/maindisplay.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 56237c528..264c7f1f5 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -37,7 +37,7 @@ from PyQt4 import QtCore, QtGui, QtWebKit, QtOpenGL from PyQt4.phonon import Phonon from openlp.core.lib import Receiver, build_html, ServiceItem, image_to_byte, \ - translate, PluginManager + translate, PluginManager, expand_tags from openlp.core.ui import HideMode, ScreenList, AlertLocation @@ -237,16 +237,17 @@ class MainDisplay(Display): The text to be displayed. """ log.debug(u'alert to display') + # First we convert <>& marks to html variants, then apply + # formattingtags, finally we double all backslashes for JavaScript. + text_prepared = expand_tags(cgi.escape(text)) \ + .replace(u'\\', u'\\\\').replace(u'\"', u'\\\"') if self.height() != self.screen[u'size'].height() or \ not self.isVisible(): shrink = True - js = u'show_alert("%s", "%s")' % (cgi.escape( - text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"')), - u'top') + js = u'show_alert("%s", "%s")' % (text_prepared, u'top') else: shrink = False - js = u'show_alert("%s", "")' % (cgi.escape( - text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'))) + js = u'show_alert("%s", "")' % text_prepared height = self.frame.evaluateJavaScript(js) if shrink: if text: From 1cf246940d1363b5459ee6f0cb6b2f290d50ba14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 3 Jan 2012 02:08:08 +0200 Subject: [PATCH 033/105] A few fixes, useful when default service name is wrong. --- openlp/core/ui/advancedtab.py | 35 ++++++++++++++++---------------- openlp/core/ui/servicemanager.py | 2 +- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index dc15b80ef..adc1e7a81 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -44,12 +44,12 @@ class AdvancedTab(SettingsTab): """ Initialise the settings tab """ - advancedTranslated = translate(u'OpenLP.AdvancedTab', u'Advanced') - self.default_service_name = unicode(translate(u'OpenLP.AdvancedTab', - u'Service %Y-%m-%d')) - self.default_service_example = unicode(translate(u'OpenLP.AdvancedTab', - u'%Y-%m-%d', - u'This should be the date part of default service name.')) + advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') + self.default_service_name = unicode(translate('OpenLP.AdvancedTab', + 'Service %Y-%m-%d')) + self.default_service_example = unicode(translate('OpenLP.AdvancedTab', + '%Y-%m-%d', + 'This should be the date part of default service name.')) self.wrong_characters_expression = \ re.compile(r'[\[\]/\;,><&*:%=+@!#^()|?^]+') self.default_image = u':/graphics/openlp-splash-screen.png' @@ -201,17 +201,17 @@ class AdvancedTab(SettingsTab): self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab', 'Enable application exit confirmation')) self.defaultServiceGroupBox.setTitle( - translate(u'OpenLP.AdvancedTab', u'Default Service')) + translate('OpenLP.AdvancedTab', 'Default Service')) self.defaultServiceLabel.setText( - translate(u'OpenLP.AdvancedTab', u'Default service name:')) + translate('OpenLP.AdvancedTab', 'Default service name:')) self.defaultServiceRevertButton.setToolTip(unicode( - translate(u'OpenLP.AdvancedTab', - u'Revert to the default service name "%s".')) % + translate('OpenLP.AdvancedTab', + 'Revert to the default service name "%s".')) % self.default_service_name) self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', - u'Example:')) + 'Example:')) self.defaultServiceNoteLabel.setText(unicode( - translate(u'OpenLP.AdvancedTab', u'Default service name when ' + translate('OpenLP.AdvancedTab', 'Default service name when ' 'saving a new service. You can use date placeholders, e.g %s ' 'results in %s. Leave it empty to use no default value.')) % (self.default_service_example, @@ -283,8 +283,7 @@ class AdvancedTab(SettingsTab): preset_okay, name_example = self.generate_service_name_example( self.service_name) if not preset_okay: - # should alert or something - pass + self.service_name = self.default_service_name settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) if self.service_name == self.default_service_name: @@ -315,12 +314,12 @@ class AdvancedTab(SettingsTab): service_name_example = datetime.now().strftime( unicode(service_name_preset)) if self.wrong_characters_expression.search(service_name_example): - service_name_example = translate(u'OpenLP.AdvancedTab', - u'Filename contains wrong characters.') + service_name_example = translate('OpenLP.AdvancedTab', + 'Filename contains wrong characters.') preset_okay = False except ValueError: - service_name_example = translate(u'OpenLP.AdvancedTab', - u'Syntax error.') + service_name_example = translate('OpenLP.AdvancedTab', + 'Syntax error.') preset_okay = False return preset_okay, service_name_example diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 036db96c3..2e881efb4 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -613,7 +613,7 @@ class ServiceManager(QtGui.QWidget): """ default_pattern = unicode(QtCore.QSettings().value( u'advanced/default service name', - translate(u'OpenLP.AdvancedTab', u'Service %Y-%m-%d')).toString()) + translate('OpenLP.AdvancedTab', 'Service %Y-%m-%d')).toString()) default_filename = datetime.now().strftime(default_pattern) directory = unicode(SettingsManager.get_last_dir( self.mainwindow.servicemanagerSettingsSection)) From 46a4bade8c2252e5d30057d698ebf11c21aeca42 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 4 Jan 2012 17:19:49 +0000 Subject: [PATCH 034/105] Transparent themes --- openlp/core/lib/htmlbuilder.py | 13 +++++++----- openlp/core/lib/theme.py | 37 +++++++++++++++++++++------------- openlp/core/ui/maindisplay.py | 5 +++++ openlp/core/ui/themeform.py | 6 +++++- openlp/core/ui/thememanager.py | 5 ++++- openlp/core/ui/themewizard.py | 10 ++++++++- 6 files changed, 54 insertions(+), 22 deletions(-) diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index bdfcb3870..dbdc1d104 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -129,10 +129,10 @@ sup { var match = /-webkit-text-fill-color:[^;\"]+/gi; if(timer != null) clearTimeout(timer); - /* - QtWebkit bug with outlines and justify causing outline alignment - problems. (Bug 859950) Surround each word with a to workaround, - but only in this scenario. + /* + QtWebkit bug with outlines and justify causing outline alignment + problems. (Bug 859950) Surround each word with a to workaround, + but only in this scenario. */ var txt = document.getElementById('lyricsmain'); if(window.getComputedStyle(txt).textAlign == 'justify'){ @@ -141,7 +141,7 @@ sup { txt = outline; if(window.getComputedStyle(txt).webkitTextStrokeWidth != '0px'){ newtext = newtext.replace(/(\s| )+(?![^<]*>)/g, - function(match) { + function(match) { return '' + match + ''; }); newtext = '' + newtext + ''; @@ -288,6 +288,9 @@ def build_background_css(item, width, height): background = u'background-color: black' if theme: if theme.background_type == \ + BackgroundType.to_string(BackgroundType.Transparent): + background = u'' + elif theme.background_type == \ BackgroundType.to_string(BackgroundType.Solid): background = u'background-color: %s' % theme.background_color else: diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py index 6c5645c6c..486f89b18 100644 --- a/openlp/core/lib/theme.py +++ b/openlp/core/lib/theme.py @@ -100,6 +100,7 @@ class BackgroundType(object): Solid = 0 Gradient = 1 Image = 2 + Transparent = 3 @staticmethod def to_string(background_type): @@ -112,6 +113,8 @@ class BackgroundType(object): return u'gradient' elif background_type == BackgroundType.Image: return u'image' + elif background_type == BackgroundType.Transparent: + return u'transparent' @staticmethod def from_string(type_string): @@ -124,6 +127,8 @@ class BackgroundType(object): return BackgroundType.Gradient elif type_string == u'image': return BackgroundType.Image + elif type_string == u'transparent': + return BackgroundType.Transparent class BackgroundGradientType(object): @@ -246,7 +251,7 @@ class ThemeXML(object): Add a transparent background. """ background = self.theme_xml.createElement(u'background') - background.setAttribute(u'mode', u'transparent') + background.setAttribute(u'type', u'transparent') self.theme.appendChild(background) def add_background_solid(self, bkcolor): @@ -487,25 +492,25 @@ class ThemeXML(object): return xml_iter = theme_xml.getiterator() for element in xml_iter: - parent = element.getparent() master = u'' + if element.tag == u'background': + if element.attrib: + for attr in element.attrib: + self._create_attr(element.tag, attr, \ + element.attrib[attr]) + parent = element.getparent() if parent is not None: - if element.getparent().tag == u'font': - master = element.getparent().tag + u'_' + \ - element.getparent().attrib[u'type'] + if parent.tag == u'font': + master = parent.tag + u'_' + parent.attrib[u'type'] # set up Outline and Shadow Tags and move to font_main - if element.getparent().tag == u'display': + if parent.tag == u'display': if element.tag.startswith(u'shadow') or \ element.tag.startswith(u'outline'): self._create_attr(u'font_main', element.tag, element.text) - master = element.getparent().tag - if element.getparent().tag == u'background': - master = element.getparent().tag - if element.getparent().attrib: - for attr in element.getparent().attrib: - self._create_attr(master, attr, \ - element.getparent().attrib[attr]) + master = parent.tag + if parent.tag == u'background': + master = parent.tag if master: self._create_attr(master, element.tag, element.text) if element.attrib: @@ -599,9 +604,13 @@ class ThemeXML(object): self.background_start_color, self.background_end_color, self.background_direction) - else: + elif self.background_type == \ + BackgroundType.to_string(BackgroundType.Image): filename = os.path.split(self.background_filename)[1] self.add_background_image(filename, self.background_border_color) + elif self.background_type == \ + BackgroundType.to_string(BackgroundType.Transparent): + self.add_background_transparent() self.add_font(self.font_main_name, self.font_main_color, self.font_main_size, diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 4dd34d099..3bd0f1ec7 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -81,6 +81,10 @@ class Display(QtGui.QGraphicsView): self.screen[u'size'].width(), self.screen[u'size'].height()) self.webView.settings().setAttribute( QtWebKit.QWebSettings.PluginsEnabled, True) + palette = self.webView.palette() + palette.setBrush(QtGui.QPalette.Base, QtCore.Qt.transparent) + self.webView.page().setPalette(palette) + self.webView.setAttribute(QtCore.Qt.WA_OpaquePaintEvent, False) self.page = self.webView.page() self.frame = self.page.mainFrame() if self.isLive and log.getEffectiveLevel() == logging.DEBUG: @@ -138,6 +142,7 @@ class MainDisplay(Display): windowFlags = windowFlags | QtCore.Qt.SplashScreen self.setWindowFlags(windowFlags) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) + self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) if self.isLive: QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_display_hide'), self.hideDisplay) diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py index 54d6287f1..face5938f 100644 --- a/openlp/core/ui/themeform.py +++ b/openlp/core/ui/themeform.py @@ -359,11 +359,15 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard): self.gradientEndButton.setStyleSheet(u'background-color: %s' % self.theme.background_end_color) self.setField(u'background_type', QtCore.QVariant(1)) - else: + elif self.theme.background_type == \ + BackgroundType.to_string(BackgroundType.Image): self.imageColorButton.setStyleSheet(u'background-color: %s' % self.theme.background_border_color) self.imageFileEdit.setText(self.theme.background_filename) self.setField(u'background_type', QtCore.QVariant(2)) + elif self.theme.background_type == \ + BackgroundType.to_string(BackgroundType.Transparent): + self.setField(u'background_type', QtCore.QVariant(3)) if self.theme.background_direction == \ BackgroundGradientType.to_string(BackgroundGradientType.Horizontal): self.setField(u'gradient', QtCore.QVariant(0)) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index a0fd83897..3585e5c97 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -813,10 +813,13 @@ class ThemeManager(QtGui.QWidget): unicode(theme.BackgroundParameter1.name()) newtheme.background_end_color = \ unicode(theme.BackgroundParameter2.name()) - else: + elif theme.BackgroundType == 2: newtheme.background_type = \ BackgroundType.to_string(BackgroundType.Image) newtheme.background_filename = unicode(theme.BackgroundParameter1) + elif theme.BackgroundType == 3: + newtheme.background_type = \ + BackgroundType.to_string(BackgroundType.Transparent) newtheme.font_main_name = theme.FontName newtheme.font_main_color = unicode(theme.FontColor.name()) newtheme.font_main_size = theme.FontProportion * 3 diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 3031266b7..fc471ded6 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -54,7 +54,7 @@ class Ui_ThemeWizard(object): self.backgroundLabel = QtGui.QLabel(self.backgroundPage) self.backgroundLabel.setObjectName(u'BackgroundLabel') self.backgroundComboBox = QtGui.QComboBox(self.backgroundPage) - self.backgroundComboBox.addItems([u'', u'', u'']) + self.backgroundComboBox.addItems([u'', u'', u'', u'']) self.backgroundComboBox.setObjectName(u'BackgroundComboBox') self.backgroundTypeLayout.addRow(self.backgroundLabel, self.backgroundComboBox) @@ -126,6 +126,12 @@ class Ui_ThemeWizard(object): self.imageLayout.addRow(self.imageLabel, self.imageFileLayout) self.imageLayout.setItem(2, QtGui.QFormLayout.LabelRole, self.spacer) self.backgroundStack.addWidget(self.imageWidget) + self.transparentWidget = QtGui.QWidget(self.backgroundPage) + self.transparentWidget.setObjectName(u'TransparentWidget') + self.transparentLayout = QtGui.QFormLayout(self.transparentWidget) + self.transparentLayout.setMargin(0) + self.transparentLayout.setObjectName(u'TransparentLayout') + self.backgroundStack.addWidget(self.transparentWidget) self.backgroundLayout.addLayout(self.backgroundStack) themeWizard.addPage(self.backgroundPage) # Main Area Page @@ -432,6 +438,8 @@ class Ui_ThemeWizard(object): translate('OpenLP.ThemeWizard', 'Gradient')) self.backgroundComboBox.setItemText( BackgroundType.Image, UiStrings().Image) + self.backgroundComboBox.setItemText(BackgroundType.Transparent, + translate('OpenLP.ThemeWizard', 'Transparent')) self.colorLabel.setText(translate('OpenLP.ThemeWizard', 'Color:')) self.gradientStartLabel.setText( translate(u'OpenLP.ThemeWizard', 'Starting color:')) From fcf2eb17f0629b4fc6ebee3ac3677338bebf1ce5 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 4 Jan 2012 18:37:27 +0000 Subject: [PATCH 035/105] Fix controller/theme wizard displays if transparent --- openlp/core/ui/maindisplay.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 3bd0f1ec7..a55633ce0 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -351,13 +351,7 @@ class MainDisplay(Display): self.setVisible(True) else: self.setVisible(True) - preview = QtGui.QPixmap(self.screen[u'size'].width(), - self.screen[u'size'].height()) - painter = QtGui.QPainter(preview) - painter.setRenderHint(QtGui.QPainter.Antialiasing) - self.frame.render(painter) - painter.end() - return preview + return QtGui.QPixmap.grabWidget(self) def buildHtml(self, serviceItem, image=None): """ From 3ebe38f7e1d7914dc132d2780545c35a875abf0b Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 7 Jan 2012 11:22:53 +0000 Subject: [PATCH 036/105] Setting for X11 bypass flag. Don't open Impress unnecessarily if not enabled --- openlp/core/ui/advancedtab.py | 33 ++++++++++++++++++- openlp/core/ui/maindisplay.py | 3 +- .../presentations/lib/presentationtab.py | 8 ++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 50e330362..045d38a7e 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -29,7 +29,7 @@ The :mod:`advancedtab` provides an advanced settings facility. """ from PyQt4 import QtCore, QtGui -from openlp.core.lib import SettingsTab, translate, build_icon +from openlp.core.lib import SettingsTab, translate, build_icon, Receiver from openlp.core.lib.ui import UiStrings from openlp.core.utils import get_images_filter @@ -42,6 +42,7 @@ class AdvancedTab(SettingsTab): """ Initialise the settings tab """ + self.display_changed = False advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') self.default_image = u':/graphics/openlp-splash-screen.png' self.default_color = u'#ffffff' @@ -122,6 +123,14 @@ class AdvancedTab(SettingsTab): self.hideMouseCheckBox.setObjectName(u'hideMouseCheckBox') self.hideMouseLayout.addWidget(self.hideMouseCheckBox) self.rightLayout.addWidget(self.hideMouseGroupBox) + self.x11GroupBox = QtGui.QGroupBox(self.leftColumn) + self.x11GroupBox.setObjectName(u'x11GroupBox') + self.x11Layout = QtGui.QVBoxLayout(self.x11GroupBox) + self.x11Layout.setObjectName(u'x11Layout') + self.x11BypassCheckBox = QtGui.QCheckBox(self.x11GroupBox) + self.x11BypassCheckBox.setObjectName(u'x11BypassCheckBox') + self.x11Layout.addWidget(self.x11BypassCheckBox) + self.rightLayout.addWidget(self.x11GroupBox) self.rightLayout.addStretch() QtCore.QObject.connect(self.defaultColorButton, @@ -130,6 +139,8 @@ class AdvancedTab(SettingsTab): QtCore.SIGNAL(u'pressed()'), self.onDefaultBrowseButtonPressed) QtCore.QObject.connect(self.defaultRevertButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultRevertButtonPressed) + QtCore.QObject.connect(self.x11BypassCheckBox, + QtCore.SIGNAL(u'toggled(bool)'), self.onX11BypassCheckBoxToggled) def retranslateUi(self): """ @@ -167,6 +178,10 @@ class AdvancedTab(SettingsTab): 'Browse for an image file to display.')) self.defaultRevertButton.setToolTip(translate('OpenLP.AdvancedTab', 'Revert to the default OpenLP logo.')) + self.x11GroupBox.setTitle(translate('OpenLP.AdvancedTab', + 'X11')) + self.x11BypassCheckBox.setText(translate('OpenLP.AdvancedTab', + 'Bypass X11 Window Manager')) def load(self): """ @@ -198,6 +213,8 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) + self.x11BypassCheckBox.setChecked( + settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) self.default_color = settings.value(u'default color', QtCore.QVariant(u'#ffffff')).toString() self.defaultFileEdit.setText(settings.value(u'default image', @@ -227,9 +244,14 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(self.enableAutoCloseCheckBox.isChecked())) settings.setValue(u'hide mouse', QtCore.QVariant(self.hideMouseCheckBox.isChecked())) + settings.setValue(u'x11 bypass wm', + QtCore.QVariant(self.x11BypassCheckBox.isChecked())) settings.setValue(u'default color', self.default_color) settings.setValue(u'default image', self.defaultFileEdit.text()) settings.endGroup() + if self.display_changed: + Receiver.send_message(u'config_screen_changed') + self.display_changed = False def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( @@ -252,3 +274,12 @@ class AdvancedTab(SettingsTab): def onDefaultRevertButtonPressed(self): self.defaultFileEdit.setText(u':/graphics/openlp-splash-screen.png') self.defaultFileEdit.setFocus() + + def onX11BypassCheckBoxToggled(self, checked): + """ + Toggle X11 bypass flag on maindisplay depending on check box state. + + ``checked`` + The state of the check box (boolean). + """ + self.display_changed = True diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 9e4bc9083..8be1deed7 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -134,7 +134,8 @@ class MainDisplay(Display): self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;') windowFlags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | \ QtCore.Qt.WindowStaysOnTopHint - if os.environ.get(u'XDG_CURRENT_DESKTOP') == u'Unity': + if QtCore.QSettings().value(u'x11 bypass wm', + QtCore.QVariant(True)).toBool(): windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint # FIXME: QtCore.Qt.SplashScreen is workaround to make display screen # stay always on top on Mac OS X. For details see bug 906926. diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index aaa1fd21a..93174b3da 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -40,6 +40,7 @@ class PresentationTab(SettingsTab): """ self.controllers = controllers SettingsTab.__init__(self, parent, title, visible_title, icon_path) + self.activated = False def setupUi(self): """ @@ -110,8 +111,12 @@ class PresentationTab(SettingsTab): def save(self): """ - Save the settings. + Save the settings. If the tab hasn't been made visible to the user + then there is nothing to do, so exit. This removes the need to + start presentation applications unnecessarily. """ + if not self.activated: + return changed = False for key in self.controllers: controller = self.controllers[key] @@ -140,6 +145,7 @@ class PresentationTab(SettingsTab): """ Tab has just been made visible to the user """ + self.activated = True for key in self.controllers: controller = self.controllers[key] checkbox = self.PresenterCheckboxes[controller.name] From 75359ac361fea679e0f483753c26e45ef58f6cb2 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 7 Jan 2012 12:09:17 +0000 Subject: [PATCH 037/105] Helps if we load the right setting --- openlp/core/ui/maindisplay.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 8be1deed7..8a43ccc36 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -134,7 +134,7 @@ class MainDisplay(Display): self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;') windowFlags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | \ QtCore.Qt.WindowStaysOnTopHint - if QtCore.QSettings().value(u'x11 bypass wm', + if QtCore.QSettings().value(u'advanced/x11 bypass wm', QtCore.QVariant(True)).toBool(): windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint # FIXME: QtCore.Qt.SplashScreen is workaround to make display screen From f413ad2d30ed59f716a7a821f3d8193ae215b396 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 7 Jan 2012 23:03:14 +0000 Subject: [PATCH 038/105] Prevent selection of text on maindisplay --- openlp/core/lib/htmlbuilder.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index dbdc1d104..b90b895b4 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -45,6 +45,7 @@ HTMLSRC = u""" padding: 0; border: 0; overflow: hidden; + -webkit-user-select: none; } body { %s; From 3e6d1e796242ce36b88aef7593c8b17af9c2a8cb Mon Sep 17 00:00:00 2001 From: rimach Date: Wed, 11 Jan 2012 21:51:11 +0100 Subject: [PATCH 039/105] update vlc code --- openlp/core/ui/media/mediacontroller.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 1a4b3a2cd..35635e43d 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -278,10 +278,21 @@ class MediaController(object): def set_controls_visible(self, controller, value): # Generic controls controller.mediabar.setVisible(value) + if controller.isLive and self.curDisplayMediaPlayer: + self.set_transparent_mode(controller, value) # Special controls: Here media type specific Controls will be enabled # (e.g. for DVD control, ...) # TODO + def set_transparent_mode(self, controller, value): + if value: + if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']: + controller.display.setAttribute(QtCore.Qt.WA_NoSystemBackground, False) + else: + print "on" + controller.display.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) + controller.display.setAttribute(QtCore.Qt.WA_NoSystemBackground, True) + def resize(self, controller, display, player): """ After Mainwindow changes or Splitter moved all related media widgets @@ -481,6 +492,7 @@ class MediaController(object): Responds to the request to reset a loaded video """ log.debug(u'video_reset') + self.set_controls_visible(controller, False) for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: display.override = {} @@ -489,7 +501,6 @@ class MediaController(object): display.frame.evaluateJavaScript(u'show_video( \ "setBackBoard", null, null, null,"hidden");') del self.curDisplayMediaPlayer[display] - self.set_controls_visible(controller, False) def video_hide(self, msg): """ From edf4ac75c883f7965d274c62dc33b3ce7b70e2bd Mon Sep 17 00:00:00 2001 From: rimach Date: Thu, 12 Jan 2012 22:45:07 +0100 Subject: [PATCH 040/105] move phonon and vlc to own windows --- openlp/core/ui/media/mediacontroller.py | 17 ++++++--------- openlp/core/ui/media/phononplayer.py | 26 +++++++++++++++++++++-- openlp/core/ui/media/vlcplayer.py | 28 +++++++++++++++++++++---- 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 35635e43d..dadd28dc6 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -278,21 +278,16 @@ class MediaController(object): def set_controls_visible(self, controller, value): # Generic controls controller.mediabar.setVisible(value) - if controller.isLive and self.curDisplayMediaPlayer: - self.set_transparent_mode(controller, value) # Special controls: Here media type specific Controls will be enabled # (e.g. for DVD control, ...) # TODO + # if controller.isLive and controller.display: + # if self.curDisplayMediaPlayer and value: + # if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']: + # controller.display.setTransparency(False) + # else: + # controller.display.setTransparency(True) - def set_transparent_mode(self, controller, value): - if value: - if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']: - controller.display.setAttribute(QtCore.Qt.WA_NoSystemBackground, False) - else: - print "on" - controller.display.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) - controller.display.setAttribute(QtCore.Qt.WA_NoSystemBackground, True) - def resize(self, controller, display, player): """ After Mainwindow changes or Splitter moved all related media widgets diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 5203c5960..7699a979d 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -30,6 +30,8 @@ import mimetypes from datetime import datetime from PyQt4.phonon import Phonon +from PyQt4 import QtCore +import sys from openlp.core.lib import Receiver from openlp.core.lib.mediaplayer import MediaPlayer @@ -63,6 +65,7 @@ class PhononPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'phonon') self.parent = parent + self.canBackground = True self.additional_extensions = ADDITIONAL_EXT mimetypes.init() for mimetype in Phonon.BackendCapabilities.availableMimeTypes(): @@ -93,7 +96,23 @@ class PhononPlayer(MediaPlayer): u' '.join(self.additional_extensions[mimetype]))) def setup(self, display): - display.phononWidget = Phonon.VideoWidget(display) + if display.isLive: + display.phononWidget = Phonon.VideoWidget() + windowFlags = QtCore.Qt.FramelessWindowHint + if QtCore.QSettings().value(u'advanced/x11 bypass wm', + QtCore.QVariant(True)).toBool(): + windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint + # FIXME: QtCore.Qt.SplashScreen is workaround to make display screen + # stay always on top on Mac OS X. For details see bug 906926. + # It needs more investigation to fix it properly. + if sys.platform == 'darwin': + windowFlags = windowFlags | QtCore.Qt.SplashScreen + windowFlags = windowFlags | QtCore.Qt.Window + display.phononWidget.setWindowFlags(windowFlags) + display.phononWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose) + display.phononWidget.setGeometry(display.geometry())#1280,0,1280,1024) + else: + display.phononWidget = Phonon.VideoWidget(display) display.phononWidget.resize(display.size()) display.mediaObject = Phonon.MediaObject(display) Phonon.createPath(display.mediaObject, display.phononWidget) @@ -153,7 +172,10 @@ class PhononPlayer(MediaPlayer): int(display.mediaObject.totalTime()/1000) controller.seekSlider.setMaximum(controller.media_info.length*1000) self.state = MediaState.Playing - display.phononWidget.raise_() + if not controller.media_info.is_background: + display.phononWidget.raise_() + else: + display.raise_() return True else: return False diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 2adf0a2d1..de9e3c20d 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -91,11 +91,28 @@ class VlcPlayer(MediaPlayer): MediaPlayer.__init__(self, parent, u'vlc') self.parent = parent self.canFolder = True + self.canBackground = True self.audio_extensions_list = AUDIO_EXT self.video_extensions_list = VIDEO_EXT def setup(self, display): - display.vlcWidget = QtGui.QFrame(display) + if display.isLive: + display.vlcWidget = QtGui.QFrame() + windowFlags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool + if QtCore.QSettings().value(u'advanced/x11 bypass wm', + QtCore.QVariant(True)).toBool(): + windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint + # FIXME: QtCore.Qt.SplashScreen is workaround to make display screen + # stay always on top on Mac OS X. For details see bug 906926. + # It needs more investigation to fix it properly. + if sys.platform == 'darwin': + windowFlags = windowFlags | QtCore.Qt.SplashScreen + windowFlags = windowFlags | QtCore.Qt.Window + display.vlcWidget.setWindowFlags(windowFlags) + display.vlcWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose) + display.vlcWidget.setGeometry(display.geometry()) + else: + display.vlcWidget = QtGui.QFrame(display) # creating a basic vlc instance command_line_options = u'--no-video-title-show' if not display.hasAudio: @@ -108,7 +125,7 @@ class VlcPlayer(MediaPlayer): display.vlcInstance.set_log_verbosity(2) # creating an empty vlc media player display.vlcMediaPlayer = display.vlcInstance.media_player_new() - display.vlcWidget.resize(display.size()) + #display.vlcWidget.resize(display.size()) display.vlcWidget.raise_() display.vlcWidget.hide() # the media player has to be 'connected' to the QFrame @@ -160,7 +177,7 @@ class VlcPlayer(MediaPlayer): def resize(self, display): display.vlcWidget.resize(display.size()) - + def play(self, display): controller = display.controller start_time = 0 @@ -174,7 +191,10 @@ class VlcPlayer(MediaPlayer): int(display.vlcMediaPlayer.get_media().get_duration() / 1000) controller.seekSlider.setMaximum(controller.media_info.length * 1000) self.state = MediaState.Playing - display.vlcWidget.raise_() + if not controller.media_info.is_background: + display.vlcWidget.raise_() + else: + display.raise_() return True else: return False From b70f95c8251ee9ae74e649062dae47c0d66b06ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sun, 15 Jan 2012 03:21:35 +0200 Subject: [PATCH 041/105] Added possibility to choose one day time in next week or now as the datetime. Also took Meinert's comment about too restricted filename characters into account. --- openlp/core/ui/advancedtab.py | 136 ++++++++++++++++++++++++------- openlp/core/ui/servicemanager.py | 22 ++++- 2 files changed, 126 insertions(+), 32 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 77eca8382..788f7ce0f 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, translate, build_icon from openlp.core.lib.ui import UiStrings from openlp.core.utils import get_images_filter -from datetime import datetime +from datetime import datetime, timedelta import re class AdvancedTab(SettingsTab): @@ -45,13 +45,16 @@ class AdvancedTab(SettingsTab): Initialise the settings tab """ advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') + # 7 stands for now, 0 to 6 is Monday to Sunday. + self.default_service_day = 0 + # 11 o'clock is the most popular time for morning service. + self.default_service_hour = 11 + self.default_service_minute = 0 self.default_service_name = unicode(translate('OpenLP.AdvancedTab', - 'Service %Y-%m-%d')) + 'Service %Y-%m-%d-%H-%M')) self.default_service_example = unicode(translate('OpenLP.AdvancedTab', - '%Y-%m-%d', + '%Y-%m-%d-%H-%M', 'This should be the date part of default service name.')) - self.wrong_characters_expression = \ - re.compile(r'[\[\]/\;,><&*:%=+@!#^()|?^]+') self.default_image = u':/graphics/openlp-splash-screen.png' self.default_color = u'#ffffff' self.icon_path = u':/system/system_settings.png' @@ -97,10 +100,28 @@ class AdvancedTab(SettingsTab): self.defaultServiceLayout = QtGui.QFormLayout( self.defaultServiceGroupBox) self.defaultServiceLayout.setObjectName(u'defaultServiceLayout') + self.defaultServiceDayLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceDayLabel.setObjectName(u'defaultServiceDayLabel') + self.defaultServiceDay = QtGui.QComboBox( + self.defaultServiceGroupBox) + self.defaultServiceDay.addItems( + [u'', u'', u'', u'', u'', u'', u'', u'']) + self.defaultServiceDay.setObjectName( + u'defaultServiceDay') + self.defaultServiceTime = QtGui.QTimeEdit(self.defaultServiceGroupBox) + self.defaultServiceTime.setObjectName(u'defaultServiceTime') + self.defaultServiceTimeHBox = QtGui.QHBoxLayout() + self.defaultServiceTimeHBox.setObjectName(u'defaultServiceTimeHBox') + self.defaultServiceTimeHBox.addWidget(self.defaultServiceDayLabel) + self.defaultServiceTimeHBox.addWidget(self.defaultServiceDay) + self.defaultServiceTimeHBox.addWidget(self.defaultServiceTime) + self.defaultServiceLayout.addRow(self.defaultServiceTimeHBox) self.defaultServiceLabel = QtGui.QLabel(self.defaultServiceGroupBox) self.defaultServiceLabel.setObjectName(u'defaultServiceLabel') - self.defaultServiceEdit = QtGui.QLineEdit(self.defaultServiceGroupBox) - self.defaultServiceEdit.setObjectName(u'defaultServiceEdit') + self.defaultServiceName = QtGui.QLineEdit(self.defaultServiceGroupBox) + self.defaultServiceName.setObjectName(u'defaultServiceName') + self.defaultServiceName.setValidator(QtGui.QRegExpValidator( + QtCore.QRegExp(r'[^/\\?*|<>\[\]":+]+'), self)) self.defaultServiceRevertButton = QtGui.QToolButton( self.defaultServiceGroupBox) self.defaultServiceRevertButton.setObjectName( @@ -110,7 +131,7 @@ class AdvancedTab(SettingsTab): self.defaultServiceHBox = QtGui.QHBoxLayout() self.defaultServiceHBox.setObjectName(u'defaultServiceHBox') self.defaultServiceHBox.addWidget(self.defaultServiceLabel) - self.defaultServiceHBox.addWidget(self.defaultServiceEdit) + self.defaultServiceHBox.addWidget(self.defaultServiceName) self.defaultServiceHBox.addWidget(self.defaultServiceRevertButton) self.defaultServiceLayout.addRow(self.defaultServiceHBox) self.defaultServiceExampleLabel = QtGui.QLabel( @@ -167,9 +188,15 @@ class AdvancedTab(SettingsTab): self.rightLayout.addWidget(self.hideMouseGroupBox) self.rightLayout.addStretch() - QtCore.QObject.connect(self.defaultServiceEdit, + QtCore.QObject.connect(self.defaultServiceDay, + QtCore.SIGNAL(u'currentIndexChanged(int)'), + self.onDefaultServiceDayChanged) + QtCore.QObject.connect(self.defaultServiceTime, + QtCore.SIGNAL(u'timeChanged(QTime)'), + self.onDefaultServiceTimeChanged) + QtCore.QObject.connect(self.defaultServiceName, QtCore.SIGNAL(u'textChanged(QString)'), - self.onDefaultServiceUpdated) + self.onDefaultServiceNameChanged) QtCore.QObject.connect(self.defaultServiceRevertButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultServiceRevertButtonPressed) @@ -202,6 +229,26 @@ class AdvancedTab(SettingsTab): 'Enable application exit confirmation')) self.defaultServiceGroupBox.setTitle( translate('OpenLP.AdvancedTab', 'Default Service')) + self.defaultServiceDayLabel.setText( + translate('OpenLP.AdvancedTab', 'Service name refers to:')) + self.defaultServiceDay.setItemText(0, + translate('OpenLP.AdvancedTab', 'Monday')) + self.defaultServiceDay.setItemText(1, + translate('OpenLP.AdvancedTab', 'Tuesday')) + self.defaultServiceDay.setItemText(2, + translate('OpenLP.AdvancedTab', 'Wednesday')) + self.defaultServiceDay.setItemText(3, + translate('OpenLP.AdvancedTab', 'Thurdsday')) + self.defaultServiceDay.setItemText(4, + translate('OpenLP.AdvancedTab', 'Friday')) + self.defaultServiceDay.setItemText(5, + translate('OpenLP.AdvancedTab', 'Saturday')) + self.defaultServiceDay.setItemText(6, + translate('OpenLP.AdvancedTab', 'Sunday')) + self.defaultServiceDay.setItemText(7, + translate('OpenLP.AdvancedTab', 'Now')) + self.defaultServiceTime.setToolTip(translate('OpenLP.AdvancedTab', + 'Time when usual service starts.')) self.defaultServiceLabel.setText( translate('OpenLP.AdvancedTab', 'Default service name:')) self.defaultServiceRevertButton.setToolTip(unicode( @@ -263,9 +310,18 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) + self.service_day, ok = settings.value(u'default service day', + QtCore.QVariant(self.default_service_day)).toInt() + self.service_hour, ok = settings.value(u'default service hour', + self.default_service_hour).toInt() + self.service_minute, ok = settings.value(u'default service minute', + self.default_service_minute).toInt() self.service_name = unicode(settings.value(u'default service name', self.default_service_name).toString()) - self.defaultServiceEdit.setText(self.service_name) + self.defaultServiceDay.setCurrentIndex(self.service_day) + self.defaultServiceTime.setTime( + QtCore.QTime(self.service_hour, self.service_minute)) + self.defaultServiceName.setText(self.service_name) self.default_color = settings.value(u'default color', QtCore.QVariant(u'#ffffff')).toString() self.defaultFileEdit.setText(settings.value(u'default image', @@ -279,10 +335,8 @@ class AdvancedTab(SettingsTab): """ Save settings to disk. """ - self.service_name = unicode(self.defaultServiceEdit.text()) - preset_okay, name_example = self.generate_service_name_example( - self.service_name) - if not preset_okay: + preset_is_valid, name_example = self.generate_service_name_example() + if not preset_is_valid: self.service_name = self.default_service_name settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) @@ -290,6 +344,12 @@ class AdvancedTab(SettingsTab): settings.remove(u'default service name') else: settings.setValue(u'default service name', self.service_name) + settings.setValue(u'default service day', + self.defaultServiceDay.currentIndex()) + settings.setValue(u'default service hour', + self.defaultServiceTime.time().hour()) + settings.setValue(u'default service minute', + self.defaultServiceTime.time().minute()) settings.setValue(u'recent file count', QtCore.QVariant(self.recentSpinBox.value())) settings.setValue(u'save current plugin', @@ -308,28 +368,46 @@ class AdvancedTab(SettingsTab): settings.setValue(u'default image', self.defaultFileEdit.text()) settings.endGroup() - def generate_service_name_example(self, service_name_preset): - preset_okay = True + def generate_service_name_example(self): + preset_is_valid = True + if self.service_day == 7: + time = datetime.now() + else: + now = datetime.now() + day_delta = self.service_day - now.weekday() + if day_delta < 0: + day_delta += 7 + time = now + timedelta(days=day_delta) + time = time.replace(hour = self.service_hour, + minute = self.service_minute) try: - service_name_example = datetime.now().strftime( - unicode(service_name_preset)) - if self.wrong_characters_expression.search(service_name_example): - service_name_example = translate('OpenLP.AdvancedTab', - 'Filename contains wrong characters.') - preset_okay = False + service_name_example = time.strftime(unicode(self.service_name)) except ValueError: service_name_example = translate('OpenLP.AdvancedTab', 'Syntax error.') - preset_okay = False - return preset_okay, service_name_example + preset_is_valid = False + return preset_is_valid, service_name_example - def onDefaultServiceUpdated(self, preset): - preset_okay, name_example = self.generate_service_name_example(preset) + def updateServiceNameExample(self): + preset_is_valid, name_example = self.generate_service_name_example() self.defaultServiceExample.setText(name_example) + def onDefaultServiceDayChanged(self, index): + self.service_day = index + self.updateServiceNameExample() + + def onDefaultServiceTimeChanged(self, time): + self.service_hour = time.hour() + self.service_minute = time.minute() + self.updateServiceNameExample() + + def onDefaultServiceNameChanged(self, name): + self.service_name = name + self.updateServiceNameExample() + def onDefaultServiceRevertButtonPressed(self): - self.defaultServiceEdit.setText(self.default_service_name) - self.defaultServiceEdit.setFocus() + self.defaultServiceName.setText(self.default_service_name) + self.defaultServiceName.setFocus() def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 54aae2f94..f75d5ec8c 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -31,7 +31,7 @@ import os import shutil import zipfile from tempfile import mkstemp -from datetime import datetime +from datetime import datetime, timedelta log = logging.getLogger(__name__) @@ -610,10 +610,26 @@ class ServiceManager(QtGui.QWidget): Get a file name and then call :func:`ServiceManager.saveFile` to save the file. """ + service_day, ok = QtCore.QSettings().value( + u'advanced/default service day', 7).toInt() + if service_day == 7: + time = datetime.now() + else: + service_hour, ok = QtCore.QSettings().value( + u'advanced/default service hour', 11).toInt() + service_minute, ok = QtCore.QSettings().value( + u'advanced/default service minute', 0).toInt() + now = datetime.now() + day_delta = service_day - now.weekday() + if day_delta < 0: + day_delta += 7 + time = now + timedelta(days=day_delta) + time = time.replace(hour = service_hour, minute = service_minute) default_pattern = unicode(QtCore.QSettings().value( u'advanced/default service name', - translate('OpenLP.AdvancedTab', 'Service %Y-%m-%d')).toString()) - default_filename = datetime.now().strftime(default_pattern) + translate('OpenLP.AdvancedTab', + 'Service %Y-%m-%d-%H-%M')).toString()) + default_filename = time.strftime(default_pattern) directory = unicode(SettingsManager.get_last_dir( self.mainwindow.servicemanagerSettingsSection)) path = os.path.join(directory, default_filename) From 87775f164ac392c99a65e046e658cdda6a510d09 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sun, 15 Jan 2012 17:08:08 +0800 Subject: [PATCH 042/105] Migrate Wrap Setting to Slide Advance Setting --- openlp/core/ui/mainwindow.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 3490dfada..75312f3d5 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -38,6 +38,7 @@ from openlp.core.lib import Renderer, build_icon, OpenLPDockWidget, \ PluginManager, Receiver, translate, ImageManager, PluginStatus from openlp.core.lib.ui import UiStrings, base_action, checkable_action, \ icon_action, shortcut_action +from openlp.core.lib.serviceitem import SlideAdvance from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \ ThemeManager, SlideController, PluginForm, MediaDockManager, \ ShortcutListForm, FormattingTagForm @@ -1307,6 +1308,18 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): Load the main window settings. """ log.debug(u'Loading QSettings') + # Migrate Wrap Settings to Slide Advance Settings + if QtCore.QSettings().contains(self.generalSettingsSection + + u'/enable slide loop'): + if QtCore.QSettings().value(self.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool(): + slide_advance = SlideAdvance.Wrap + else: + slide_advance = SlideAdvance.End + QtCore.QSettings().setValue(self.generalSettingsSection + + u'/slide advance', QtCore.QVariant(slide_advance)) + QtCore.QSettings().remove(self.generalSettingsSection + + u'/enable slide loop') settings = QtCore.QSettings() # Remove obsolete entries. settings.remove(u'custom slide') From e6f2fd67c3b680be2180fadea45aaf793c465c6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sun, 15 Jan 2012 11:58:02 +0200 Subject: [PATCH 043/105] Disable QTimeEdit box, when it is not used. --- openlp/core/ui/advancedtab.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 056374d46..6ca50de2b 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -416,6 +416,7 @@ class AdvancedTab(SettingsTab): def onDefaultServiceDayChanged(self, index): self.service_day = index + self.defaultServiceTime.setReadOnly(self.service_day == 7) self.updateServiceNameExample() def onDefaultServiceTimeChanged(self, time): From 01f7244db76b9ba62a98695a7dc80f1dede8e948 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sun, 15 Jan 2012 18:05:12 +0800 Subject: [PATCH 044/105] Removed unnecessary slide_advance --- openlp/core/ui/slidecontroller.py | 32 +++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 738cc219c..34d6ff1dc 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1164,7 +1164,7 @@ class SlideController(Controller): rect.y(), rect.width(), rect.height()) self.slidePreview.setPixmap(winimg) - def onSlideSelectedNext(self, slide_advance=None): + def onSlideSelectedNext(self): """ Go to the next slide. """ @@ -1177,13 +1177,15 @@ class SlideController(Controller): else: row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): - if slide_advance is None: - slide_advance = QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] - if slide_advance == SlideAdvance.Wrap: + if QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Wrap: row = 0 - elif slide_advance == SlideAdvance.Next: + elif QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Next: self.serviceNext() return else: @@ -1191,7 +1193,7 @@ class SlideController(Controller): self.__checkUpdateSelectedSlide(row) self.slideSelected() - def onSlideSelectedPrevious(self, slide_advance=None): + def onSlideSelectedPrevious(self): """ Go to the previous slide. """ @@ -1204,13 +1206,15 @@ class SlideController(Controller): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - if slide_advance is None: - slide_advance = QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] - if slide_advance == SlideAdvance.Wrap: + if QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Wrap: row = self.previewListWidget.rowCount() - 1 - elif slide_advance == SlideAdvance.Next: + elif QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Next: self.servicePrevious() return else: From c1604b64ff60456ba3374ee6bf334f631f21f574 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sun, 15 Jan 2012 21:11:10 +0800 Subject: [PATCH 045/105] Fixed camelCase, indentation, extra spaces, and slide timer --- openlp/core/ui/generaltab.py | 88 +++++++++++++++---------------- openlp/core/ui/mainwindow.py | 18 +++---- openlp/core/ui/slidecontroller.py | 51 ++++++++++-------- resources/i18n/en_GB.ts | 12 ++--- 4 files changed, 88 insertions(+), 81 deletions(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index e3380f8ea..4f7c73a82 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -179,36 +179,36 @@ class GeneralTab(SettingsTab): self.rightLayout.addWidget(self.audioGroupBox) self.rightLayout.addStretch() # Service Item Slide Advance - self.SlideGroupBox = QtGui.QGroupBox(self.rightColumn) - self.SlideGroupBox.setObjectName(u'SlideGroupBox') - self.SlideLayout = QtGui.QFormLayout(self.SlideGroupBox) - self.SlideLayout.setLabelAlignment( + self.slideGroupBox = QtGui.QGroupBox(self.rightColumn) + self.slideGroupBox.setObjectName(u'slideGroupBox') + self.slideLayout = QtGui.QFormLayout(self.slideGroupBox) + self.slideLayout.setLabelAlignment( QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) - self.SlideLayout.setFormAlignment( + self.slideLayout.setFormAlignment( QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) - self.SlideLayout.setObjectName(u'SlideLayout') - self.EndSlideRadioButton = QtGui.QRadioButton(self.SlideGroupBox) - self.EndSlideRadioButton.setObjectName(u'EndSlideRadioButton') - self.EndSlideLabel = QtGui.QLabel(self.SlideGroupBox) - self.EndSlideLabel.setWordWrap(True) - self.EndSlideLabel.setObjectName(u'EndSlideLabel') - self.SlideLayout.addRow(self.EndSlideRadioButton, self.EndSlideLabel) - self.WrapSlideRadioButton = QtGui.QRadioButton(self.SlideGroupBox) - self.WrapSlideRadioButton.setObjectName(u'WrapSlideRadioButton') - self.WrapSlideLabel = QtGui.QLabel(self.SlideGroupBox) - self.WrapSlideLabel.setWordWrap(True) - self.WrapSlideLabel.setObjectName(u'WrapSlideLabel') - self.SlideLayout.addRow(self.WrapSlideRadioButton, - self.WrapSlideLabel) - self.NextSlideRadioButton = QtGui.QRadioButton(self.SlideGroupBox) - self.NextSlideRadioButton.setChecked(True) - self.NextSlideRadioButton.setObjectName(u'NextSlideRadioButton') - self.NextSlideLabel = QtGui.QLabel(self.SlideGroupBox) - self.NextSlideLabel.setWordWrap(True) - self.NextSlideLabel.setObjectName(u'NextSlideLabel') - self.SlideLayout.addRow(self.NextSlideRadioButton, - self.NextSlideLabel) - self.rightLayout.addWidget(self.SlideGroupBox) + self.slideLayout.setObjectName(u'slideLayout') + self.endSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) + self.endSlideRadioButton.setObjectName(u'endSlideRadioButton') + self.endSlideLabel = QtGui.QLabel(self.slideGroupBox) + self.endSlideLabel.setWordWrap(True) + self.endSlideLabel.setObjectName(u'endSlideLabel') + self.slideLayout.addRow(self.endSlideRadioButton, self.endSlideLabel) + self.wrapSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) + self.wrapSlideRadioButton.setObjectName(u'wrapSlideRadioButton') + self.wrapSlideLabel = QtGui.QLabel(self.slideGroupBox) + self.wrapSlideLabel.setWordWrap(True) + self.wrapSlideLabel.setObjectName(u'wrapSlideLabel') + self.slideLayout.addRow(self.wrapSlideRadioButton, + self.wrapSlideLabel) + self.nextSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) + self.nextSlideRadioButton.setChecked(True) + self.nextSlideRadioButton.setObjectName(u'nextSlideRadioButton') + self.nextSlideLabel = QtGui.QLabel(self.slideGroupBox) + self.nextSlideLabel.setWordWrap(True) + self.nextSlideLabel.setObjectName(u'nextSlideLabel') + self.slideLayout.addRow(self.nextSlideRadioButton, + self.nextSlideLabel) + self.rightLayout.addWidget(self.slideGroupBox) self.rightLayout.addStretch() # Signals and slots QtCore.QObject.connect(self.overrideCheckBox, @@ -226,11 +226,11 @@ class GeneralTab(SettingsTab): # Reload the tab, as the screen resolution/count may have changed. QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_screen_changed'), self.load) - QtCore.QObject.connect(self.EndSlideRadioButton, + QtCore.QObject.connect(self.endSlideRadioButton, QtCore.SIGNAL(u'pressed()'), self.onEndSlideButtonPressed) - QtCore.QObject.connect(self.WrapSlideRadioButton, + QtCore.QObject.connect(self.wrapSlideRadioButton, QtCore.SIGNAL(u'pressed()'), self.onWrapSlideButtonPressed) - QtCore.QObject.connect(self.NextSlideRadioButton, + QtCore.QObject.connect(self.nextSlideRadioButton, QtCore.SIGNAL(u'pressed()'), self.onNextSlideButtonPressed) # Remove for now self.usernameLabel.setVisible(False) @@ -291,24 +291,24 @@ class GeneralTab(SettingsTab): self.startPausedCheckBox.setText( translate('OpenLP.GeneralTab', 'Start background audio paused')) # Slide Advance - self.SlideGroupBox.setTitle( + self.slideGroupBox.setTitle( translate('OpenLP.GeneralTab', 'Service Item Slide Advance')) - self.EndSlideRadioButton.setText( + self.endSlideRadioButton.setText( translate('OpenLP.GeneralTab', '&End Slide')) - self.EndSlideLabel.setText( + self.endSlideLabel.setText( translate('OpenLP.GeneralTab', 'Up and down arrow keys ' - 'stop at the top and bottom slides of each Service Item. ')) - self.WrapSlideRadioButton.setText( + 'stop at the top and bottom slides of each Service Item.')) + self.wrapSlideRadioButton.setText( translate('OpenLP.GeneralTab', '&Wrap Slide')) - self.WrapSlideLabel.setText( + self.wrapSlideLabel.setText( translate('OpenLP.GeneralTab', 'Up and down arrow keys ' - 'wrap around at the top and bottom slides of each Service Item. ')) - self.NextSlideRadioButton.setText( + 'wrap around at the top and bottom slides of each Service Item.')) + self.nextSlideRadioButton.setText( translate('OpenLP.GeneralTab', '&Next Slide')) - self.NextSlideLabel.setText( + self.nextSlideLabel.setText( translate('OpenLP.GeneralTab', 'Up and down arrow keys ' 'advance to the the next or previous Service Item from the ' - 'top and bottom slides of each Service Item. ')) + 'top and bottom slides of each Service Item.')) def load(self): """ @@ -367,11 +367,11 @@ class GeneralTab(SettingsTab): u'slide advance', QtCore.QVariant(SlideAdvance.End)).toInt()[0] settings.endGroup() if self.slide_advance == SlideAdvance.End: - self.EndSlideRadioButton.setChecked(True) + self.endSlideRadioButton.setChecked(True) elif self.slide_advance == SlideAdvance.Wrap: - self.WrapSlideRadioButton.setChecked(True) + self.wrapSlideRadioButton.setChecked(True) else: - self.NextSlideRadioButton.setChecked(True) + self.nextSlideRadioButton.setChecked(True) def save(self): """ diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 75312f3d5..0868aad94 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -1310,16 +1310,16 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): log.debug(u'Loading QSettings') # Migrate Wrap Settings to Slide Advance Settings if QtCore.QSettings().contains(self.generalSettingsSection + - u'/enable slide loop'): - if QtCore.QSettings().value(self.generalSettingsSection + + u'/enable slide loop'): + if QtCore.QSettings().value(self.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool(): - slide_advance = SlideAdvance.Wrap - else: - slide_advance = SlideAdvance.End - QtCore.QSettings().setValue(self.generalSettingsSection + - u'/slide advance', QtCore.QVariant(slide_advance)) - QtCore.QSettings().remove(self.generalSettingsSection + - u'/enable slide loop') + QtCore.QSettings().setValue(self.generalSettingsSection + + u'/slide advance', QtCore.QVariant(SlideAdvance.Wrap)) + else: + QtCore.QSettings().setValue(self.generalSettingsSection + + u'/slide advance', QtCore.QVariant(SlideAdvance.End)) + QtCore.QSettings().remove(self.generalSettingsSection + + u'/enable slide loop') settings = QtCore.QSettings() # Remove obsolete entries. settings.remove(u'custom slide') diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 34d6ff1dc..ef59a0083 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1164,7 +1164,7 @@ class SlideController(Controller): rect.y(), rect.width(), rect.height()) self.slidePreview.setPixmap(winimg) - def onSlideSelectedNext(self): + def onSlideSelectedNext(self, wrap=None): """ Go to the next slide. """ @@ -1177,17 +1177,24 @@ class SlideController(Controller): else: row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): - if QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Wrap: - row = 0 - elif QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Next: - self.serviceNext() - return + if wrap is None: + if QtCore.QSettings().value( + self.parent().generalSettingsSection + + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Wrap: + row = 0 + elif QtCore.QSettings().value( + self.parent().generalSettingsSection + + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Next: + self.serviceNext() + return + else: + row = self.previewListWidget.rowCount() - 1 + elif wrap: + row = 0 else: row = self.previewListWidget.rowCount() - 1 self.__checkUpdateSelectedSlide(row) @@ -1207,16 +1214,16 @@ class SlideController(Controller): row = self.previewListWidget.currentRow() - 1 if row == -1: if QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Wrap: - row = self.previewListWidget.rowCount() - 1 - elif QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Next: - self.servicePrevious() - return + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Wrap: + row = self.previewListWidget.rowCount() - 1 + elif QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ + == SlideAdvance.Next: + self.servicePrevious() + return else: row = 0 self.__checkUpdateSelectedSlide(row) diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts index 29910a46b..19ec72522 100644 --- a/resources/i18n/en_GB.ts +++ b/resources/i18n/en_GB.ts @@ -2321,18 +2321,18 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can - Up and down arrow keys stop at the top and bottom slides of each Service Item. - Up and down arrow keys stop at the top and bottom slides of each Service Item. + Up and down arrow keys stop at the top and bottom slides of each Service Item. + Up and down arrow keys stop at the top and bottom slides of each Service Item. - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. + Up and down arrow keys wrap around at the top and bottom slides of each Service Item. + Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. + Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. + Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. From 5cb2b488509d81b1ecde3714453eb21673be2ebc Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Sun, 15 Jan 2012 17:23:56 -0500 Subject: [PATCH 046/105] Added parm to pyinstaller execution to only display error messages --- scripts/windows-builder.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py index dcfc44c7f..275a3f5cb 100644 --- a/scripts/windows-builder.py +++ b/scripts/windows-builder.py @@ -182,6 +182,7 @@ def run_pyinstaller(): u'--windowed', u'--noupx', u'--additional-hooks-dir', hooks_path, + u'--log-level=ERROR', u'-o', branch_path, u'-i', win32_icon, u'-p', branch_path, From 1dbcc18c7eabefb7ddd63e8d2763fb1185209d75 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Mon, 16 Jan 2012 17:50:15 +0800 Subject: [PATCH 047/105] Reintroduced slide_advance variable so that settings are only read once. Reverted language files. --- openlp/core/ui/slidecontroller.py | 23 +- resources/i18n/af.ts | 685 +++++++++++++--------------- resources/i18n/cs.ts | 460 +++++++++---------- resources/i18n/de.ts | 669 +++++++++++++-------------- resources/i18n/el.ts | 460 +++++++++---------- resources/i18n/en.ts | 457 +++++++++---------- resources/i18n/en_GB.ts | 671 +++++++++++++-------------- resources/i18n/en_ZA.ts | 671 +++++++++++++-------------- resources/i18n/es.ts | 460 +++++++++---------- resources/i18n/et.ts | 671 +++++++++++++-------------- resources/i18n/fr.ts | 460 +++++++++---------- resources/i18n/hu.ts | 667 +++++++++++++-------------- resources/i18n/id.ts | 460 +++++++++---------- resources/i18n/ja.ts | 460 +++++++++---------- resources/i18n/ko.ts | 457 +++++++++---------- resources/i18n/nb.ts | 457 +++++++++---------- resources/i18n/nl.ts | 460 +++++++++---------- resources/i18n/pt_BR.ts | 733 ++++++++++++++---------------- resources/i18n/ru.ts | 460 +++++++++---------- resources/i18n/sq.ts | 465 +++++++++---------- resources/i18n/sv.ts | 460 +++++++++---------- resources/i18n/zh_CN.ts | 457 +++++++++---------- 22 files changed, 5120 insertions(+), 6103 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index ef59a0083..01bee34d0 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1178,17 +1178,13 @@ class SlideController(Controller): row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): if wrap is None: - if QtCore.QSettings().value( + slide_advance = QtCore.QSettings().value( self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Wrap: + QtCore.QVariant(SlideAdvance.End)).toInt()[0] + if slide_advance == SlideAdvance.Wrap: row = 0 - elif QtCore.QSettings().value( - self.parent().generalSettingsSection + - u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Next: + elif slide_advance == SlideAdvance.Next: self.serviceNext() return else: @@ -1213,15 +1209,12 @@ class SlideController(Controller): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - if QtCore.QSettings().value( + slide_advance = QtCore.QSettings().value( self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Wrap: + QtCore.QVariant(SlideAdvance.End)).toInt()[0] + if slide_advance == SlideAdvance.Wrap: row = self.previewListWidget.rowCount() - 1 - elif QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] \ - == SlideAdvance.Next: + elif slide_advance == SlideAdvance.Next: self.servicePrevious() return else: diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts index fdcbbf79a..c2610c910 100644 --- a/resources/i18n/af.ts +++ b/resources/i18n/af.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -92,7 +91,7 @@ You have not entered a parameter to be replaced. Do you want to continue anyway? - Daar is nie 'n parameter gegee om te vervang nie. + Daar is nie 'n parameter gegee om te vervang nie. Gaan steeds voort? @@ -102,9 +101,9 @@ Gaan steeds voort? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? - Die attent-teks bevat nie '<>' nie. + Die attent-teks bevat nie '<>' nie. Gaan steeds voort? @@ -256,7 +255,7 @@ Gaan steeds voort? You did not enter a search keyword. You can separate different keywords by a space to search for all of your keywords and you can separate them by a comma to search for one of them. - Daar is nie 'n soek sleutelwoord ingevoer nie. + Daar is nie 'n soek sleutelwoord ingevoer nie. Vir 'n soektog wat alle sleutelwoorde bevat, skei die woorde deur middel van 'n spasie. Vir 'n soektog wat een van die sleutelwoorde bevat, skei die woorde deur middel van 'n komma. @@ -412,38 +411,38 @@ Veranderinge affekteer nie verse wat reeds in die diens is nie. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Registreer Bybel en laai boeke... - + Registering Language... Taal registrasie... - + Importing %s... Importing <book name>... Voer %s in... - + Download Error Aflaai Fout - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. Daar was 'n probleem om die vers seleksie af te laai. Gaan die Internet konneksie na en as hierdie probleem voortduur, oorweeg dit asseblief om 'n gogga te rapporteer. - + Parse Error Ontleed Fout - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Daar was 'n probleem om die vers seleksie te onttrek. As hierdie probleem voortduur, oorweeg dit asseblief om 'n gogga te rapporteer. @@ -1041,12 +1040,9 @@ word en dus is 'n Internet verbinding nodig. CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - Wis regtig die geselekteerde aangepasde skyfie uit? - Wis regtig die %n geselekteerde aangepasde skyfies uit? - + Wis regtig die geselekteerde aangepasde skyfie uit?Wis regtig die %n geselekteerde aangepasde skyfies uit? @@ -1113,7 +1109,7 @@ word en dus is 'n Internet verbinding nodig. ImagePlugin.ExceptionDialog - + Select Attachment Selekteer Aanhangsel @@ -1184,60 +1180,60 @@ Voeg steeds die ander beelde by? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Media Mini-program</strong><br/>Die media mini-program verskaf speel funksies van audio en video. - + Media name singular Media - + Media name plural Media - + Media container title Media - + Load new media. Laai nuwe media. - + Add new media. Voeg nuwe media by. - + Edit the selected media. Redigeer di geselekteerde media. - + Delete the selected media. Wis die giselekteerde media uit. - + Preview the selected media. Skou die geselekteerde media. - + Send the selected media live. Stuur die geselekteerde media regstreeks. - + Add the selected media to the service. Voeg die geselekteerde media by die diens. @@ -1285,7 +1281,7 @@ Voeg steeds die ander beelde by? Daar was geen vertoon item om by te voeg nie. - + Unsupported File Lêer nie Ondersteun nie @@ -1303,32 +1299,32 @@ Voeg steeds die ander beelde by? MediaPlugin.MediaTab - + Available Media Players Beskikbare Media Spelers - + %s (unavailable) %s (onbeskikbaar) - + Player Order Speler Orde - + Down Af - + Up Op - + Allow media player to be overriden Laat toe dat media speler oorheers word @@ -1356,17 +1352,17 @@ Should OpenLP upgrade now? OpenLP.AboutForm - + Credits Krediete - + License Lisensie - + Contribute Dra By @@ -1376,17 +1372,17 @@ Should OpenLP upgrade now? bou %s - + 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. Hierdie program is gratis sagteware; dit kan verspei en/of verander word onder die terme van die GNU Algemene Publieke Lisensie soos deur die Gratis Sagteware Vondasie gepubliseer is; weergawe 2 van die Lisensie. - + 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. Hierdie program word versprei in die hoop dat dit nuttig sal wees, maar SONDER ENIGE WAARBORG; sonder die geïmpliseerde waarborg van VERHANDELBAARHEID of GESKIKTHEID VIR 'N SPESIFIEKE DOEL. Sien hieronder vir meer inligting. - + Project Lead %s @@ -1419,7 +1415,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1522,116 +1518,107 @@ Find out more about OpenLP: http://openlp.org/ OpenLP is written and maintained by volunteers. If you would like to see more free Christian software being written, please consider contributing by using the button below. OpenLP <version><revision> - Open Source Lyrics Projection -OpenLP is gratis kerk aanbieding sagteware of lirieke projeksie sagteware wat gebruik word vir die vertoning van liedere, Bybel verse, video's, beelde tot ook aanbiedings (as Impress, PowerPoint of PowerPoint Viewer geïnstalleer is) vir kerklike aanbidding deur middel van 'n rekenaar en 'n data projektor. +OpenLP is gratis kerk aanbieding sagteware of lirieke projeksie sagteware wat gebruik word vir die vertoning van liedere, Bybel verse, video's, beelde tot ook aanbiedings (as Impress, PowerPoint of PowerPoint Viewer geïnstalleer is) vir kerklike aanbidding deur middel van 'n rekenaar en 'n data projektor. Vind meer uit oor OpenLP: http://openlp.org/ OpenLP is geskryf en word onderhou deur vrywilligers. As u graag wil sien dat meer Christelike sagteware geskryf word, oorweeg dit asseblief om by te dra deur die knoppie hieronder te gebruik. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Kopiereg © 2004-2011%s +Gedeeltelike kopiereg © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings GK (UI) Verstellings - + Number of recent files to display: Hoeveelheid onlangse lêers om te vertoon: - + Remember active media manager tab on startup Onthou die laaste media bestuurder oortjie wanneer die program begin - + Double-click to send items straight to live Dubbel-kliek om die items regstreeks te stuur - + Expand new service items on creation Sit die nuwe diens items uit wanneer dit geskep word - + Enable application exit confirmation Stel die program in staat om die uitgang bevestiging te vertoon - + Mouse Cursor Muis Wyser - + Hide mouse cursor when over display window Steek die muis wyser weg wanneer dit oor die vertoon venster beweeg - + Default Image Verstek Beeld - + Background color: Agtergrond kleur: - + Image file: Beeld lêer: - + Open File Maak Lêer oop - + Advanced Gevorderd - + Preview items when clicked in Media Manager Skou items wanneer gekliek word in die Media Bestuurder - + Click to select a color. Kliek om 'n kleur te kies. - + Browse for an image file to display. Blaai vir 'n beeld lêer om te vertoon. - + Revert to the default OpenLP logo. Verander terug na die verstek OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1659,7 +1646,7 @@ Portions copyright © 2004-2012 %s Please enter a description of what you were doing to cause this error (Minimum 20 characters) - Voer asseblief 'n beskrywing in van waarmee jy besig was toe de probleem ontstaan het + Voer asseblief 'n beskrywing in van waarmee jy besig was toe de probleem ontstaan het (Mimimum 20 karrakters) @@ -1668,7 +1655,7 @@ Portions copyright © 2004-2012 %s Heg 'n Lêer aan - + Description characters to enter : %s Beskrywende karakters om in te voer: %s @@ -1676,24 +1663,24 @@ Portions copyright © 2004-2012 %s OpenLP.ExceptionForm - + Platform: %s Platvorm: %s - + Save Crash Report Stoor Bots Verslag - + Text files (*.txt *.log *.text) Teks lêers (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1724,7 +1711,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1860,17 +1847,17 @@ Version: %s Verstek Instellings - + Downloading %s... Aflaai %s... - + Download complete. Click the finish button to start OpenLP. Aflaai voltooi. Klik op die klaar knoppie om OpenLP te begin. - + Enabling selected plugins... Skakel geselekteerde miniprogramme aan... @@ -1940,32 +1927,32 @@ Version: %s Hierdie gids sal bystand verleen in die proses om OpenLP op te stel vir eerste gebruik. Klik die volgende knoppie hieronder om die seleksie proses te begin. - + Setting Up And Downloading Opstel en Afliaai - + Please wait while OpenLP is set up and your data is downloaded. Wag asseblief terwyl OpenLP opgestel en die data afgelaai word. - + Setting Up Opstel - + Click the finish button to start OpenLP. Kliek die voltooi knoppie om OpenLP te begin. - + Download complete. Click the finish button to return to OpenLP. Aflaai voltooi. Klik op die klaar knoppie om na OpenLP terug te keer. - + Click the finish button to return to OpenLP. Kliek die voltooi knoppie om na OpenLP terug te keer. @@ -1979,7 +1966,7 @@ Version: %s No Internet connection was found. The First Time Wizard needs an Internet connection in order to be able to download sample songs, Bibles and themes. Press the Finish button now to start OpenLP with initial settings and no sample data. To re-run the First Time Wizard and import this sample data at a later time, check your Internet connection and re-run this wizard by selecting "Tools/Re-run First Time Wizard" from OpenLP. - Geen Internet verbinding was gevind nie. Die Eerste Keer Gids benodig 'n Internet verbinding sodat voorbeeld liedere, Bybels en temas afgelaai kan word. Druk die Klaar knoppie om OpenLP nou te begin met verstek instellings en geen voorbeeld data. + Geen Internet verbinding was gevind nie. Die Eerste Keer Gids benodig 'n Internet verbinding sodat voorbeeld liedere, Bybels en temas afgelaai kan word. Druk die Klaar knoppie om OpenLP nou te begin met verstek instellings en geen voorbeeld data. Om die Eerste-gebruik Gids later te gebruik om hierde data in te trek, gaan die Internet verbinding na en begin weer hierdie gids deur die volgende te kies: "Gereedskap/Her-gebruik Eerste Keer Gids" vanaf OpenLP. @@ -2170,170 +2157,140 @@ Om die Eerste Keer Gids in geheel te kanselleer (en OpenLP nie te begin nie), dr OpenLP.GeneralTab - + General Algemeen - + Monitors Monitors - + Select monitor for output display: Selekteer monitor vir uitgaande vertoning: - + Display if a single screen Vertoon as dit 'n enkel skerm is - + Application Startup Applikasie Aanskakel - + Show blank screen warning Vertoon leë skerm waarskuwing - + Automatically open the last service Maak vanself die laaste diens oop - + Show the splash screen Wys die spatsel skerm - + Application Settings Program Verstellings - + Prompt to save before starting a new service Vra om te stoor voordat 'n nuwe diens begin word - + Automatically preview next item in service Wys voorskou van volgende item in diens automaties - + sec sek - + CCLI Details CCLI Inligting - + SongSelect username: SongSelect gebruikersnaam: - + SongSelect password: SongSelect wagwoord: - + Display Position Vertoon Posisie - + X X - + Y Y - + Height Hoogte - + Width Wydte - + Override display position Oorskryf vertoon posisie - + Check for updates to OpenLP Kyk vir opdaterings van OpenLP - + Unblank display when adding new live item Verwyder blanko vertoning wanneer 'n nuwe regstreekse item bygevoeg word - + + Enable slide wrap-around + Laat skyfie omvouing toe + + + Timed slide interval: Tyd-gedrewe skyfie interval: - + Background Audio Agtergrond Oudio - + Start background audio paused Begin agtergrond oudio gestop - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2351,7 +2308,7 @@ Om die Eerste Keer Gids in geheel te kanselleer (en OpenLP nie te begin nie), dr OpenLP.MainDisplay - + OpenLP Display OpenLP Vertooning @@ -2849,7 +2806,7 @@ As verkeerde verstellings ingevoer word, mag dit onvoorspelbare optrede tot gevo The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded. Database: %s - Die databasis wat gelaai is, was geskep in 'n meer onlangse weergawe van OpenLP. Die databasis is weergawe %d, terwyl OpenLP weergawe %d verwag. Die databasis sal nie gelaai word nie. + Die databasis wat gelaai is, was geskep in 'n meer onlangse weergawe van OpenLP. Die databasis is weergawe %d, terwyl OpenLP weergawe %d verwag. Die databasis sal nie gelaai word nie. Databasis: %s @@ -2871,68 +2828,68 @@ Databasis: %s Geen item geselekteer nie - + &Add to selected Service Item &Voeg by die geselekteerde Diens item - + You must select one or more items to preview. Kies een of meer items vir die voorskou. - + You must select one or more items to send live. Kies een of meer items vir regstreekse uitsending. - + You must select one or more items. Kies een of meer items. - + You must select an existing service item to add to. 'n Bestaande diens item moet geselekteer word om by by te voeg. - + Invalid Service Item Ongeldige Diens Item - + You must select a %s service item. Kies 'n %s diens item. - + You must select one or more items to add. Kies een of meer items om by te voeg. - + No Search Results Geen Soek Resultate - + Invalid File Type Ongeldige Lêer Tipe - + Invalid File %s. Suffix not supported Ongeldige Lêer %s. Agtervoegsel nie ondersteun nie - + &Clone &Kloon - + Duplicate files were found on import and were ignored. Duplikaat lêers gevind tydens invoer en is geïgnoreer. @@ -3087,12 +3044,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Begin</strong>: %s - + <strong>Length</strong>: %s <strong>Durasie</strong>: %s @@ -3108,189 +3065,189 @@ Suffix not supported OpenLP.ServiceManager - + Move to &top Skuif boon&toe - + Move item to the top of the service. Skuif item tot heel bo in die diens. - + Move &up Sk&uif op - + Move item up one position in the service. Skuif item een posisie boontoe in die diens. - + Move &down Skuif &af - + Move item down one position in the service. Skuif item een posisie af in die diens. - + Move to &bottom Skuif &tot heel onder - + Move item to the end of the service. Skuif item tot aan die einde van die diens. - + &Delete From Service Wis uit vanaf die &Diens - + Delete the selected item from the service. Wis geselekteerde item van die diens af. - + &Add New Item &Voeg Nuwe Item By - + &Add to Selected Item &Voeg by Geselekteerde Item - + &Edit Item R&edigeer Item - + &Reorder Item Ve&rander Item orde - + &Notes &Notas - + &Change Item Theme &Verander Item Tema - + OpenLP Service Files (*.osz) OpenLP Diens Lêers (*.osz) - + File is not a valid service. The content encoding is not UTF-8. - Lêer is nie 'n geldige diens nie. + Lêer is nie 'n geldige diens nie. Die inhoud enkodering is nie UTF-8 nie. - + File is not a valid service. Lêer is nie 'n geldige diens nie. - + Missing Display Handler Vermisde Vertoon Hanteerder - + Your item cannot be displayed as there is no handler to display it Die item kan nie vertoon word nie omdat daar nie 'n hanteerder is om dit te vertoon nie - + Your item cannot be displayed as the plugin required to display it is missing or inactive Die item kan nie vertoon word nie omdat die mini-program wat dit moet vertoon vermis of onaktief is - + &Expand all Br&ei alles uit - + Expand all the service items. Brei al die diens items uit. - + &Collapse all Sto&rt alles ineen - + Collapse all the service items. Stort al die diens items ineen. - + Open File Maak Lêer oop - + Moves the selection down the window. Skuif die geselekteerde afwaarts in die venster. - + Move up Skuif op - + Moves the selection up the window. Skuif die geselekteerde opwaarts in die venster. - + Go Live Gaan Regstreeks - + Send the selected item to Live. Stuur die geselekteerde item Regstreeks. - + &Start Time &Begin Tyd - + Show &Preview Wys &Voorskou - + Show &Live Vertoo&n Regstreeks - + Modified Service Redigeer Diens - + The current service has been modified. Would you like to save this service? Die huidige diens was verander. Stoor hierdie diens? @@ -3310,72 +3267,72 @@ Die inhoud enkodering is nie UTF-8 nie. Speel tyd: - + Untitled Service Ongetitelde Diens - + File could not be opened because it is corrupt. Lêer kon nie oopgemaak word nie omdat dit korrup is. - + Empty File Leë Lêer - + This service file does not contain any data. Die diens lêer het geen data inhoud nie. - + Corrupt File Korrupte Lêer - + Load an existing service. Laai 'n bestaande diens. - + Save this service. Stoor die diens. - + Select a theme for the service. Kies 'n tema vir die diens. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Die lêer is óf korrup óf is nie 'n OpenLP 2.0 diens lêer nie. - + Service File Missing Diens Lêer Vermis - + Slide theme Skyfie tema - + Notes Notas - + Edit Redigeer - + Service copy only Slegs diens kopie. @@ -3409,12 +3366,12 @@ Die inhoud enkodering is nie UTF-8 nie. Kortpad - + Duplicate Shortcut Duplikaat Kortpad - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Die kortpad "%s" is alreeds toegeken aan 'n ander aksie, kies asseblief 'n ander kortpad. @@ -3467,77 +3424,77 @@ Die inhoud enkodering is nie UTF-8 nie. OpenLP.SlideController - + Hide Verskuil - + Go To Gaan Na - + Blank Screen Blanko Skerm - + Blank to Theme Blanko na Tema - + Show Desktop Wys Werkskerm - + Previous Service Vorige Diens - + Next Service Volgende Diens - + Escape Item Ontsnap Item - + Move to previous. Skuif terug. - + Move to next. Skuif volgende. - + Play Slides Speel Skyfies - + Delay between slides in seconds. Vertraging tussen skyfies in sekondes. - + Move to live. Skuif na regstreeks. - + Add to Service. Voeg by Diens. - + Edit and reload song preview. Redigeer en herlaai lied voorskou. @@ -3547,7 +3504,7 @@ Die inhoud enkodering is nie UTF-8 nie. Begin media speel. - + Pause audio. Stop oudio. @@ -3562,47 +3519,47 @@ Die inhoud enkodering is nie UTF-8 nie. Stop spelende media. - + Video position. Video posisie. - + Audio Volume. Oudio Volume. - + Go to "Verse" Gaan na "Vers" - + Go to "Chorus" Gaan na "Koor" - + Go to "Bridge" Gaan na "Brug" - + Go to "Pre-Chorus" Gaan na "Pre-Koor" - + Go to "Intro" Gaan na "Inleiding" - + Go to "Ending" Gaan na "Einde" - + Go to "Other" Gaan na "Ander" @@ -3696,27 +3653,27 @@ Die inhoud enkodering is nie UTF-8 nie. OpenLP.ThemeForm - + Select Image Selekteer Beeld - + Theme Name Missing Tema Naam Vermis - + There is no name for this theme. Please enter one. Daar is nie 'n naam vir hierdie tema nie. Voer asseblief een in. - + Theme Name Invalid Tema Naam Ongeldig - + Invalid theme name. Please enter one. Ongeldige tema naam. Voer asseblief een in. @@ -3789,62 +3746,62 @@ Die inhoud enkodering is nie UTF-8 nie. Stel in As &Globale Standaard - + %s (default) %s (standaard) - + You must select a theme to edit. Kies 'n tema om te redigeer. - + You are unable to delete the default theme. Die standaard tema kan nie uitgewis word nie. - + Theme %s is used in the %s plugin. Tema %s is in gebruik deur die %s mini-program. - + You have not selected a theme. Geen tema is geselekteer nie. - + Save Theme - (%s) Stoor Tema - (%s) - + Theme Exported Tema Uitvoer - + Your theme has been successfully exported. Die tema was suksesvol uitgevoer. - + Theme Export Failed Tema Uitvoer het Misluk - + Your theme could not be exported due to an error. Die tema kon nie uitgevoer word nie weens 'n fout. - + Select Theme Import File Kies Tema Invoer Lêer - + File is not a valid theme. Lêer is nie 'n geldige tema nie. @@ -3864,52 +3821,52 @@ Die inhoud enkodering is nie UTF-8 nie. Vo&er Tema uit - + You must select a theme to rename. Kies 'n tema om te hernoem. - + Rename Confirmation Hernoem Bevestiging - + Rename %s theme? Hernoem %s tema? - + You must select a theme to delete. Kies 'n tema om uit te wis. - + Delete Confirmation Uitwis Bevestiging - + Delete %s theme? Wis %s tema uit? - + Validation Error Validerings Fout - + A theme with this name already exists. 'n Tema met hierdie naam bestaan alreeds. - + OpenLP Themes (*.theme *.otz) OpenLP Temas (*.theme *.otz) - + Copy of %s Copy of <theme name> Duplikaat van %s @@ -3918,222 +3875,222 @@ Die inhoud enkodering is nie UTF-8 nie. OpenLP.ThemeWizard - + Theme Wizard Tema Gids - + Welcome to the Theme Wizard Welkom by die Tema Gids - + Set Up Background Stel die Agtergrond Op - + Set up your theme's background according to the parameters below. Stel jou tema se agtergrond op volgens die parameters hier onder. - + Background type: Agtergrond tipe: - + Solid Color Soliede Kleur - + Gradient Gradiënt - + Color: Kleur: - + Gradient: Gradiënt: - + Horizontal Horisontaal - + Vertical Vertikaal - + Circular Sirkelvormig - + Top Left - Bottom Right Links Bo - Regs Onder - + Bottom Left - Top Right Links Onder - Regs Bo - + Main Area Font Details Hoof Area Skrif Gegewens - + Define the font and display characteristics for the Display text Definieër die skrif en vertoon karrakters vir die Vertoon teks - + Font: Skrif: - + Size: Grootte: - + Line Spacing: Lyn Spasiëring: - + &Outline: &Buitelyn: - + &Shadow: &Skaduwee: - + Bold Vetdruk - + Italic Italiaans - + Footer Area Font Details Voetskrif Area Skrif Gegewens - + Define the font and display characteristics for the Footer text Definieër die skrif en vertoon karraktereienskappe vir die Voetskrif teks - + Text Formatting Details Teks Formattering Gegewens - + Allows additional display formatting information to be defined Laat toe dat addisionele vertoon formattering inligting gedifinieër word - + Horizontal Align: Horisontale Sporing: - + Left Links - + Right Regs - + Center Middel - + Output Area Locations Uitvoer Area Liggings - + Allows you to change and move the main and footer areas. Laat toe dat die hoof en voetskrif areas verander en geskuif word. - + &Main Area &Hoof Area - + &Use default location Gebr&uik verstek ligging - + X position: X posisie: - + px px - + Y position: Y posisie: - + Width: Wydte: - + Height: Hoogte: - + Use default location Gebruik verstek ligging - + Save and Preview Stoor en Voorskou - + View the theme and save it replacing the current one or change the name to create a new theme Besigtig die tema en stoor dit waarna die huidige een vervang, of verander die naam om 'n nuwe een te skep - + Theme name: Tema naam: @@ -4143,50 +4100,45 @@ Die inhoud enkodering is nie UTF-8 nie. Redigeer Tema - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Hierdie gids sal help om temas te skep en te redigeer. Klik die volgende knoppie hieronder om die proses te begin deur jou agtergrond op te stel. - + Transitions: Oorskakel effekte: - + &Footer Area &Voetskrif Area - + Starting color: Begin Kleur: - + Ending color: Eind Kleur: - + Background color: Agtergrond kleur: - + Justify Uitsgespan - + Layout Preview Uitleg Voorskou - - - Transparent - - OpenLP.ThemesTab @@ -4581,7 +4533,7 @@ Die inhoud enkodering is nie UTF-8 nie. - © + © Copyright symbol. © @@ -4884,17 +4836,17 @@ Die inhoud enkodering is nie UTF-8 nie. PresentationPlugin.PresentationTab - + Available Controllers Beskikbare Beheerders - + Allow presentation application to be overriden Laat toe dat aanbieding program oorheers word - + %s (unavailable) %s (nie beskikbaar nie) @@ -4928,92 +4880,92 @@ Die inhoud enkodering is nie UTF-8 nie. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Afgelië - + OpenLP 2.0 Stage View OpenLP 2.0 Verhoog Aansig - + Service Manager Diens Bestuurder - + Slide Controller Skyfie Beheerder - + Alerts Waarskuwings - + Search Soek - + Back Terug - + Refresh Verfris - + Blank Blanko - + Show Wys - + Prev Vorige - + Next Volgende - + Text Teks - + Show Alert Wys Waarskuwing - + Go Live Gaan Regstreeks - + No Results Geen Resultate - + Options Opsies - + Add to Service Voeg By Diens @@ -5916,40 +5868,37 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling. SongsPlugin.MediaItem - + Titles Titels - + Lyrics Lirieke - + CCLI License: CCLI Lisensie: - + Entire Song Volledige Lied - + Are you sure you want to delete the %n selected song(s)? - - Wis regtig die %n geselekteerde lied uit? - Wis regtig die %n geselekteerde liedere uit? - + Wis regtig die %n geselekteerde lied uit?Wis regtig die %n geselekteerde liedere uit? - + Maintain the lists of authors, topics and books. Onderhou die lys van skrywers, onderwerpe en boeke. - + copy For song cloning kopieër @@ -6243,4 +6192,4 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Ander - + \ No newline at end of file diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts index a6bcb12d5..2d74c5268 100644 --- a/resources/i18n/cs.ts +++ b/resources/i18n/cs.ts @@ -1038,7 +1038,7 @@ Upozornění: Verše z www Bible budou stáhnuty na vyžádání a proto je vyž CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Jste si jisti, že chcete smazat %n vybraný uživatelský snímek? @@ -1283,7 +1283,7 @@ Chcete přidat ostatní obrázky? - + Unsupported File Nepodporovaný soubor @@ -1301,32 +1301,32 @@ Chcete přidat ostatní obrázky? MediaPlugin.MediaTab - + Available Media Players Dostupné přehrávače médií - + %s (unavailable) %s (nedostupný) - + Player Order Pořadí přehrávače - + Down Dolu - + Up Nahoru - + Allow media player to be overriden Povolit překrytí přehrávače médií @@ -1529,108 +1529,99 @@ OpenLP vytváří a udržují dobrovolníci. Pokud má existovat více volně do - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Autorská práva © 2004-2011 %s +Částečná autorská práva © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Nastavení rozhraní - + Number of recent files to display: Počet zobrazených nedávných souborů: - + Remember active media manager tab on startup Pamatovat si při spuštění aktivní kartu správce médií - + Double-click to send items straight to live Dvojklik zobrazí položku přímo naživo - + Expand new service items on creation Při vytvoření rozbalit nové položky služby - + Enable application exit confirmation Zapnout potvrzování ukončení aplikace - + Mouse Cursor Kurzor myši - + Hide mouse cursor when over display window Skrýt kurzor myši v okně zobrazení - + Default Image Výchozí obrázek - + Background color: Barva pozadí: - + Image file: Soubor s obrázkem: - + Open File Otevřít soubor - + Preview items when clicked in Media Manager Náhled položek při klepnutí ve správci médií - + Advanced Pokročilé - + Click to select a color. Klepnout pro výběr barvy. - + Browse for an image file to display. Procházet pro obrázek k zobrazení. - + Revert to the default OpenLP logo. Vrátit na výchozí OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1859,17 +1850,17 @@ Version: %s Výchozí nastavení - + Downloading %s... Stahuji %s... - + Download complete. Click the finish button to start OpenLP. Stahování dokončeno. Klepnutím na tlačítko konec se spustí aplikace OpenLP. - + Enabling selected plugins... Zapínám vybrané moduly... @@ -1939,22 +1930,22 @@ Version: %s Tento průvodce pomáhá nastavit OpenLP pro první použití. Pro start klepněte níže na tlačítko další. - + Setting Up And Downloading Nastavuji a stahuji - + Please wait while OpenLP is set up and your data is downloaded. Čekejte prosím, než bude aplikace OpenLP nastavena a data stáhnuta. - + Setting Up Nastavuji - + Click the finish button to start OpenLP. Klepnutím na tlačítko konec se spustí aplikace OpenLP. @@ -1964,12 +1955,12 @@ Version: %s Uživatelské snímky - + Download complete. Click the finish button to return to OpenLP. Stahování dokončeno. Klepnutím na tlačítko konec dojde k návratu do aplikace OpenLP. - + Click the finish button to return to OpenLP. Klepnutím na tlačítko konec dojde k návratu do aplikace OpenLP. @@ -2169,170 +2160,140 @@ Zrušit Průvodce prvním spuštění úplně (OpenLP nebude spuštěno), klepn OpenLP.GeneralTab - + General Obecné - + Monitors Monitory - + Select monitor for output display: Vybrat monitor pro výstupní zobrazení: - + Display if a single screen Zobrazení při jedné obrazovce - + Application Startup Spuštění aplikace - + Show blank screen warning Zobrazit varování při prázdné obrazovce - + Automatically open the last service Automaticky otevřít poslední službu - + Show the splash screen Zobrazit úvodní obrazovku - + Application Settings Nastavení aplikace - + Prompt to save before starting a new service Před spuštěním nové služby se ptát na uložení - + Automatically preview next item in service Automatický náhled další položky ve službě - + sec sek - + CCLI Details CCLI podrobnosti - + SongSelect username: SongSelect uživatelské jméno: - + SongSelect password: SongSelect heslo: - + Display Position Umístění zobrazení - + X X - + Y Y - + Height Výška - + Width Šířka - + Override display position Překrýt umístění zobrazení - + Check for updates to OpenLP Kontrola aktualizací aplikace OpenLP - + Unblank display when adding new live item Odkrýt zobrazení při přidání nové položky naživo - + + Enable slide wrap-around + Zapnout přechod z posledního na první snímek + + + Timed slide interval: Časový interval mezi snímky: - + Background Audio Zvuk na pozadí - + Start background audio paused Spustit audio na pozadí pozastavené - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2350,7 +2311,7 @@ Zrušit Průvodce prvním spuštění úplně (OpenLP nebude spuštěno), klepn OpenLP.MainDisplay - + OpenLP Display Zobrazení OpenLP @@ -2870,69 +2831,69 @@ Databáze: %s Nevybraná zádná položka - + &Add to selected Service Item &Přidat k vybrané Položce Služby - + You must select one or more items to preview. Pro náhled je třeba vybrat jednu nebo více položek. - + You must select one or more items to send live. Pro zobrazení naživo je potřeba vybrat jednu nebo více položek. - + You must select one or more items. Je třeba vybrat jednu nebo více položek. - + You must select an existing service item to add to. K přidání Je třeba vybrat existující položku služby. - + Invalid Service Item Neplatná Položka služby - + You must select a %s service item. Je třeba vybrat %s položku služby. - + You must select one or more items to add. Pro přidání Je třeba vybrat jednu nebo více položek. - + No Search Results Žádné výsledky hledání - + &Clone &Klonovat - + Invalid File Type Neplatný typ souboru - + Invalid File %s. Suffix not supported Neplatný soubor %s. Přípona není podporována - + Duplicate files were found on import and were ignored. Při importu byly nalezeny duplicitní soubory a byly ignorovány. @@ -3087,12 +3048,12 @@ Přípona není podporována OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Začátek</strong>: %s - + <strong>Length</strong>: %s <strong>Délka</strong>: %s @@ -3188,34 +3149,34 @@ Přípona není podporována &Změnit motiv položky - + OpenLP Service Files (*.osz) Soubory služby OpenLP (*.osz) - + File is not a valid service. The content encoding is not UTF-8. Soubor není platná služba. Obsah souboru není v kódování UTF-8. - + File is not a valid service. Soubor není platná služba. - + Missing Display Handler Chybějící obsluha zobrazení - + Your item cannot be displayed as there is no handler to display it Položku není možno zobrazit, protože chybí obsluha pro její zobrazení - + Your item cannot be displayed as the plugin required to display it is missing or inactive Položku není možno zobrazit, protože modul potřebný pro zobrazení položky chybí nebo je neaktivní @@ -3295,22 +3256,22 @@ Obsah souboru není v kódování UTF-8. Současná služba byla změněna. Přejete si službu uložit? - + File could not be opened because it is corrupt. Soubor se nepodařilo otevřít, protože je poškozený. - + Empty File Prázdný soubor - + This service file does not contain any data. Tento soubor služby neobsahuje žádná data. - + Corrupt File Poškozený soubor @@ -3350,17 +3311,17 @@ Obsah souboru není v kódování UTF-8. Vybrat motiv pro službu. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Soubor je buďto poškozen nebo se nejedná o soubor se službou z aplikace OpenLP 2.0. - + Slide theme Motiv snímku - + Notes Poznámky @@ -3370,12 +3331,12 @@ Obsah souboru není v kódování UTF-8. Chybějící soubor se službou - + Edit Upravit - + Service copy only Kopírovat jen službu @@ -3467,77 +3428,77 @@ Obsah souboru není v kódování UTF-8. OpenLP.SlideController - + Hide Skrýt - + Go To Přejít na - + Blank Screen Prázdná obrazovka - + Blank to Theme Prázdný motiv - + Show Desktop Zobrazit plochu - + Previous Service Předchozí služba - + Next Service Následující služba - + Escape Item Zrušit položku - + Move to previous. Přesun na předchozí. - + Move to next. Přeson na další. - + Play Slides Přehrát snímky - + Delay between slides in seconds. Zpoždění mezi s nímky v sekundách. - + Move to live. Přesun naživo. - + Add to Service. Přidat ke službě. - + Edit and reload song preview. Upravit a znovu načíst náhled písně. @@ -3547,7 +3508,7 @@ Obsah souboru není v kódování UTF-8. Spustit přehrávání média. - + Pause audio. Pozastavit zvuk. @@ -3572,37 +3533,37 @@ Obsah souboru není v kódování UTF-8. Hlasitost zvuku. - + Go to "Verse" Přejít na "Sloka" - + Go to "Chorus" Přejít na "Refrén" - + Go to "Bridge" Přejít na "Přechod" - + Go to "Pre-Chorus" Přejít na "Předrefrén" - + Go to "Intro" Přejít na "Úvod" - + Go to "Ending" Přejít na "Zakončení" - + Go to "Other" Přejít na "Ostatní" @@ -3696,27 +3657,27 @@ Obsah souboru není v kódování UTF-8. OpenLP.ThemeForm - + Select Image Vybrat obrázek - + Theme Name Missing Chybí název motivu - + There is no name for this theme. Please enter one. Není vyplněn název motivu. Prosím zadejte ho. - + Theme Name Invalid Neplatný název motivu - + Invalid theme name. Please enter one. Neplatný název motivu. Prosím zadejte nový. @@ -3918,222 +3879,222 @@ Obsah souboru není v kódování UTF-8. OpenLP.ThemeWizard - + Theme Wizard Průvodce motivem - + Welcome to the Theme Wizard Vítejte v průvodci motivem - + Set Up Background Nastavení pozadí - + Set up your theme's background according to the parameters below. Podle parametrů níže nastavte pozadí motivu. - + Background type: Typ pozadí: - + Solid Color Plná barva - + Gradient Přechod - + Color: Barva: - + Gradient: Přechod: - + Horizontal Vodorovný - + Vertical Svislý - + Circular Kruhový - + Top Left - Bottom Right Vlevo nahoře - vpravo dole - + Bottom Left - Top Right Vlevo dole - vpravo nahoře - + Main Area Font Details Podrobnosti písma hlavní oblasti - + Define the font and display characteristics for the Display text Definovat písmo a charakteristiku zobrazení pro zobrazený text - + Font: Písmo: - + Size: Velikost: - + Line Spacing: Řádkování: - + &Outline: &Obrys: - + &Shadow: &Stín: - + Bold Tučné - + Italic Kurzíva - + Footer Area Font Details Podrobnosti písma oblasti zápatí - + Define the font and display characteristics for the Footer text Definovat písmo a charakteristiku zobrazení pro text zápatí - + Text Formatting Details Podrobnosti formátování textu - + Allows additional display formatting information to be defined Dovoluje definovat další formátovací informace zobrazení - + Horizontal Align: Vodorovné zarovnání: - + Left Vlevo - + Right Vpravo - + Center Na střed - + Output Area Locations Umístění výstupní oblasti - + Allows you to change and move the main and footer areas. Dovoluje změnit a přesunout hlavní oblast a oblast zápatí. - + &Main Area &Hlavní oblast - + &Use default location &Použít výchozí umístění - + X position: Pozice X: - + px px - + Y position: Pozice Y: - + Width: Šířka: - + Height: Výška: - + Use default location Použít výchozí umístění - + Save and Preview Uložit a náhled - + View the theme and save it replacing the current one or change the name to create a new theme Zobrazit motiv a uložit ho, dojde k přepsání současného nebo změňte název, aby se vytvořil nový motiv - + Theme name: Název motivu: @@ -4143,50 +4104,45 @@ Obsah souboru není v kódování UTF-8. Upravit motiv - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Tento průvodce pomáhá s vytvořením a úpravou vašich motivu. Klepněte níže na tlačítko další pro spuštění procesu nastavení vašeho pozadí. - + Transitions: Přechody: - + &Footer Area Oblast &zápatí - + Starting color: Barva začátku: - + Ending color: Barva konce: - + Background color: Barva pozadí: - + Justify Do bloku - + Layout Preview Náhled rozvržení - - - Transparent - - OpenLP.ThemesTab @@ -4884,17 +4840,17 @@ Obsah souboru není v kódování UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Dostupné ovládání - + Allow presentation application to be overriden Povolit překrytí prezentační aplikace - + %s (unavailable) %s (nedostupný) @@ -4928,92 +4884,92 @@ Obsah souboru není v kódování UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Dálkové ovládání - + OpenLP 2.0 Stage View OpenLP 2.0 Zobrazení na pódiu - + Service Manager Správce služby - + Slide Controller Ovládání snímku - + Alerts Upozornění - + Search Hledat - + Back Zpět - + Refresh Obnovit - + Blank Prázdný - + Show Zobrazit - + Prev Předchozí - + Next Další - + Text Text - + Show Alert Zobrazit upozornění - + Go Live Zobrazit naživo - + Add to Service Přidat ke službě - + No Results Žádné hledání - + Options Možnosti @@ -5915,27 +5871,27 @@ Kódování zodpovídá za správnou reprezentaci znaků. SongsPlugin.MediaItem - + Titles Názvy - + Lyrics Text písně - + CCLI License: CCLI Licence: - + Entire Song Celá píseň - + Are you sure you want to delete the %n selected song(s)? Jste si jisti, že chcete smazat %n vybranou píseň? @@ -5944,12 +5900,12 @@ Kódování zodpovídá za správnou reprezentaci znaků. - + Maintain the lists of authors, topics and books. Spravovat seznamy autorů, témat a zpěvníků. - + copy For song cloning kopírovat diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts index d24c99a64..9e7c46b6b 100644 --- a/resources/i18n/de.ts +++ b/resources/i18n/de.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -102,7 +101,7 @@ Möchten Sie trotzdem fortfahren? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? Der Hinweistext enthält nicht <>. Möchten Sie trotzdem fortfahren? @@ -412,38 +411,38 @@ Changes do not affect verses already in the service. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Registriere Bibel und lade Bücher... - + Registering Language... Registriere Sprache... - + Importing %s... Importing <book name>... Importiere »%s«... - + Download Error Download Fehler - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. Beim Herunterladen des Bibeltextes ist ein Fehler aufgetreten. Bitte überprüfen Sie Ihre Internetverbindung. Sollte dieser Fehler dennoch auftreten, so wenden Sie sich bitte an den OpenLP Support. - + Parse Error Formatfehler - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Beim Auslesen des Bibeltextes ist ein Fehler aufgetreten. Sollte dieser Fehler wiederholt auftreten, so wenden Sie sich bitte an den OpenLP Support. @@ -1041,12 +1040,9 @@ Bitte beachten Sie, dass Bibeltexte von Onlinebibeln bei Bedarf heruntergeladen CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - Sind Sie sicher, dass die %n Sonderfolie gelöscht werden soll? - Sind Sie sicher, dass die %n Sonderfolien gelöscht werden sollen? - + Sind Sie sicher, dass die %n Sonderfolie gelöscht werden soll?Sind Sie sicher, dass die %n Sonderfolien gelöscht werden sollen? @@ -1113,7 +1109,7 @@ Bitte beachten Sie, dass Bibeltexte von Onlinebibeln bei Bedarf heruntergeladen ImagePlugin.ExceptionDialog - + Select Attachment Anhang auswählen @@ -1184,60 +1180,60 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Erweiterung Medien</strong><br />Die Erweiterung Medien ermöglicht es Audio- und Videodateien abzuspielen. - + Media name singular Medien - + Media name plural Medien - + Media container title Medien - + Load new media. Lade eine neue Audio-/Videodatei. - + Add new media. Füge eine neue Audio-/Videodatei hinzu. - + Edit the selected media. Bearbeite die ausgewählte Audio-/Videodatei. - + Delete the selected media. Lösche die ausgewählte Audio-/Videodatei. - + Preview the selected media. Zeige die ausgewählte Audio-/Videodatei in der Vorschau. - + Send the selected media live. Zeige die ausgewählte Audio-/Videodatei Live. - + Add the selected media to the service. Füge die ausgewählte Audio-/Videodatei zum Ablauf hinzu. @@ -1285,7 +1281,7 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen? Es waren keine Änderungen nötig. - + Unsupported File Nicht unterstütztes Dateiformat @@ -1303,32 +1299,32 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen? MediaPlugin.MediaTab - + Available Media Players Verfügbare Medien Player - + %s (unavailable) %s (nicht verfügbar) - + Player Order Player Reihenfolge - + Down Runter - + Up Hoch - + Allow media player to be overriden Medien Player kann ersetzt werden @@ -1358,17 +1354,17 @@ Möchten Sie dies jetzt tun? OpenLP.AboutForm - + Credits Danksagungen - + License Lizenz - + Contribute Mitmachen @@ -1378,17 +1374,17 @@ Möchten Sie dies jetzt tun? build %s - + 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. - + 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. - + Project Lead %s @@ -1421,7 +1417,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1533,110 +1529,101 @@ Erkunden Sie OpenLP: http://openlp.org/ OpenLP wird von freiwilligen Helfern programmiert und gewartet. Wenn Sie sich mehr freie christliche Programme wünschen, ermutigen wir Sie, sich doch sich zu beteiligen und den Knopf weiter unten nutzen. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Anteiliges Copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Benutzeroberfläche - + Number of recent files to display: Anzahl zuletzt geöffneter Abläufe: - + Remember active media manager tab on startup Erinnere aktiven Reiter der Medienverwaltung - + Double-click to send items straight to live Objekte bei Doppelklick live anzeigen - + Expand new service items on creation Neue Ablaufelemente bei ausklappen - + Enable application exit confirmation Aktiviere Bestätigung beim Schließen - + Mouse Cursor Mauszeiger - + Hide mouse cursor when over display window Verstecke den Mauszeiger auf dem Bildschrim - + Default Image Standardbild - + Background color: Hintergrundfarbe: - + Image file: Bild-Datei: - + Open File Datei öffnen - + Advanced Erweitert - + Preview items when clicked in Media Manager Elemente in der Vorschau zeigen, wenn sie in der Medienverwaltung angklickt werden - + Click to select a color. Klicken Sie, um eine Farbe aus zu wählen. - + Browse for an image file to display. Wählen Sie die Bild-Datei aus, die angezeigt werden soll. - + Revert to the default OpenLP logo. Standard-Logo wiederherstellen. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1674,7 +1661,7 @@ dieser Fehler auftrat. Bitte verwenden Sie (wenn möglich) Englisch.Datei einhängen - + Description characters to enter : %s Mindestens noch %s Zeichen eingeben @@ -1682,24 +1669,24 @@ dieser Fehler auftrat. Bitte verwenden Sie (wenn möglich) Englisch. OpenLP.ExceptionForm - + Platform: %s Plattform: %s - + Save Crash Report Fehlerprotokoll speichern - + Text files (*.txt *.log *.text) Textdateien (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1730,7 +1717,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1866,17 +1853,17 @@ Version: %s Standardeinstellungen - + Downloading %s... %s wird heruntergeladen... - + Download complete. Click the finish button to start OpenLP. Download vollständig. Klicken Sie »Abschließen« um OpenLP zu starten. - + Enabling selected plugins... Aktiviere ausgewählte Erweiterungen... @@ -1946,32 +1933,32 @@ Version: %s Dieser Assistent wird Ihnen helfen OpenLP für die erste Benutzung zu konfigurieren. Klicken sie »Weiter« um den Assistenten zu starten. - + Setting Up And Downloading Konfiguriere und Herunterladen - + Please wait while OpenLP is set up and your data is downloaded. Bitte warten Sie, während OpenLP eingerichtet wird und die Daten heruntergeladen werden. - + Setting Up Konfiguriere - + Click the finish button to start OpenLP. Klicken Sie »Abschließen« um OpenLP zu starten. - + Download complete. Click the finish button to return to OpenLP. Download vollständig. Klicken Sie »Abschließen« um zurück zu OpenLP zu gelangen. - + Click the finish button to return to OpenLP. Klicken Sie »Abschließen« um zu OpenLP zurück zu gelangen. @@ -2176,170 +2163,140 @@ Um den Einrichtungsassistenten zu unterbrechen (und OpenLP nicht zu starten), bi OpenLP.GeneralTab - + General Allgemein - + Monitors Bildschirme - + Select monitor for output display: Projektionsbildschirm: - + Display if a single screen Anzeige bei nur einem Bildschirm - + Application Startup Programmstart - + Show blank screen warning Warnung wenn Projektion deaktiviert wurde - + Automatically open the last service Zuletzt benutzten Ablauf beim Start laden - + Show the splash screen Zeige den Startbildschirm - + Application Settings Anwendungseinstellungen - + Prompt to save before starting a new service Geänderte Abläufe nicht ungefragt ersetzen - + Automatically preview next item in service Vorschau des nächsten Ablaufelements - + sec sek - + CCLI Details CCLI-Details - + SongSelect username: SongSelect-Benutzername: - + SongSelect password: SongSelect-Passwort: - + Display Position Anzeigeposition - + X X - + Y Y - + Height Höhe - + Width Breite - + Override display position Anzeigeposition überschreiben - + Check for updates to OpenLP Prüfe nach Aktualisierungen - + Unblank display when adding new live item Neues Element hellt Anzeige automatisch auf - + + Enable slide wrap-around + Nach letzter Folie wieder die Erste anzeigen + + + Timed slide interval: Automatischer Folienwechsel: - + Background Audio Hintergrundmusik - + Start background audio paused Starte Hintergrundmusik pausiert - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2357,7 +2314,7 @@ Um den Einrichtungsassistenten zu unterbrechen (und OpenLP nicht zu starten), bi OpenLP.MainDisplay - + OpenLP Display OpenLP-Anzeige @@ -2877,69 +2834,69 @@ Datenbank: %s Keine Elemente ausgewählt. - + &Add to selected Service Item Zum &gewählten Ablaufelement hinzufügen - + You must select one or more items to preview. Zur Vorschau muss mindestens ein Elemente auswählt sein. - + You must select one or more items to send live. Zur Live Anzeige muss mindestens ein Element ausgewählt sein. - + You must select one or more items. Es muss mindestens ein Element ausgewählt sein. - + You must select an existing service item to add to. Sie müssen ein vorhandenes Ablaufelement auswählen. - + Invalid Service Item Ungültiges Ablaufelement - + You must select a %s service item. Sie müssen ein %s-Element im Ablaufs wählen. - + You must select one or more items to add. Sie müssen ein oder mehrer Element auswählen. - + No Search Results Kein Suchergebnis - + Invalid File Type Ungültige Dateiendung - + Invalid File %s. Suffix not supported Ungültige Datei %s. Dateiendung nicht unterstützt. - + &Clone &Klonen - + Duplicate files were found on import and were ignored. Duplikate wurden beim Importieren gefunden und wurden ignoriert. @@ -3094,12 +3051,12 @@ Dateiendung nicht unterstützt. OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Anfang</strong>: %s - + <strong>Length</strong>: %s <strong>Spiellänge</strong>: %s @@ -3115,189 +3072,189 @@ Dateiendung nicht unterstützt. OpenLP.ServiceManager - + Move to &top Zum &Anfang schieben - + Move item to the top of the service. Das ausgewählte Element an den Anfang des Ablaufs verschieben. - + Move &up Nach &oben schieben - + Move item up one position in the service. Das ausgewählte Element um eine Position im Ablauf nach oben verschieben. - + Move &down Nach &unten schieben - + Move item down one position in the service. Das ausgewählte Element um eine Position im Ablauf nach unten verschieben. - + Move to &bottom Zum &Ende schieben - + Move item to the end of the service. Das ausgewählte Element an das Ende des Ablaufs verschieben. - + &Delete From Service Vom Ablauf &löschen - + Delete the selected item from the service. Das ausgewählte Element aus dem Ablaufs entfernen. - + &Add New Item &Neues Element hinzufügen - + &Add to Selected Item &Zum gewählten Element hinzufügen - + &Edit Item Element &bearbeiten - + &Reorder Item &Aufnahmeelement - + &Notes &Notizen - + &Change Item Theme &Design des Elements ändern - + OpenLP Service Files (*.osz) OpenLP Ablaufdateien (*.osz) - + File is not a valid service. The content encoding is not UTF-8. Die gewählte Datei ist keine gültige OpenLP Ablaufdatei. Der Inhalt ist nicht in UTF-8 kodiert. - + File is not a valid service. Die Datei ist keine gültige OpenLP Ablaufdatei. - + Missing Display Handler Fehlende Anzeigesteuerung - + Your item cannot be displayed as there is no handler to display it Dieses Element kann nicht angezeigt werden, da es keine Steuerung dafür gibt. - + Your item cannot be displayed as the plugin required to display it is missing or inactive Dieses Element kann nicht angezeigt werden, da die zugehörige Erweiterung fehlt oder inaktiv ist. - + &Expand all Alle au&sklappen - + Expand all the service items. Alle Ablaufelemente ausklappen. - + &Collapse all Alle ei&nklappen - + Collapse all the service items. Alle Ablaufelemente einklappen. - + Open File Ablauf öffnen - + Moves the selection down the window. Ausgewähltes nach unten schieben - + Move up Nach oben - + Moves the selection up the window. Ausgewähltes nach oben schieben - + Go Live Live - + Send the selected item to Live. Zeige das ausgewählte Element Live. - + &Start Time &Startzeit - + Show &Preview &Vorschau - + Show &Live &Live - + Modified Service Modifizierter Ablauf - + The current service has been modified. Would you like to save this service? Der momentane Ablauf wurde modifiziert. Möchten Sie ihn speichern? @@ -3317,72 +3274,72 @@ Der Inhalt ist nicht in UTF-8 kodiert. Spiellänge: - + Untitled Service Unbenannt - + File could not be opened because it is corrupt. Datei konnte nicht geöffnet werden, da sie fehlerhaft ist. - + Empty File Leere Datei - + This service file does not contain any data. Diese Datei enthält keine Daten. - + Corrupt File Dehlerhaft Datei - + Load an existing service. Einen bestehenden Ablauf öffnen. - + Save this service. Den aktuellen Ablauf speichern. - + Select a theme for the service. Design für den Ablauf auswählen. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Entweder ist die Datei fehlerhaft oder sie ist keine OpenLP 2.0 Ablauf-Datei. - + Service File Missing Ablaufdatei fehlt - + Slide theme Element-Design - + Notes Notizen - + Edit Bearbeiten - + Service copy only Ablaufkopie (nicht in der Datenbank) @@ -3416,12 +3373,12 @@ Der Inhalt ist nicht in UTF-8 kodiert. Tastenkürzel - + Duplicate Shortcut Belegtes Tastenkürzel - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Das Tastenkürzel »%s« ist bereits einer anderen Aktion zugeordnet. Bitte wählen Sie ein anderes Tastenkürzel. @@ -3474,77 +3431,77 @@ Der Inhalt ist nicht in UTF-8 kodiert. OpenLP.SlideController - + Hide Verbergen - + Go To Gehe zu - + Blank Screen Anzeige abdunkeln - + Blank to Theme Design leeren - + Show Desktop Desktop anzeigen - + Previous Service Vorheriges Element - + Next Service Nächstes Element - + Escape Item Folie schließen - + Move to previous. Vorherige Folie anzeigen. - + Move to next. Vorherige Folie anzeigen. - + Play Slides Schleife - + Delay between slides in seconds. Pause zwischen den Folien in Sekunden. - + Move to live. Zur Live Ansicht verschieben. - + Add to Service. Füge zum Ablauf hinzu. - + Edit and reload song preview. Bearbeiten und Vorschau aktualisieren. @@ -3554,7 +3511,7 @@ Der Inhalt ist nicht in UTF-8 kodiert. Beginne Wiedergabe. - + Pause audio. Pausiere Musik. @@ -3569,47 +3526,47 @@ Der Inhalt ist nicht in UTF-8 kodiert. Beende Wiedergabe. - + Video position. Videoposition - + Audio Volume. Lautstärke - + Go to "Verse" Gehe zu »Strophe« - + Go to "Chorus" Gehe zu »Refrain« - + Go to "Bridge" Gehe zu »Bridge« - + Go to "Pre-Chorus" Gehe zu »Überleitung« - + Go to "Intro" Gehe zu »Einleitung« - + Go to "Ending" Gehe zu »Ende« - + Go to "Other" Gehe zu »Anderes« @@ -3703,27 +3660,27 @@ Der Inhalt ist nicht in UTF-8 kodiert. OpenLP.ThemeForm - + Select Image Bild auswählen - + Theme Name Missing Designname fehlt - + There is no name for this theme. Please enter one. Es wurde kein Designname angegeben. Bitte benennen Sie das Design. - + Theme Name Invalid Designname ungültig - + Invalid theme name. Please enter one. Der Designname ist ungültig. Bitte ändern Sie diesen. @@ -3796,62 +3753,62 @@ Der Inhalt ist nicht in UTF-8 kodiert. Als &globalen Standard setzen - + %s (default) %s (Standard) - + You must select a theme to edit. Zum Bearbeiten muss ein Design ausgewählt sein. - + You are unable to delete the default theme. Es ist nicht möglich das Standarddesign zu entfernen. - + Theme %s is used in the %s plugin. Das Design »%s« wird in der »%s« Erweiterung benutzt. - + You have not selected a theme. Es ist kein Design ausgewählt. - + Save Theme - (%s) Speicherort für »%s« - + Theme Exported Design exportiert - + Your theme has been successfully exported. Das Design wurde erfolgreich exportiert. - + Theme Export Failed Designexport fehlgeschlagen - + Your theme could not be exported due to an error. Dieses Design konnte aufgrund eines Fehlers nicht exportiert werden. - + Select Theme Import File OpenLP Designdatei importieren - + File is not a valid theme. Diese Datei ist keine gültige OpenLP Designdatei. @@ -3871,52 +3828,52 @@ Der Inhalt ist nicht in UTF-8 kodiert. Design &exportieren - + You must select a theme to rename. Es ist kein Design zur Umbenennung ausgewählt. - + Rename Confirmation Umbenennung bestätigen - + Rename %s theme? Soll das Design »%s« wirklich umbenennt werden? - + You must select a theme to delete. Es ist kein Design zum Löschen ausgewählt. - + Delete Confirmation Löschbestätigung - + Delete %s theme? Soll das Design »%s« wirklich gelöscht werden? - + Validation Error Validierungsfehler - + A theme with this name already exists. Ein Design mit diesem Namen existiert bereits. - + OpenLP Themes (*.theme *.otz) OpenLP Designs (*.theme *.otz) - + Copy of %s Copy of <theme name> Kopie von %s @@ -3925,222 +3882,222 @@ Der Inhalt ist nicht in UTF-8 kodiert. OpenLP.ThemeWizard - + Theme Wizard Designassistent - + Welcome to the Theme Wizard Willkommen beim Designassistenten - + Set Up Background Hintergrund einrichten - + Set up your theme's background according to the parameters below. Der Designhintergrund wird anhand der Parameter unten eingerichtet. - + Background type: Hintergrundart: - + Solid Color Füllfarbe - + Gradient Farbverlauf - + Color: Farbe: - + Gradient: Verlauf: - + Horizontal horizontal - + Vertical vertikal - + Circular radial - + Top Left - Bottom Right diagonal abwärts - + Bottom Left - Top Right diagonal aufwärts - + Main Area Font Details Schriftschnitt und -farbe - + Define the font and display characteristics for the Display text Die Schrift und die Anzeigeeigenschaften für die Hauptanzeigefläche einrichten - + Font: Schriftart: - + Size: Schriftgröße: - + Line Spacing: Zeilenabstand: - + &Outline: &Umrandung: - + &Shadow: S&chatten: - + Bold Fett - + Italic Kursiv - + Footer Area Font Details Fußzeile einrichten - + Define the font and display characteristics for the Footer text Die Schrift und die Anzeigeeigenschaften für die Fußzeile einrichten - + Text Formatting Details Weitere Formatierung - + Allows additional display formatting information to be defined Hier können zusätzliche Anzeigeeigenschaften eingerichtet werden. - + Horizontal Align: Horizontale Ausrichtung: - + Left links - + Right rechts - + Center zentriert - + Output Area Locations Anzeigeflächen - + Allows you to change and move the main and footer areas. Hier ist es möglich Hauptanzeigefläche und die Fußzeile zu verschieben. - + &Main Area &Hauptanzeigefläche - + &Use default location &Automatisch positionieren - + X position: Von links: - + px px - + Y position: Von oben: - + Width: Breite: - + Height: Höhe: - + Use default location Automatisch positionieren - + Save and Preview Vorschau und Speichern - + View the theme and save it replacing the current one or change the name to create a new theme Eine Vorschau anzeigen und das Design abspeichern - + Theme name: Designname: @@ -4150,50 +4107,45 @@ Der Inhalt ist nicht in UTF-8 kodiert. Bearbeite Design - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Dieser Assistent hilft Ihnen Designs zu erstellen oder zu bearbeiten. Klicken Sie auf »Weiter« um den Hintergrund einzurichten. - + Transitions: Übergänge: - + &Footer Area &Fußzeile - + Starting color: Startfarbe: - + Ending color: Endfarbe - + Background color: Hintergrundfarbe: - + Justify bündig - + Layout Preview Layout-Vorschau - - - Transparent - - OpenLP.ThemesTab @@ -4588,7 +4540,7 @@ Der Inhalt ist nicht in UTF-8 kodiert. - © + © Copyright symbol. © @@ -4891,17 +4843,17 @@ Der Inhalt ist nicht in UTF-8 kodiert. PresentationPlugin.PresentationTab - + Available Controllers Verwendete Präsentationsprogramme - + Allow presentation application to be overriden Präsentationsprogramm kann ersetzt werden - + %s (unavailable) %s (nicht verfügbar) @@ -4935,92 +4887,92 @@ Der Inhalt ist nicht in UTF-8 kodiert. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Fernsteuerung - + OpenLP 2.0 Stage View OpenLP 2.0 Bühnenmonitor - + Service Manager Ablaufverwaltung - + Slide Controller Live-Ansicht - + Alerts Hinweise - + Search Suchen - + Back Zurück - + Refresh Aktualisieren - + Blank Schwarz - + Show Zeigen - + Prev Vorh. - + Next Nächste - + Text Text - + Show Alert Hinweis zeigen - + Go Live Live - + No Results Kein Suchergebnis - + Options Optionen - + Add to Service Zum Ablauf hinzufügen @@ -5923,40 +5875,37 @@ Easy Worship] SongsPlugin.MediaItem - + Titles Titel - + Lyrics Liedtext - + CCLI License: CCLI-Lizenz: - + Entire Song Ganzes Lied - + Are you sure you want to delete the %n selected song(s)? - - Sind Sie sicher, dass das %n Lied gelöscht werden soll? - Sind Sie sicher, dass die %n Lieder gelöscht werden sollen? - + Sind Sie sicher, dass das %n Lied gelöscht werden soll?Sind Sie sicher, dass die %n Lieder gelöscht werden sollen? - + Maintain the lists of authors, topics and books. Autoren, Themen und Bücher verwalten. - + copy For song cloning Kopie @@ -6250,4 +6199,4 @@ Easy Worship] Anderes - + \ No newline at end of file diff --git a/resources/i18n/el.ts b/resources/i18n/el.ts index beeedbddc..51878cb6a 100644 --- a/resources/i18n/el.ts +++ b/resources/i18n/el.ts @@ -1040,7 +1040,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Είσαι σίγουρος ότι θες να διαγράψεις την %n επιλεγμένη εξατομικευμένη διαφάνεια; @@ -1284,7 +1284,7 @@ Do you want to add the other images anyway? Δεν υπήρξε αντικείμενο προς προβολή για διόρθωση. - + Unsupported File Μη Υποστηριζόμενο Αρχείο @@ -1302,32 +1302,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) %s (μη διαθέσιμο) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1530,108 +1530,99 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Πνευματικά Δικαιώματα © 2004-2011 %s +Τμηματικά Πνευματικά Δικαιώματα © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Επιλογές Διεπαφής - + Number of recent files to display: Αριθμός πρόσφατων αρχείων προς απεικόνιση: - + Remember active media manager tab on startup Θυμήσου την καρτέλα του ενεργού διαχειριστή πολυμέσων κατά την εκκίνηση - + Double-click to send items straight to live Προβολή αντικειμένου άμεσα με διπλό κλικ - + Expand new service items on creation Ανάπτυξη νέων αντικειμένων λειτουργίας κατά την δημιουργία - + Enable application exit confirmation Ενεργοποίηση επιβεβαίωσης κατά την έξοδο - + Mouse Cursor Δείκτης Ποντικιού - + Hide mouse cursor when over display window Απόκρυψη δείκτη ποντικιού από το παράθυρο προβολής - + Default Image Προκαθορισμένη Εικόνα - + Background color: Χρώμα φόντου: - + Image file: Αρχείο εικόνας: - + Open File Άνοιγμα Αρχείου - + Advanced Για προχωρημένους - + Preview items when clicked in Media Manager Προεπισκόπηση αντικειμένων κατά το κλικ στον Διαχειριστή Πολυμέσων - + Click to select a color. Κάντε κλικ για επιλογή χρώματος. - + Browse for an image file to display. Αναζήτηση για αρχείο εικόνας προς προβολή. - + Revert to the default OpenLP logo. Επαναφορά στο προκαθορισμένο λογότυπο του OpenLP. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1861,17 +1852,17 @@ Version: %s Προκαθορισμένες Ρυθμίσεις - + Downloading %s... Λήψη %s... - + Download complete. Click the finish button to start OpenLP. Η λήψη ολοκληρώθηκε. Κάντε κλικ στο κουμπί τερματισμού για να ξεκινήσετε το OpenLP. - + Enabling selected plugins... Ενεργοποίηση των επιλεγμένων Πρόσθετων... @@ -1941,32 +1932,32 @@ Version: %s Αυτός ο οδηγός θα σας βοηθήσει να διαμορφώσετε το OpenLP για αρχική χρήση. Κάντε κλικ στο πλήκτρο Επόμενο παρακάτω για να ξεκινήσετε. - + Setting Up And Downloading Διαμόρφωση Και Λήψη - + Please wait while OpenLP is set up and your data is downloaded. Περιμένετε όσο το OpenLP διαμορφώνεται και γίνεται λήψη των δεδομένων σας. - + Setting Up Διαμόρφωση - + Click the finish button to start OpenLP. Κάντε κλικ στο πλήκτρο τερματισμού για να ξεκινήσετε το OpenLP. - + Download complete. Click the finish button to return to OpenLP. Λήψη ολοκληρώθηκε. Κάντε κλικ στο πλήκτρο τερματισμού για να γυρίσετε στο OpenLP. - + Click the finish button to return to OpenLP. Κάντε κλικ στο πλήκτρο τερματισμού για να γυρίσετε στο OpenLP. @@ -2171,170 +2162,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General Γενικά - + Monitors Οθόνες - + Select monitor for output display: Επιλογή οθόνης για προβολή: - + Display if a single screen Εμφάνιση αν υπάρχει μόνο μια οθόνη - + Application Startup Έναρξη Εφαρμογής - + Show blank screen warning Εμφάνιση ειδοποίησης κενής οθόνης - + Automatically open the last service Αυτόματο άνοιγμα της τελευταίας λειτουργίας - + Show the splash screen Εμφάνιση της οθόνης καλωσορίσματος - + Application Settings Ρυθμίσεις Εφαρμογής - + Prompt to save before starting a new service Ερώτηση για αποθήκευση πριν την έναρξη νέας λειτουργίας - + Automatically preview next item in service Αυτόματη προεπισκόπηση του επόμενου αντικειμένου στην λειτουργία - + sec δευτ - + CCLI Details Πληροφορίες CCLI - + SongSelect username: Όνομα χρήστη SongSelect: - + SongSelect password: Κωδικός SongSelect: - + Display Position Θέση Προβολής - + X X - + Y Y - + Height Ύψος - + Width Πλάτος - + Override display position Αγνόηση θέσης εμφάνισης - + Check for updates to OpenLP Έλεγχος για ενημερώσεις του OpenLP - + Unblank display when adding new live item Απευθείας προβολή όταν προστίθεται νέο αντικείμενο - + + Enable slide wrap-around + Αναδίπλωση διαφάνειας ενεργή + + + Timed slide interval: Χρονικό διάστημα διαφάνειας: - + Background Audio Ήχος Υπόβαθρου - + Start background audio paused Εκκίνηση του ήχου υπόβαθρου σε παύση - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2352,7 +2313,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display Προβολή του OpenLP @@ -2872,69 +2833,69 @@ Database: %s Δεν Επιλέχθηκαν Αντικείμενα - + &Add to selected Service Item &Προσθήκη στο επιλεγμένο Αντικείμενο Λειτουργίας - + You must select one or more items to preview. Πρέπει να επιλέξετε ένα ή περισσότερα αντικείμενα για προεπισκόπηση. - + You must select one or more items to send live. Πρέπει να επιλέξετε ένα ή περισσότερα αντικείμενα για προβολή. - + You must select one or more items. Πρέπει να επιλέξετε ένα ή περισσότερα αντικείμενα. - + You must select an existing service item to add to. Πρέπει να επιλέξετε ένα υπάρχον αντικείμενο λειτουργίας στο οποίο να προσθέσετε. - + Invalid Service Item Ακατάλληλο Αντικείμενο Λειτουργίας - + You must select a %s service item. Πρέπει να επιλέξετε ένα %s αντικείμενο λειτουργίας. - + You must select one or more items to add. Πρέπει να επιλέξετε ένα ή περισσότερα αντικείμενα για προσθήκη. - + No Search Results Κανένα Αποτέλεσμα Αναζήτησης - + Invalid File Type Ακατάλληλος Τύπος Αρχείου - + Invalid File %s. Suffix not supported Ακατάλληλο Αρχείο %s. Μη υποστηριζόμενη κατάληξη - + &Clone &Αντιγραφή - + Duplicate files were found on import and were ignored. Κατά την εισαγωγή των αρχείων βρέθηκαν διπλά αρχεία που αγνοήθηκαν. @@ -3089,12 +3050,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Έναρξη</strong>: %s - + <strong>Length</strong>: %s <strong>Διάρκεια</strong>: %s @@ -3190,34 +3151,34 @@ Suffix not supported &Αλλαγή Θέματος Αντικειμένου - + OpenLP Service Files (*.osz) Αρχεία Λειτουργίας του OpenLP (*.osz) - + File is not a valid service. The content encoding is not UTF-8. Το αρχείο δεν αποτελεί κατάλληλη λειτουργία. Η κωδικοποίηση του περιεχομένου δεν είναι UTF-8. - + File is not a valid service. Το αρχείο δεν είναι αρχείο κατάλληλης λειτουργίας. - + Missing Display Handler Απουσία Διαχειριστή Προβολής - + Your item cannot be displayed as there is no handler to display it Το αντικείμενό σας δεν μπορεί να προβληθεί αφού δεν υπάρχει διαχειριστής για να το προβάλλει - + Your item cannot be displayed as the plugin required to display it is missing or inactive Το αντικείμενό σας δεν μπορεί να προβληθεί αφού το πρόσθετο που απαιτείται για την προβολή απουσιάζει ή είναι ανενεργό @@ -3317,22 +3278,22 @@ The content encoding is not UTF-8. Ανώνυμη Λειτουργία - + File could not be opened because it is corrupt. Το αρχείο δεν ανοίχθηκε επειδή είναι φθαρμένο. - + Empty File Κενό Αρχείο - + This service file does not contain any data. Ετούτο το αρχείο λειτουργίας δεν περιέχει δεδομένα. - + Corrupt File Φθαρμένο Αρχείο @@ -3352,7 +3313,7 @@ The content encoding is not UTF-8. Επιλέξτε ένα θέμα για την λειτουργία. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Αυτό το αρχείο είναι είτε φθαρμένο είτε δεν είναι αρχείο λειτουργίας του OpenLP 2.0. @@ -3362,22 +3323,22 @@ The content encoding is not UTF-8. Απουσία Αρχείου Λειτουργίας - + Slide theme Θέμα διαφάνειας - + Notes Σημειώσεις - + Edit - + Service copy only @@ -3469,77 +3430,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide Απόκρυψη - + Go To Μετάβαση - + Blank Screen Κενή Οθόνη - + Blank to Theme Προβολή Θέματος - + Show Desktop Εμφάνιση Επιφάνειας Εργασίας - + Previous Service Προηγούμενη Λειτουργία - + Next Service Επόμενη Λειτουργία - + Escape Item Αποφυγή Αντικειμένου - + Move to previous. Μετακίνηση στο προηγούμενο. - + Move to next. Μετακίνηση στο επόμενο. - + Play Slides Αναπαραγωγή Διαφανειών - + Delay between slides in seconds. Καθυστέρηση μεταξύ διαφανειών σε δευτερόλεπτα. - + Move to live. Μεταφορά σε προβολή. - + Add to Service. Προσθήκη στην Λειτουργία. - + Edit and reload song preview. Επεξεργασία και επαναφόρτωση προεπισκόπισης ύμνου. @@ -3549,7 +3510,7 @@ The content encoding is not UTF-8. Έναρξη αναπαραγωγής πολυμέσων. - + Pause audio. Παύση ήχου. @@ -3574,37 +3535,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3698,27 +3659,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image Επιλογή Εικόνας - + Theme Name Missing Ονομασία Θέματος Απουσιάζει - + There is no name for this theme. Please enter one. Δεν υπάρχει ονομασία για αυτό το θέμα. Εισάγετε ένα όνομα. - + Theme Name Invalid Ακατάλληλο Όνομα Θέματος - + Invalid theme name. Please enter one. Ακατάλληλο όνομα θέματος. Εισάγετε ένα όνομα. @@ -3920,222 +3881,222 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard Οδηγός Θεμάτων - + Welcome to the Theme Wizard Καλωσορίσατε στον Οδηγό Θεμάτων - + Set Up Background Καθορισμός Φόντου - + Set up your theme's background according to the parameters below. Καθορίστε το φόντο του θέματός σας σύμφωνα με τις παρακάτω παραμέτρους. - + Background type: Τύπος φόντου: - + Solid Color Συμπαγές Χρώμα - + Gradient Διαβάθμιση - + Color: Χρώμα: - + Gradient: Διαβάθμιση: - + Horizontal Οριζόντια - + Vertical Κάθετα - + Circular Κυκλικά - + Top Left - Bottom Right Πάνω Αριστερά - Κάτω Δεξιά - + Bottom Left - Top Right Κάτω Αριστερά - Πάνω Δεξιά - + Main Area Font Details Λεπτομέρειες Γραμματοσειράς Κύριας Περιοχής - + Define the font and display characteristics for the Display text Καθορίστε την γραμματοσειρά και τα χαρακτηριστικά προβολής του κειμένου Προβολής - + Font: Γραμματοσειρά: - + Size: Μέγεθος: - + Line Spacing: Διάκενο: - + &Outline: &Περίγραμμα: - + &Shadow: &Σκίαση: - + Bold Έντονη γραφή - + Italic Πλάγια Γραφή - + Footer Area Font Details Λεπτομέρειες Γραμματοσειράς Υποσέλιδου - + Define the font and display characteristics for the Footer text Καθορίστε την γραμματοσειρά και τα χαρακτηριστικά προβολής για το κείμενο Υποσέλιδου - + Text Formatting Details Λεπτομέρειες Μορφοποίησης Κειμένου - + Allows additional display formatting information to be defined Επιτρέπει να καθοριστούν πρόσθετες λεπτομέρειες μορφοποίησης προβολής - + Horizontal Align: Οριζόντια Ευθυγράμμιση: - + Left Αριστερά - + Right Δεξιά - + Center Κέντρο - + Output Area Locations Τοποθεσία Περιοχών Προβολής - + Allows you to change and move the main and footer areas. Επιτρέπει την αλλαγή και μετακίνηση της κύριας περιοχής και του υποσέλιδου. - + &Main Area &Κύρια Περιοχή - + &Use default location &Χρήση Προκαθορισμένης Θέσης - + X position: Θέση X: - + px px - + Y position: Θέση Y: - + Width: Πλάτος: - + Height: Ύψος: - + Use default location Χρήση προκαθορισμένης θέσης - + Save and Preview Αποθήκευση και Προεπισκόπηση - + View the theme and save it replacing the current one or change the name to create a new theme Δείτε το θέμα και αποθηκεύστε το αντικαθιστώντας το τρέχων θέμα ή αλλάξτε το όνομά του δημιουργώντας νέο θέμα - + Theme name: Όνομα θέματος: @@ -4145,50 +4106,45 @@ The content encoding is not UTF-8. Επεξεργασία Θέματος - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Ο οδηγός αυτός θα σας βοηθήσει να δημιουργήσετε και να επεξεργαστείτε τα θέματά σας. Πιέστε το πλήκτρο επόμενο παρακάτω για να ξεκινήσετε την διαδικασία ορίζοντας το φόντο. - + Transitions: Μεταβάσεις: - + &Footer Area Περιοχή &Υποσέλιδου - + Starting color: Χρώμα έναρξης: - + Ending color: Χρώμα τερματισμού: - + Background color: Χρώμα φόντου: - + Justify Ευθυγράμμιση - + Layout Preview Προεπισκόπηση Σχεδίου - - - Transparent - - OpenLP.ThemesTab @@ -4886,17 +4842,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Διαθέσιμοι Ελεγκτές - + Allow presentation application to be overriden Επιτρέψτε την παράκαμψη του προγράμματος παρουσίασης - + %s (unavailable) %s (μη διαθέσιμο) @@ -4930,92 +4886,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager Διαχειριστής Λειτουργίας - + Slide Controller - + Alerts Ειδοποιήσεις - + Search Αναζήτηση - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live Προβολή - + No Results - + Options Επιλογές - + Add to Service @@ -5910,27 +5866,27 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles - + Lyrics - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? @@ -5938,12 +5894,12 @@ The encoding is responsible for the correct character representation. - + Maintain the lists of authors, topics and books. - + copy For song cloning diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts index 840288721..3859e8238 100644 --- a/resources/i18n/en.ts +++ b/resources/i18n/en.ts @@ -1022,7 +1022,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? @@ -1264,7 +1264,7 @@ Do you want to add the other images anyway? - + Unsupported File @@ -1282,32 +1282,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1442,108 +1442,98 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings - + Number of recent files to display: - + Remember active media manager tab on startup - + Double-click to send items straight to live - + Expand new service items on creation - + Enable application exit confirmation - + Mouse Cursor - + Hide mouse cursor when over display window - + Default Image - + Background color: - + Image file: - + Open File - + Advanced - + Preview items when clicked in Media Manager - + Click to select a color. - + Browse for an image file to display. - + Revert to the default OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1744,17 +1734,17 @@ Version: %s - + Downloading %s... - + Download complete. Click the finish button to start OpenLP. - + Enabling selected plugins... @@ -1824,32 +1814,32 @@ Version: %s - + Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. - + Setting Up - + Click the finish button to start OpenLP. - + Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. @@ -2050,170 +2040,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General - + Monitors - + Select monitor for output display: - + Display if a single screen - + Application Startup - + Show blank screen warning - + Automatically open the last service - + Show the splash screen - + Application Settings - + Prompt to save before starting a new service - + Automatically preview next item in service - + sec - + CCLI Details - + SongSelect username: - + SongSelect password: - + Display Position - + X - + Y - + Height - + Width - + Override display position - + Check for updates to OpenLP - + Unblank display when adding new live item - + + Enable slide wrap-around + + + + Timed slide interval: - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2231,7 +2191,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display @@ -2739,68 +2699,68 @@ Database: %s - + &Add to selected Service Item - + You must select one or more items to preview. - + You must select one or more items to send live. - + You must select one or more items. - + You must select an existing service item to add to. - + Invalid Service Item - + You must select a %s service item. - + You must select one or more items to add. - + No Search Results - + Invalid File Type - + Invalid File %s. Suffix not supported - + &Clone - + Duplicate files were found on import and were ignored. @@ -2955,12 +2915,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3056,33 +3016,33 @@ Suffix not supported - + OpenLP Service Files (*.osz) - + File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. - + Missing Display Handler - + Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive @@ -3182,22 +3142,22 @@ The content encoding is not UTF-8. - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -3217,7 +3177,7 @@ The content encoding is not UTF-8. - + This file is either corrupt or it is not an OpenLP 2.0 service file. @@ -3227,22 +3187,22 @@ The content encoding is not UTF-8. - + Slide theme - + Notes - + Edit - + Service copy only @@ -3334,77 +3294,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Service - + Next Service - + Escape Item - + Move to previous. - + Move to next. - + Play Slides - + Delay between slides in seconds. - + Move to live. - + Add to Service. - + Edit and reload song preview. @@ -3414,7 +3374,7 @@ The content encoding is not UTF-8. - + Pause audio. @@ -3439,37 +3399,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3563,27 +3523,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image - + Theme Name Missing - + There is no name for this theme. Please enter one. - + Theme Name Invalid - + Invalid theme name. Please enter one. @@ -3785,222 +3745,222 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard - + Welcome to the Theme Wizard - + Set Up Background - + Set up your theme's background according to the parameters below. - + Background type: - + Solid Color - + Gradient - + Color: - + Gradient: - + Horizontal - + Vertical - + Circular - + Top Left - Bottom Right - + Bottom Left - Top Right - + Main Area Font Details - + Define the font and display characteristics for the Display text - + Font: - + Size: - + Line Spacing: - + &Outline: - + &Shadow: - + Bold - + Italic - + Footer Area Font Details - + Define the font and display characteristics for the Footer text - + Text Formatting Details - + Allows additional display formatting information to be defined - + Horizontal Align: - + Left - + Right - + Center - + Output Area Locations - + Allows you to change and move the main and footer areas. - + &Main Area - + &Use default location - + X position: - + px - + Y position: - + Width: - + Height: - + Use default location - + Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: @@ -4010,50 +3970,45 @@ The content encoding is not UTF-8. - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: - + &Footer Area - + Starting color: - + Ending color: - + Background color: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4751,17 +4706,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + Allow presentation application to be overriden - + %s (unavailable) @@ -4795,92 +4750,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager - + Slide Controller - + Alerts - + Search - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live - + No Results - + Options - + Add to Service @@ -5775,39 +5730,39 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles - + Lyrics - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? - + Maintain the lists of authors, topics and books. - + copy For song cloning diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts index 19ec72522..ded4dc81d 100644 --- a/resources/i18n/en_GB.ts +++ b/resources/i18n/en_GB.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -102,9 +101,9 @@ Do you want to continue anyway? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? @@ -412,38 +411,38 @@ Changes do not affect verses already in the service. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Registering Bible and loading books... - + Registering Language... Registering Language... - + Importing %s... Importing <book name>... Importing %s... - + Download Error Download Error - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. - + Parse Error Parse Error - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. @@ -1040,12 +1039,9 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - Are you sure you want to delete the %n selected custom slides(s)? - Are you sure you want to delete the %n selected custom slides(s)? - + Are you sure you want to delete the %n selected custom slides(s)?Are you sure you want to delete the %n selected custom slides(s)? @@ -1112,7 +1108,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I ImagePlugin.ExceptionDialog - + Select Attachment Select Attachment @@ -1183,60 +1179,60 @@ Do you want to add the other images anyway? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - + Media name singular Media - + Media name plural Media - + Media container title Media - + Load new media. Load new media. - + Add new media. Add new media. - + Edit the selected media. Edit the selected media. - + Delete the selected media. Delete the selected media. - + Preview the selected media. Preview the selected media. - + Send the selected media live. Send the selected media live. - + Add the selected media to the service. Add the selected media to the service. @@ -1284,7 +1280,7 @@ Do you want to add the other images anyway? There was no display item to amend. - + Unsupported File Unsupported File @@ -1302,32 +1298,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players Available Media Players - + %s (unavailable) %s (unavailable) - + Player Order Player Order - + Down Down - + Up Up - + Allow media player to be overriden Allow media player to be overriden @@ -1357,17 +1353,17 @@ Should OpenLP upgrade now? OpenLP.AboutForm - + Credits Credits - + License Licence - + Contribute Contribute @@ -1377,17 +1373,17 @@ Should OpenLP upgrade now? build %s - + 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 Licence as published by the Free Software Foundation; version 2 of the Licence. - + 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. - + Project Lead %s @@ -1420,7 +1416,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1529,109 +1525,100 @@ Find out more about OpenLP: http://openlp.org/ OpenLP is written and maintained by volunteers. If you would like to see more free Christian software being written, please consider contributing by using the button below. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings UI Settings - + Number of recent files to display: Number of recent files to display: - + Remember active media manager tab on startup Remember active media manager tab on startup - + Double-click to send items straight to live Double-click to send items straight to live - + Expand new service items on creation Expand new service items on creation - + Enable application exit confirmation Enable application exit confirmation - + Mouse Cursor Mouse Cursor - + Hide mouse cursor when over display window Hide mouse cursor when over display window - + Default Image Default Image - + Background color: Background colour: - + Image file: Image file: - + Open File Open File - + Advanced Advanced - + Preview items when clicked in Media Manager Preview items when clicked in Media Manager - + Click to select a color. Click to select a colour. - + Browse for an image file to display. Browse for an image file to display. - + Revert to the default OpenLP logo. Revert to the default OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1668,7 +1655,7 @@ Portions copyright © 2004-2012 %s Attach File - + Description characters to enter : %s Description characters to enter : %s @@ -1676,24 +1663,24 @@ Portions copyright © 2004-2012 %s OpenLP.ExceptionForm - + Platform: %s Platform: %s - + Save Crash Report Save Crash Report - + Text files (*.txt *.log *.text) Text files (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1724,7 +1711,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1860,17 +1847,17 @@ Version: %s Default Settings - + Downloading %s... Downloading %s... - + Download complete. Click the finish button to start OpenLP. Download complete. Click the finish button to start OpenLP. - + Enabling selected plugins... Enabling selected plugins... @@ -1940,32 +1927,32 @@ Version: %s This wizard will help you to configure OpenLP for initial use. Click the next button below to start. - + Setting Up And Downloading Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. Please wait while OpenLP is set up and your data is downloaded. - + Setting Up Setting Up - + Click the finish button to start OpenLP. Click the finish button to start OpenLP. - + Download complete. Click the finish button to return to OpenLP. Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. Click the finish button to return to OpenLP. @@ -2170,170 +2157,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General General - + Monitors Monitors - + Select monitor for output display: Select monitor for output display: - + Display if a single screen Display if a single screen - + Application Startup Application Startup - + Show blank screen warning Show blank screen warning - + Automatically open the last service Automatically open the last service - + Show the splash screen Show the splash screen - + Application Settings Application Settings - + Prompt to save before starting a new service Prompt to save before starting a new service - + Automatically preview next item in service Automatically preview next item in service - + sec sec - + CCLI Details CCLI Details - + SongSelect username: SongSelect username: - + SongSelect password: SongSelect password: - + Display Position Display Position - + X X - + Y Y - + Height Height - + Width Width - + Override display position Override display position - + Check for updates to OpenLP Check for updates to OpenLP - + Unblank display when adding new live item Unblank display when adding new live item - + + Enable slide wrap-around + Enable slide wrap-around + + + Timed slide interval: Timed slide interval: - + Background Audio Background Audio - + Start background audio paused Start background audio paused - - - Service Item Slide Advance - Service Item Slide Advance - - - - &End Slide - &End Slide - - - - &Wrap Slide - &Wrap Slide - - - - &Next Slide - &Next Slide - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - OpenLP.LanguageManager @@ -2351,7 +2308,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display OpenLP Display @@ -2870,69 +2827,69 @@ Database: %s No Items Selected - + &Add to selected Service Item &Add to selected Service Item - + You must select one or more items to preview. You must select one or more items to preview. - + You must select one or more items to send live. You must select one or more items to send live. - + You must select one or more items. You must select one or more items. - + You must select an existing service item to add to. You must select an existing service item to add to. - + Invalid Service Item Invalid Service Item - + You must select a %s service item. You must select a %s service item. - + You must select one or more items to add. You must select one or more items to add. - + No Search Results No Search Results - + Invalid File Type Invalid File Type - + Invalid File %s. Suffix not supported Invalid File %s. Suffix not supported - + &Clone &Clone - + Duplicate files were found on import and were ignored. Duplicate files were found on import and were ignored. @@ -3087,12 +3044,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Start</strong>: %s - + <strong>Length</strong>: %s <strong>Length</strong>: %s @@ -3108,189 +3065,189 @@ Suffix not supported OpenLP.ServiceManager - + Move to &top Move to &top - + Move item to the top of the service. Move item to the top of the service. - + Move &up Move &up - + Move item up one position in the service. Move item up one position in the service. - + Move &down Move &down - + Move item down one position in the service. Move item down one position in the service. - + Move to &bottom Move to &bottom - + Move item to the end of the service. Move item to the end of the service. - + &Delete From Service &Delete From Service - + Delete the selected item from the service. Delete the selected item from the service. - + &Add New Item &Add New Item - + &Add to Selected Item &Add to Selected Item - + &Edit Item &Edit Item - + &Reorder Item &Reorder Item - + &Notes &Notes - + &Change Item Theme &Change Item Theme - + OpenLP Service Files (*.osz) OpenLP Service Files (*.osz) - + File is not a valid service. The content encoding is not UTF-8. File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. File is not a valid service. - + Missing Display Handler Missing Display Handler - + Your item cannot be displayed as there is no handler to display it Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive Your item cannot be displayed as the plugin required to display it is missing or inactive - + &Expand all &Expand all - + Expand all the service items. Expand all the service items. - + &Collapse all &Collapse all - + Collapse all the service items. Collapse all the service items. - + Open File Open File - + Moves the selection down the window. Moves the selection down the window. - + Move up Move up - + Moves the selection up the window. Moves the selection up the window. - + Go Live Go Live - + Send the selected item to Live. Send the selected item to Live. - + &Start Time &Start Time - + Show &Preview Show &Preview - + Show &Live Show &Live - + Modified Service Modified Service - + The current service has been modified. Would you like to save this service? The current service has been modified. Would you like to save this service? @@ -3310,72 +3267,72 @@ The content encoding is not UTF-8. Playing time: - + Untitled Service Untitled Service - + File could not be opened because it is corrupt. File could not be opened because it is corrupt. - + Empty File Empty File - + This service file does not contain any data. This service file does not contain any data. - + Corrupt File Corrupt File - + Load an existing service. Load an existing service. - + Save this service. Save this service. - + Select a theme for the service. Select a theme for the service. - + This file is either corrupt or it is not an OpenLP 2.0 service file. This file is either corrupt or it is not an OpenLP 2.0 service file. - + Service File Missing Service File Missing - + Slide theme Slide theme - + Notes Notes - + Edit Edit - + Service copy only Service copy only @@ -3409,12 +3366,12 @@ The content encoding is not UTF-8. Shortcut - + Duplicate Shortcut Duplicate Shortcut - + The shortcut "%s" is already assigned to another action, please use a different shortcut. The shortcut "%s" is already assigned to another action, please use a different shortcut. @@ -3467,77 +3424,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide Hide - + Go To Go To - + Blank Screen Blank Screen - + Blank to Theme Blank to Theme - + Show Desktop Show Desktop - + Previous Service Previous Service - + Next Service Next Service - + Escape Item Escape Item - + Move to previous. Move to previous. - + Move to next. Move to next. - + Play Slides Play Slides - + Delay between slides in seconds. Delay between slides in seconds. - + Move to live. Move to live. - + Add to Service. Add to Service. - + Edit and reload song preview. Edit and reload song preview. @@ -3547,7 +3504,7 @@ The content encoding is not UTF-8. Start playing media. - + Pause audio. Pause audio. @@ -3562,47 +3519,47 @@ The content encoding is not UTF-8. Stop playing media. - + Video position. Video position. - + Audio Volume. Audio Volume. - + Go to "Verse" Go to "Verse" - + Go to "Chorus" Go to "Chorus" - + Go to "Bridge" Go to "Bridge" - + Go to "Pre-Chorus" Go to "Pre-Chorus" - + Go to "Intro" Go to "Intro" - + Go to "Ending" Go to "Ending" - + Go to "Other" Go to "Other" @@ -3696,27 +3653,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image Select Image - + Theme Name Missing Theme Name Missing - + There is no name for this theme. Please enter one. There is no name for this theme. Please enter one. - + Theme Name Invalid Theme Name Invalid - + Invalid theme name. Please enter one. Invalid theme name. Please enter one. @@ -3789,62 +3746,62 @@ The content encoding is not UTF-8. Set As &Global Default - + %s (default) %s (default) - + You must select a theme to edit. You must select a theme to edit. - + You are unable to delete the default theme. You are unable to delete the default theme. - + Theme %s is used in the %s plugin. Theme %s is used in the %s plugin. - + You have not selected a theme. You have not selected a theme. - + Save Theme - (%s) Save Theme - (%s) - + Theme Exported Theme Exported - + Your theme has been successfully exported. Your theme has been successfully exported. - + Theme Export Failed Theme Export Failed - + Your theme could not be exported due to an error. Your theme could not be exported due to an error. - + Select Theme Import File Select Theme Import File - + File is not a valid theme. File is not a valid theme. @@ -3864,52 +3821,52 @@ The content encoding is not UTF-8. &Export Theme - + You must select a theme to rename. You must select a theme to rename. - + Rename Confirmation Rename Confirmation - + Rename %s theme? Rename %s theme? - + You must select a theme to delete. You must select a theme to delete. - + Delete Confirmation Delete Confirmation - + Delete %s theme? Delete %s theme? - + Validation Error Validation Error - + A theme with this name already exists. A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) OpenLP Themes (*.theme *.otz) - + Copy of %s Copy of <theme name> Copy of %s @@ -3918,222 +3875,222 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard Theme Wizard - + Welcome to the Theme Wizard Welcome to the Theme Wizard - + Set Up Background Set Up Background - + Set up your theme's background according to the parameters below. Set up your theme's background according to the parameters below. - + Background type: Background type: - + Solid Color Solid Colour - + Gradient Gradient - + Color: Colour: - + Gradient: Gradient: - + Horizontal Horizontal - + Vertical Vertical - + Circular Circular - + Top Left - Bottom Right Top Left - Bottom Right - + Bottom Left - Top Right Bottom Left - Top Right - + Main Area Font Details Main Area Font Details - + Define the font and display characteristics for the Display text Define the font and display characteristics for the Display text - + Font: Font: - + Size: Size: - + Line Spacing: Line Spacing: - + &Outline: &Outline: - + &Shadow: &Shadow: - + Bold Bold - + Italic Italic - + Footer Area Font Details Footer Area Font Details - + Define the font and display characteristics for the Footer text Define the font and display characteristics for the Footer text - + Text Formatting Details Text Formatting Details - + Allows additional display formatting information to be defined Allows additional display formatting information to be defined - + Horizontal Align: Horizontal Align: - + Left Left - + Right Right - + Center Centre - + Output Area Locations Output Area Locations - + Allows you to change and move the main and footer areas. Allows you to change and move the main and footer areas. - + &Main Area &Main Area - + &Use default location &Use default location - + X position: X position: - + px px - + Y position: Y position: - + Width: Width: - + Height: Height: - + Use default location Use default location - + Save and Preview Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: Theme name: @@ -4143,50 +4100,45 @@ The content encoding is not UTF-8. Edit Theme - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: Transitions: - + &Footer Area &Footer Area - + Starting color: Starting color: - + Ending color: Ending color: - + Background color: Background color: - + Justify Justify - + Layout Preview Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4581,7 +4533,7 @@ The content encoding is not UTF-8. - © + © Copyright symbol. © @@ -4884,17 +4836,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Available Controllers - + Allow presentation application to be overriden Allow presentation application to be overriden - + %s (unavailable) %s (unavailable) @@ -4928,92 +4880,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Remote - + OpenLP 2.0 Stage View OpenLP 2.0 Stage View - + Service Manager Service Manager - + Slide Controller Slide Controller - + Alerts Alerts - + Search Search - + Back Back - + Refresh Refresh - + Blank Blank - + Show Show - + Prev Prev - + Next Next - + Text Text - + Show Alert Show Alert - + Go Live Go Live - + No Results No Results - + Options Options - + Add to Service Add to Service @@ -5915,40 +5867,37 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles Titles - + Lyrics Lyrics - + CCLI License: CCLI License: - + Entire Song Entire Song - + Are you sure you want to delete the %n selected song(s)? - - Are you sure you want to delete the %n selected song? - Are you sure you want to delete the %n selected songs? - + Are you sure you want to delete the %n selected song?Are you sure you want to delete the %n selected songs? - + Maintain the lists of authors, topics and books. Maintain the lists of authors, topics and books. - + copy For song cloning copy @@ -6242,4 +6191,4 @@ The encoding is responsible for the correct character representation.Other - + \ No newline at end of file diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts index f72e3ea12..779a6662d 100644 --- a/resources/i18n/en_ZA.ts +++ b/resources/i18n/en_ZA.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -102,9 +101,9 @@ Do you want to continue anyway? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? @@ -412,38 +411,38 @@ Changes do not affect verses already in the service. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Registering Bible and loading books... - + Registering Language... Registering Language... - + Importing %s... Importing <book name>... Importing %s... - + Download Error Download Error - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. - + Parse Error Parse Error - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. @@ -1040,12 +1039,9 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - Are you sure you want to delete the %n selected custom slide(s)? - Are you sure you want to delete the %n selected custom slides? - + Are you sure you want to delete the %n selected custom slide(s)?Are you sure you want to delete the %n selected custom slides? @@ -1112,7 +1108,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I ImagePlugin.ExceptionDialog - + Select Attachment Select Attachment @@ -1183,60 +1179,60 @@ Do you want to add the other images anyway? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - + Media name singular Media - + Media name plural Media - + Media container title Media - + Load new media. Load new media. - + Add new media. Add new media. - + Edit the selected media. Edit the selected media. - + Delete the selected media. Delete the selected media. - + Preview the selected media. Preview the selected media. - + Send the selected media live. Send the selected media live. - + Add the selected media to the service. Add the selected media to the service. @@ -1284,7 +1280,7 @@ Do you want to add the other images anyway? There was no display item to amend. - + Unsupported File Unsupported File @@ -1302,32 +1298,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players Available Media Players - + %s (unavailable) %s (unavailable) - + Player Order Player Order - + Down Down - + Up Up - + Allow media player to be overriden Allow media player to be overriden @@ -1357,17 +1353,17 @@ Should OpenLP upgrade now? OpenLP.AboutForm - + Credits Credits - + License License - + Contribute Contribute @@ -1377,17 +1373,17 @@ Should OpenLP upgrade now? build %s - + 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. - + 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. - + Project Lead %s @@ -1420,7 +1416,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1529,109 +1525,100 @@ Find out more about OpenLP: http://openlp.org/ OpenLP is written and maintained by volunteers. If you would like to see more free Christian software being written, please consider contributing by using the button below. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings UI Settings - + Number of recent files to display: Number of recent files to display: - + Remember active media manager tab on startup Remember active media manager tab on startup - + Double-click to send items straight to live Double-click to send items straight to live - + Expand new service items on creation Expand new service items on creation - + Enable application exit confirmation Enable application exit confirmation - + Mouse Cursor Mouse Cursor - + Hide mouse cursor when over display window Hide mouse cursor when over display window - + Default Image Default Image - + Background color: Background colour: - + Image file: Image file: - + Open File Open File - + Advanced Advanced - + Preview items when clicked in Media Manager Preview items when clicked in Media Manager - + Click to select a color. Click to select a colour. - + Browse for an image file to display. Browse for an image file to display. - + Revert to the default OpenLP logo. Revert to the default OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1668,7 +1655,7 @@ Portions copyright © 2004-2012 %s Attach File - + Description characters to enter : %s Description characters to enter : %s @@ -1676,24 +1663,24 @@ Portions copyright © 2004-2012 %s OpenLP.ExceptionForm - + Platform: %s Platform: %s - + Save Crash Report Save Crash Report - + Text files (*.txt *.log *.text) Text files (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1724,7 +1711,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1860,17 +1847,17 @@ Version: %s Default Settings - + Downloading %s... Downloading %s... - + Download complete. Click the finish button to start OpenLP. Download complete. Click the finish button to start OpenLP. - + Enabling selected plugins... Enabling selected plugins... @@ -1940,32 +1927,32 @@ Version: %s This wizard will help you to configure OpenLP for initial use. Click the next button below to start. - + Setting Up And Downloading Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. Please wait while OpenLP is set up and your data is downloaded. - + Setting Up Setting Up - + Click the finish button to start OpenLP. Click the finish button to start OpenLP. - + Download complete. Click the finish button to return to OpenLP. Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. Click the finish button to return to OpenLP. @@ -2170,170 +2157,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General General - + Monitors Monitors - + Select monitor for output display: Select monitor for output display: - + Display if a single screen Display if a single screen - + Application Startup Application Startup - + Show blank screen warning Show blank screen warning - + Automatically open the last service Automatically open the last service - + Show the splash screen Show the splash screen - + Application Settings Application Settings - + Prompt to save before starting a new service Prompt to save before starting a new service - + Automatically preview next item in service Automatically preview next item in service - + sec sec - + CCLI Details CCLI Details - + SongSelect username: SongSelect username: - + SongSelect password: SongSelect password: - + Display Position Display Position - + X X - + Y Y - + Height Height - + Width Width - + Override display position Override display position - + Check for updates to OpenLP Check for updates to OpenLP - + Unblank display when adding new live item Unblank display when adding new live item - + + Enable slide wrap-around + Enable slide wrap-around + + + Timed slide interval: Timed slide interval: - + Background Audio Background Audio - + Start background audio paused Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2351,7 +2308,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display OpenLP Display @@ -2871,69 +2828,69 @@ Database: %s No Items Selected - + &Add to selected Service Item &Add to selected Service Item - + You must select one or more items to preview. You must select one or more items to preview. - + You must select one or more items to send live. You must select one or more items to send live. - + You must select one or more items. You must select one or more items. - + You must select an existing service item to add to. You must select an existing service item to add to. - + Invalid Service Item Invalid Service Item - + You must select a %s service item. You must select a %s service item. - + You must select one or more items to add. You must select one or more items to add. - + No Search Results No Search Results - + Invalid File Type Invalid File Type - + Invalid File %s. Suffix not supported Invalid File %s. Suffix not supported - + &Clone &Clone - + Duplicate files were found on import and were ignored. Duplicate files were found on import and were ignored. @@ -3088,12 +3045,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Start</strong>: %s - + <strong>Length</strong>: %s <strong>Length</strong>: %s @@ -3109,189 +3066,189 @@ Suffix not supported OpenLP.ServiceManager - + Move to &top Move to &top - + Move item to the top of the service. Move item to the top of the service. - + Move &up Move &up - + Move item up one position in the service. Move item up one position in the service. - + Move &down Move &down - + Move item down one position in the service. Move item down one position in the service. - + Move to &bottom Move to &bottom - + Move item to the end of the service. Move item to the end of the service. - + &Delete From Service &Delete From Service - + Delete the selected item from the service. Delete the selected item from the service. - + &Add New Item &Add New Item - + &Add to Selected Item &Add to Selected Item - + &Edit Item &Edit Item - + &Reorder Item &Reorder Item - + &Notes &Notes - + &Change Item Theme &Change Item Theme - + OpenLP Service Files (*.osz) OpenLP Service Files (*.osz) - + File is not a valid service. The content encoding is not UTF-8. File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. File is not a valid service. - + Missing Display Handler Missing Display Handler - + Your item cannot be displayed as there is no handler to display it Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive Your item cannot be displayed as the plugin required to display it is missing or inactive - + &Expand all &Expand all - + Expand all the service items. Expand all the service items. - + &Collapse all &Collapse all - + Collapse all the service items. Collapse all the service items. - + Open File Open File - + Moves the selection down the window. Moves the selection down the window. - + Move up Move up - + Moves the selection up the window. Moves the selection up the window. - + Go Live Go Live - + Send the selected item to Live. Send the selected item to Live. - + &Start Time &Start Time - + Show &Preview Show &Preview - + Show &Live Show &Live - + Modified Service Modified Service - + The current service has been modified. Would you like to save this service? The current service has been modified. Would you like to save this service? @@ -3311,72 +3268,72 @@ The content encoding is not UTF-8. Playing time: - + Untitled Service Untitled Service - + File could not be opened because it is corrupt. File could not be opened because it is corrupt. - + Empty File Empty File - + This service file does not contain any data. This service file does not contain any data. - + Corrupt File Corrupt File - + Load an existing service. Load an existing service. - + Save this service. Save this service. - + Select a theme for the service. Select a theme for the service. - + This file is either corrupt or it is not an OpenLP 2.0 service file. This file is either corrupt or it is not an OpenLP 2.0 service file. - + Service File Missing Service File Missing - + Slide theme Slide theme - + Notes Notes - + Edit Edit - + Service copy only Service copy only @@ -3410,12 +3367,12 @@ The content encoding is not UTF-8. Shortcut - + Duplicate Shortcut Duplicate Shortcut - + The shortcut "%s" is already assigned to another action, please use a different shortcut. The shortcut "%s" is already assigned to another action, please use a different shortcut. @@ -3468,77 +3425,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide Hide - + Go To Go To - + Blank Screen Blank Screen - + Blank to Theme Blank to Theme - + Show Desktop Show Desktop - + Previous Service Previous Service - + Next Service Next Service - + Escape Item Escape Item - + Move to previous. Move to previous. - + Move to next. Move to next. - + Play Slides Play Slides - + Delay between slides in seconds. Delay between slides in seconds. - + Move to live. Move to live. - + Add to Service. Add to Service. - + Edit and reload song preview. Edit and reload song preview. @@ -3548,7 +3505,7 @@ The content encoding is not UTF-8. Start playing media. - + Pause audio. Pause audio. @@ -3563,47 +3520,47 @@ The content encoding is not UTF-8. Stop playing media. - + Video position. Video position. - + Audio Volume. Audio Volume. - + Go to "Verse" Go to "Verse" - + Go to "Chorus" Go to "Chorus" - + Go to "Bridge" Go to "Bridge" - + Go to "Pre-Chorus" Go to "Pre-Chorus" - + Go to "Intro" Go to "Intro" - + Go to "Ending" Go to "Ending" - + Go to "Other" Go to "Other" @@ -3697,27 +3654,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image Select Image - + Theme Name Missing Theme Name Missing - + There is no name for this theme. Please enter one. There is no name for this theme. Please enter one. - + Theme Name Invalid Theme Name Invalid - + Invalid theme name. Please enter one. Invalid theme name. Please enter one. @@ -3790,62 +3747,62 @@ The content encoding is not UTF-8. Set As &Global Default - + %s (default) %s (default) - + You must select a theme to edit. You must select a theme to edit. - + You are unable to delete the default theme. You are unable to delete the default theme. - + Theme %s is used in the %s plugin. Theme %s is used in the %s plugin. - + You have not selected a theme. You have not selected a theme. - + Save Theme - (%s) Save Theme - (%s) - + Theme Exported Theme Exported - + Your theme has been successfully exported. Your theme has been successfully exported. - + Theme Export Failed Theme Export Failed - + Your theme could not be exported due to an error. Your theme could not be exported due to an error. - + Select Theme Import File Select Theme Import File - + File is not a valid theme. File is not a valid theme. @@ -3865,52 +3822,52 @@ The content encoding is not UTF-8. &Export Theme - + You must select a theme to rename. You must select a theme to rename. - + Rename Confirmation Rename Confirmation - + Rename %s theme? Rename %s theme? - + You must select a theme to delete. You must select a theme to delete. - + Delete Confirmation Delete Confirmation - + Delete %s theme? Delete %s theme? - + Validation Error Validation Error - + A theme with this name already exists. A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) OpenLP Themes (*.theme *.otz) - + Copy of %s Copy of <theme name> Copy of %s @@ -3919,222 +3876,222 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard Theme Wizard - + Welcome to the Theme Wizard Welcome to the Theme Wizard - + Set Up Background Set Up Background - + Set up your theme's background according to the parameters below. Set up your theme's background according to the parameters below. - + Background type: Background type: - + Solid Color Solid Colour - + Gradient Gradient - + Color: Colour: - + Gradient: Gradient: - + Horizontal Horizontal - + Vertical Vertical - + Circular Circular - + Top Left - Bottom Right Top Left - Bottom Right - + Bottom Left - Top Right Bottom Left - Top Right - + Main Area Font Details Main Area Font Details - + Define the font and display characteristics for the Display text Define the font and display characteristics for the Display text - + Font: Font: - + Size: Size: - + Line Spacing: Line Spacing: - + &Outline: &Outline: - + &Shadow: &Shadow: - + Bold Bold - + Italic Italic - + Footer Area Font Details Footer Area Font Details - + Define the font and display characteristics for the Footer text Define the font and display characteristics for the Footer text - + Text Formatting Details Text Formatting Details - + Allows additional display formatting information to be defined Allows additional display formatting information to be defined - + Horizontal Align: Horizontal Align: - + Left Left - + Right Right - + Center Centre - + Output Area Locations Output Area Locations - + Allows you to change and move the main and footer areas. Allows you to change and move the main and footer areas. - + &Main Area &Main Area - + &Use default location &Use default location - + X position: X position: - + px px - + Y position: Y position: - + Width: Width: - + Height: Height: - + Use default location Use default location - + Save and Preview Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: Theme name: @@ -4144,50 +4101,45 @@ The content encoding is not UTF-8. Edit Theme - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: Transitions: - + &Footer Area &Footer Area - + Starting color: Starting color: - + Ending color: Ending color: - + Background color: Background color: - + Justify Justify - + Layout Preview Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4582,7 +4534,7 @@ The content encoding is not UTF-8. - © + © Copyright symbol. © @@ -4885,17 +4837,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Available Controllers - + Allow presentation application to be overriden Allow presentation application to be overriden - + %s (unavailable) %s (unavailable) @@ -4929,92 +4881,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Remote - + OpenLP 2.0 Stage View OpenLP 2.0 Stage View - + Service Manager Service Manager - + Slide Controller Slide Controller - + Alerts Alerts - + Search Search - + Back Back - + Refresh Refresh - + Blank Blank - + Show Show - + Prev Prev - + Next Next - + Text Text - + Show Alert Show Alert - + Go Live Go Live - + No Results No Results - + Options Options - + Add to Service Add to Service @@ -5916,40 +5868,37 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles Titles - + Lyrics Lyrics - + CCLI License: CCLI License: - + Entire Song Entire Song - + Are you sure you want to delete the %n selected song(s)? - - Are you sure you want to delete the %n selected song(s)? - Are you sure you want to delete the %n selected song(s)? - + Are you sure you want to delete the %n selected song(s)?Are you sure you want to delete the %n selected song(s)? - + Maintain the lists of authors, topics and books. Maintain the lists of authors, topics and books. - + copy For song cloning copy @@ -6243,4 +6192,4 @@ The encoding is responsible for the correct character representation.Other - + \ No newline at end of file diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts index b88c9b2f7..77f5723ea 100644 --- a/resources/i18n/es.ts +++ b/resources/i18n/es.ts @@ -1040,7 +1040,7 @@ Note que los versículos se descargarán según sea necesario, por lo que debe c CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? @@ -1284,7 +1284,7 @@ Do you want to add the other images anyway? - + Unsupported File Archivo no Soportado @@ -1302,32 +1302,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) %s (no disponible) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1530,108 +1530,99 @@ OpenLP es desarrollado y mantenido por voluntarios. Si desea apoyar la creación - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Preferencias de Interface - + Number of recent files to display: Archivos recientes a mostrar: - + Remember active media manager tab on startup Recordar la última pestaña de medios utilizada - + Double-click to send items straight to live Doble-click para proyectar directamente - + Expand new service items on creation Expandir nuevos ítems del servicio al crearlos - + Enable application exit confirmation Preguntar antes de cerrar la aplicación - + Mouse Cursor Cursor del Ratón - + Hide mouse cursor when over display window Ocultar el cursor en la pantalla principal - + Default Image Imagen por defecto - + Background color: Color de fondo: - + Image file: Archivo: - + Open File Abrir Archivo - + Preview items when clicked in Media Manager Vista previa al hacer click en el Adminstrador de Medios - + Advanced Avanzado - + Click to select a color. Click para seleccionar color. - + Browse for an image file to display. Buscar un archivo de imagen para mostrar. - + Revert to the default OpenLP logo. Volver al logo por defecto de OpenLP. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1796,17 +1787,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... Descargando %s... - + Download complete. Click the finish button to start OpenLP. Descarga completa. Presione finalizar para iniciar OpenLP. - + Enabling selected plugins... Habilitando complementos seleccionados... @@ -1941,22 +1932,22 @@ Version: %s Este asistente configurará OpenLP para su uso inicial. Presione el botón Siguiente para iniciar. - + Setting Up And Downloading Configurando && Descargando - + Please wait while OpenLP is set up and your data is downloaded. Por favor espere mientras OpenLP se configura e importa los datos. - + Setting Up Configurando - + Click the finish button to start OpenLP. Presione finalizar para iniciar OpenLP. @@ -1966,12 +1957,12 @@ Version: %s Diapositivas - + Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. @@ -2167,170 +2158,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General General - + Monitors Monitores - + Select monitor for output display: Seleccionar monitor para proyectar: - + Display if a single screen Mostar si solo hay una pantalla - + Application Startup Inicio de la Aplicación - + Show blank screen warning Mostrar advertencia de pantalla en blanco - + Automatically open the last service Abrir automáticamente el último servicio - + Show the splash screen Mostrar pantalla de bienvenida - + Application Settings Configuración del Programa - + Prompt to save before starting a new service Ofrecer guardar antes de abrir un servicio nuevo - + Automatically preview next item in service Vista previa automatica del siguiente ítem de servicio - + sec seg - + CCLI Details Detalles de CCLI - + SongSelect username: Usuario SongSelect: - + SongSelect password: Contraseña SongSelect: - + Display Position Posición de Pantalla - + X X - + Y Y - + Height Altura - + Width Ancho - + Override display position Ignorar posición de pantalla - + Check for updates to OpenLP Buscar actualizaciones para OpenLP - + Unblank display when adding new live item Mostar proyección al agregar un ítem nuevo - + + Enable slide wrap-around + Habilitar ajuste de diapositiva + + + Timed slide interval: Intervalo de diapositivas: - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2348,7 +2309,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display Pantalla de OpenLP @@ -2858,68 +2819,68 @@ Database: %s Nada Seleccionado - + &Add to selected Service Item &Agregar al ítem del Servico - + You must select one or more items to preview. Debe seleccionar uno o más ítems para visualizar. - + You must select one or more items to send live. Debe seleccionar uno o más ítems para proyectar. - + You must select one or more items. Debe seleccionar uno o más ítems. - + You must select an existing service item to add to. Debe seleccionar un servicio existente al cual añadir. - + Invalid Service Item Ítem de Servicio no válido - + You must select a %s service item. Debe seleccionar un(a) %s del servicio. - + You must select one or more items to add. Debe seleccionar uno o más ítemes para agregar. - + No Search Results Sin Resultados - + &Clone - + Invalid File Type - + Invalid File %s. Suffix not supported - + Duplicate files were found on import and were ignored. @@ -3074,12 +3035,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3175,29 +3136,29 @@ Suffix not supported &Cambiar Tema de ítem - + File is not a valid service. The content encoding is not UTF-8. Este no es un servicio válido. La codificación del contenido no es UTF-8. - + File is not a valid service. El archivo no es un servicio válido. - + Missing Display Handler Controlador de Pantalla Faltante - + Your item cannot be displayed as there is no handler to display it No se puede mostrar el ítem porque no hay un controlador de pantalla disponible - + Your item cannot be displayed as the plugin required to display it is missing or inactive El ítem no se puede mostar porque falta el complemento requerido o esta desabilitado @@ -3227,7 +3188,7 @@ La codificación del contenido no es UTF-8. Abrir Archivo - + OpenLP Service Files (*.osz) Archivo de Servicio OpenLP (*.osz) @@ -3282,22 +3243,22 @@ La codificación del contenido no es UTF-8. El servicio actual a sido modificado. ¿Desea guardar este servicio? - + File could not be opened because it is corrupt. No se pudo abrir el archivo porque está corrompido. - + Empty File Archivo Vacio - + This service file does not contain any data. El archivo de servicio no contiene ningún dato. - + Corrupt File Archivo Corrompido @@ -3337,17 +3298,17 @@ La codificación del contenido no es UTF-8. Seleccione un tema para el servicio. - + This file is either corrupt or it is not an OpenLP 2.0 service file. El archivo está corrupto o no es un archivo OpenLP 2.0 válido. - + Slide theme - + Notes @@ -3357,12 +3318,12 @@ La codificación del contenido no es UTF-8. - + Edit - + Service copy only @@ -3454,77 +3415,77 @@ La codificación del contenido no es UTF-8. OpenLP.SlideController - + Hide Ocultar - + Go To Ir A - + Blank Screen Pantalla en Blanco - + Blank to Theme Proyectar el Tema - + Show Desktop Mostrar Escritorio - + Previous Service Servicio Anterior - + Next Service Servicio Siguiente - + Escape Item Salir de ítem - + Move to previous. Ir al anterior. - + Move to next. Ir al siguiente. - + Play Slides Reproducir diapositivas - + Delay between slides in seconds. Tiempo entre diapositivas en segundos. - + Move to live. Proyectar en vivo. - + Add to Service. Agregar al Servicio. - + Edit and reload song preview. Editar y actualizar la vista previa. @@ -3534,7 +3495,7 @@ La codificación del contenido no es UTF-8. Reproducir medios. - + Pause audio. @@ -3559,37 +3520,37 @@ La codificación del contenido no es UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3683,27 +3644,27 @@ La codificación del contenido no es UTF-8. OpenLP.ThemeForm - + Select Image Seleccionar Imagen - + Theme Name Missing Falta Nombre de Tema - + There is no name for this theme. Please enter one. No existe nombre para este tema. Ingrese uno. - + Theme Name Invalid Nombre de Tema no válido - + Invalid theme name. Please enter one. Nombre de tema no válido. Ingrese uno. @@ -3905,237 +3866,237 @@ La codificación del contenido no es UTF-8. OpenLP.ThemeWizard - + Theme Wizard Asistente para Temas - + Welcome to the Theme Wizard Bienvenido al Asistente para Temas - + Set Up Background Establecer un fondo - + Set up your theme's background according to the parameters below. Establecer el fondo de su tema según los siguientes parámetros. - + Background type: Tipo de fondo: - + Solid Color Color Sólido - + Gradient Gradiente - + Color: Color: - + Gradient: Gradiente: - + Horizontal Horizontal - + Vertical Vertical - + Circular Circular - + Top Left - Bottom Right Arriba Izquierda - Abajo Derecha - + Bottom Left - Top Right Abajo Izquierda - Abajo Derecha - + Main Area Font Details Fuente del Área Principal - + Define the font and display characteristics for the Display text Definir la fuente y las características para el texto en Pantalla - + Font: Fuente: - + Size: Tamaño: - + Line Spacing: Epaciado de Líneas: - + &Outline: &Contorno: - + &Shadow: &Sombra: - + Bold Negrita - + Italic Cursiva - + Footer Area Font Details Fuente de Pié de página - + Define the font and display characteristics for the Footer text Definir la fuente y las características para el texto de Pié de página - + Text Formatting Details Detalles de Formato - + Allows additional display formatting information to be defined Permite definir información adicional de formato - + Horizontal Align: Alinea. Horizontal: - + Left Izquierda - + Right Derecha - + Center Centro - + Output Area Locations Ubicación del Área de Proyección - + Allows you to change and move the main and footer areas. Le permite mover y cambiar la ubicación del área principal y de pié de página. - + &Main Area Área &Principal - + &Use default location &Usar ubicación por defecto - + X position: Posición x: - + px px - + Y position: Posición y: - + Width: Ancho: - + Height: Altura: - + Use default location Usar ubicación por defecto - + Save and Preview Guardar && Previsualizar - + View the theme and save it replacing the current one or change the name to create a new theme Ver el tema y guardarlo reemplazando el actual o cambiando el nombre para crear un tema nuevo - + Theme name: Nombre: - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Este asistente le ayudará a crear y editar temas. Presione Siguiente para iniciar el proceso al establecer el fondo. - + Transitions: Transiciones: - + &Footer Area &Pie de Página @@ -4145,35 +4106,30 @@ La codificación del contenido no es UTF-8. Editar Tema - %s - + Starting color: - + Ending color: - + Background color: Color de fondo: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4871,17 +4827,17 @@ La codificación del contenido no es UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Controladores Disponibles - + Allow presentation application to be overriden Permitir tomar control sobre el programa de presentación - + %s (unavailable) %s (no disponible) @@ -4915,92 +4871,92 @@ La codificación del contenido no es UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Remoto - + OpenLP 2.0 Stage View OpenLP 2.0 Vista del Escenario - + Service Manager Gestor de Servicio - + Slide Controller Control de Diapositivas - + Alerts Alertas - + Search Buscar - + Back Atrás - + Refresh Refrezcar - + Blank Negro - + Show Mostrar - + Prev Anterior - + Next Siguiente - + Text Texto - + Show Alert Mostrar Alerta - + Go Live Proyectar - + No Results Sin Resultados - + Options Opciones - + Add to Service @@ -5900,27 +5856,27 @@ La codificación se encarga de la correcta representación de caracteres. SongsPlugin.MediaItem - + Titles Títulos - + Lyrics Letra - + CCLI License: Licensia CCLI: - + Entire Song Canción Completa - + Are you sure you want to delete the %n selected song(s)? ¿Desea realmente borrar %n canción(es) seleccionada(s)? @@ -5928,12 +5884,12 @@ La codificación se encarga de la correcta representación de caracteres. - + Maintain the lists of authors, topics and books. Administrar la lista de autores, categorías y libros. - + copy For song cloning diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts index b1c82253e..86651678d 100644 --- a/resources/i18n/et.ts +++ b/resources/i18n/et.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -102,9 +101,9 @@ Kas tahad siiski jätkata? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? - Teate tekst ei sisalda '<>' märke. + Teate tekst ei sisalda '<>' märke. Kas tahad siiski jätkata? @@ -412,38 +411,38 @@ Muudatused ei rakendu juba teenistuses olevatele salmidele. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Piibli registreerimine ja raamatute laadimine... - + Registering Language... Keele registreerimine... - + Importing %s... Importing <book name>... Raamatu %s importimine... - + Download Error Tõrge allalaadimisel - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. Valitud salmide allalaadimisel esines viga. Kontrolli oma internetiühendust ning kui see viga kordub, teata sellest veast. - + Parse Error Parsimise viga - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Sinu salmide vahemiku analüüsimisel esines viga. Kui see viga kordub, siis palun teata sellest veast. @@ -1040,12 +1039,9 @@ Pane tähele, et veebipiiblite salmid laaditakse internetist vajadusel, seega on CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - Kas oled kindel, et tahad kustutada %n valitud kohandatud slaidi? - Kas oled kindel, et tahad kustutada %n valitud kohandatud slaidi? - + Kas oled kindel, et tahad kustutada %n valitud kohandatud slaidi?Kas oled kindel, et tahad kustutada %n valitud kohandatud slaidi? @@ -1112,7 +1108,7 @@ Pane tähele, et veebipiiblite salmid laaditakse internetist vajadusel, seega on ImagePlugin.ExceptionDialog - + Select Attachment Manuse valimine @@ -1183,60 +1179,60 @@ Kas tahad teised pildid sellest hoolimata lisada? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Meediaplugin</strong><br />Meediaplugin võimaldab audio- ja videofailide taasesitamise. - + Media name singular Meedia - + Media name plural Meedia - + Media container title Meedia - + Load new media. Uue meedia laadimine. - + Add new media. Uue meedia lisamine. - + Edit the selected media. Valitud meedia muutmine. - + Delete the selected media. Valitud meedia kustutamine. - + Preview the selected media. Valitud meedia eelvaatlus. - + Send the selected media live. Valitud meedia saatmine ekraanile. - + Add the selected media to the service. Valitud meedia lisamine teenistusele. @@ -1284,7 +1280,7 @@ Kas tahad teised pildid sellest hoolimata lisada? Polnud ühtegi kuvatavat elementi, mida täiendada. - + Unsupported File Fail pole toetatud: @@ -1302,32 +1298,32 @@ Kas tahad teised pildid sellest hoolimata lisada? MediaPlugin.MediaTab - + Available Media Players Saadaolevad meediaesitajad - + %s (unavailable) %s (pole saadaval) - + Player Order Esitajate järjestus - + Down Alla - + Up Üles - + Allow media player to be overriden Meediaesitaja valikut tohib tühistada @@ -1357,17 +1353,17 @@ Kas OpenLP peaks kohe uuendamist alustama? OpenLP.AboutForm - + Credits Autorid - + License Litsents - + Contribute Aita kaasa @@ -1377,17 +1373,17 @@ Kas OpenLP peaks kohe uuendamist alustama? kompileering %s - + 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. See programm on vaba tarkvara. Sa võid seda edasi levitada ja/või muuta vastavalt GNU Üldise Avaliku Litsentsi versiooni 2 (GNU GPL 2) tingimustele, nagu need on Vaba Tarkvara Fondi poolt avaldatud. - + 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. Seda programmi levitatakse lootuses, et see on kasulik, kuid ILMA IGASUGUSE GARANTIITA; isegi KESKMISE/TAVALISE KVALITEEDI GARANTIITA või SOBIVUSELE TEATUD KINDLAKS EESMÄRGIKS. Üksikasjade suhtes vaata GNU Üldist Avalikku Litsentsi. - + Project Lead %s @@ -1420,7 +1416,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1528,109 +1524,100 @@ Uuri OpenLP kohta lähemalt: http://openlp.org/ OpenLP on kirjutanud ja seda haldavad vabatahtlikud. Kui sa tahad näha rohkem tasuta kristlikku tarkvara, kaalu kaasaaitamist, kasutades all asuvat nuppu. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Autoriõigus © 2004-2011 %s +Osade autoriõigus © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Kasutajaliidese sätted - + Number of recent files to display: Kuvatavate hiljutiste failide arv: - + Remember active media manager tab on startup Käivitumisel avatakse viimati avatud meediahalduri osa - + Double-click to send items straight to live Topeltklõps otse ekraanile saatmiseks - + Expand new service items on creation Uued teenistuse kirjed on loomisel laiendatud - + Enable application exit confirmation Rakenduse lõpetamise teabe lubamine - + Mouse Cursor Hiirekursor - + Hide mouse cursor when over display window Ekraaniakna kohal peidetakse hiirekursor - + Default Image Vaikimisi pilt - + Background color: Taustapilt: - + Image file: Pildifail: - + Open File Faili avamine - + Advanced Täpsem - + Preview items when clicked in Media Manager Meediahalduris klõpsamisel kuvatakse eelvaade - + Click to select a color. Klõpsa värvi valimiseks. - + Browse for an image file to display. Kuvatava pildi valimine. - + Revert to the default OpenLP logo. Vaikimisi OpenLP logo kasutamine. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1667,7 +1654,7 @@ Portions copyright © 2004-2012 %s Pane fail kaasa - + Description characters to enter : %s Puuduvad tähed kirjelduses: %s @@ -1675,24 +1662,24 @@ Portions copyright © 2004-2012 %s OpenLP.ExceptionForm - + Platform: %s Platvorm: %s - + Save Crash Report Vearaporti salvestamine - + Text files (*.txt *.log *.text) Tekstifailid (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1724,7 +1711,7 @@ Kui võimalik, kirjuta palun vearaport inglise keeles. - + *OpenLP Bug Report* Version: %s @@ -1861,17 +1848,17 @@ Kui võimalik, kirjuta palun vearaport inglise keeles. Vaikimisi sätted - + Downloading %s... %s allalaadimine... - + Download complete. Click the finish button to start OpenLP. Allalaadimine lõpetatud. OpenLP käivitamiseks klõpsa lõpetamise nupule. - + Enabling selected plugins... Valitud pluginate sisselülitamine... @@ -1941,32 +1928,32 @@ Kui võimalik, kirjuta palun vearaport inglise keeles. See nõustaja aitab alguses OpenLP seadistada. Alustamiseks klõpsa edasi nupule. - + Setting Up And Downloading Seadistamine ja allalaadimine - + Please wait while OpenLP is set up and your data is downloaded. Palun oota, kuni OpenLP-d seadistatakse ja andmeid allalaaditakse. - + Setting Up Seadistamine - + Click the finish button to start OpenLP. OpenLP käivitamiseks klõpsa lõpetamise nupule. - + Download complete. Click the finish button to return to OpenLP. Allalaadimine lõpetatud. Klõpsa lõpetamise nupule, et naaseda OpenLP-sse. - + Click the finish button to return to OpenLP. Klõpsa lõpetamise nupule, et naaseda OpenLP-sse. @@ -2171,170 +2158,140 @@ Esmakäivituse nõustaja lõplikuks katkestamiseks (ning OpenLP mittekäivitamis OpenLP.GeneralTab - + General Üldine - + Monitors Monitorid - + Select monitor for output display: Peamise kuva ekraan: - + Display if a single screen Kuvatakse ka, kui on ainult üks ekraan - + Application Startup Rakenduse käivitumine - + Show blank screen warning Kuvatakse tühjendatud ekraani hoiatust - + Automatically open the last service Automaatselt avatakse viimane teenistus - + Show the splash screen Käivitumisel kuvatakse logo - + Application Settings Rakenduse sätted - + Prompt to save before starting a new service Uue teenistuse alustamisel pakutakse eelmise salvestamist - + Automatically preview next item in service Teenistuse järgmise elemendi automaatne eelvaatlus - + sec s - + CCLI Details CCLI andmed - + SongSelect username: SongSelecti kasutajanimi: - + SongSelect password: SongSelecti parool: - + Display Position Kuva asukoht - + X X - + Y Y - + Height Kõrgus - + Width Laius - + Override display position Kuva asukoht määratakse jõuga - + Check for updates to OpenLP OpenLP uuenduste kontrollimine - + Unblank display when adding new live item Ekraanile saatmisel võetakse ekraani tühjendamine maha - + + Enable slide wrap-around + Viimaselt slaidilt esimesele liikumine + + + Timed slide interval: Ajastatud slaidi kestus: - + Background Audio Taustamuusika - + Start background audio paused Taustamuusika on alguses pausitud - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2352,7 +2309,7 @@ Esmakäivituse nõustaja lõplikuks katkestamiseks (ning OpenLP mittekäivitamis OpenLP.MainDisplay - + OpenLP Display OpenLP kuva @@ -2872,69 +2829,69 @@ Andmebaas: %s Ühtegi elementi pole valitud - + &Add to selected Service Item &Lisa valitud teenistuse elemendile - + You must select one or more items to preview. Sa pead valima vähemalt ühe kirje, mida eelvaadelda. - + You must select one or more items to send live. Sa pead valima vähemalt ühe kirje, mida tahad ekraanil näidata. - + You must select one or more items. Pead valima vähemalt ühe elemendi. - + You must select an existing service item to add to. Pead valima olemasoleva teenistuse, millele lisada. - + Invalid Service Item Vigane teenistuse element - + You must select a %s service item. Pead valima teenistuse elemendi %s. - + You must select one or more items to add. Pead valima vähemalt ühe kirje, mida tahad lisada. - + No Search Results Otsing ei andnud tulemusi - + Invalid File Type Sobimatut liiki fail - + Invalid File %s. Suffix not supported Sobimatu fail %s. Selle lõpuga fail ei ole toetatud - + &Clone &Klooni - + Duplicate files were found on import and were ignored. Importimisel tuvastati duplikaatfailid ning neid eirati. @@ -3089,12 +3046,12 @@ Selle lõpuga fail ei ole toetatud OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Algus</strong>: %s - + <strong>Length</strong>: %s <strong>Kestus</strong>: %s @@ -3110,189 +3067,189 @@ Selle lõpuga fail ei ole toetatud OpenLP.ServiceManager - + Move to &top Tõsta ü&lemiseks - + Move item to the top of the service. Teenistuse algusesse tõstmine. - + Move &up Liiguta &üles - + Move item up one position in the service. Elemendi liigutamine teenistuses ühe koha võrra ettepoole. - + Move &down Liiguta &alla - + Move item down one position in the service. Elemendi liigutamine teenistuses ühe koha võrra tahapoole. - + Move to &bottom Tõsta &alumiseks - + Move item to the end of the service. Teenistuse lõppu tõstmine. - + &Delete From Service &Kustuta teenistusest - + Delete the selected item from the service. Valitud elemendi kustutamine teenistusest. - + &Add New Item &Lisa uus element - + &Add to Selected Item &Lisa valitud elemendile - + &Edit Item &Muuda kirjet - + &Reorder Item &Muuda elemendi kohta järjekorras - + &Notes &Märkmed - + &Change Item Theme &Muuda elemendi kujundust - + OpenLP Service Files (*.osz) OpenLP teenistuse failid (*.osz) - + File is not a valid service. The content encoding is not UTF-8. Fail ei ole sobiv teenistus. Sisu ei ole UTF-8 kodeeringus. - + File is not a valid service. Fail pole sobiv teenistus. - + Missing Display Handler Puudub kuvakäsitleja - + Your item cannot be displayed as there is no handler to display it Seda elementi pole võimalik näidata ekraanil, kuna puudub seda käsitsev programm - + Your item cannot be displayed as the plugin required to display it is missing or inactive Seda elementi pole võimalik näidata, kuna vajalik plugin on puudu või pole aktiivne - + &Expand all &Laienda kõik - + Expand all the service items. Kõigi teenistuse kirjete laiendamine. - + &Collapse all &Ahenda kõik - + Collapse all the service items. Kõigi teenistuse kirjete ahendamine. - + Open File Faili avamine - + Moves the selection down the window. Valiku tõstmine aknas allapoole. - + Move up Liiguta üles - + Moves the selection up the window. Valiku tõstmine aknas ülespoole. - + Go Live Ekraanile - + Send the selected item to Live. Valitud kirje saatmine ekraanile. - + &Start Time &Alguse aeg - + Show &Preview Näita &eelvaadet - + Show &Live Näita &ekraanil - + Modified Service Teenistust on muudetud - + The current service has been modified. Would you like to save this service? Praegust teenistust on muudetud. Kas tahad selle teenistuse salvestada? @@ -3312,72 +3269,72 @@ Sisu ei ole UTF-8 kodeeringus. Kestus: - + Untitled Service Pealkirjata teenistus - + File could not be opened because it is corrupt. Faili pole võimalik avada, kuna see on rikutud. - + Empty File Tühi fail - + This service file does not contain any data. Selles teenistuse failis pole andmeid. - + Corrupt File Rikutud fail - + Load an existing service. Olemasoleva teenistuse laadimine. - + Save this service. Selle teenistuse salvestamine. - + Select a theme for the service. Teenistuse jaoks kujunduse valimine. - + This file is either corrupt or it is not an OpenLP 2.0 service file. See fail on rikutud või ei ole see OpenLP 2.0 teenistuse fail. - + Service File Missing Teenistuse fail puudub - + Slide theme Slaidi kujundus - + Notes Märkmed - + Edit Muuda - + Service copy only Ainult teenistuse koopia @@ -3411,12 +3368,12 @@ Sisu ei ole UTF-8 kodeeringus. Kiirklahv - + Duplicate Shortcut Dubleeriv kiirklahv - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Kiirklahv "%s" on juba seotud teise tegevusega, kasuta mingit muud kiirklahvi. @@ -3469,77 +3426,77 @@ Sisu ei ole UTF-8 kodeeringus. OpenLP.SlideController - + Hide Peida - + Go To Mine - + Blank Screen Ekraani tühjendamine - + Blank to Theme Kujunduse tausta näitamine - + Show Desktop Töölaua näitamine - + Previous Service Eelmine teenistus - + Next Service Järgmine teenistus - + Escape Item Kuva sulgemine - + Move to previous. Eelmisele liikumine. - + Move to next. Järgmisele liikumine. - + Play Slides Slaidide esitamine - + Delay between slides in seconds. Viivitus slaidide vahel sekundites. - + Move to live. Ekraanile saatmine. - + Add to Service. Teenistusele lisamine. - + Edit and reload song preview. Laulu muutmine ja eelvaate uuesti laadimine. @@ -3549,7 +3506,7 @@ Sisu ei ole UTF-8 kodeeringus. Meedia esitamise alustamine. - + Pause audio. Audio pausimine. @@ -3564,47 +3521,47 @@ Sisu ei ole UTF-8 kodeeringus. Meedia esitamise peatamine. - + Video position. Video asukoht. - + Audio Volume. Helivaljus. - + Go to "Verse" Mine salmile - + Go to "Chorus" Mine refräänile - + Go to "Bridge" Mine vahemängule - + Go to "Pre-Chorus" Mine eelrefräänile - + Go to "Intro" Mine sissejuhatusele - + Go to "Ending" Mine lõpetusele - + Go to "Other" Mine muule osale @@ -3698,27 +3655,27 @@ Sisu ei ole UTF-8 kodeeringus. OpenLP.ThemeForm - + Select Image Pildi valimine - + Theme Name Missing Kujundusel puudub nimi - + There is no name for this theme. Please enter one. Kujundusel ei ole nime. Palun sisesta nimi. - + Theme Name Invalid Sobimatu kujunduse nimi - + Invalid theme name. Please enter one. Kujunduse nimi pole sobiv. Palun sisesta sobiv nimi. @@ -3791,62 +3748,62 @@ Sisu ei ole UTF-8 kodeeringus. Määra &globaalseks vaikeväärtuseks - + %s (default) %s (vaikimisi) - + You must select a theme to edit. Pead valima kujunduse, mida muuta. - + You are unable to delete the default theme. Vaikimisi kujundust pole võimalik kustutada. - + Theme %s is used in the %s plugin. Kujundust %s kasutatakse pluginas %s. - + You have not selected a theme. Sa ei ole kujundust valinud. - + Save Theme - (%s) Salvesta kujundus - (%s) - + Theme Exported Kujundus eksporditud - + Your theme has been successfully exported. Sinu kujundus on edukalt eksporditud. - + Theme Export Failed Kujunduse eksportimine nurjus - + Your theme could not be exported due to an error. Sinu kujundust polnud võimalik eksportida, kuna esines viga. - + Select Theme Import File Importimiseks kujunduse faili valimine - + File is not a valid theme. See fail ei ole sobilik kujundus. @@ -3866,52 +3823,52 @@ Sisu ei ole UTF-8 kodeeringus. &Ekspordi kujundus - + You must select a theme to rename. Pead valima kujunduse, mida ümber nimetada. - + Rename Confirmation Ümbernimetamise kinnitus - + Rename %s theme? Kas anda kujundusele %s uus nimi? - + You must select a theme to delete. Pead valima kujunduse, mida tahad kustutada. - + Delete Confirmation Kustutamise kinnitus - + Delete %s theme? Kas kustutada kujundus %s? - + Validation Error Valideerimise viga - + A theme with this name already exists. Sellenimeline teema on juba olemas. - + OpenLP Themes (*.theme *.otz) OpenLP kujundused (*.theme *.otz) - + Copy of %s Copy of <theme name> %s (koopia) @@ -3920,222 +3877,222 @@ Sisu ei ole UTF-8 kodeeringus. OpenLP.ThemeWizard - + Theme Wizard Kujunduse nõustaja - + Welcome to the Theme Wizard Tere tulemast kujunduse nõustajasse - + Set Up Background Tausta määramine - + Set up your theme's background according to the parameters below. Määra kujunduse taust, kasutades järgnevaid parameetreid. - + Background type: Tausta liik: - + Solid Color Ühtlane värv - + Gradient Üleminek - + Color: Värvus: - + Gradient: Üleminek: - + Horizontal Horisontaalne - + Vertical Vertikaalne - + Circular Radiaalne - + Top Left - Bottom Right Loodest kagusse - + Bottom Left - Top Right Edelast kirdesse - + Main Area Font Details Peamise teksti üksikasjad - + Define the font and display characteristics for the Display text Määra font ja teised teksti omadused - + Font: Font: - + Size: Suurus: - + Line Spacing: Reavahe: - + &Outline: &Kontuurjoon: - + &Shadow: &Vari: - + Bold Rasvane - + Italic Kaldkiri - + Footer Area Font Details Jaluse fondi üksikasjad - + Define the font and display characteristics for the Footer text Määra jaluse font ja muud omadused - + Text Formatting Details Teksti vorminduse üksikasjad - + Allows additional display formatting information to be defined Võimaldab määrata lisavorminduse andmeid - + Horizontal Align: Rõhtjoondus: - + Left Vasakul - + Right Paremal - + Center Keskel - + Output Area Locations Väljundala asukoht - + Allows you to change and move the main and footer areas. Võimaldab muuta ja liigutada peamist ja jaluse ala. - + &Main Area &Peamine ala - + &Use default location &Vaikimisi asukoha kasutamine - + X position: X-asukoht: - + px px - + Y position: Y-asukoht: - + Width: Laius: - + Height: Kõrgus: - + Use default location Vaikimisi asukoha kasutamine - + Save and Preview Salvestamine ja eelvaade - + View the theme and save it replacing the current one or change the name to create a new theme Vaata kujundus üle ja salvesta see, asendades olemasolev, või muuda nime, et luua uus kujundus - + Theme name: Kujunduse nimi: @@ -4145,50 +4102,45 @@ Sisu ei ole UTF-8 kodeeringus. Teema muutmine - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. See nõustaja aitab kujundusi luua ja muuta. Klõpsa edasi nupul, et alustada tausta määramisest. - + Transitions: Üleminekud: - + &Footer Area &Jaluse ala - + Starting color: Algusvärvus: - + Ending color: Lõppvärvus: - + Background color: Tausta värvus: - + Justify Rööpjoondus - + Layout Preview Kujunduse eelvaade - - - Transparent - - OpenLP.ThemesTab @@ -4583,7 +4535,7 @@ Sisu ei ole UTF-8 kodeeringus. - © + © Copyright symbol. © @@ -4886,17 +4838,17 @@ Sisu ei ole UTF-8 kodeeringus. PresentationPlugin.PresentationTab - + Available Controllers Saadaolevad juhtijad - + Allow presentation application to be overriden Esitlusrakendust on lubatud asendada - + %s (unavailable) %s (pole saadaval) @@ -4930,92 +4882,92 @@ Sisu ei ole UTF-8 kodeeringus. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 kaugpult - + OpenLP 2.0 Stage View OpenLP 2.0 ekraanivaade - + Service Manager Teenistuse haldur - + Slide Controller Slaidikontroller - + Alerts Teated - + Search Otsi - + Back Tagasi - + Refresh Värskenda - + Blank Tühi - + Show Näita - + Prev Eelm - + Next Järgm - + Text Tekst - + Show Alert Kuva teade - + Go Live Ekraanile - + No Results Tulemusi pole - + Options Valikud - + Add to Service Lisa teenistusele @@ -5916,40 +5868,37 @@ Kodeering on vajalik märkide õige esitamise jaoks. SongsPlugin.MediaItem - + Titles Pealkirjad - + Lyrics Laulusõnad - + CCLI License: CCLI litsents: - + Entire Song Kogu laulust - + Are you sure you want to delete the %n selected song(s)? - - Kas sa oled kindel, et soovid kustutada %n valitud laulu? - Kas sa oled kindel, et soovid kustutada %n valitud laulu? - + Kas sa oled kindel, et soovid kustutada %n valitud laulu?Kas sa oled kindel, et soovid kustutada %n valitud laulu? - + Maintain the lists of authors, topics and books. Autorite, teemade ja laulikute loendi haldamine. - + copy For song cloning koopia @@ -6243,4 +6192,4 @@ Kodeering on vajalik märkide õige esitamise jaoks. Muu - + \ No newline at end of file diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts index b08adbd1c..167ec5a60 100644 --- a/resources/i18n/fr.ts +++ b/resources/i18n/fr.ts @@ -1040,7 +1040,7 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Être vous sur de vouloir effacer la %n diapositive personnel sélectionnée ? @@ -1284,7 +1284,7 @@ Voulez-vous ajouter de toute façon d'autres images ? Il n'y avait aucun élément d'affichage à modifier. - + Unsupported File Fichier pas supporté @@ -1302,32 +1302,32 @@ Voulez-vous ajouter de toute façon d'autres images ? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) %s (indisponible) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1531,108 +1531,99 @@ OpenLP est écrit et maintenu par des bénévoles. Si vous souhaitez voir plus d - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Copyright de composant © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Propriétés de l'interface utilisateur - + Number of recent files to display: Nombre de fichiers récents a afficher : - + Remember active media manager tab on startup Se souvenir de l'onglet actif du gestionnaire de média au démarrage - + Double-click to send items straight to live Double-cliquer pour envoyer les éléments directement en live - + Expand new service items on creation Étends les nouveaux éléments du service a la création - + Enable application exit confirmation Demande une confirmation avant de quitter l'application - + Mouse Cursor Curseur de la souris - + Hide mouse cursor when over display window Cache le curseur de la souris quand elle se trouve sur l'écran live - + Default Image Image par défaut - + Background color: Couleur de fond : - + Image file: Fichier image : - + Open File Ouvre un fichier - + Preview items when clicked in Media Manager Prévisualise l’élément quand on le clique dans le gestionnaire de média - + Advanced Avancé - + Click to select a color. Clique pour sélectionner une couleur. - + Browse for an image file to display. Parcoure pour trouver une image a afficher. - + Revert to the default OpenLP logo. Retour au logo OpenLP par défaut. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1796,17 +1787,17 @@ Version : %s OpenLP.FirstTimeWizard - + Downloading %s... Téléchargement %s... - + Download complete. Click the finish button to start OpenLP. Téléchargement terminer. Clic le bouton terminer pour démarrer OpenLP. - + Enabling selected plugins... Active le module sélectionné... @@ -1941,22 +1932,22 @@ Version : %s Cet assistant va vous aider à configurer OpenLP pour sa première utilisation. Cliquez sur le bouton suivant pour démarrer. - + Setting Up And Downloading Mise en place et téléchargement - + Please wait while OpenLP is set up and your data is downloaded. Merci d'attendre pendant qu'OpenLP ce met en place que que vos données soient téléchargée. - + Setting Up Mise en place - + Click the finish button to start OpenLP. Cliquer sur le bouton pour démarrer OpenLP. @@ -1966,12 +1957,12 @@ Version : %s Diapositives personnalisées - + Download complete. Click the finish button to return to OpenLP. Téléchargement terminé. Cliquez sur le bouton Terminer pour revenir à OpenLP. - + Click the finish button to return to OpenLP. Cliquez sur le bouton Terminer pour revenir à OpenLP. @@ -2171,170 +2162,140 @@ Pour annuler l'assistant de démarrage complètement (et ne pas démarrer O OpenLP.GeneralTab - + General Général - + Monitors Monitors - + Select monitor for output display: Sélectionne l’écran pour la sortie d'affichage : - + Display if a single screen Affiche si il n'y a qu'un écran - + Application Startup Démarrage de l'application - + Show blank screen warning Afficher un avertissement d'écran vide - + Automatically open the last service Ouvre automatiquement le dernier service - + Show the splash screen Affiche l'écran de démarrage - + Check for updates to OpenLP Regarde s'il y a des mise à jours d'OpenLP - + Application Settings Préférence d'application - + Prompt to save before starting a new service Demande d'enregistrer avant de commencer un nouveau service - + Automatically preview next item in service Prévisualise automatiquement le prochain élément de service - + sec sec - + CCLI Details CCLI détails - + SongSelect username: Nom d'utilisateur SongSelect : - + SongSelect password: Mot de passe SongSelect : - + Display Position Position d'affichage - + X X - + Y Y - + Height Hauteur - + Width Largeur - + Override display position Surcharge la position d'affichage - + Unblank display when adding new live item Supprime l'écran noir lors de l'ajout de nouveaux élément direct - + + Enable slide wrap-around + Enclenche le passage automatique des diapositives + + + Timed slide interval: Intervalle de temps entre les diapositives : - + Background Audio Son en fond - + Start background audio paused Démarrer le son de fond mis en pause - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2352,7 +2313,7 @@ Pour annuler l'assistant de démarrage complètement (et ne pas démarrer O OpenLP.MainDisplay - + OpenLP Display Affichage OpenLP @@ -2872,69 +2833,69 @@ Base de données: %s Pas d'éléments sélectionnés - + &Add to selected Service Item &Ajoute à l'élément sélectionné du service - + You must select one or more items to preview. Vous devez sélectionner un ou plusieurs éléments a prévisualiser. - + You must select one or more items to send live. Vous devez sélectionner un ou plusieurs éléments pour les envoyer en direct. - + You must select one or more items. Vous devez sélectionner un ou plusieurs éléments. - + You must select an existing service item to add to. Vous devez sélectionner un élément existant du service pour l'ajouter. - + Invalid Service Item Élément du service invalide - + You must select a %s service item. Vous devez sélectionner un %s élément du service. - + You must select one or more items to add. Vous devez sélectionner un ou plusieurs éléments a ajouter. - + No Search Results Pas de résultats de recherche - + &Clone %Clone - + Invalid File Type Type de fichier invalide - + Invalid File %s. Suffix not supported Fichier invalide %s. Suffixe pas supporter - + Duplicate files were found on import and were ignored. Des fichiers dupliqués on été trouvé dans l'import et ont été ignoré. @@ -3089,12 +3050,12 @@ Suffixe pas supporter OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Début</strong> : %s - + <strong>Length</strong>: %s <strong>Longueur</strong> : %s @@ -3235,34 +3196,34 @@ Suffixe pas supporter Ouvre un fichier - + OpenLP Service Files (*.osz) Fichier service OpenLP (*.osz) - + File is not a valid service. The content encoding is not UTF-8. Le fichier n'est un service valide. Le contenu n'est pas de l'UTF-8. - + File is not a valid service. Le fichier n'est pas un service valide. - + Missing Display Handler Délégué d'affichage manquent - + Your item cannot be displayed as there is no handler to display it Votre élément ne peut pas être affiché il n'y a pas de délégué pour l'afficher - + Your item cannot be displayed as the plugin required to display it is missing or inactive Votre élément ne peut pas être affiché le module nécessaire pour l'afficher est manquant ou inactif @@ -3297,22 +3258,22 @@ Le contenu n'est pas de l'UTF-8. Le service courant à été modifier. Voulez-vous l'enregistrer ? - + File could not be opened because it is corrupt. Le fichier n'a pas pu être ouvert car il est corrompu. - + Empty File Fichier vide - + This service file does not contain any data. Ce fichier de service ne contiens aucune données. - + Corrupt File Fichier corrompu @@ -3352,17 +3313,17 @@ Le contenu n'est pas de l'UTF-8. Sélectionne un thème pour le service. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Ce fichier est sois corrompu ou n'est pas un fichier de service OpenLP 2.0. - + Slide theme Thème de diapositive - + Notes Notes @@ -3372,12 +3333,12 @@ Le contenu n'est pas de l'UTF-8. Fichier de service manquant - + Edit - + Service copy only @@ -3469,77 +3430,77 @@ Le contenu n'est pas de l'UTF-8. OpenLP.SlideController - + Hide Cache - + Blank Screen Écran noir - + Blank to Theme Thème vide - + Show Desktop Affiche le bureau - + Go To Aller à - + Previous Service Service précédent - + Next Service Service suivant - + Escape Item Élément échappement - + Move to previous. Déplace au précédant. - + Move to next. Déplace au suivant. - + Play Slides Joue les diapositives - + Delay between slides in seconds. Intervalle entre les diapositives en secondes. - + Move to live. Affiche en direct. - + Add to Service. Ajoute au service. - + Edit and reload song preview. Édite et recharge la prévisualisation du chant. @@ -3549,7 +3510,7 @@ Le contenu n'est pas de l'UTF-8. Joue le média. - + Pause audio. @@ -3574,37 +3535,37 @@ Le contenu n'est pas de l'UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3698,27 +3659,27 @@ Le contenu n'est pas de l'UTF-8. OpenLP.ThemeForm - + Select Image Sélectionne l'image - + Theme Name Missing Nom du thème manquant - + There is no name for this theme. Please enter one. Il n'y a pas ne nom pour ce thème. Veillez en introduire un. - + Theme Name Invalid Nom du thème invalide - + Invalid theme name. Please enter one. Nom du thème invalide. Veuillez en introduire un. @@ -3925,270 +3886,265 @@ Le contenu n'est pas de l'UTF-8. Édite le thème - %s - + Theme Wizard Assistant thème - + Welcome to the Theme Wizard Bienvenue dans l'assistant thème - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Cet assistant va vous aider à créer et éditer votre thème. Cliquer sur la bouton suivant pour démarrer le processus par configurer votre fond. - + Set Up Background Établir le font - + Set up your theme's background according to the parameters below. Établir le fond de votre thème en fonction des paramètre si dessous. - + Background type: Type de font : - + Solid Color Couleur unie - + Gradient Dégrader - + Color: Couleur : - + Gradient: Dégrader : - + Horizontal Horizontal - + Vertical Vertical - + Circular Circulaire - + Top Left - Bottom Right Haut gauche - Bas droite - + Bottom Left - Top Right Bas gauche - Haut droite - + Main Area Font Details Aire principale détails de police - + Define the font and display characteristics for the Display text Définir la police et les caractéristique d'affichage pour afficher le text - + Font: Police : - + Size: Taille : - + Line Spacing: Espace des lignes : - + &Outline: &Contour : - + &Shadow: &Ombre : - + Bold Gras - + Italic Italique - + Footer Area Font Details Détailles de la police du pied de page - + Define the font and display characteristics for the Footer text Définir la police et les caractéristiques d'affichage du texte en pied de page - + Text Formatting Details Détails de formatage du texte - + Allows additional display formatting information to be defined Permet de définir des paramètre d'affichage supplémentaire - + Horizontal Align: Alignement horizontal : - + Left Gauche - + Right Droite - + Center Centrer - + Transitions: Traductions : - + Output Area Locations Emplacement de la zone d'affichage - + Allows you to change and move the main and footer areas. Vous permettre de déplacer les zone principale et de pied de page. - + &Main Area Zone &principale - + &Use default location &Utilise l'emplacement par défaut - + X position: Position x : - + px px - + Y position: Position y : - + Width: Largeur : - + Height: Hauteur : - + &Footer Area Zone de &pied de page - + Use default location Utilise l'emplacement pas défaut - + Save and Preview Enregistre et prévisualise - + View the theme and save it replacing the current one or change the name to create a new theme Visualise le thème et l'enregistre a la place du thème courent, ou change le nom pour en créer un nouveau - + Theme name: Nom du thème : - + Starting color: Couleur de début : - + Ending color: Couleur de fin : - + Background color: Couleur de fond : - + Justify Justifier - + Layout Preview Prévisualise la mise en page - - - Transparent - - OpenLP.ThemesTab @@ -4886,17 +4842,17 @@ Le contenu n'est pas de l'UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Contrôleurs disponibles - + Allow presentation application to be overriden Permet de surcharger l'application de présentation - + %s (unavailable) %s (indisponible) @@ -4930,92 +4886,92 @@ Le contenu n'est pas de l'UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 à distance - + OpenLP 2.0 Stage View OpenLP 2.0 vue scène - + Service Manager Gestionnaire de services - + Slide Controller Controlleur de slides - + Alerts Alertes - + Search Recherche - + Back Arrière - + Refresh Rafraîchir - + Blank Vide - + Show Affiche - + Prev Préc - + Next Suiv - + Text Texte - + Show Alert Affiche une alerte - + Go Live Lance en direct - + No Results Pas de résultats - + Options Options - + Add to Service Ajoute au service @@ -5917,22 +5873,22 @@ L'enccodage est responsable de l'affichage correct des caractères. SongsPlugin.MediaItem - + Entire Song L'entier du Chant - + Titles Titres - + Lyrics Paroles - + Are you sure you want to delete the %n selected song(s)? Êtes vous sur de vouloir supprimer le(s) %n chant(s) sélectionné(s) ? @@ -5940,17 +5896,17 @@ L'enccodage est responsable de l'affichage correct des caractères. - + CCLI License: License CCLI : - + Maintain the lists of authors, topics and books. Maintenir la liste des auteur, sujet et psautiers. - + copy For song cloning copier diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts index 79b5e5b48..0f9b8a3d9 100644 --- a/resources/i18n/hu.ts +++ b/resources/i18n/hu.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -102,7 +101,7 @@ Folytatható? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? Az értesítő szöveg nem tartalmaz „<>” karaktereket. Folytatható? @@ -412,38 +411,38 @@ A módosítások nem érintik a már a szolgálati sorrendben lévő verseket. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Biblia regisztrálása és a könyvek letöltése… - + Registering Language... Nyelv regisztrálása… - + Importing %s... Importing <book name>... Importálás: %s… - + Download Error Letöltési hiba - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. Probléma történt a kijelölt versek letöltésekor. Kérem, ellenőrizd a az internetkapcsolatot, és ha a hiba nem oldódik meg, fontold meg a hiba bejelentését. - + Parse Error Feldolgozási hiba - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Probléma történt a kiválasztott versek kicsomagolásakor. Ha a hiba nem oldódik meg, fontold meg a hiba bejelentését. @@ -1040,11 +1039,9 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - - + @@ -1111,7 +1108,7 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor ImagePlugin.ExceptionDialog - + Select Attachment Melléklet kijelölése @@ -1182,60 +1179,60 @@ Szeretnél más képeket megadni? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Média bővítmény</strong><br />A média bővítmény hangok és videók lejátszását teszi lehetővé. - + Media name singular Média - + Media name plural Média - + Media container title Média - + Load new media. Új médiafájl betöltése. - + Add new media. Új médiafájl hozzáadása. - + Edit the selected media. A kijelölt médiafájl szerkesztése. - + Delete the selected media. A kijelölt médiafájl törlése. - + Preview the selected media. A kijelölt médiafájl előnézete. - + Send the selected media live. A kijelölt médiafájl élő adásba küldése. - + Add the selected media to the service. A kijelölt médiafájl hozzáadása a szolgálati sorrendhez. @@ -1283,7 +1280,7 @@ Szeretnél más képeket megadni? Nem volt módosított megjelenő elem. - + Unsupported File Nem támogatott fájl @@ -1301,32 +1298,32 @@ Szeretnél más képeket megadni? MediaPlugin.MediaTab - + Available Media Players Elérhető médialejátszók - + %s (unavailable) %s (elérhetetlen) - + Player Order Lejátszó sorrend - + Down Le - + Up Fel - + Allow media player to be overriden Lejátszó felülírásának engedélyezése @@ -1356,17 +1353,17 @@ Frissítheti most az OpenLP? OpenLP.AboutForm - + Credits Közreműködők - + License Licenc - + Contribute Részvétel @@ -1376,17 +1373,17 @@ Frissítheti most az OpenLP? %s összeépítés - + 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. Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki. - + 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. Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve. A további részleteket lásd alább. - + Project Lead %s @@ -1419,7 +1416,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1529,109 +1526,100 @@ Többet az OpenLP-ről: http://openlp.org/ Az OpenLP-t önkéntesek készítették és tartják karban. Ha szeretnél több keresztény számítógépes programot, fontold meg a projektben való részvételt az alábbi gombbal. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Szerzői jog © 2004-2011 %s +Részleges szerzői jog © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Felhasználói felület beállításai - + Number of recent files to display: Előzmények megjelenítésének hossza: - + Remember active media manager tab on startup Újraindításkor az aktív médiakezelő fülek visszaállítása - + Double-click to send items straight to live Dupla kattintással az elemek azonnali élő adásba küldése - + Expand new service items on creation A sorrendbe kerülő elemek kibontása létrehozáskor - + Enable application exit confirmation Kilépési megerősítés engedélyezése - + Mouse Cursor Egérmutató - + Hide mouse cursor when over display window Egérmutató elrejtése a vetítési képernyő felett - + Default Image Alapértelmezett kép - + Background color: Háttérszín: - + Image file: Kép fájl: - + Open File Fájl megnyitása - + Advanced Haladó - + Preview items when clicked in Media Manager Elem előnézete a médiakezelőben való kattintáskor - + Click to select a color. Kattintás a szín kijelöléséhez. - + Browse for an image file to display. Tallózd be a megjelenítendő képfájlt. - + Revert to the default OpenLP logo. Az eredeti OpenLP logó visszaállítása. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1668,7 +1656,7 @@ Portions copyright © 2004-2012 %s Fájl csatolása - + Description characters to enter : %s Leírás: %s @@ -1676,24 +1664,24 @@ Portions copyright © 2004-2012 %s OpenLP.ExceptionForm - + Platform: %s Platform: %s - + Save Crash Report Összeomlási jelentés mentése - + Text files (*.txt *.log *.text) Szöveg fájlok (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1724,7 +1712,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1860,17 +1848,17 @@ Version: %s Alapértelmezett beállítások - + Downloading %s... Letöltés %s… - + Download complete. Click the finish button to start OpenLP. Letöltés kész. Kattints a Befejezés gombra az OpenLP indításához. - + Enabling selected plugins... Kijelölt bővítmények engedélyezése… @@ -1940,32 +1928,32 @@ Version: %s A tündér segít elkezdeni az OpenLP használatát. Kattints az alábbi Következő gombra az indításhoz. - + Setting Up And Downloading Beállítás és letöltés - + Please wait while OpenLP is set up and your data is downloaded. Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok letöltődnek. - + Setting Up Beállítás - + Click the finish button to start OpenLP. Kattints a Befejezés gombra az OpenLP indításához. - + Download complete. Click the finish button to return to OpenLP. Letöltés kész. Kattints a Befejezés gombra az OpenLP-hez való visszatéréshez. - + Click the finish button to return to OpenLP. Kattints a Befejezés gombra az OpenLP-hez való visszatéréshez. @@ -2170,170 +2158,140 @@ A tündér teljes leállításához (és az OpenLP további megkerüléséhez) k OpenLP.GeneralTab - + General Általános - + Monitors Monitorok - + Select monitor for output display: Jelöld ki a vetítési képernyőt: - + Display if a single screen Megjelenítés egy képernyő esetén - + Application Startup Alkalmazás indítása - + Show blank screen warning Figyelmeztetés megjelenítése az elsötétített képernyőről - + Automatically open the last service Utolsó sorrend automatikus megnyitása - + Show the splash screen Indítóképernyő megjelenítése - + Application Settings Alkalmazás beállítások - + Prompt to save before starting a new service Rákérdezés mentésre új sorrend létrehozása előtt - + Automatically preview next item in service Következő elem automatikus előnézete a sorrendben - + sec mp - + CCLI Details CCLI részletek - + SongSelect username: SongSelect felhasználói név: - + SongSelect password: SongSelect jelszó: - + Display Position Megjelenítés pozíciója - + X X - + Y Y - + Height Magasság - + Width Szélesség - + Override display position Megjelenítési pozíció felülírása - + Check for updates to OpenLP Frissítés keresése az OpenLP-hez - + Unblank display when adding new live item Képernyő elsötétítésének visszavonása új elem élő adásba küldésekor - + + Enable slide wrap-around + Körkörös diák engedélyezése + + + Timed slide interval: Időzített dia intervalluma: - + Background Audio Háttérzene - + Start background audio paused Leállított háttérzene indítása - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2351,7 +2309,7 @@ A tündér teljes leállításához (és az OpenLP további megkerüléséhez) k OpenLP.MainDisplay - + OpenLP Display OpenLP megjelenítés @@ -2871,69 +2829,69 @@ Adatbázis: %s Nincs kijelölt elem - + &Add to selected Service Item &Hozzáadás a kijelölt sorrend elemhez - + You must select one or more items to preview. Ki kell jelölni egy elemet az előnézethez. - + You must select one or more items to send live. Ki kell jelölni egy élő adásba küldendő elemet. - + You must select one or more items. Ki kell jelölni egy vagy több elemet. - + You must select an existing service item to add to. Ki kell jelölni egy sorrend elemet, amihez hozzá szeretné adni. - + Invalid Service Item Érvénytelen sorrend elem - + You must select a %s service item. Ki kell jelölni egy %s sorrend elemet. - + You must select one or more items to add. Ki kell jelölni egy vagy több elemet a hozzáadáshoz. - + No Search Results Nincs találat - + Invalid File Type Érvénytelen fájltípus - + Invalid File %s. Suffix not supported Érvénytelen fájl: %s. Az utótag nem támogatott - + &Clone &Klónozás - + Duplicate files were found on import and were ignored. Importálás közben duplikált fájl bukkant elő, figyelmet kívül lett hagyva. @@ -3088,12 +3046,12 @@ Az utótag nem támogatott OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Kezdés</strong>: %s - + <strong>Length</strong>: %s <strong>Hossz</strong>: %s @@ -3109,189 +3067,189 @@ Az utótag nem támogatott OpenLP.ServiceManager - + Move to &top Mozgatás &felülre - + Move item to the top of the service. Elem mozgatása a sorrend elejére. - + Move &up Mozgatás f&eljebb - + Move item up one position in the service. Elem mozgatása a sorrendben eggyel feljebb. - + Move &down Mozgatás &lejjebb - + Move item down one position in the service. Elem mozgatása a sorrendben eggyel lejjebb. - + Move to &bottom Mozgatás &alulra - + Move item to the end of the service. Elem mozgatása a sorrend végére. - + &Delete From Service &Törlés a sorrendből - + Delete the selected item from the service. Kijelölt elem törlése a sorrendből. - + &Add New Item Új elem &hozzáadása - + &Add to Selected Item &Hozzáadás a kijelölt elemhez - + &Edit Item &Elem szerkesztése - + &Reorder Item Elem újra&rendezése - + &Notes &Jegyzetek - + &Change Item Theme Elem témájának &módosítása - + OpenLP Service Files (*.osz) OpenLP sorrend fájlok (*.osz) - + File is not a valid service. The content encoding is not UTF-8. A fájl nem érvényes sorrend. A tartalom kódolása nem UTF-8. - + File is not a valid service. A fájl nem érvényes sorrend. - + Missing Display Handler Hiányzó képernyő kezelő - + Your item cannot be displayed as there is no handler to display it Az elemet nem lehet megjeleníteni, mert nincs kezelő, amely megjelenítené - + Your item cannot be displayed as the plugin required to display it is missing or inactive Az elemet nem lehet megjeleníteni, mert a bővítmény, amely kezelné, hiányzik vagy inaktív - + &Expand all Mind &kibontása - + Expand all the service items. Minden sorrend elem kibontása. - + &Collapse all Mind össze&csukása - + Collapse all the service items. Minden sorrend elem összecsukása. - + Open File Fájl megnyitása - + Moves the selection down the window. A kiválasztás lejjebb mozgatja az ablakot. - + Move up Mozgatás feljebb - + Moves the selection up the window. A kiválasztás feljebb mozgatja az ablakot. - + Go Live Élő adásba - + Send the selected item to Live. A kiválasztott elem élő adásba küldése. - + &Start Time &Kezdő időpont - + Show &Preview &Előnézet megjelenítése - + Show &Live Élő &adás megjelenítése - + Modified Service Módosított sorrend - + The current service has been modified. Would you like to save this service? Az aktuális sorrend módosult. Szeretnéd elmenteni? @@ -3311,72 +3269,72 @@ A tartalom kódolása nem UTF-8. Lejátszási idő: - + Untitled Service Névtelen szolgálat - + File could not be opened because it is corrupt. A fájl nem nyitható meg, mivel sérült. - + Empty File Üres fájl - + This service file does not contain any data. A szolgálati sorrend fájl nem tartalmaz semmilyen adatot. - + Corrupt File Sérült fájl - + Load an existing service. Egy meglévő szolgálati sorrend betöltése. - + Save this service. Sorrend mentése. - + Select a theme for the service. Jelöljön ki egy témát a sorrendhez. - + This file is either corrupt or it is not an OpenLP 2.0 service file. A fájl vagy sérült vagy nem egy OpenLP 2.0 szolgálati sorrend fájl. - + Service File Missing Hiányzó sorrend fájl - + Slide theme Dia téma - + Notes Jegyzetek - + Edit Szerkesztés - + Service copy only A sorrend csak másolható @@ -3410,12 +3368,12 @@ A tartalom kódolása nem UTF-8. Gyorsbillentyű - + Duplicate Shortcut Azonos gyorsbillentyű - + The shortcut "%s" is already assigned to another action, please use a different shortcut. A „%s” gyorsbillentyű már foglalt. @@ -3468,77 +3426,77 @@ A tartalom kódolása nem UTF-8. OpenLP.SlideController - + Hide Elrejtés - + Go To Ugrás - + Blank Screen Képernyő elsötétítése - + Blank to Theme Elsötétítés a témára - + Show Desktop Asztal megjelenítése - + Previous Service Előző sorrend - + Next Service Következő sorrend - + Escape Item Kilépés az elemből - + Move to previous. Mozgatás az előzőre. - + Move to next. Mozgatás a következőre. - + Play Slides Diák vetítése - + Delay between slides in seconds. Diák közötti késleltetés másodpercben. - + Move to live. Élő adásba küldés. - + Add to Service. Hozzáadás a sorrendhez. - + Edit and reload song preview. Szerkesztés és az dal előnézetének újraolvasása. @@ -3548,7 +3506,7 @@ A tartalom kódolása nem UTF-8. Médialejátszás indítása. - + Pause audio. Hang szüneteltetése. @@ -3563,47 +3521,47 @@ A tartalom kódolása nem UTF-8. Médialejátszás szüneteltetése. - + Video position. Videó pozíció. - + Audio Volume. Hangerő. - + Go to "Verse" Ugrás a versszakra - + Go to "Chorus" Ugrás a refrénre - + Go to "Bridge" Ugrás a mellékdalra - + Go to "Pre-Chorus" Ugrás az elő-refrénre - + Go to "Intro" Ugrás a bevezetésre - + Go to "Ending" Ugrás a befejezésre - + Go to "Other" Ugrás az egyébre @@ -3697,27 +3655,27 @@ A tartalom kódolása nem UTF-8. OpenLP.ThemeForm - + Select Image Kép kijelölése - + Theme Name Missing Téma neve nincs megadva - + There is no name for this theme. Please enter one. A témának nincs neve, meg kell adni. - + Theme Name Invalid Érvénytelen téma név - + Invalid theme name. Please enter one. A téma neve érvénytelen, érvényeset kell megadni. @@ -3790,62 +3748,62 @@ A tartalom kódolása nem UTF-8. Beállítás &globális alapértelmezetté - + %s (default) %s (alapértelmezett) - + You must select a theme to edit. Ki kell jelölni egy témát a szerkesztéshez. - + You are unable to delete the default theme. Az alapértelmezett témát nem lehet törölni. - + Theme %s is used in the %s plugin. A(z) %s témát a(z) %s bővítmény használja. - + You have not selected a theme. Nincs kijelölve egy téma sem. - + Save Theme - (%s) Téma mentése – (%s) - + Theme Exported Téma exportálva - + Your theme has been successfully exported. A téma sikeresen exportálásra került. - + Theme Export Failed A téma exportálása nem sikerült - + Your theme could not be exported due to an error. A témát nem sikerült exportálni egy hiba miatt. - + Select Theme Import File Importálandó téma fájl kijelölése - + File is not a valid theme. Nem érvényes témafájl. @@ -3865,52 +3823,52 @@ A tartalom kódolása nem UTF-8. Téma e&xportálása - + You must select a theme to rename. Ki kell jelölni egy témát az átnevezéséhez. - + Rename Confirmation Átnevezési megerősítés - + Rename %s theme? A téma átnevezhető: %s? - + You must select a theme to delete. Ki kell jelölni egy témát a törléshez. - + Delete Confirmation Törlés megerősítése - + Delete %s theme? Törölhető ez a téma: %s? - + Validation Error Érvényességi hiba - + A theme with this name already exists. Ilyen fájlnéven már létezik egy téma. - + OpenLP Themes (*.theme *.otz) OpenLP témák (*.theme *.otz) - + Copy of %s Copy of <theme name> %s másolata @@ -3919,222 +3877,222 @@ A tartalom kódolása nem UTF-8. OpenLP.ThemeWizard - + Theme Wizard Téma tündér - + Welcome to the Theme Wizard Üdvözlet a téma tündérben - + Set Up Background Háttér beállítása - + Set up your theme's background according to the parameters below. A téma háttere az alábbi paraméterekkel állítható be. - + Background type: Háttér típusa: - + Solid Color Homogén szín - + Gradient Színátmenet - + Color: Szín: - + Gradient: Színátmenet: - + Horizontal Vízszintes - + Vertical Függőleges - + Circular Körkörös - + Top Left - Bottom Right Bal felső sarokból jobb alsó sarokba - + Bottom Left - Top Right Bal alsó sarokból jobb felső sarokba - + Main Area Font Details Fő tartalom betűkészlet jellemzői - + Define the font and display characteristics for the Display text A fő szöveg betűkészlete és megjelenési tulajdonságai - + Font: Betűkészlet: - + Size: Méret: - + Line Spacing: Sorköz: - + &Outline: &Körvonal: - + &Shadow: &Árnyék: - + Bold Félkövér - + Italic Dőlt - + Footer Area Font Details Lábléc betűkészlet jellemzői - + Define the font and display characteristics for the Footer text A lábléc szöveg betűkészlete és megjelenési tulajdonságai - + Text Formatting Details Szövegformázás jellemzői - + Allows additional display formatting information to be defined További megjelenési formázások - + Horizontal Align: Vízszintes igazítás: - + Left Balra zárt - + Right Jobbra zárt - + Center Középre igazított - + Output Area Locations Pozíciók - + Allows you to change and move the main and footer areas. A fő szöveg és a lábléc helyzetének mozgatása. - + &Main Area &Fő szöveg - + &Use default location &Alapértelmezett helyen - + X position: X pozíció: - + px px - + Y position: Y pozíció: - + Width: Szélesség: - + Height: Magasság: - + Use default location Alapértelmezett helyen - + Save and Preview Mentés és előnézet - + View the theme and save it replacing the current one or change the name to create a new theme A téma előnézete és mentése: egy már meglévő téma felülírható vagy egy új név megadásával új téma hozható létre - + Theme name: Téma neve: @@ -4144,50 +4102,45 @@ A tartalom kódolása nem UTF-8. Téma szerkesztése – %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. A tündér segít témákat létrehozni és módosítani. Kattints az alábbi Következő gombra a folyamat első lépésének indításhoz, a háttér beállításához. - + Transitions: Átmenetek: - + &Footer Area &Lábléc - + Starting color: Kezdő szín: - + Ending color: Befejező szín: - + Background color: Háttérszín: - + Justify Sorkizárt - + Layout Preview Elrendezés előnézete - - - Transparent - - OpenLP.ThemesTab @@ -4582,7 +4535,7 @@ A tartalom kódolása nem UTF-8. - © + © Copyright symbol. © @@ -4885,17 +4838,17 @@ A tartalom kódolása nem UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Elérhető vezérlők - + Allow presentation application to be overriden A bemutató program felülírásának engedélyezése - + %s (unavailable) %s (elérhetetlen) @@ -4929,92 +4882,92 @@ A tartalom kódolása nem UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 távirányító - + OpenLP 2.0 Stage View OpenLP 2.0 színpadi nézet - + Service Manager Sorrendkezelő - + Slide Controller Diakezelő - + Alerts Értesítések - + Search Keresés - + Back Vissza - + Refresh Frissítés - + Blank Elsötétítés - + Show Vetítés - + Prev Előző - + Next Következő - + Text Szöveg - + Show Alert Értesítés megjelenítése - + Go Live Élő adásba - + No Results Nincs találat - + Options Beállítások - + Add to Service Hozzáadás a sorrendhez @@ -5916,39 +5869,37 @@ EasyWorshipből kerültek importálásra] SongsPlugin.MediaItem - + Titles Címek - + Lyrics Dalszöveg - + CCLI License: CCLI licenc: - + Entire Song Teljes dal - + Are you sure you want to delete the %n selected song(s)? - - - + - + Maintain the lists of authors, topics and books. Szerzők, témakörök, könyvek listájának kezelése. - + copy For song cloning másolás @@ -6242,4 +6193,4 @@ EasyWorshipből kerültek importálásra] Egyéb - + \ No newline at end of file diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts index 96c5b439f..19d3a8cab 100644 --- a/resources/i18n/id.ts +++ b/resources/i18n/id.ts @@ -1040,7 +1040,7 @@ Perhatikan bahwa ayat dari Alkitab Web akan diunduh saat diminta dan sambungan i CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Anda yakin ingin menghapus %n salindia-suai terpilih? @@ -1283,7 +1283,7 @@ Ingin tetap menambah gambar lain? Tidak ada butir tayangan untuk di-amend. - + Unsupported File Berkas Tidak Didukung @@ -1301,32 +1301,32 @@ Ingin tetap menambah gambar lain? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1530,108 +1530,99 @@ OpenLP dibuat dan dipelihara oleh relawan. Jika Anda ingin melihat lebih banyak - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Hak Cipta © 2004-2011 %s +Hak cipta sebagian © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Pengaturan Antarmuka - + Number of recent files to display: Jumlah berkas anyar untuk ditampilkan: - + Remember active media manager tab on startup Ingat tab media manager yang aktif saat mulai - + Double-click to send items straight to live Klik-ganda untuk menayangkan butir terpilih - + Expand new service items on creation Tampilkan benda service saat dibuat - + Enable application exit confirmation Gunakan konfirmasi aplikasi keluar - + Mouse Cursor Kursor Tetikus - + Hide mouse cursor when over display window Sembunyikan kursor tetikus saat melewati jendela tampilan - + Default Image Gambar bawaan - + Background color: Warna latar: - + Image file: Berkas gambar: - + Open File Buka Berkas - + Preview items when clicked in Media Manager Pratayang barang saat diklik pada Media Manager - + Advanced Lanjutan - + Click to select a color. Klik untuk memilih warna. - + Browse for an image file to display. Ramban sebuah gambar untuk ditayangkan. - + Revert to the default OpenLP logo. Balikkan ke logo OpenLP bawaan. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1795,17 +1786,17 @@ Mohon gunakan bahasa Inggris untuk laporan kutu. OpenLP.FirstTimeWizard - + Downloading %s... Mengunduh %s... - + Download complete. Click the finish button to start OpenLP. Unduhan selesai. Klik tombol selesai untuk memulai OpenLP. - + Enabling selected plugins... Mengaktifkan plugin terpilih... @@ -1940,22 +1931,22 @@ Mohon gunakan bahasa Inggris untuk laporan kutu. Wisaya ini akan membantu mengonfigurasi OpenLP untuk penggunaan pertama. Klik tombol di bawah untuk memulai. - + Setting Up And Downloading Persiapan dan Pengunduhan - + Please wait while OpenLP is set up and your data is downloaded. Mohon tunggu selama OpenLP dipersiapkan dan data Anda diunduh. - + Setting Up Persiapan - + Click the finish button to start OpenLP. Klik tombol selesai untuk memulai OpenLP. @@ -1965,12 +1956,12 @@ Mohon gunakan bahasa Inggris untuk laporan kutu. Salindia Suai - + Download complete. Click the finish button to return to OpenLP. Unduhan selesai. Klik tombol selesai untuk kembali ke OpenLP. - + Click the finish button to return to OpenLP. Klik tombol selesai untuk kembali ke OpenLP. @@ -2170,170 +2161,140 @@ Untuk membatalkan Wisaya Pertama Kali sepenuhnya (dan tidak memulai OpenLP), tek OpenLP.GeneralTab - + General Umum - + Monitors Monitor - + Select monitor for output display: Pilih monitor untuk tampilan keluaran: - + Display if a single screen Tampilkan jika layar tunggal - + Application Startup Awal Mulai Aplikasi - + Show blank screen warning Tampilkan peringatan layar kosong - + Automatically open the last service Buka layanan terakhir secara otomatis - + Show the splash screen Tampilkan logo di awal - + Application Settings Pengaturan Aplikasi - + Prompt to save before starting a new service Coba simpan sebelum memulai pelayanan baru - + Automatically preview next item in service Pratinjau item selanjutnya pada sevice - + sec sec - + CCLI Details Detail CCLI - + SongSelect username: Nama pengguna SongSelect: - + SongSelect password: Sandi-lewat SongSelect: - + Display Position Posisi Tampilan - + X X - + Y Y - + Height Tinggi - + Width Lebar - + Override display position Timpa posisi tampilan - + Check for updates to OpenLP Cek pembaruan untuk OpenLP - + Unblank display when adding new live item Jangan kosongkan layar saat menambah butir tayang baru - + + Enable slide wrap-around + Nyalakan <i>slide wrap-around</i> + + + Timed slide interval: Selang waktu salindia: - + Background Audio Audio Latar - + Start background audio paused Mulai audio latar terjeda - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2351,7 +2312,7 @@ Untuk membatalkan Wisaya Pertama Kali sepenuhnya (dan tidak memulai OpenLP), tek OpenLP.MainDisplay - + OpenLP Display Tampilan OpenLP @@ -2863,68 +2824,68 @@ Database: %s Tidak Ada Barang yang Terpilih - + &Add to selected Service Item T&ambahkan ke dalam Butir Layanan - + You must select one or more items to preview. Anda harus memilih satu atau beberapa butir untuk dipratilik. - + You must select one or more items to send live. Anda harus memilih satu atau beberapa butir untuk ditayangkan. - + You must select one or more items. Anda harus memilih satu atau beberapa butir. - + You must select an existing service item to add to. Anda harus memilih butir layanan yang ada untuk ditambahkan. - + Invalid Service Item Butir Layanan Tidak Sahih - + You must select a %s service item. Anda harus memilih sebuah butir layanan %s. - + You must select one or more items to add. - + No Search Results - + &Clone - + Invalid File Type - + Invalid File %s. Suffix not supported - + Duplicate files were found on import and were ignored. @@ -3079,12 +3040,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3180,34 +3141,34 @@ Suffix not supported &Ubah Tema - + OpenLP Service Files (*.osz) Berkas Layanan OpenLP (*.osz) - + File is not a valid service. The content encoding is not UTF-8. Berkas bukan berupa layanan. Isi berkas tidak berupa UTF-8. - + File is not a valid service. Berkas bukan layanan sahih. - + Missing Display Handler Penangan Tayang hilang - + Your item cannot be displayed as there is no handler to display it Butir tidak dapat ditayangkan karena tidak ada penangan untuk menayangkannya - + Your item cannot be displayed as the plugin required to display it is missing or inactive Butir ini tidak dapat ditampilkan karena plugin yang dibutuhkan untuk menampilkannya hilang atau tidak aktif @@ -3287,22 +3248,22 @@ Isi berkas tidak berupa UTF-8. Layanan saat ini telah terubah suai. Ingin menyimpan layanan ini? - + File could not be opened because it is corrupt. Berkas tidak dapat dibuka karena rusak. - + Empty File Berkas Kosong - + This service file does not contain any data. Berkas layanan ini tidak mengandung data apa pun. - + Corrupt File Berkas Rusak @@ -3342,17 +3303,17 @@ Isi berkas tidak berupa UTF-8. - + This file is either corrupt or it is not an OpenLP 2.0 service file. - + Slide theme - + Notes @@ -3362,12 +3323,12 @@ Isi berkas tidak berupa UTF-8. - + Edit - + Service copy only @@ -3459,77 +3420,77 @@ Isi berkas tidak berupa UTF-8. OpenLP.SlideController - + Hide - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Service - + Next Service - + Escape Item - + Move to previous. - + Move to next. - + Play Slides - + Delay between slides in seconds. - + Move to live. - + Add to Service. - + Edit and reload song preview. @@ -3539,7 +3500,7 @@ Isi berkas tidak berupa UTF-8. - + Pause audio. @@ -3564,37 +3525,37 @@ Isi berkas tidak berupa UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3688,27 +3649,27 @@ Isi berkas tidak berupa UTF-8. OpenLP.ThemeForm - + Select Image - + Theme Name Missing - + There is no name for this theme. Please enter one. - + Theme Name Invalid - + Invalid theme name. Please enter one. @@ -3910,222 +3871,222 @@ Isi berkas tidak berupa UTF-8. OpenLP.ThemeWizard - + Theme Wizard - + Welcome to the Theme Wizard - + Set Up Background - + Set up your theme's background according to the parameters below. - + Background type: - + Solid Color - + Gradient - + Color: - + Gradient: - + Horizontal - + Vertical - + Circular - + Top Left - Bottom Right - + Bottom Left - Top Right - + Main Area Font Details - + Define the font and display characteristics for the Display text - + Font: - + Size: - + Line Spacing: - + &Outline: - + &Shadow: - + Bold Tebal - + Italic - + Footer Area Font Details - + Define the font and display characteristics for the Footer text - + Text Formatting Details - + Allows additional display formatting information to be defined - + Horizontal Align: - + Left - + Right - + Center - + Output Area Locations - + Allows you to change and move the main and footer areas. - + &Main Area - + &Use default location - + X position: - + px - + Y position: - + Width: - + Height: - + Use default location - + Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: @@ -4135,50 +4096,45 @@ Isi berkas tidak berupa UTF-8. - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: - + &Footer Area - + Starting color: - + Ending color: - + Background color: Warna latar: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4876,17 +4832,17 @@ Isi berkas tidak berupa UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + Allow presentation application to be overriden - + %s (unavailable) @@ -4920,92 +4876,92 @@ Isi berkas tidak berupa UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager Manajer Layanan - + Slide Controller - + Alerts Peringatan - + Search - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live Tayangkan - + No Results - + Options Pilihan - + Add to Service @@ -5900,39 +5856,39 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles - + Lyrics - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? - + Maintain the lists of authors, topics and books. - + copy For song cloning diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts index 61d5c4479..76ad75579 100644 --- a/resources/i18n/ja.ts +++ b/resources/i18n/ja.ts @@ -1038,7 +1038,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? 選択された %n 件のカスタム スライドを本当に削除しますか? @@ -1281,7 +1281,7 @@ Do you want to add the other images anyway? 結合する項目がありません。 - + Unsupported File サポートされていないファイル @@ -1299,32 +1299,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) %s (利用不可) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1529,108 +1529,99 @@ OpenLP は、ボランティアの手で開発保守されています。もっ - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings UI 設定 - + Number of recent files to display: 最近使用したファイルの表示数: - + Remember active media manager tab on startup 起動時に前回のメディア マネージャを開く - + Double-click to send items straight to live ダブル クリックで項目を直接ライブへ送信 - + Expand new service items on creation 礼拝項目の作成時に展開 - + Enable application exit confirmation アプリケーションの終了時に確認 - + Mouse Cursor マウス カーソル - + Hide mouse cursor when over display window ディスプレイ ウィンドウの上では、マウス カーソルを隠す - + Default Image 既定の画像 - + Background color: 背景色: - + Image file: 画像ファイル: - + Open File ファイルを開く - + Preview items when clicked in Media Manager メディア マネージャでクリック時に項目をプレビュー - + Advanced 高度な設定 - + Click to select a color. クリックして色を選択します。 - + Browse for an image file to display. 表示する画像ファイルを参照する。 - + Revert to the default OpenLP logo. 既定の OpenLP ロゴに戻す。 - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1796,17 +1787,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... ダウンロード中 %s... - + Download complete. Click the finish button to start OpenLP. ダウンロードが完了しました。完了をクリックすると OpenLP が開始します。 - + Enabling selected plugins... 選択されたプラグインを有効にしています... @@ -1941,22 +1932,22 @@ Version: %s このウィザードで、OpenLPを初めて使用する際の設定をします。次へをクリックして開始してください。 - + Setting Up And Downloading 設定とダウンロード中 - + Please wait while OpenLP is set up and your data is downloaded. OpenLPがセットアップされ、あなたのデータがインポートされるまでお待ち下さい。 - + Setting Up 設定中 - + Click the finish button to start OpenLP. 完了をクリックすると、OpenLPが開始します。 @@ -1966,12 +1957,12 @@ Version: %s カスタムスライド - + Download complete. Click the finish button to return to OpenLP. ダウンロードが完了しました。終了ボタンをクリックしてOpenLPを終了してください。 - + Click the finish button to return to OpenLP. 終了ボタンをクリックしてOpenLPに戻ってください。 @@ -2171,170 +2162,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General 全般 - + Monitors モニタ - + Select monitor for output display: 画面を出力するスクリーンを選択: - + Display if a single screen スクリーンが 1 つしかなくても表示 - + Application Startup アプリケーションの起動 - + Show blank screen warning 警告中には空白の画面を表示 - + Automatically open the last service 自動的に前回の礼拝プログラムを開く - + Show the splash screen スプラッシュ スクリーンを表示 - + Application Settings アプリケーションの設定 - + Prompt to save before starting a new service 新しい礼拝プログラムを開始する前に保存を確認 - + Automatically preview next item in service 礼拝プログラム内の次の項目を自動的にプレビュー - + sec - + CCLI Details CCLI 詳細 - + SongSelect username: SongSelect ユーザ名: - + SongSelect password: SongSelect パスワード: - + Display Position 表示位置 - + X X - + Y Y - + Height 高さ - + Width - + Override display position 表示位置を上書き - + Check for updates to OpenLP OpenLP の更新を確認 - + Unblank display when adding new live item ライブ項目の追加時にブランクを解除 - + + Enable slide wrap-around + スライドの最後から最初に戻る + + + Timed slide interval: 時間付きスライドの間隔: - + Background Audio バックグラウンド音声 - + Start background audio paused 一時停止中のバックグラウンド音声を再生 - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2352,7 +2313,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display OpenLP ディスプレイ @@ -2872,69 +2833,69 @@ Database: %s 項目が選択されていません - + &Add to selected Service Item 選択された礼拝項目に追加(&A) - + You must select one or more items to preview. プレビューするには 1 つ以上の項目を選択する必要があります。 - + You must select one or more items to send live. ライブに送信するには 1 つ以上の項目を選択する必要があります。 - + You must select one or more items. 1 つ以上の項目を選択する必要があります。 - + You must select an existing service item to add to. 追加するには既存の礼拝項目を選択する必要があります。 - + Invalid Service Item 無効な礼拝項目 - + You must select a %s service item. %s の礼拝項目を選択する必要があります。 - + You must select one or more items to add. 追加するには、一つ以上の項目を選択してください。 - + No Search Results 見つかりませんでした - + &Clone 閉じる(&C) - + Invalid File Type 無効なファイルタイプ - + Invalid File %s. Suffix not supported %sは無効なファイルです。 拡張子がサポートされていません - + Duplicate files were found on import and were ignored. インポート中に重複するファイルが見つかり、無視されました。 @@ -3089,12 +3050,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>開始</strong>: %s - + <strong>Length</strong>: %s <strong>長さ</strong>: %s @@ -3190,29 +3151,29 @@ Suffix not supported 項目のテーマを変更(&C) - + File is not a valid service. The content encoding is not UTF-8. 礼拝プログラム ファイルが有効でありません。 エンコーディングが UTF-8 でありません。 - + File is not a valid service. 礼拝プログラム ファイルが有効でありません。 - + Missing Display Handler ディスプレイ ハンドラが見つかりません - + Your item cannot be displayed as there is no handler to display it ディスプレイ ハンドラが見つからないため項目をできません - + Your item cannot be displayed as the plugin required to display it is missing or inactive 必要なプラグインが見つからないか無効なため項目を表示できません @@ -3242,7 +3203,7 @@ The content encoding is not UTF-8. ファイルを開く - + OpenLP Service Files (*.osz) OpenLP 礼拝プログラムファイル (*.osz) @@ -3297,22 +3258,22 @@ The content encoding is not UTF-8. 現在の礼拝プログラムは、編集されています。保存しますか? - + File could not be opened because it is corrupt. ファイルが破損しているため開けません。 - + Empty File 空のファイル - + This service file does not contain any data. この礼拝プログラムファイルは空です。 - + Corrupt File 破損したファイル @@ -3352,17 +3313,17 @@ The content encoding is not UTF-8. 礼拝プログラムの外観テーマを選択します。 - + This file is either corrupt or it is not an OpenLP 2.0 service file. このファイルは破損しているかOpenLP 2.0の礼拝プログラムファイルではありません。 - + Slide theme スライド外観テーマ - + Notes メモ @@ -3372,12 +3333,12 @@ The content encoding is not UTF-8. 礼拝プログラムファイルが見つかりません - + Edit 編集 - + Service copy only @@ -3469,77 +3430,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide 隠す - + Go To 送る - + Blank Screen スクリーンをブランクにする - + Blank to Theme テーマをブランクにする - + Show Desktop デスクトップを表示 - + Previous Service 前の礼拝プログラム - + Next Service 次の礼拝プログラム - + Escape Item 項目を回避 - + Move to previous. 前に移動します。 - + Move to next. 次に移動します。 - + Play Slides スライドを再生 - + Delay between slides in seconds. スライドの再生時間を秒で指定する。 - + Move to live. ライブへ移動する。 - + Add to Service. 礼拝プログラムへ追加する。 - + Edit and reload song preview. 編集しプレビューを再読み込みする。 @@ -3549,7 +3510,7 @@ The content encoding is not UTF-8. メディアの再生を開始する。 - + Pause audio. 音声を一時停止します。 @@ -3574,37 +3535,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3698,27 +3659,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image 画像を選択 - + Theme Name Missing テーマ名がありません - + There is no name for this theme. Please enter one. テーマ名がありません。入力してください。 - + Theme Name Invalid 正しくないテーマ名 - + Invalid theme name. Please enter one. テーマ名が正しくありません。入力してください。 @@ -3920,237 +3881,237 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard テーマ ウィザード - + Welcome to the Theme Wizard テーマ ウィザードにようこそ - + Set Up Background 背景を設定 - + Set up your theme's background according to the parameters below. 以下のパラメータに従ってテーマの背景を設定してください。 - + Background type: 背景の種類: - + Solid Color 無色 - + Gradient グラデーション - + Color: 色: - + Gradient: グラデーション: - + Horizontal 水平 - + Vertical 垂直 - + Circular 円形 - + Top Left - Bottom Right 左上 - 右下 - + Bottom Left - Top Right 左下 - 右上 - + Main Area Font Details メイン領域のフォント詳細 - + Define the font and display characteristics for the Display text 表示テキストのフォントと表示特性を定義 - + Font: フォント: - + Size: サイズ: - + Line Spacing: 行間: - + &Outline: 輪郭(&O): - + &Shadow: 影(&S): - + Bold 太字 - + Italic 斜体 - + Footer Area Font Details フッター領域のフォント詳細 - + Define the font and display characteristics for the Footer text フッター テキストのフォントと表示特性を定義 - + Text Formatting Details テキスト書式の詳細 - + Allows additional display formatting information to be defined 追加の表示書式情報を定義することを許可 - + Horizontal Align: 水平位置揃え: - + Left 左寄せ - + Right 右寄せ - + Center 中央揃え - + Output Area Locations 出力領域の場所 - + Allows you to change and move the main and footer areas. メイン領域とフッター領域の変更と移動を許可します。 - + &Main Area メイン領域(&M) - + &Use default location 既定の場所を使用(&U) - + X position: X 位置: - + px ピクセル - + Y position: Y 位置: - + Width: 幅: - + Height: 高さ: - + Use default location 既定の場所を使用 - + Save and Preview 保存とプレビュー - + View the theme and save it replacing the current one or change the name to create a new theme テーマを表示して、現在のテーマを置換するか新しく作成するために名前を変更して保存 - + Theme name: テーマ名: - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. このウィザードはテーマの作成と編集を支援します。下の次へボタンをクリックして背景を設定してください。 - + Transitions: 遷移: - + &Footer Area フッター領域(&F) @@ -4160,35 +4121,30 @@ The content encoding is not UTF-8. テーマを編集 - %s - + Starting color: 開始色: - + Ending color: 終了色: - + Background color: 背景色: - + Justify 揃える - + Layout Preview レイアウト プレビュー - - - Transparent - - OpenLP.ThemesTab @@ -4886,17 +4842,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers 利用できるコントローラ - + Allow presentation application to be overriden プレゼンテーション アプリケーションによる上書きを許可 - + %s (unavailable) %s (利用不可) @@ -4930,92 +4886,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 遠隔操作 - + OpenLP 2.0 Stage View OpenLP 2.0 ステージビュー - + Service Manager 礼拝プログラム - + Slide Controller スライドコントローラ - + Alerts 警告 - + Search 検索 - + Back 戻る - + Refresh 再読込 - + Blank ブランク - + Show 表示 - + Prev - + Next - + Text テキスト - + Show Alert 警告を表示 - + Go Live ライブへ送る - + No Results 見つかりませんでした - + Options オプション - + Add to Service 礼拝プログラムへ追加 @@ -5916,39 +5872,39 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles タイトル - + Lyrics 賛美詞 - + CCLI License: CCLI ライセンス: - + Entire Song 賛美全体 - + Are you sure you want to delete the %n selected song(s)? 選択された %n 個の賛美を本当に削除しますか? - + Maintain the lists of authors, topics and books. アーティスト、トピックとアルバムの一覧を保守します。 - + copy For song cloning コピー diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts index d5a39e690..32c379b95 100644 --- a/resources/i18n/ko.ts +++ b/resources/i18n/ko.ts @@ -1023,7 +1023,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? @@ -1265,7 +1265,7 @@ Do you want to add the other images anyway? - + Unsupported File @@ -1283,32 +1283,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1443,108 +1443,98 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings - + Number of recent files to display: - + Remember active media manager tab on startup - + Double-click to send items straight to live - + Expand new service items on creation - + Enable application exit confirmation - + Mouse Cursor - + Hide mouse cursor when over display window - + Default Image - + Background color: 배경색: - + Image file: - + Open File - + Preview items when clicked in Media Manager - + Advanced - + Click to select a color. - + Browse for an image file to display. - + Revert to the default OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1680,17 +1670,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... - + Download complete. Click the finish button to start OpenLP. - + Enabling selected plugins... @@ -1825,22 +1815,22 @@ Version: %s - + Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. - + Setting Up - + Click the finish button to start OpenLP. @@ -1850,12 +1840,12 @@ Version: %s - + Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. @@ -2051,170 +2041,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General - + Monitors - + Select monitor for output display: - + Display if a single screen - + Application Startup - + Show blank screen warning - + Automatically open the last service - + Show the splash screen - + Application Settings - + Prompt to save before starting a new service - + Automatically preview next item in service - + sec - + CCLI Details - + SongSelect username: - + SongSelect password: - + Display Position - + X - + Y - + Height - + Width - + Override display position - + Check for updates to OpenLP - + Unblank display when adding new live item - + + Enable slide wrap-around + + + + Timed slide interval: - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2232,7 +2192,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display @@ -2740,68 +2700,68 @@ Database: %s - + &Add to selected Service Item - + You must select one or more items to preview. - + You must select one or more items to send live. - + You must select one or more items. - + You must select an existing service item to add to. - + Invalid Service Item - + You must select a %s service item. - + You must select one or more items to add. - + No Search Results - + &Clone - + Invalid File Type - + Invalid File %s. Suffix not supported - + Duplicate files were found on import and were ignored. @@ -2956,12 +2916,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3057,28 +3017,28 @@ Suffix not supported - + File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. - + Missing Display Handler - + Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive @@ -3108,7 +3068,7 @@ The content encoding is not UTF-8. - + OpenLP Service Files (*.osz) @@ -3163,22 +3123,22 @@ The content encoding is not UTF-8. - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -3218,17 +3178,17 @@ The content encoding is not UTF-8. - + This file is either corrupt or it is not an OpenLP 2.0 service file. - + Slide theme - + Notes @@ -3238,12 +3198,12 @@ The content encoding is not UTF-8. - + Edit - + Service copy only @@ -3335,77 +3295,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Service - + Next Service - + Escape Item - + Move to previous. - + Move to next. - + Play Slides - + Delay between slides in seconds. - + Move to live. - + Add to Service. - + Edit and reload song preview. @@ -3415,7 +3375,7 @@ The content encoding is not UTF-8. - + Pause audio. @@ -3440,37 +3400,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3564,27 +3524,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image - + Theme Name Missing - + There is no name for this theme. Please enter one. - + Theme Name Invalid - + Invalid theme name. Please enter one. @@ -3786,237 +3746,237 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard - + Welcome to the Theme Wizard - + Set Up Background - + Set up your theme's background according to the parameters below. - + Background type: - + Solid Color - + Gradient - + Color: - + Gradient: - + Horizontal - + Vertical - + Circular - + Top Left - Bottom Right - + Bottom Left - Top Right - + Main Area Font Details - + Define the font and display characteristics for the Display text - + Font: - + Size: - + Line Spacing: - + &Outline: - + &Shadow: - + Bold - + Italic - + Footer Area Font Details - + Define the font and display characteristics for the Footer text - + Text Formatting Details - + Allows additional display formatting information to be defined - + Horizontal Align: - + Left - + Right - + Center - + Output Area Locations - + Allows you to change and move the main and footer areas. - + &Main Area - + &Use default location - + X position: - + px - + Y position: - + Width: - + Height: - + Use default location - + Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: - + &Footer Area @@ -4026,35 +3986,30 @@ The content encoding is not UTF-8. - + Starting color: - + Ending color: - + Background color: 배경색: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4752,17 +4707,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + Allow presentation application to be overriden - + %s (unavailable) @@ -4796,92 +4751,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager - + Slide Controller - + Alerts - + Search - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live - + No Results - + Options - + Add to Service @@ -5776,39 +5731,39 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles - + Lyrics - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? - + Maintain the lists of authors, topics and books. - + copy For song cloning diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts index 9ef24b228..b406e8fe5 100644 --- a/resources/i18n/nb.ts +++ b/resources/i18n/nb.ts @@ -1033,7 +1033,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? @@ -1277,7 +1277,7 @@ Vil du likevel legge til de andre bildene? - + Unsupported File @@ -1295,32 +1295,32 @@ Vil du likevel legge til de andre bildene? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1515,108 +1515,98 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Innstillinger for brukergrensesnitt - + Number of recent files to display: Antall nylig brukte filer å vise. - + Remember active media manager tab on startup Husk aktiv mediebehandlerfane ved oppstart - + Double-click to send items straight to live Dobbelklikk for å sende saker direkte live - + Expand new service items on creation Utvid nye møteenheter ved opprettelse - + Enable application exit confirmation Aktiver avsluttningsbekreftelse - + Mouse Cursor - + Hide mouse cursor when over display window - + Default Image - + Background color: Bakgrunns farge: - + Image file: - + Open File - + Preview items when clicked in Media Manager - + Advanced Avansert - + Click to select a color. - + Browse for an image file to display. - + Revert to the default OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1752,17 +1742,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... - + Download complete. Click the finish button to start OpenLP. - + Enabling selected plugins... @@ -1897,22 +1887,22 @@ Version: %s - + Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. - + Setting Up - + Click the finish button to start OpenLP. @@ -1922,12 +1912,12 @@ Version: %s - + Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. @@ -2123,170 +2113,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General Generell - + Monitors - + Select monitor for output display: Velg hvilken skjerm som skal brukes til fremvisning: - + Display if a single screen - + Application Startup Programoppstart - + Show blank screen warning - + Automatically open the last service Åpne forrige møteplan automatisk - + Show the splash screen - + Application Settings Programinnstillinger - + Prompt to save before starting a new service - + Automatically preview next item in service - + sec - + CCLI Details CCLI-detaljer - + SongSelect username: - + SongSelect password: - + Display Position - + X - + Y - + Height - + Width - + Override display position - + Check for updates to OpenLP - + Unblank display when adding new live item - + + Enable slide wrap-around + + + + Timed slide interval: - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2304,7 +2264,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display @@ -2812,68 +2772,68 @@ Database: %s - + &Add to selected Service Item - + You must select one or more items to preview. - + You must select one or more items to send live. - + You must select one or more items. - + You must select an existing service item to add to. - + Invalid Service Item - + You must select a %s service item. - + You must select one or more items to add. - + No Search Results - + &Clone - + Invalid File Type - + Invalid File %s. Suffix not supported - + Duplicate files were found on import and were ignored. @@ -3028,12 +2988,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3129,28 +3089,28 @@ Suffix not supported &Bytt objekttema - + File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. - + Missing Display Handler - + Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive @@ -3180,7 +3140,7 @@ The content encoding is not UTF-8. - + OpenLP Service Files (*.osz) @@ -3235,22 +3195,22 @@ The content encoding is not UTF-8. - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -3290,17 +3250,17 @@ The content encoding is not UTF-8. - + This file is either corrupt or it is not an OpenLP 2.0 service file. - + Slide theme - + Notes @@ -3310,12 +3270,12 @@ The content encoding is not UTF-8. - + Edit - + Service copy only @@ -3407,77 +3367,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Service - + Next Service - + Escape Item - + Move to previous. - + Move to next. - + Play Slides - + Delay between slides in seconds. - + Move to live. - + Add to Service. - + Edit and reload song preview. @@ -3487,7 +3447,7 @@ The content encoding is not UTF-8. - + Pause audio. @@ -3512,37 +3472,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3636,27 +3596,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image - + Theme Name Missing - + There is no name for this theme. Please enter one. - + Theme Name Invalid - + Invalid theme name. Please enter one. @@ -3858,237 +3818,237 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard - + Welcome to the Theme Wizard - + Set Up Background - + Set up your theme's background according to the parameters below. - + Background type: - + Solid Color Ensfarget - + Gradient - + Color: - + Gradient: - + Horizontal - + Vertical Vertikal - + Circular - + Top Left - Bottom Right - + Bottom Left - Top Right - + Main Area Font Details - + Define the font and display characteristics for the Display text - + Font: - + Size: Størrelse: - + Line Spacing: - + &Outline: - + &Shadow: - + Bold Fet - + Italic - + Footer Area Font Details - + Define the font and display characteristics for the Footer text - + Text Formatting Details - + Allows additional display formatting information to be defined - + Horizontal Align: - + Left - + Right - + Center Sentrert - + Output Area Locations - + Allows you to change and move the main and footer areas. - + &Main Area - + &Use default location - + X position: - + px - + Y position: - + Width: Bredde: - + Height: Høyde: - + Use default location - + Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: - + &Footer Area @@ -4098,35 +4058,30 @@ The content encoding is not UTF-8. - + Starting color: - + Ending color: - + Background color: Bakgrunnsfarge: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4824,17 +4779,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + Allow presentation application to be overriden - + %s (unavailable) @@ -4868,92 +4823,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager - + Slide Controller - + Alerts Varsler - + Search - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live - + No Results - + Options - + Add to Service @@ -5848,27 +5803,27 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles Titler - + Lyrics - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? @@ -5876,12 +5831,12 @@ The encoding is responsible for the correct character representation. - + Maintain the lists of authors, topics and books. - + copy For song cloning diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts index 96d7cd864..2a5ecd5f3 100644 --- a/resources/i18n/nl.ts +++ b/resources/i18n/nl.ts @@ -1040,7 +1040,7 @@ Let op, de bijbelverzen worden gedownload indien nodig en een internetverbinding CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Weet u zeker dat u deze %n aangepaste dia wilt verwijderen? @@ -1284,7 +1284,7 @@ De andere afbeeldingen alsnog toevoegen? Er is geen weergave item om te verbeteren. - + Unsupported File Niet ondersteund bestandsformaat @@ -1302,32 +1302,32 @@ De andere afbeeldingen alsnog toevoegen? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) %s (niet beschikbaar) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1532,108 +1532,99 @@ OpenLP wordt ontwikkeld en bijgehouden door vrijwilligers. Als u meer vrije soft - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Werkomgeving instellingen - + Number of recent files to display: Aantal recent geopende bestanden: - + Remember active media manager tab on startup Laatstgeopende tab opslaan - + Double-click to send items straight to live Dubbelklikken om onderdelen direct aan live toe te voegen - + Expand new service items on creation Nieuwe liturgieonderdelen automatisch uitklappen - + Enable application exit confirmation Afsluiten OpenLP bevestigen - + Mouse Cursor Muisaanwijzer - + Hide mouse cursor when over display window Verberg muisaanwijzer in het weergave venster - + Default Image standaard afbeelding - + Background color: Achtergrondkleur: - + Image file: Afbeeldingsbestand: - + Open File Open bestand - + Preview items when clicked in Media Manager Voorbeeld direct laten zien bij aanklikken in Media beheer - + Advanced Geavanceerd - + Click to select a color. Klik om een kleur te kiezen. - + Browse for an image file to display. Blader naar een afbeelding om te laten zien. - + Revert to the default OpenLP logo. Herstel standaard OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1798,17 +1789,17 @@ Schrijf in het Engels, omdat de meeste programmeurs geen Nederlands spreken. OpenLP.FirstTimeWizard - + Downloading %s... Downloaden %s... - + Download complete. Click the finish button to start OpenLP. Download compleet. Klik op afrond om OpenLP te starten. - + Enabling selected plugins... Geselecteerde plugins inschakelen... @@ -1943,22 +1934,22 @@ Schrijf in het Engels, omdat de meeste programmeurs geen Nederlands spreken. Deze assistent helpt u bij het instellen van OpenLP voor het eerste gebruik. Klik op volgende om te beginnen. - + Setting Up And Downloading Instellen en downloaden - + Please wait while OpenLP is set up and your data is downloaded. Even geduld terwijl OpenLP ingesteld wordt en de voorbeeldgegevens worden gedownload. - + Setting Up Instellen - + Click the finish button to start OpenLP. Klik op afronden om OpenLP te starten. @@ -1968,12 +1959,12 @@ Schrijf in het Engels, omdat de meeste programmeurs geen Nederlands spreken. Aangepaste dia’s - + Download complete. Click the finish button to return to OpenLP. Download compleet. Klik op afronden om OpenLP te starten. - + Click the finish button to return to OpenLP. Klik op afronden om OpenLP te starten. @@ -2173,170 +2164,140 @@ Om de Eerste Keer Assistent te annuleren (zonder OpenLP te starten), klik op Ann OpenLP.GeneralTab - + General Algemeen - + Monitors Beeldschermen - + Select monitor for output display: Projectiescherm: - + Display if a single screen Weergeven bij enkel scherm - + Application Startup Programma start - + Show blank screen warning Toon zwart scherm waarschuwing - + Automatically open the last service Automatisch laatste liturgie openen - + Show the splash screen Toon splash screen - + Application Settings Programma instellingen - + Prompt to save before starting a new service Waarschuw om werk op te slaan bij het beginnen van een nieuwe liturgie - + Automatically preview next item in service Automatisch volgend onderdeel van liturgie tonen - + sec sec - + CCLI Details CCLI-details - + SongSelect username: SongSelect gebruikersnaam: - + SongSelect password: SongSelect wachtwoord: - + Display Position Weergave positie - + X X - + Y Y - + Height Hoogte - + Width Breedte - + Override display position Overschrijf scherm positie - + Check for updates to OpenLP Controleer op updates voor OpenLP - + Unblank display when adding new live item Zwart scherm uitschakelen als er een nieuw live item wordt toegevoegd - + + Enable slide wrap-around + Doorlopende voorstelling aan + + + Timed slide interval: Tijd tussen dia’s: - + Background Audio Achtergrond geluid - + Start background audio paused Start achtergrond geluid gepausseerd - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2354,7 +2315,7 @@ Om de Eerste Keer Assistent te annuleren (zonder OpenLP te starten), klik op Ann OpenLP.MainDisplay - + OpenLP Display OpenLP Weergave @@ -2874,69 +2835,69 @@ Database: %s Niets geselecteerd - + &Add to selected Service Item &Voeg selectie toe aan de liturgie - + You must select one or more items to preview. Selecteer een of meerdere onderdelen om voorbeeld te laten zien. - + You must select one or more items to send live. Selecteer een of meerdere onderdelen om Live te tonen. - + You must select one or more items. Selecteer een of meerdere onderdelen. - + You must select an existing service item to add to. Selecteer een liturgie om deze onderdelen aan toe te voegen. - + Invalid Service Item Ongeldige Liturgie onderdeel - + You must select a %s service item. Selecteer een %s liturgie onderdeel. - + You must select one or more items to add. Selecteer een of meerdere onderdelen om toe te voegen. - + No Search Results Niets gevonden - + &Clone &Kloon - + Invalid File Type Ongeldig bestandsformaat - + Invalid File %s. Suffix not supported Ongeldig bestand %s. Extensie niet ondersteund - + Duplicate files were found on import and were ignored. Identieke bestanden zijn bij het importeren gevonden en worden genegeerd. @@ -3091,12 +3052,12 @@ Extensie niet ondersteund OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Start</strong>: %s - + <strong>Length</strong>: %s <strong>Lengte</strong>: %s @@ -3192,29 +3153,29 @@ Extensie niet ondersteund &Wijzig onderdeel thema - + File is not a valid service. The content encoding is not UTF-8. Geen geldig liturgie bestand. Tekst codering is geen UTF-8. - + File is not a valid service. Geen geldig liturgie bestand. - + Missing Display Handler Ontbrekende weergave regelaar - + Your item cannot be displayed as there is no handler to display it Dit onderdeel kan niet weergegeven worden, omdat er een regelaar ontbreekt - + Your item cannot be displayed as the plugin required to display it is missing or inactive Dit onderdeel kan niet weergegeven worden omdat de benodigde plugin ontbreekt of inactief is @@ -3244,7 +3205,7 @@ Tekst codering is geen UTF-8. Open bestand - + OpenLP Service Files (*.osz) OpenLP liturgie bestanden (*.osz) @@ -3299,22 +3260,22 @@ Tekst codering is geen UTF-8. De huidige liturgie is gewijzigd. Veranderingen opslaan? - + File could not be opened because it is corrupt. Bestand kan niet worden geopend omdat het beschadigd is. - + Empty File Leeg bestand - + This service file does not contain any data. Deze liturgie bevat nog geen gegevens. - + Corrupt File Corrupt bestand @@ -3354,17 +3315,17 @@ Tekst codering is geen UTF-8. Selecteer een thema voor de liturgie. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Dit bestand is beschadigd of geen OpenLP 2.0 liturgie bestand. - + Slide theme Dia thema - + Notes Aantekeningen @@ -3374,12 +3335,12 @@ Tekst codering is geen UTF-8. Ontbrekend liturgiebestand - + Edit - + Service copy only @@ -3471,77 +3432,77 @@ Tekst codering is geen UTF-8. OpenLP.SlideController - + Hide Verbergen - + Go To Ga naar - + Blank Screen Zwart scherm - + Blank to Theme Zwart naar thema - + Show Desktop Toon bureaublad - + Previous Service Vorige liturgie - + Next Service Volgende liturgie - + Escape Item Onderdeel annuleren - + Move to previous. Vorige. - + Move to next. Volgende. - + Play Slides Dia’s tonen - + Delay between slides in seconds. Pauze tussen dia’s in seconden. - + Move to live. Toon Live. - + Add to Service. Voeg toe aan Liturgie. - + Edit and reload song preview. Bewerk en herlaad lied voorbeeld. @@ -3551,7 +3512,7 @@ Tekst codering is geen UTF-8. Speel media af. - + Pause audio. Pauzeer audio. @@ -3576,37 +3537,37 @@ Tekst codering is geen UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3700,27 +3661,27 @@ Tekst codering is geen UTF-8. OpenLP.ThemeForm - + Select Image Selecteer afbeelding - + Theme Name Missing Thema naam ontbreekt - + There is no name for this theme. Please enter one. Dit thema heeft nog geen naam. Geef een naam voor dit thema. - + Theme Name Invalid Ongeldige naam - + Invalid theme name. Please enter one. Deze naam kan niet worden gebruikt als thema naam. Kies een andere naam. @@ -3922,237 +3883,237 @@ Tekst codering is geen UTF-8. OpenLP.ThemeWizard - + Theme Wizard Thema assistent - + Welcome to the Theme Wizard Welkom bij de thema assistent - + Set Up Background Achtergrond instellen - + Set up your theme's background according to the parameters below. Thema achtergrond instellen met onderstaande parameters. - + Background type: Achtergrond type: - + Solid Color Vaste kleur - + Gradient Kleurverloop - + Color: Kleur: - + Gradient: Kleurverloop: - + Horizontal Horizontaal - + Vertical Verticaal - + Circular Radiaal - + Top Left - Bottom Right Links boven - rechts onder - + Bottom Left - Top Right Links onder - Rechts boven - + Main Area Font Details Font instellingen algemeen - + Define the font and display characteristics for the Display text Stel de eigenschappen voor de tekst weergave in - + Font: Lettertype: - + Size: Grootte: - + Line Spacing: Interlinie: - + &Outline: &Omtrek: - + &Shadow: &Schaduw: - + Bold Vet - + Italic Cursief - + Footer Area Font Details Eigenschappen voettekst - + Define the font and display characteristics for the Footer text Stel de eigenschappen voor de voettekst weergave in - + Text Formatting Details Tekst opmaak eigenschappen - + Allows additional display formatting information to be defined Toestaan dat er afwijkende opmaak kan worden bepaald - + Horizontal Align: Horizontaal uitlijnen: - + Left links - + Right rechts - + Center Centreren - + Output Area Locations Uitvoer gebied locaties - + Allows you to change and move the main and footer areas. Toestaan dat tekstvelden gewijzigd en verplaatst worden. - + &Main Area &Hoofdgebied - + &Use default location Gebr&uik standaard locatie - + X position: X positie: - + px px - + Y position: Y positie: - + Width: Breedte: - + Height: Hoogte: - + Use default location Gebruik standaard locatie - + Save and Preview Opslaan en voorbeeld - + View the theme and save it replacing the current one or change the name to create a new theme Thema bekijken en sla het op onder dezelfde naam om te vervangen of onder een andere naam om een nieuw thema te maken - + Theme name: Thema naam: - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Deze assistent helpt bij het maken en bewerken van thema's. Klik op volgende om als eerste een achtergrond in te stellen. - + Transitions: Overgangen: - + &Footer Area &Voettekst gebied @@ -4162,35 +4123,30 @@ Tekst codering is geen UTF-8. Bewerk thema - %s - + Starting color: Beginkleur: - + Ending color: Eindkleur: - + Background color: Achtergrondkleur: - + Justify Uitvullen - + Layout Preview Layout voorbeeld - - - Transparent - - OpenLP.ThemesTab @@ -4888,17 +4844,17 @@ Tekst codering is geen UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Beschikbare regelaars - + Allow presentation application to be overriden Presentatieprogramma kan overschreven worden - + %s (unavailable) %s (niet beschikbaar) @@ -4932,92 +4888,92 @@ Tekst codering is geen UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Remote - + OpenLP 2.0 Stage View OpenLP 2.0 Podium Weergave - + Service Manager Liturgie beheer - + Slide Controller Dia regelaar - + Alerts Waarschuwingen - + Search Zoek - + Back Terug - + Refresh Vernieuwen - + Blank Leeg - + Show Toon - + Prev Vorige - + Next Volgende - + Text Tekst - + Show Alert Toon waarschuwingen - + Go Live Ga Live - + No Results Niets gevonden - + Options Opties - + Add to Service Voeg toe aan Liturgie @@ -5919,27 +5875,27 @@ Meestal voldoet de suggestie van OpenLP. SongsPlugin.MediaItem - + Titles Titels - + Lyrics Liedtekst - + CCLI License: CCLI Licentie: - + Entire Song Gehele lied - + Are you sure you want to delete the %n selected song(s)? Weet u zeker dat u dit %n lied wilt verwijderen? @@ -5947,12 +5903,12 @@ Meestal voldoet de suggestie van OpenLP. - + Maintain the lists of authors, topics and books. Beheer de lijst met auteurs, onderwerpen en liedboeken. - + copy For song cloning kopieer diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts index 968868ee5..9dc383afa 100644 --- a/resources/i18n/pt_BR.ts +++ b/resources/i18n/pt_BR.ts @@ -1,5 +1,4 @@ - - + AlertsPlugin @@ -22,7 +21,7 @@ Alerts name plural - Alertas + @@ -102,9 +101,9 @@ Deseja continuar mesmo assim? - The alert text does not contain '<>'. + The alert text does not contain '<>'. Do you want to continue anyway? - O texto de alerta não contém '<>'. + O texto de alerta não contém '<>'. Deseja continuar mesmo assim? @@ -166,7 +165,7 @@ Deseja continuar mesmo assim? Bibles name plural - Bíblias + @@ -412,38 +411,38 @@ Mudanças não afetam os versículos que já estão no culto. BiblesPlugin.HTTPBible - + Registering Bible and loading books... Registrando Bíblia e carregando livros... - + Registering Language... Registrando Idioma... - + Importing %s... Importing <book name>... Importando %s... - + Download Error Erro ao Baixar - + There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug. Ocorreu um problema ao baixar os versículos selecionados. Verifique sua conexão com a Internet, e se este erro continuar ocorrendo, por favor considere relatar um bug. - + Parse Error Erro de Interpretação - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Ocorreu um problema ao extrair os versículos selecionados. Se este erro continuar ocorrendo, por favor considere relatar um bug. @@ -912,7 +911,7 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e Custom Slides name plural - Slides Personalizados + @@ -1040,12 +1039,9 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? - - Você tem certeza que deseja excluir o %n slide(s) customizados selecionado? - Você tem certeza que deseja excluir o %n slide(s) customizados selecionado? - + Você tem certeza que deseja excluir o %n slide(s) customizados selecionado? Você tem certeza que deseja excluir o %n slide(s) customizados selecionado? @@ -1112,7 +1108,7 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e ImagePlugin.ExceptionDialog - + Select Attachment Selecionar Anexo @@ -1183,60 +1179,60 @@ Mesmo assim, deseja continuar adicionando as outras imagens? MediaPlugin - + <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Plugin de Mídia</strong><br />O plugin de mídia permite a reprodução de áudio e vídeo. - + Media name singular Mídia - + Media name plural - Mídia + - + Media container title Mídia - + Load new media. Carregar nova mídia. - + Add new media. Adicionar nova mídia. - + Edit the selected media. Editar a mídia selecionada. - + Delete the selected media. Excluir a mídia selecionada. - + Preview the selected media. Pré-visualizar a mídia selecionada. - + Send the selected media live. Enviar a mídia selecionada para a projeção. - + Add the selected media to the service. Adicionar a mídia selecionada ao culto. @@ -1284,52 +1280,52 @@ Mesmo assim, deseja continuar adicionando as outras imagens? Não há nenhum item de exibição para corrigir. - + Unsupported File - Arquivo Não Suportado + Automatic - Automático + Use Player: - + MediaPlugin.MediaTab - + Available Media Players - + - + %s (unavailable) - %s (indisponivel) + - + Player Order - + - + Down - + - + Up - + - + Allow media player to be overriden - + @@ -1357,17 +1353,17 @@ OpenLP deve atualizar agora? OpenLP.AboutForm - + Credits Créditos - + License Licença - + Contribute Contribuir @@ -1377,17 +1373,17 @@ OpenLP deve atualizar agora? compilação %s - + 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. Este programa é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre; na versão 2 da Licença. - + 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. Este programa é distribuido na esperança que será útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM DETERMINADO FIM. Veja abaixo para maiores detalhes. - + Project Lead %s @@ -1420,7 +1416,7 @@ Translators %s Japanese (ja) %s - Norwegian Bokmål (nb) + Norwegian Bokmål (nb) %s Dutch (nl) %s @@ -1529,109 +1525,100 @@ Conheça mais sobre OpenLP: http://openlp.org/ O OpenLP é escrito e mantido por voluntários. Se você gostaria de ver mais softwares Cristãos gratuítos sendo escritos, por favor, considere contribuir usando o botão abaixo. - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Direitos autorais © 2004-2011 %s +Porções com direitos autorais © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Configurações da Interface - + Number of recent files to display: Número de arquivos recentes a serem exibidos: - + Remember active media manager tab on startup Lembrar aba ativa do gerenciador de mídia ao iniciar - + Double-click to send items straight to live Clicar duas vezes para diretamente projetar itens - + Expand new service items on creation Expandir novos itens do culto ao serem criados - + Enable application exit confirmation Habilitar confirmação de saída do programa - + Mouse Cursor Ponteiro do Mouse - + Hide mouse cursor when over display window Ocultar o cursor do mouse quando estiver sobre a tela de projeção - + Default Image Imagem Padrão - + Background color: Cor do plano de fundo: - + Image file: Arquivo de Imagem: - + Open File Abrir Arquivo - + Advanced Avançado - + Preview items when clicked in Media Manager Pré-visualizar itens quando clicados no Gerenciador de Mídia - + Click to select a color. Clique para selecionar uma cor. - + Browse for an image file to display. Procurar um arquivo de imagem para exibir. - + Revert to the default OpenLP logo. Reverter ao logotipo padrão OpenLP. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1668,7 +1655,7 @@ Portions copyright © 2004-2012 %s Anexar Arquivo - + Description characters to enter : %s Caracteres que podem ser digitadas na descrição: %s @@ -1676,24 +1663,24 @@ Portions copyright © 2004-2012 %s OpenLP.ExceptionForm - + Platform: %s Plataforma: %s - + Save Crash Report Salvar Relatório de Travamento - + Text files (*.txt *.log *.text) Arquivos de texto (*.txt *.log *.text) - + **OpenLP Bug Report** Version: %s @@ -1724,7 +1711,7 @@ Versão %s - + *OpenLP Bug Report* Version: %s @@ -1861,17 +1848,17 @@ Agradecemos se for possível escrever seu relatório em inglês. Configurações Padrões - + Downloading %s... Transferindo %s... - + Download complete. Click the finish button to start OpenLP. Transferência finalizada. Clique no botão terminar para iniciar o OpenLP. - + Enabling selected plugins... Habilitando os plugins selecionados... @@ -1941,32 +1928,32 @@ Agradecemos se for possível escrever seu relatório em inglês. Este assistente irá ajudá-lo na configuração do OpenLP para o uso inicial. Clique abaixo no botão avançar para começar. - + Setting Up And Downloading Configurando e Transferindo - + Please wait while OpenLP is set up and your data is downloaded. Por favor, aguarde enquanto o OpenLP é configurado e seus dados são transferidos. - + Setting Up Configurando - + Click the finish button to start OpenLP. Clique o botão finalizar para iniciar o OpenLP. - + Download complete. Click the finish button to return to OpenLP. Transferência finalizada. Clique no botão finalizar para retornar ao OpenLP. - + Click the finish button to return to OpenLP. Cloque no botão finalizar para retornar ao OpenLP. @@ -2171,170 +2158,140 @@ Para cancelar completamente o Assistente de Primeira Execução (e não iniciar OpenLP.GeneralTab - + General Geral - + Monitors Monitores - + Select monitor for output display: Selecione o monitor para exibição: - + Display if a single screen Exibir no caso de uma única tela - + Application Startup Inicialização do Aplicativo - + Show blank screen warning Exibir alerta de tela em branco - + Automatically open the last service Abrir automaticamente o último culto - + Show the splash screen Exibir a tela de abertura - + Application Settings Configurações do Aplicativo - + Prompt to save before starting a new service Perguntar se salva antes de iniciar um novo culto - + Automatically preview next item in service Pré-visualizar o próximo item no culto automaticamente - + sec seg - + CCLI Details Detalhes de CCLI - + SongSelect username: Usuário SongSelect: - + SongSelect password: Senha SongSelect: - + Display Position Posição do Display - + X X - + Y Y - + Height Altura - + Width Largura - + Override display position Modificar posição do display - + Check for updates to OpenLP Procurar por atualizações do OpenLP - + Unblank display when adding new live item Ativar projeção ao adicionar um item novo - + + Enable slide wrap-around + Habilitar repetição de slides + + + Timed slide interval: Intervalo temporizado de slide: - + Background Audio Áudio de Fundo - + Start background audio paused Iniciar áudio de fundo em pausa - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2352,7 +2309,7 @@ Para cancelar completamente o Assistente de Primeira Execução (e não iniciar OpenLP.MainDisplay - + OpenLP Display Saída do OpenLP @@ -2872,69 +2829,69 @@ Banco de Dados: %s Nenhum Item Selecionado - + &Add to selected Service Item &Adicionar ao Item de Ordem de Culto selecionado - + You must select one or more items to preview. Você deve selecionar um ou mais itens para pré-visualizar. - + You must select one or more items to send live. Você deve selecionar um ou mais itens para projetar. - + You must select one or more items. Você deve selecionar um ou mais itens. - + You must select an existing service item to add to. Você deve selecionar um item de culto existente ao qual adicionar. - + Invalid Service Item Item de Culto inválido - + You must select a %s service item. Você deve selecionar um item de culto %s. - + You must select one or more items to add. Você deve selecionar um ou mais itens para adicionar. - + No Search Results Nenhum Resultado de Busca - + Invalid File Type Tipo de Arquivo Inválido - + Invalid File %s. Suffix not supported Arquivo Inválido %s. Sufixo não suportado - + &Clone &Duplicar - + Duplicate files were found on import and were ignored. Arquivos duplicados foram encontrados na importação e foram ignorados. @@ -3089,12 +3046,12 @@ Sufixo não suportado OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Início</strong>: %s - + <strong>Length</strong>: %s <strong>Duração</strong>: %s @@ -3110,189 +3067,189 @@ Sufixo não suportado OpenLP.ServiceManager - + Move to &top Mover para o &topo - + Move item to the top of the service. Mover item para o topo do culto. - + Move &up Mover para &cima - + Move item up one position in the service. Mover item uma posição para cima no culto. - + Move &down Mover para &baixo - + Move item down one position in the service. Mover item uma posição para baixo no culto. - + Move to &bottom Mover para o &final - + Move item to the end of the service. Mover item para o final do culto. - + &Delete From Service &Excluir do Culto - + Delete the selected item from the service. Excluir o item selecionado do culto. - + &Add New Item &Adicionar um Novo Item - + &Add to Selected Item &Adicionar ao Item Selecionado - + &Edit Item &Editar Item - + &Reorder Item &Reordenar Item - + &Notes &Anotações - + &Change Item Theme &Alterar Tema do Item - + OpenLP Service Files (*.osz) Arquivos de Culto do OpenLP (*.osz) - + File is not a valid service. The content encoding is not UTF-8. O arquivo não é um culto válida. A codificação do conteúdo não é UTF-8. - + File is not a valid service. Arquivo não é uma ordem de culto válida. - + Missing Display Handler Faltando o Manipulador de Exibição - + Your item cannot be displayed as there is no handler to display it O seu item não pode ser exibido porque não existe um manipulador para exibí-lo - + Your item cannot be displayed as the plugin required to display it is missing or inactive O item não pode ser exibido porque o plugin necessário para visualizá-lo está ausente ou está desativado - + &Expand all &Expandir todos - + Expand all the service items. Expandir todos os itens do culto. - + &Collapse all &Recolher todos - + Collapse all the service items. Recolher todos os itens do culto. - + Open File Abrir Arquivo - + Moves the selection down the window. Move a seleção para baixo dentro da janela. - + Move up Mover para cima - + Moves the selection up the window. Move a seleção para cima dentro da janela. - + Go Live Projetar - + Send the selected item to Live. Enviar o item selecionado para a Projeção. - + &Start Time &Horário Inicial - + Show &Preview Exibir &Pré-visualização - + Show &Live Exibir &Projeção - + Modified Service Culto Modificado - + The current service has been modified. Would you like to save this service? O culto atual foi modificada. Você gostaria de salvar este culto? @@ -3312,74 +3269,74 @@ A codificação do conteúdo não é UTF-8. Duração: - + Untitled Service Culto Sem Nome - + File could not be opened because it is corrupt. Arquivo não pôde ser aberto porque está corrompido. - + Empty File Arquivo vazio - + This service file does not contain any data. Este arquivo de culto não contém dados. - + Corrupt File Arquivo corrompido - + Load an existing service. Carregar um culto existente. - + Save this service. Salvar este culto. - + Select a theme for the service. Selecionar um tema para o culto. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Este arquivo está corrompido ou não é um arquivo de culto do OpenLP 2.0. - + Service File Missing Arquivo do Culto não encontrado - + Slide theme Tema do Slide - + Notes Notas - + Edit - + - + Service copy only - + @@ -3411,12 +3368,12 @@ A codificação do conteúdo não é UTF-8. Atalho - + Duplicate Shortcut Atalho Repetido - + The shortcut "%s" is already assigned to another action, please use a different shortcut. O atalho "%s" já está designado para outra ação, escolha um atalho diferente. @@ -3469,77 +3426,77 @@ A codificação do conteúdo não é UTF-8. OpenLP.SlideController - + Hide Ocultar - + Go To Ir Para - + Blank Screen Apagar Tela - + Blank to Theme Apagar e deixar o Tema - + Show Desktop Mostrar a Área de Trabalho - + Previous Service Lista Anterior - + Next Service Próxima Lista - + Escape Item Escapar Item - + Move to previous. Mover para o anterior. - + Move to next. Mover para o seguinte. - + Play Slides Exibir Slides - + Delay between slides in seconds. Espera entre slides em segundos. - + Move to live. Mover para projeção. - + Add to Service. Adicionar ao Culto. - + Edit and reload song preview. Editar e recarregar pré-visualização da música. @@ -3549,64 +3506,64 @@ A codificação do conteúdo não é UTF-8. Começar a reproduzir mídia. - + Pause audio. Pausar o áudio. Pause playing media. - + Stop playing media. - + - + Video position. - + - + Audio Volume. - + - + Go to "Verse" - + - + Go to "Chorus" - + - + Go to "Bridge" - + - + Go to "Pre-Chorus" - + - + Go to "Intro" - + - + Go to "Ending" - + - + Go to "Other" - + @@ -3698,27 +3655,27 @@ A codificação do conteúdo não é UTF-8. OpenLP.ThemeForm - + Select Image Selecionar Imagem - + Theme Name Missing Faltando Nome do Tema - + There is no name for this theme. Please enter one. Não há nome para este tema. Por favor forneça um. - + Theme Name Invalid Nome do Tema Inválido - + Invalid theme name. Please enter one. O nome do tema é inválido. Por favor forneça um. @@ -3791,62 +3748,62 @@ A codificação do conteúdo não é UTF-8. Definir como Padrão &Global - + %s (default) %s (padrão) - + You must select a theme to edit. Você precisa selecionar um tema para editar. - + You are unable to delete the default theme. Você não pode apagar o tema padrão. - + Theme %s is used in the %s plugin. O tema %s é usado no plugin %s. - + You have not selected a theme. Você não selecionou um tema. - + Save Theme - (%s) Salvar Tema - (%s) - + Theme Exported Tema Exportado - + Your theme has been successfully exported. Seu tema foi exportado com sucesso. - + Theme Export Failed Falha ao Exportar Tema - + Your theme could not be exported due to an error. O tema não pôde ser exportado devido a um erro. - + Select Theme Import File Selecionar Arquivo de Importação de Tema - + File is not a valid theme. O arquivo não é um tema válido. @@ -3866,52 +3823,52 @@ A codificação do conteúdo não é UTF-8. &Exportar Tema - + You must select a theme to rename. Você precisa selecionar um tema para renomear. - + Rename Confirmation Confirmar Renomeação - + Rename %s theme? Renomear o tema %s? - + You must select a theme to delete. Você precisa selecionar um tema para excluir. - + Delete Confirmation Confirmar Exclusão - + Delete %s theme? Apagar o tema %s? - + Validation Error Erro de Validação - + A theme with this name already exists. Já existe um tema com este nome. - + OpenLP Themes (*.theme *.otz) Temas do OpenLP (*.theme *.otz) - + Copy of %s Copy of <theme name> Cópia do %s @@ -3920,222 +3877,222 @@ A codificação do conteúdo não é UTF-8. OpenLP.ThemeWizard - + Theme Wizard Assistente de Tema - + Welcome to the Theme Wizard Bem-vindo ao Assistente de Tema - + Set Up Background Configurar Plano de Fundo - + Set up your theme's background according to the parameters below. Configure o plano de fundo de seu tema de acordo com os parâmetros abaixo. - + Background type: Tipo de plano de fundo: - + Solid Color Cor Sólida - + Gradient Degradê - + Color: Cor: - + Gradient: Degradê: - + Horizontal Horizontal - + Vertical Vertical - + Circular Circular - + Top Left - Bottom Right Esquerda Superior - Direita Inferior - + Bottom Left - Top Right Esquerda Inferior - Direita Superior - + Main Area Font Details Detalhes da Fonte da Área Principal - + Define the font and display characteristics for the Display text Definir a fonte e características de exibição para o texto de Exibição - + Font: Fonte: - + Size: Tamanho: - + Line Spacing: Espaçamento entre linhas: - + &Outline: &Contorno: - + &Shadow: &Sombra: - + Bold Negrito - + Italic Itálico - + Footer Area Font Details Detalhes de Fonte da Área de Rodapé - + Define the font and display characteristics for the Footer text Defina a fone e as características de exibição do texto de Rodapé - + Text Formatting Details Detalhes da Formatação de Texto - + Allows additional display formatting information to be defined Permite que informações adicionais de formatações de exibição sejam definidas - + Horizontal Align: Alinhamento Horizontal: - + Left Esquerda - + Right Direita - + Center Centralizado - + Output Area Locations Posições das Áreas de Saída - + Allows you to change and move the main and footer areas. Permite modificar e mover as áreas principal e de rodapé. - + &Main Area &Área Principal - + &Use default location &Usar posição padrão - + X position: Posição X: - + px px - + Y position: Posição Y: - + Width: Largura: - + Height: Altura: - + Use default location Usar posição padrão - + Save and Preview Salvar e pré-visualizar - + View the theme and save it replacing the current one or change the name to create a new theme Visualizar o tema e salvá-lo, substituindo o atual ou mudar o nome para criar um novo tema - + Theme name: Nome do tema: @@ -4145,50 +4102,45 @@ A codificação do conteúdo não é UTF-8. Editar Tema - %s - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Este assistente vai ajudá-lo a criar e editar seus temas. Clique no botão avançar abaixo para iniciar o processo, configurando seu plano de fundo. - + Transitions: Transições: - + &Footer Area Área do &Rodapé - + Starting color: Cor inicial: - + Ending color: Cor final: - + Background color: Cor do Plano de Fundo: - + Justify Justificar - + Layout Preview Previsualizar a Disposição - - - Transparent - - OpenLP.ThemesTab @@ -4583,7 +4535,7 @@ A codificação do conteúdo não é UTF-8. - © + © Copyright symbol. © @@ -4796,7 +4748,7 @@ A codificação do conteúdo não é UTF-8. Presentations name plural - Apresentações + @@ -4886,17 +4838,17 @@ A codificação do conteúdo não é UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Controladores Disponíveis - + Allow presentation application to be overriden Permitir que o aplicativo de apresentações seja substituída - + %s (unavailable) %s (indisponivel) @@ -4912,7 +4864,7 @@ A codificação do conteúdo não é UTF-8. Remote name singular - Remoto + @@ -4930,92 +4882,92 @@ A codificação do conteúdo não é UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 Remoto - + OpenLP 2.0 Stage View OpenLP 2.0 Visão de Palco - + Service Manager Gerenciador de Culto - + Slide Controller Controlador de Slide - + Alerts Alertas - + Search Pesquisar - + Back Voltar - + Refresh Atualizar - + Blank Desativar - + Show Exibir - + Prev Ant - + Next Seg - + Text Texto - + Show Alert Mostrar Alerta - + Go Live Projetar - + No Results Nenhum Resultado - + Options Opções - + Add to Service Adicionar ao Culto @@ -5099,13 +5051,13 @@ A codificação do conteúdo não é UTF-8. SongUsage name singular - Uso das Músicas + SongUsage name plural - Uso das Músicas + @@ -5362,7 +5314,7 @@ A codificação é responsável pela correta representação dos caracteres. Songs name plural - Músicas + @@ -5917,40 +5869,37 @@ EasyWorship] SongsPlugin.MediaItem - + Titles Títulos - + Lyrics Letras - + CCLI License: Licença CCLI: - + Entire Song Música Inteira - + Are you sure you want to delete the %n selected song(s)? - - Tem certeza de que deseja excluir a(s) %n música(s) selecionada(s)? - Tem certeza de que deseja excluir a(s) %n música(s) selecionada(s)? - + Tem certeza de que deseja excluir a(s) %n música(s) selecionada(s)?Tem certeza de que deseja excluir a(s) %n música(s) selecionada(s)? - + Maintain the lists of authors, topics and books. Gerencia a lista de autores, tópicos e hinários. - + copy For song cloning copiar @@ -6244,4 +6193,4 @@ EasyWorship] Outra - + \ No newline at end of file diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts index cd0d79435..11a74b7da 100644 --- a/resources/i18n/ru.ts +++ b/resources/i18n/ru.ts @@ -1040,7 +1040,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Вы уверены, что хотите удалить %n выбранный слайд? @@ -1285,7 +1285,7 @@ Do you want to add the other images anyway? Отсутствует объект для изменений. - + Unsupported File @@ -1303,32 +1303,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1531,108 +1531,99 @@ OpenLP написано и поддерживается добровольцам - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Настройки интерфейса - + Number of recent files to display: Количество недавних файлов: - + Remember active media manager tab on startup Запоминать активную вкладу при запуске - + Double-click to send items straight to live Использовать двойной щелчок для запуска на проектор - + Expand new service items on creation Разворачивать новый объект служения - + Enable application exit confirmation Разрешить подтверждения при выходе - + Mouse Cursor Курсор мыши - + Hide mouse cursor when over display window Прятать курсор мыши когда он над окном показа - + Default Image Изображение по умолчанию - + Background color: Цвет фона: - + Image file: Файл изображения: - + Open File Открыть файл - + Preview items when clicked in Media Manager Просматривать объекты по клику в Менеджере мультимедиа - + Advanced Расширенные настройки - + Click to select a color. Выберите цвет - + Browse for an image file to display. Укажите файл для показа - + Revert to the default OpenLP logo. Возврат к логотипу OpenLP - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1796,17 +1787,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... Загрузка %s... - + Download complete. Click the finish button to start OpenLP. Загрузка завершена. Нажмите кнопку Завершить для запуска OpenLP. - + Enabling selected plugins... Разрешение выбранных плагинов... @@ -1941,22 +1932,22 @@ Version: %s Этот мастер поможет вам настроить OpenLP для первого использования. Чтобы приступить, нажмите кнопку Далее. - + Setting Up And Downloading Настройка и загрузка - + Please wait while OpenLP is set up and your data is downloaded. Пожалуйста, дождитесь пока OpenLP применит настройки и загрузит данные. - + Setting Up Настройка - + Click the finish button to start OpenLP. Нажмите кнопку Завершить чтобы запустить OpenLP. @@ -1966,12 +1957,12 @@ Version: %s Специальные Слайды - + Download complete. Click the finish button to return to OpenLP. Загрузка завершена. Нажмите кнопку Завершить, чтобы вернуться в OpenLP. - + Click the finish button to return to OpenLP. Нажмите кнопку Завершить для возврата в OpenLP. @@ -2167,170 +2158,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General Общие - + Monitors Мониторы - + Select monitor for output display: Выберите монитор для показа: - + Display if a single screen Выполнять на одном экране - + Application Startup Запуск приложения - + Show blank screen warning Показывать предупреждение об очистке экрана - + Automatically open the last service Автоматически загружать последнее служение - + Show the splash screen Показывать заставку - + Check for updates to OpenLP Проверять обновления OpenLP - + Application Settings Настройки приложения - + Prompt to save before starting a new service Запрос сохранения перед созданием нового служения - + Automatically preview next item in service Автоматически просматривать следующий объект в служении - + sec сек - + CCLI Details Детали CCLI - + SongSelect username: SongSelect логин: - + SongSelect password: SongSelect пароль: - + Display Position Положение дисплея - + X Х - + Y Y - + Height Высота - + Width Ширина - + Override display position Сместить положение показа - + Unblank display when adding new live item Снимать блокировку дисплея при добавлении нового объекта - + + Enable slide wrap-around + Разрешить слайдам циклический переход + + + Timed slide interval: Интервал показа: - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2348,7 +2309,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display Дисплей OpenLP @@ -2860,69 +2821,69 @@ Database: %s Объекты не выбраны - + &Add to selected Service Item &Добавить в выбранный объект Служения - + You must select one or more items to preview. Вы должны выбрать объекты для просмотра. - + You must select one or more items to send live. Вы должны выбрать элементы для показа. - + You must select one or more items. Вы должны выбрать один или более элементов. - + You must select an existing service item to add to. Для добавления вы должны выбрать существующий элемент служения. - + Invalid Service Item Неправильный элемент Служения - + You must select a %s service item. Вы должны выбрать объект служения %s. - + You must select one or more items to add. Для добавления вы должны выбрать один или более элементов. - + No Search Results Результаты поиска отсутствуют - + &Clone &Клонировать - + Invalid File Type Неправильный тип файла - + Invalid File %s. Suffix not supported Неправильный файл %s. Расширение не поддерживается - + Duplicate files were found on import and were ignored. @@ -3077,12 +3038,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Начать</strong>: %s - + <strong>Length</strong>: %s <strong>Длина</strong>: %s @@ -3228,7 +3189,7 @@ Suffix not supported Открыть файл - + OpenLP Service Files (*.osz) Открыть файл служения OpenLP (*.osz) @@ -3238,29 +3199,29 @@ Suffix not supported Измененное служение - + File is not a valid service. The content encoding is not UTF-8. Файл не является правильным служением. Формат кодирования не UTF-8. - + File is not a valid service. Файл не является правильным служением. - + Missing Display Handler Отсутствует обработчик показа - + Your item cannot be displayed as there is no handler to display it Объект не может быть показан, поскольку отсутствует обработчик для его показа - + Your item cannot be displayed as the plugin required to display it is missing or inactive Элемент служения не может быть показан, поскольку требуемый плагин отсутствует или отключен @@ -3285,22 +3246,22 @@ The content encoding is not UTF-8. Текущее служение было изменено. Вы хотите сохранить это служение? - + File could not be opened because it is corrupt. Файл не может быть открыт, поскольку он поврежден. - + Empty File Пустой файл - + This service file does not contain any data. Файл служения не содержит данных. - + Corrupt File Поврежденный файл @@ -3340,17 +3301,17 @@ The content encoding is not UTF-8. Выбрать тему для служения. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Этот файл поврежден или не является файлом служения OpenLP 2.0. - + Slide theme Тема слайда - + Notes Заметки @@ -3360,12 +3321,12 @@ The content encoding is not UTF-8. Файл служения отсутствует - + Edit - + Service copy only @@ -3457,77 +3418,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide Скрыть - + Blank Screen Пустой экран - + Blank to Theme Фон темы - + Show Desktop Показать рабочий стол - + Go To Перейти к - + Previous Service Предыдущее служение - + Next Service Следующее служение - + Escape Item - + Move to previous. Переместить к предыдущему. - + Move to next. Переместить к следующему. - + Play Slides Проиграть слайды. - + Delay between slides in seconds. Задержка между слайдами в секундах. - + Move to live. Переместить к показу. - + Add to Service. Добавить к служению. - + Edit and reload song preview. Изменить и перезагрузить предпросмотр песни. @@ -3537,7 +3498,7 @@ The content encoding is not UTF-8. Начать проигрывание медиафайла. - + Pause audio. @@ -3562,37 +3523,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3686,27 +3647,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image Выбрать изображение - + Theme Name Missing Название темы отсутствует - + There is no name for this theme. Please enter one. Не указано название темы. Укажите его. - + Theme Name Invalid Название темы неправильное - + Invalid theme name. Please enter one. Наверное название темы. Исправьте его. @@ -3913,270 +3874,265 @@ The content encoding is not UTF-8. Изменить тему - %s - + Theme Wizard Мастер Тем - + Welcome to the Theme Wizard Добро пожаловать в Мастер Тем - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Этот мастер поможет вам создать и изменить темы. Выберите кнопку Далее чтобы начать процесс настройки темы. - + Set Up Background Выбор фона - + Set up your theme's background according to the parameters below. Установите фон темы в соответствии с параметрами. - + Background type: Тип фона: - + Solid Color Сплошная заливка - + Gradient Градиент - + Color: Цвет: - + Gradient: Градиент: - + Horizontal Горизонтальный - + Vertical Вертикальный - + Circular Круговой - + Top Left - Bottom Right Верх слева - низ справа - + Bottom Left - Top Right Низ слева - верх справа - + Main Area Font Details Шрифт основной области - + Define the font and display characteristics for the Display text Определите шрифт и характеристики дисплея - + Font: Шрифт: - + Size: Размер: - + Line Spacing: Интервал: - + &Outline: &Контур: - + &Shadow: &Тень: - + Bold Жирный - + Italic Курсив - + Footer Area Font Details Настройки шрифта подписи - + Define the font and display characteristics for the Footer text Определите шрифт для подписи - + Text Formatting Details Настройки форматирования текста - + Allows additional display formatting information to be defined Разрешить дополнительные настройки форматирования - + Horizontal Align: Горизонтальная привязка: - + Left Слева - + Right Справа - + Center По центру - + Transitions: Переходы: - + Output Area Locations Расположение области вывода - + Allows you to change and move the main and footer areas. Разрешить изменять и перемещать основную область и область вывода. - + &Main Area &Основная область - + &Use default location &Использовать положение по умолчанию - + X position: Позиция Х: - + px px - + Y position: Позиция Y: - + Width: Ширина: - + Height: Высота: - + &Footer Area &Область подписи - + Use default location Использовать расположение по умолчанию - + Save and Preview Сохранить и просмотреть - + View the theme and save it replacing the current one or change the name to create a new theme Просмотреть тему и сохранить ее заменяя текущую или изменить название создав новую тему - + Theme name: Название темы: - + Starting color: Начальный цвет: - + Ending color: Конечный цвет: - + Background color: Цвет фона: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4874,17 +4830,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + Allow presentation application to be overriden - + %s (unavailable) @@ -4918,92 +4874,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager Управление Служением - + Slide Controller - + Alerts Оповещения - + Search Поиск - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live Показать - + No Results - + Options Опции - + Add to Service @@ -5902,22 +5858,22 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Entire Song Всю песню - + Titles Название - + Lyrics Слова - + Are you sure you want to delete the %n selected song(s)? Вы уверены, что хотите удалить %n выбранную песню? @@ -5926,17 +5882,17 @@ The encoding is responsible for the correct character representation. - + CCLI License: Лицензия CCLI: - + Maintain the lists of authors, topics and books. - + copy For song cloning diff --git a/resources/i18n/sq.ts b/resources/i18n/sq.ts index f0f567fb8..5ddab3de6 100644 --- a/resources/i18n/sq.ts +++ b/resources/i18n/sq.ts @@ -1022,7 +1022,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? @@ -1264,7 +1264,7 @@ Do you want to add the other images anyway? - + Unsupported File @@ -1282,32 +1282,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1415,6 +1415,12 @@ Final Credit Credits + + + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + + 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. @@ -1440,110 +1446,94 @@ Final Credit build %s - - - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - - OpenLP.AdvancedTab - + Advanced - + UI Settings - + Number of recent files to display: - + Remember active media manager tab on startup - + Double-click to send items straight to live - + Preview items when clicked in Media Manager - + Expand new service items on creation - + Enable application exit confirmation - + Mouse Cursor - + Hide mouse cursor when over display window - + Default Image - + Background color: - + Click to select a color. - + Image file: - + Browse for an image file to display. - + Revert to the default OpenLP logo. - + Open File - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1679,47 +1669,47 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... - + Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. - + Setting Up - + Download complete. Click the finish button to return to OpenLP. - + Download complete. Click the finish button to start OpenLP. - + Click the finish button to return to OpenLP. - + Click the finish button to start OpenLP. - + Enabling selected plugins... @@ -2050,170 +2040,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General - + Monitors - + Select monitor for output display: - + Display if a single screen - + Application Startup - + Show blank screen warning - + Automatically open the last service - + Show the splash screen - + Check for updates to OpenLP - + Application Settings - + Prompt to save before starting a new service - + Unblank display when adding new live item - + Automatically preview next item in service - + + Enable slide wrap-around + + + + Timed slide interval: - + sec - + CCLI Details - + SongSelect username: - + SongSelect password: - + Display Position - + Override display position - + X - + Y - + Height - + Width - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2231,7 +2191,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display @@ -2739,68 +2699,68 @@ Database: %s - + &Add to selected Service Item - + Invalid File Type - + Invalid File %s. Suffix not supported - + Duplicate files were found on import and were ignored. - + You must select one or more items to preview. - + You must select one or more items to send live. - + You must select one or more items to add. - + You must select one or more items. - + You must select an existing service item to add to. - + Invalid Service Item - + You must select a %s service item. - + No Search Results - + &Clone @@ -2955,12 +2915,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3156,7 +3116,7 @@ Suffix not supported - + OpenLP Service Files (*.osz) @@ -3176,73 +3136,73 @@ Suffix not supported - + File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File - + This file is either corrupt or it is not an OpenLP 2.0 service file. - + Slide theme - + Notes - + Missing Display Handler - + Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive - + Edit - + Service copy only @@ -3334,57 +3294,57 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous. - + Move to next. - + Hide - + Blank Screen - + Blank to Theme - + Show Desktop - + Play Slides - + Delay between slides in seconds. - + Move to live. - + Add to Service. - + Edit and reload song preview. @@ -3394,27 +3354,27 @@ The content encoding is not UTF-8. - + Go To - + Pause audio. - + Previous Service - + Next Service - + Escape Item @@ -3439,37 +3399,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3568,27 +3528,27 @@ The content encoding is not UTF-8. - + Select Image - + Theme Name Missing - + There is no name for this theme. Please enter one. - + Theme Name Invalid - + Invalid theme name. Please enter one. @@ -3790,270 +3750,265 @@ The content encoding is not UTF-8. - + Theme Wizard - + Welcome to the Theme Wizard - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Set Up Background - + Set up your theme's background according to the parameters below. - + Background type: - + Solid Color - + Gradient - + Color: - + Gradient: - + Horizontal - + Vertical - + Circular - + Top Left - Bottom Right - + Bottom Left - Top Right - + Main Area Font Details - + Define the font and display characteristics for the Display text - + Font: - + Size: - + Line Spacing: - + &Outline: - + &Shadow: - + Bold - + Italic - + Footer Area Font Details - + Define the font and display characteristics for the Footer text - + Text Formatting Details - + Allows additional display formatting information to be defined - + Horizontal Align: - + Left - + Right - + Center - + Justify - + Transitions: - + Output Area Locations - + Allows you to change and move the main and footer areas. - + &Main Area - + &Use default location - + X position: - + px - + Y position: - + Width: - + Height: - + &Footer Area - + Use default location - + Layout Preview - + Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: - + Starting color: - + Ending color: - + Background color: - - - Transparent - - OpenLP.ThemesTab @@ -4751,17 +4706,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + %s (unavailable) - + Allow presentation application to be overriden @@ -4795,92 +4750,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager - + Slide Controller - + Alerts - + Search - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live - + Add to Service - + No Results - + Options @@ -5775,40 +5730,40 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles - + Maintain the lists of authors, topics and books. - + Entire Song - + Lyrics - + Are you sure you want to delete the %n selected song(s)? - + copy For song cloning - + CCLI License: diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts index 7148d5c3f..de1adb783 100644 --- a/resources/i18n/sv.ts +++ b/resources/i18n/sv.ts @@ -1040,7 +1040,7 @@ Observera att verser från webb-biblar kommer att laddas ner vid behov, och där CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? Är du säker på att du vill ta bort den valda anpassade diabilden? @@ -1284,7 +1284,7 @@ Vill du lägga till dom andra bilderna ändå? Det fanns ingen visningspost att ändra. - + Unsupported File Okänd filtyp @@ -1302,32 +1302,32 @@ Vill du lägga till dom andra bilderna ändå? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) %s (inte tillgänglig) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1530,108 +1530,99 @@ OpenLP utvecklas och underhålls av frivilliga. Om du vill se mer fri kristen mj - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s - + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s + Copyright © 2004-2011 %s +Del-copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings Inställningar för användargränssnitt - + Number of recent files to display: Antal tidigare körscheman att visa: - + Remember active media manager tab on startup Kom ihåg aktiv mediaflik vid start - + Double-click to send items straight to live Dubbelklicka för att visa poster live - + Expand new service items on creation Expandera nya poster i körschemat vid skapandet - + Enable application exit confirmation Bekräfta för att avsluta programmet - + Mouse Cursor Muspekare - + Hide mouse cursor when over display window Dölj muspekaren över visningsfönstret - + Default Image Standardbild - + Background color: Bakgrundsfärg: - + Image file: Bildfil: - + Open File Öppna fil - + Preview items when clicked in Media Manager Förhandsgranska poster vid klick i mediahanteraren - + Advanced Avancerat - + Click to select a color. Klicka för att välja en färg. - + Browse for an image file to display. Välj en bildfil att visa. - + Revert to the default OpenLP logo. Återställ till OpenLP:s standardlogotyp. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1795,17 +1786,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... Hämtar %s... - + Download complete. Click the finish button to start OpenLP. Nedladdning färdig. Klicka på Slutför för att starta OpenLP. - + Enabling selected plugins... Aktivera valda moduler... @@ -1940,22 +1931,22 @@ Version: %s Den här guiden hjälper dig att ställa in OpenLP före första användningen. Klicka på Nästa för att starta. - + Setting Up And Downloading Ställer in och laddar ner - + Please wait while OpenLP is set up and your data is downloaded. Vänta medan OpenLP ställs in och din data laddas ner. - + Setting Up Ställer in - + Click the finish button to start OpenLP. Klicka på Slutför för att starta OpenLP. @@ -1965,12 +1956,12 @@ Version: %s Anpassade sidor - + Download complete. Click the finish button to return to OpenLP. Nedladdning färdig. Klicka på Slutför för att återvända till OpenLP. - + Click the finish button to return to OpenLP. Klicka på Slutför för att återvända till OpenLP. @@ -2170,170 +2161,140 @@ För att avbryta kom igång-guiden helt (och inte starta OpenLP), klicka Avbryt OpenLP.GeneralTab - + General Allmänt - + Monitors Skärmar - + Select monitor for output display: Välj skärm för bildvisning: - + Display if a single screen Visa även på enkel skärm - + Application Startup Programstart - + Show blank screen warning Visa varning vid tom skärm - + Automatically open the last service Öppna det senaste körschemat automatiskt - + Show the splash screen Visa startbilden - + Application Settings Programinställningar - + Prompt to save before starting a new service Fråga om att spara innan ett nytt körschema skapas - + Automatically preview next item in service Förhandsgranska nästa post i körschemat automatiskt - + sec sekunder - + CCLI Details CCLI-detaljer - + SongSelect username: SongSelect användarnamn: - + SongSelect password: SongSelect lösenord: - + Display Position Bildposition - + X X - + Y Y - + Height Höjd - + Width Bredd - + Override display position Manuell bildposition - + Check for updates to OpenLP Sök efter uppdateringar till OpenLP - + Unblank display when adding new live item Lägg ut bilden direkt när en ny live-bild läggs till - + + Enable slide wrap-around + Börja om när sista sidan har visats + + + Timed slide interval: Tidsstyrd bildväxling: - + Background Audio Bakgrundsljud - + Start background audio paused Starta bakgrundsljud pausat - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2351,7 +2312,7 @@ För att avbryta kom igång-guiden helt (och inte starta OpenLP), klicka Avbryt OpenLP.MainDisplay - + OpenLP Display OpenLP-visning @@ -2871,69 +2832,69 @@ Databas: %s Inga poster valda - + &Add to selected Service Item &Lägg till i vald post i körschemat - + You must select one or more items to preview. Du måste välja en eller flera poster att förhandsgranska. - + You must select one or more items to send live. Du måste välja en eller flera poster att visa live. - + You must select one or more items. Du måste välja en eller flera poster. - + You must select an existing service item to add to. Du måste välja en befintlig post i körschemat att lägga till i. - + Invalid Service Item Ogiltig körschemapost - + You must select a %s service item. Du måste välja en post av typen %s i körschemat. - + You must select one or more items to add. Du måste välja en eller flera poster att lägga till. - + No Search Results Inga sökresultat - + &Clone &Klona - + Invalid File Type Ogiltig filtyp - + Invalid File %s. Suffix not supported Ogiltig fil %s. Filändelsen stöds ej - + Duplicate files were found on import and were ignored. Dubblettfiler hittades vid importen och ignorerades. @@ -3088,12 +3049,12 @@ Filändelsen stöds ej OpenLP.ServiceItem - + <strong>Start</strong>: %s <strong>Start</strong>: %s - + <strong>Length</strong>: %s <strong>Längd</strong>: %s @@ -3189,29 +3150,29 @@ Filändelsen stöds ej &Byt postens tema - + File is not a valid service. The content encoding is not UTF-8. Filen är inte ett giltigt körschema. Innehållets teckenkodning är inte UTF-8. - + File is not a valid service. Filen är inte ett giltigt körschema. - + Missing Display Handler Visningsmodul saknas - + Your item cannot be displayed as there is no handler to display it Posten kan inte visas eftersom det inte finns någon visningsmodul för att visa den - + Your item cannot be displayed as the plugin required to display it is missing or inactive Posten kan inte visas eftersom modulen som krävs för att visa den saknas eller är inaktiv @@ -3241,7 +3202,7 @@ Innehållets teckenkodning är inte UTF-8. Öppna fil - + OpenLP Service Files (*.osz) OpenLP körschemafiler (*.osz) @@ -3296,22 +3257,22 @@ Innehållets teckenkodning är inte UTF-8. Det nuvarande körschemat har ändrats. Vill du spara körschemat? - + File could not be opened because it is corrupt. Filen kunde inte öppnas eftersom den är korrupt. - + Empty File Tom fil - + This service file does not contain any data. Det här körschemat innehåller inte någon data. - + Corrupt File Korrupt fil @@ -3351,17 +3312,17 @@ Innehållets teckenkodning är inte UTF-8. Välj ett tema för körschemat. - + This file is either corrupt or it is not an OpenLP 2.0 service file. Filen är antingen korrupt eller inte en OpenLP 2.0 körschemafil. - + Slide theme Sidtema - + Notes Anteckningar @@ -3371,12 +3332,12 @@ Innehållets teckenkodning är inte UTF-8. Körschemafil saknas - + Edit - + Service copy only @@ -3468,77 +3429,77 @@ Innehållets teckenkodning är inte UTF-8. OpenLP.SlideController - + Hide Dölj - + Go To Gå till - + Blank Screen Släck skärm - + Blank to Theme Släck till tema - + Show Desktop Visa skrivbord - + Previous Service Föregående post - + Next Service Nästa post - + Escape Item Avbryt post - + Move to previous. Flytta till föregående. - + Move to next. Flytta till nästa. - + Play Slides Sidvisning - + Delay between slides in seconds. Tid i sekunder mellan sidorna. - + Move to live. Visa live. - + Add to Service. Lägg till i körschema. - + Edit and reload song preview. Redigera och uppdatera förhandsvisning. @@ -3548,7 +3509,7 @@ Innehållets teckenkodning är inte UTF-8. Starta uppspelning. - + Pause audio. Pausa ljud. @@ -3573,37 +3534,37 @@ Innehållets teckenkodning är inte UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3697,27 +3658,27 @@ Innehållets teckenkodning är inte UTF-8. OpenLP.ThemeForm - + Select Image Välj bild - + Theme Name Missing Temanamn saknas - + There is no name for this theme. Please enter one. Det finns inget namn på temat. Var vänlig att ange ett. - + Theme Name Invalid Ogiltigt temanamn - + Invalid theme name. Please enter one. Ogiltigt temanamn. Ange ett giltigt namn. @@ -3919,237 +3880,237 @@ Innehållets teckenkodning är inte UTF-8. OpenLP.ThemeWizard - + Theme Wizard Temaguiden - + Welcome to the Theme Wizard Välkommen till temaguiden - + Set Up Background Ställ in bakgrund - + Set up your theme's background according to the parameters below. Ställ in temats bakgrund enligt parametrarna nedan. - + Background type: Bakgrundstyp: - + Solid Color Solid färg - + Gradient Gradient - + Color: Färg: - + Gradient: Gradient: - + Horizontal Horisontell - + Vertical Vertikal - + Circular Cirkulär - + Top Left - Bottom Right Uppe vänster - nere höger - + Bottom Left - Top Right Nere vänster - uppe höger - + Main Area Font Details Huvudytans tecken - + Define the font and display characteristics for the Display text Definiera font och egenskaper för visningstexten - + Font: Teckensnitt: - + Size: Storlek: - + Line Spacing: Radavstånd: - + &Outline: &Kant: - + &Shadow: Sk&ugga: - + Bold Fetstil - + Italic Kursiv - + Footer Area Font Details Sidfotens tecken - + Define the font and display characteristics for the Footer text Definiera font och egenskaper för sidfotstexten - + Text Formatting Details Textformatering - + Allows additional display formatting information to be defined Ytterligare inställningsmöjligheter för visningsformatet - + Horizontal Align: Horisontell justering: - + Left Vänster - + Right Höger - + Center Centrera - + Output Area Locations Visningsytornas positioner - + Allows you to change and move the main and footer areas. Låter dig ändra och flytta huvud- och sidfotsytorna. - + &Main Area &Huvudyta - + &Use default location Använd &standardposition - + X position: X-position: - + px px - + Y position: Y-position: - + Width: Bredd: - + Height: Höjd: - + Use default location Använd standardposition - + Save and Preview Spara och förhandsgranska - + View the theme and save it replacing the current one or change the name to create a new theme Visa temat och spara det under samma namn för att ersätta det befintliga, eller under nytt namn för att skapa ett nytt tema - + Theme name: Temanamn: - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. Den här guiden hjälper dig att skapa och redigera dina teman. Klicka på Nästa för att börja processen med att ställa in bakgrund. - + Transitions: Övergångar: - + &Footer Area &Sidfotsyta @@ -4159,35 +4120,30 @@ Innehållets teckenkodning är inte UTF-8. Redigera tema - %s - + Starting color: Startfärg: - + Ending color: Slutfärg: - + Background color: Bakgrundsfärg: - + Justify Marginaljustera - + Layout Preview Förhandsgranskning av layout - - - Transparent - - OpenLP.ThemesTab @@ -4885,17 +4841,17 @@ Innehållets teckenkodning är inte UTF-8. PresentationPlugin.PresentationTab - + Available Controllers Tillgängliga presentationsprogram - + Allow presentation application to be overriden Tillåt presentationsprogram att åsidosättas - + %s (unavailable) %s (inte tillgängligt) @@ -4929,92 +4885,92 @@ Innehållets teckenkodning är inte UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote OpenLP 2.0 fjärrstyrning - + OpenLP 2.0 Stage View OpenLP 2.0 scenvisning - + Service Manager Körschema - + Slide Controller Visningskontroll - + Alerts Meddelanden - + Search Sök - + Back Tillbaka - + Refresh Uppdatera - + Blank Släck - + Show Visa - + Prev Förra - + Next Nästa - + Text Text - + Show Alert Visa meddelande - + Go Live Lägg ut bilden - + No Results Inga resultat - + Options Alternativ - + Add to Service Lägg till i körschema @@ -5916,27 +5872,27 @@ Teckenkodningen ansvarar för rätt teckenrepresentation. SongsPlugin.MediaItem - + Titles Titel - + Lyrics Sångtext - + CCLI License: CCLI-licens: - + Entire Song Hela sången - + Are you sure you want to delete the %n selected song(s)? Är du säker på att du vill ta bort den valda sången? @@ -5944,12 +5900,12 @@ Teckenkodningen ansvarar för rätt teckenrepresentation. - + Maintain the lists of authors, topics and books. Underhåll listan över författare, ämnen och böcker. - + copy For song cloning kopia diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts index 79891b96b..70ccf1e90 100644 --- a/resources/i18n/zh_CN.ts +++ b/resources/i18n/zh_CN.ts @@ -1022,7 +1022,7 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I CustomPlugin.MediaItem - + Are you sure you want to delete the %n selected custom slides(s)? @@ -1264,7 +1264,7 @@ Do you want to add the other images anyway? - + Unsupported File @@ -1282,32 +1282,32 @@ Do you want to add the other images anyway? MediaPlugin.MediaTab - + Available Media Players - + %s (unavailable) - + Player Order - + Down - + Up - + Allow media player to be overriden @@ -1442,108 +1442,98 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Copyright © 2004-2012 %s -Portions copyright © 2004-2012 %s + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s OpenLP.AdvancedTab - + UI Settings - + Number of recent files to display: - + Remember active media manager tab on startup - + Double-click to send items straight to live - + Expand new service items on creation - + Enable application exit confirmation - + Mouse Cursor - + Hide mouse cursor when over display window - + Default Image - + Background color: - + Image file: - + Open File - + Preview items when clicked in Media Manager - + Advanced - + Click to select a color. - + Browse for an image file to display. - + Revert to the default OpenLP logo. - - - X11 - - - - - Bypass X11 Window Manager - - OpenLP.ExceptionDialog @@ -1679,17 +1669,17 @@ Version: %s OpenLP.FirstTimeWizard - + Downloading %s... - + Download complete. Click the finish button to start OpenLP. - + Enabling selected plugins... @@ -1824,22 +1814,22 @@ Version: %s - + Setting Up And Downloading - + Please wait while OpenLP is set up and your data is downloaded. - + Setting Up - + Click the finish button to start OpenLP. @@ -1849,12 +1839,12 @@ Version: %s - + Download complete. Click the finish button to return to OpenLP. - + Click the finish button to return to OpenLP. @@ -2050,170 +2040,140 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.GeneralTab - + General - + Monitors - + Select monitor for output display: - + Display if a single screen - + Application Startup - + Show blank screen warning - + Automatically open the last service - + Show the splash screen - + Application Settings - + Prompt to save before starting a new service - + Automatically preview next item in service - + sec - + CCLI Details - + SongSelect username: - + SongSelect password: - + Display Position - + X - + Y - + Height - + Width - + Override display position - + Check for updates to OpenLP - + Unblank display when adding new live item - + + Enable slide wrap-around + + + + Timed slide interval: - + Background Audio - + Start background audio paused - - - Service Item Slide Advance - - - - - &End Slide - - - - - Up and down arrow keys stop at the top and bottom slides of each Service Item. - - - - - &Wrap Slide - - - - - Up and down arrow keys wrap around at the top and bottom slides of each Service Item. - - - - - &Next Slide - - - - - Up and down arrow keys advance to the the next or previous Service Item from the top and bottom slides of each Service Item. - - OpenLP.LanguageManager @@ -2231,7 +2191,7 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can OpenLP.MainDisplay - + OpenLP Display @@ -2739,68 +2699,68 @@ Database: %s - + &Add to selected Service Item - + You must select one or more items to preview. - + You must select one or more items to send live. - + You must select one or more items. - + You must select an existing service item to add to. - + Invalid Service Item - + You must select a %s service item. - + You must select one or more items to add. - + No Search Results - + &Clone - + Invalid File Type - + Invalid File %s. Suffix not supported - + Duplicate files were found on import and were ignored. @@ -2955,12 +2915,12 @@ Suffix not supported OpenLP.ServiceItem - + <strong>Start</strong>: %s - + <strong>Length</strong>: %s @@ -3056,33 +3016,33 @@ Suffix not supported - + OpenLP Service Files (*.osz) - + File is not a valid service. The content encoding is not UTF-8. - + File is not a valid service. - + Missing Display Handler - + Your item cannot be displayed as there is no handler to display it - + Your item cannot be displayed as the plugin required to display it is missing or inactive @@ -3162,22 +3122,22 @@ The content encoding is not UTF-8. - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -3217,17 +3177,17 @@ The content encoding is not UTF-8. - + This file is either corrupt or it is not an OpenLP 2.0 service file. - + Slide theme - + Notes @@ -3237,12 +3197,12 @@ The content encoding is not UTF-8. - + Edit - + Service copy only @@ -3334,77 +3294,77 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Hide - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Service - + Next Service - + Escape Item - + Move to previous. - + Move to next. - + Play Slides - + Delay between slides in seconds. - + Move to live. - + Add to Service. - + Edit and reload song preview. @@ -3414,7 +3374,7 @@ The content encoding is not UTF-8. - + Pause audio. @@ -3439,37 +3399,37 @@ The content encoding is not UTF-8. - + Go to "Verse" - + Go to "Chorus" - + Go to "Bridge" - + Go to "Pre-Chorus" - + Go to "Intro" - + Go to "Ending" - + Go to "Other" @@ -3563,27 +3523,27 @@ The content encoding is not UTF-8. OpenLP.ThemeForm - + Select Image - + Theme Name Missing - + There is no name for this theme. Please enter one. - + Theme Name Invalid - + Invalid theme name. Please enter one. @@ -3785,222 +3745,222 @@ The content encoding is not UTF-8. OpenLP.ThemeWizard - + Theme Wizard - + Welcome to the Theme Wizard - + Set Up Background - + Set up your theme's background according to the parameters below. - + Background type: - + Solid Color - + Gradient - + Color: - + Gradient: - + Horizontal - + Vertical - + Circular - + Top Left - Bottom Right - + Bottom Left - Top Right - + Main Area Font Details - + Define the font and display characteristics for the Display text - + Font: - + Size: - + Line Spacing: - + &Outline: - + &Shadow: - + Bold - + Italic - + Footer Area Font Details - + Define the font and display characteristics for the Footer text - + Text Formatting Details - + Allows additional display formatting information to be defined - + Horizontal Align: - + Left - + Right - + Center - + Output Area Locations - + Allows you to change and move the main and footer areas. - + &Main Area - + &Use default location - + X position: - + px - + Y position: - + Width: - + Height: - + Use default location - + Save and Preview - + View the theme and save it replacing the current one or change the name to create a new theme - + Theme name: @@ -4010,50 +3970,45 @@ The content encoding is not UTF-8. - + This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background. - + Transitions: - + &Footer Area - + Starting color: - + Ending color: - + Background color: - + Justify - + Layout Preview - - - Transparent - - OpenLP.ThemesTab @@ -4751,17 +4706,17 @@ The content encoding is not UTF-8. PresentationPlugin.PresentationTab - + Available Controllers - + Allow presentation application to be overriden - + %s (unavailable) @@ -4795,92 +4750,92 @@ The content encoding is not UTF-8. RemotePlugin.Mobile - + OpenLP 2.0 Remote - + OpenLP 2.0 Stage View - + Service Manager - + Slide Controller - + Alerts - + Search - + Back - + Refresh - + Blank - + Show - + Prev - + Next - + Text - + Show Alert - + Go Live - + No Results - + Options - + Add to Service @@ -5775,39 +5730,39 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - + Titles - + Lyrics - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? - + Maintain the lists of authors, topics and books. - + copy For song cloning From 982bfbbd55caab4719bac99dfb35c2f132f63322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 16 Jan 2012 15:50:17 +0200 Subject: [PATCH 048/105] Fix labels according to Meinert's comment. --- openlp/core/ui/advancedtab.py | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 6ca50de2b..5774db9ff 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -143,10 +143,6 @@ class AdvancedTab(SettingsTab): self.defaultServiceExample.setObjectName(u'defaultServiceExample') self.defaultServiceLayout.addRow(self.defaultServiceExampleLabel, self.defaultServiceExample) - self.defaultServiceNoteLabel = QtGui.QLabel(self.defaultServiceGroupBox) - self.defaultServiceNoteLabel.setWordWrap(True) - self.defaultServiceNoteLabel.setObjectName(u'defaultServiceNoteLabel') - self.defaultServiceLayout.addRow(self.defaultServiceNoteLabel) self.leftLayout.addWidget(self.defaultServiceGroupBox) self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) @@ -239,9 +235,9 @@ class AdvancedTab(SettingsTab): self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab', 'Enable application exit confirmation')) self.defaultServiceGroupBox.setTitle( - translate('OpenLP.AdvancedTab', 'Default Service')) + translate('OpenLP.AdvancedTab', 'Default Service Name')) self.defaultServiceDayLabel.setText( - translate('OpenLP.AdvancedTab', 'Service name refers to:')) + translate('OpenLP.AdvancedTab', 'Date and Time:')) self.defaultServiceDay.setItemText(0, translate('OpenLP.AdvancedTab', 'Monday')) self.defaultServiceDay.setItemText(1, @@ -261,19 +257,13 @@ class AdvancedTab(SettingsTab): self.defaultServiceTime.setToolTip(translate('OpenLP.AdvancedTab', 'Time when usual service starts.')) self.defaultServiceLabel.setText( - translate('OpenLP.AdvancedTab', 'Default service name:')) + translate('OpenLP.AdvancedTab', 'Name:')) self.defaultServiceRevertButton.setToolTip(unicode( translate('OpenLP.AdvancedTab', 'Revert to the default service name "%s".')) % self.default_service_name) self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', 'Example:')) - self.defaultServiceNoteLabel.setText(unicode( - translate('OpenLP.AdvancedTab', 'Default service name when ' - 'saving a new service. You can use date placeholders, e.g %s ' - 'results in %s. Leave it empty to use no default value.')) % - (self.default_service_example, - datetime.now().strftime(self.default_service_example))) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', From df60a89121ed127466ad8a67a2fe502a2743179b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 16 Jan 2012 15:59:23 +0200 Subject: [PATCH 049/105] Change default name and remove now obsolete string. --- openlp/core/ui/advancedtab.py | 7 ++----- openlp/core/ui/servicemanager.py | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 5774db9ff..67811a209 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -47,15 +47,12 @@ class AdvancedTab(SettingsTab): self.display_changed = False advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') # 7 stands for now, 0 to 6 is Monday to Sunday. - self.default_service_day = 0 + self.default_service_day = 7 # 11 o'clock is the most popular time for morning service. self.default_service_hour = 11 self.default_service_minute = 0 self.default_service_name = unicode(translate('OpenLP.AdvancedTab', - 'Service %Y-%m-%d-%H-%M')) - self.default_service_example = unicode(translate('OpenLP.AdvancedTab', - '%Y-%m-%d-%H-%M', - 'This should be the date part of default service name.')) + 'Service %Y-%m-%d %H-%M')) self.default_image = u':/graphics/openlp-splash-screen.png' self.default_color = u'#ffffff' self.icon_path = u':/system/system_settings.png' diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 4d7398243..44a9cb6de 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -631,7 +631,7 @@ class ServiceManager(QtGui.QWidget): default_pattern = unicode(QtCore.QSettings().value( u'advanced/default service name', translate('OpenLP.AdvancedTab', - 'Service %Y-%m-%d-%H-%M')).toString()) + 'Service %Y-%m-%d %H-%M')).toString()) default_filename = time.strftime(default_pattern) directory = unicode(SettingsManager.get_last_dir( self.mainwindow.servicemanagerSettingsSection)) From 7c56219a725277f5757361d7f12ec2f51f0bc53d Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Mon, 16 Jan 2012 14:30:44 -0500 Subject: [PATCH 050/105] Fixed indenting --- scripts/windows-builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py index 275a3f5cb..43beb8988 100644 --- a/scripts/windows-builder.py +++ b/scripts/windows-builder.py @@ -182,7 +182,7 @@ def run_pyinstaller(): u'--windowed', u'--noupx', u'--additional-hooks-dir', hooks_path, - u'--log-level=ERROR', + u'--log-level=ERROR', u'-o', branch_path, u'-i', win32_icon, u'-p', branch_path, From e4f983e6ca353b3905420841e72892ccb63da2de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 17 Jan 2012 10:50:29 +0200 Subject: [PATCH 051/105] Label back with new text. Also element Labels to the right place as Meinert suggested. --- openlp/core/ui/advancedtab.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 67811a209..f4583a33f 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -98,8 +98,8 @@ class AdvancedTab(SettingsTab): self.defaultServiceLayout = QtGui.QFormLayout( self.defaultServiceGroupBox) self.defaultServiceLayout.setObjectName(u'defaultServiceLayout') - self.defaultServiceDayLabel = QtGui.QLabel(self.defaultServiceGroupBox) - self.defaultServiceDayLabel.setObjectName(u'defaultServiceDayLabel') + self.defaultServiceTimeLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceTimeLabel.setObjectName(u'defaultServiceTimeLabel') self.defaultServiceDay = QtGui.QComboBox( self.defaultServiceGroupBox) self.defaultServiceDay.addItems( @@ -110,10 +110,10 @@ class AdvancedTab(SettingsTab): self.defaultServiceTime.setObjectName(u'defaultServiceTime') self.defaultServiceTimeHBox = QtGui.QHBoxLayout() self.defaultServiceTimeHBox.setObjectName(u'defaultServiceTimeHBox') - self.defaultServiceTimeHBox.addWidget(self.defaultServiceDayLabel) self.defaultServiceTimeHBox.addWidget(self.defaultServiceDay) self.defaultServiceTimeHBox.addWidget(self.defaultServiceTime) - self.defaultServiceLayout.addRow(self.defaultServiceTimeHBox) + self.defaultServiceLayout.addRow(self.defaultServiceTimeLabel, + self.defaultServiceTimeHBox) self.defaultServiceLabel = QtGui.QLabel(self.defaultServiceGroupBox) self.defaultServiceLabel.setObjectName(u'defaultServiceLabel') self.defaultServiceName = QtGui.QLineEdit(self.defaultServiceGroupBox) @@ -128,10 +128,10 @@ class AdvancedTab(SettingsTab): build_icon(u':/general/general_revert.png')) self.defaultServiceHBox = QtGui.QHBoxLayout() self.defaultServiceHBox.setObjectName(u'defaultServiceHBox') - self.defaultServiceHBox.addWidget(self.defaultServiceLabel) self.defaultServiceHBox.addWidget(self.defaultServiceName) self.defaultServiceHBox.addWidget(self.defaultServiceRevertButton) - self.defaultServiceLayout.addRow(self.defaultServiceHBox) + self.defaultServiceLayout.addRow(self.defaultServiceLabel, + self.defaultServiceHBox) self.defaultServiceExampleLabel = QtGui.QLabel( self.defaultServiceGroupBox) self.defaultServiceExampleLabel.setObjectName( @@ -140,6 +140,10 @@ class AdvancedTab(SettingsTab): self.defaultServiceExample.setObjectName(u'defaultServiceExample') self.defaultServiceLayout.addRow(self.defaultServiceExampleLabel, self.defaultServiceExample) + self.defaultServiceNote = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceNote.setWordWrap(True) + self.defaultServiceNote.setObjectName(u'defaultServiceNote') + self.defaultServiceLayout.addRow(self.defaultServiceNote) self.leftLayout.addWidget(self.defaultServiceGroupBox) self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) @@ -233,7 +237,7 @@ class AdvancedTab(SettingsTab): 'Enable application exit confirmation')) self.defaultServiceGroupBox.setTitle( translate('OpenLP.AdvancedTab', 'Default Service Name')) - self.defaultServiceDayLabel.setText( + self.defaultServiceTimeLabel.setText( translate('OpenLP.AdvancedTab', 'Date and Time:')) self.defaultServiceDay.setItemText(0, translate('OpenLP.AdvancedTab', 'Monday')) @@ -261,6 +265,10 @@ class AdvancedTab(SettingsTab): self.default_service_name) self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', 'Example:')) + self.defaultServiceNote.setText( + translate('OpenLP.AdvancedTab', 'Note: Leave Name field blank to ' + 'have no prefilled name in Save As dialog. ' + 'Consult manual for special symbols usage.')) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', From ac22a6014d8e9d0eb213237fa9e61490746d12ae Mon Sep 17 00:00:00 2001 From: M2j Date: Tue, 17 Jan 2012 21:21:28 +0100 Subject: [PATCH 052/105] - make i18n of bible references available through translate - accept different hypens for bible references --- openlp/plugins/bibles/lib/__init__.py | 46 +++++++++++++++++---------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 7e40b6230..eabcb4ebd 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -31,6 +31,8 @@ plugin. import logging import re +from openlp.core.lib import translate + log = logging.getLogger(__name__) class LayoutStyle(object): @@ -60,28 +62,40 @@ def get_reference_match(match_type): ``match_type`` The type of reference information trying to be extracted in this call. """ - local_separator = unicode(u':;;\s*[:vV]\s*;;-;;\s*-\s*;;,;;\s*,\s*;;end' - ).split(u';;') # English - # local_separator = unicode(u',;;\s*,\s*;;-;;\s*-\s*;;.;;\.;;[Ee]nde' - # ).split(u';;') # German + local_separator = unicode(translate('BiblesPlugin', + ':;;:|v|V;;-;;-;;,;;,;;end', + 'Seperators for parsing references. There are 7 values separated each ' + 'by two semicolons. Verse, range and list separators have each one ' + 'display symbol which appears on slides and in the GUI and a regular ' + 'expression for detecting this symbols.\n' + 'Please ask a developer to double check your translation or make ' + 'yourself familar with regular experssions on: ' + 'http://docs.python.org/library/re.html') + ).split(u';;') separators = { - u'sep_v_display': local_separator[0], u'sep_v': local_separator[1], - u'sep_r_display': local_separator[2], u'sep_r': local_separator[3], - u'sep_l_display': local_separator[4], u'sep_l': local_separator[5], - u'sep_e': local_separator[6]} - + u'sep_v_display': local_separator[0], + u'sep_v': u'\s*(?:' + local_separator[1] + u')\s*', + u'sep_r_display': local_separator[2], + u'sep_r': u'\s*(?:' + local_separator[3] + u')\s*', + u'sep_l_display': local_separator[4], + u'sep_l': u'\s*(?:' + local_separator[5] + u')\s*', + u'sep_e': u'\s*(?:' + local_separator[6] + u')\s*'} + for role in [u'sep_v', u'sep_r', u'sep_l', u'sep_e']: + separators[role] = separators[role].replace(u'-', + u'(?:[-\u00AD\u2010\u2011\u2012\u2013\u2014\u2212\uFE63\uFF0D])') + separators[role] = separators[role].replace(u',', u'(?:[,\u201A])') # verse range match: (:)?(-((:)?|end)?)? - range_string = str(r'(?:(?P[0-9]+)%(sep_v)s)?(?P' - r'[0-9]+)(?P%(sep_r)s(?:(?:(?P[0-9]+)%(sep_v)s)?' - r'(?P[0-9]+)|%(sep_e)s)?)?') % separators + range_string = unicode(u'(?:(?P[0-9]+)%(sep_v)s)?' + u'(?P[0-9]+)(?P%(sep_r)s(?:(?:(?P' + u'[0-9]+)%(sep_v)s)?(?P[0-9]+)|%(sep_e)s)?)?') % separators if match_type == u'range': - return re.compile(r'^\s*' + range_string + r'\s*$', re.UNICODE) + return re.compile(u'^\s*' + range_string + u'\s*$', re.UNICODE) elif match_type == u'range_separator': - return re.compile(separators[u'sep_l']) + return re.compile(separators[u'sep_l'], re.UNICODE) elif match_type == u'full': # full reference match: ((,|(?=$)))+ - return re.compile(str(r'^\s*(?!\s)(?P[\d]*[^\d]+)(?(?:' + range_string + r'(?:%(sep_l)s|(?=\s*$)))+)\s*$') + return re.compile(unicode(u'^\s*(?!\s)(?P[\d]*[^\d]+)(?(?:' + range_string + u'(?:%(sep_l)s|(?=\s*$)))+)\s*$') % separators, re.UNICODE) else: return separators[match_type] From ac96838fc9de6ba978b3fc8b1f8a9bb107db055f Mon Sep 17 00:00:00 2001 From: M2j Date: Tue, 17 Jan 2012 21:32:01 +0100 Subject: [PATCH 053/105] add icu dependency to dependency_check script --- scripts/check_dependencies.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/check_dependencies.py b/scripts/check_dependencies.py index d1ec2228b..044164d8c 100755 --- a/scripts/check_dependencies.py +++ b/scripts/check_dependencies.py @@ -74,6 +74,7 @@ MODULES = [ 'mako', 'migrate', 'uno', + 'icu', ] From 82250ee71fb846c3fd52b56e70164086b065895f Mon Sep 17 00:00:00 2001 From: M2j Date: Tue, 17 Jan 2012 21:58:20 +0100 Subject: [PATCH 054/105] added dependency check for PyICU in exception dialog --- openlp/core/ui/exceptionform.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index d2469c092..7cad25665 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -81,6 +81,11 @@ try: WEBKIT_VERSION = QtWebKit.qWebKitVersion() except AttributeError: WEBKIT_VERSION = u'-' +try: + import icu + ICU_VERSION = u'OK' +except ImportError: + ICU_VERSION = u'-' from openlp.core.lib import translate, SettingsManager @@ -125,7 +130,8 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): u'PyEnchant: %s\n' % ENCHANT_VERSION + \ u'PySQLite: %s\n' % SQLITE_VERSION + \ u'Mako: %s\n' % MAKO_VERSION + \ - u'pyUNO bridge: %s\n' % UNO_VERSION + u'pyUNO bridge: %s\n' % UNO_VERSION + \ + u'PyICU: %s\n' % ICU_VERSION if platform.system() == u'Linux': if os.environ.get(u'KDE_FULL_SESSION') == u'true': system = system + u'Desktop: KDE SC\n' From 6543bbafb607d5684a5dcfc2d12b95eae820a758 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Wed, 18 Jan 2012 17:52:51 +0800 Subject: [PATCH 055/105] Changed slide_advance variable to be set only in SlideController initialisation or when settings are changed. --- openlp/core/ui/generaltab.py | 1 + openlp/core/ui/slidecontroller.py | 28 +++++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 4f7c73a82..0195ac631 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -446,6 +446,7 @@ class GeneralTab(SettingsTab): if self.display_changed: Receiver.send_message(u'config_screen_changed') self.display_changed = False + Receiver.send_message(u'slidecontroller_update_slide_advance') def onOverrideCheckBoxToggled(self, checked): """ diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 01bee34d0..30d09050a 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -103,6 +103,8 @@ class SlideController(Controller): self.songEdit = False self.selectedRow = 0 self.serviceItem = None + self.slide_advance = None + self.updateSlideAdvance() self.panel = QtGui.QWidget(parent.controlSplitter) self.slideList = {} # Layout for holding panel @@ -451,6 +453,9 @@ class SlideController(Controller): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'slidecontroller_%s_unblank' % self.typePrefix), self.onSlideUnblank) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_update_slide_advance'), + self.updateSlideAdvance) def slideShortcutActivated(self): """ @@ -700,6 +705,14 @@ class SlideController(Controller): Adjusts the value of the ``delaySpinBox`` to the given one. """ self.delaySpinBox.setValue(int(value)) + + def updateSlideAdvance(self): + """ + Updates the Slide Advance variable from the settings. + """ + self.slide_advance = QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide advance', + QtCore.QVariant(SlideAdvance.End)).toInt()[0] def enableToolBar(self, item): """ @@ -1178,13 +1191,9 @@ class SlideController(Controller): row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): if wrap is None: - slide_advance = QtCore.QSettings().value( - self.parent().generalSettingsSection + - u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] - if slide_advance == SlideAdvance.Wrap: + if self.slide_advance == SlideAdvance.Wrap: row = 0 - elif slide_advance == SlideAdvance.Next: + elif self.slide_advance == SlideAdvance.Next: self.serviceNext() return else: @@ -1209,12 +1218,9 @@ class SlideController(Controller): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - slide_advance = QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] - if slide_advance == SlideAdvance.Wrap: + if self.slide_advance == SlideAdvance.Wrap: row = self.previewListWidget.rowCount() - 1 - elif slide_advance == SlideAdvance.Next: + elif self.slide_advance == SlideAdvance.Next: self.servicePrevious() return else: From 8601a47dce205166fde118d72bdd1c6b846493d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Wed, 18 Jan 2012 13:20:15 +0200 Subject: [PATCH 056/105] Remove obsolete import. Fix saving wrong syntax and % bugs. --- openlp/core/ui/advancedtab.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index f4583a33f..6a0483e93 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -33,7 +33,6 @@ from openlp.core.lib import SettingsTab, translate, build_icon, Receiver from openlp.core.lib.ui import UiStrings from openlp.core.utils import get_images_filter from datetime import datetime, timedelta -import re class AdvancedTab(SettingsTab): """ @@ -350,6 +349,7 @@ class AdvancedTab(SettingsTab): preset_is_valid, name_example = self.generate_service_name_example() if not preset_is_valid: self.service_name = self.default_service_name + self.defaultServiceName.setText(self.service_name) settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) if self.service_name == self.default_service_name: @@ -399,10 +399,14 @@ class AdvancedTab(SettingsTab): minute = self.service_minute) try: service_name_example = time.strftime(unicode(self.service_name)) + print service_name_example + if service_name_example.find('%') != -1: + preset_is_valid = False except ValueError: + preset_is_valid = False + if not preset_is_valid: service_name_example = translate('OpenLP.AdvancedTab', 'Syntax error.') - preset_is_valid = False return preset_is_valid, service_name_example def updateServiceNameExample(self): From 175743685330eadd8d705dff6af0ad34bbc58d99 Mon Sep 17 00:00:00 2001 From: M2j Date: Wed, 18 Jan 2012 14:50:06 +0100 Subject: [PATCH 057/105] purge ICU integration from this branch --- openlp/core/ui/exceptionform.py | 8 +------ openlp/core/ui/thememanager.py | 6 +++--- openlp/core/utils/__init__.py | 21 +------------------ .../plugins/bibles/forms/bibleimportform.py | 5 +++-- openlp/plugins/bibles/lib/mediaitem.py | 6 +++--- openlp/plugins/custom/lib/mediaitem.py | 4 ++-- openlp/plugins/images/lib/mediaitem.py | 6 +++--- openlp/plugins/media/lib/mediaitem.py | 6 +++--- openlp/plugins/presentations/lib/mediaitem.py | 4 ++-- openlp/plugins/songs/forms/songexportform.py | 4 ++-- openlp/plugins/songs/lib/mediaitem.py | 5 +++-- scripts/check_dependencies.py | 1 - 12 files changed, 26 insertions(+), 50 deletions(-) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 7cad25665..d2469c092 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -81,11 +81,6 @@ try: WEBKIT_VERSION = QtWebKit.qWebKitVersion() except AttributeError: WEBKIT_VERSION = u'-' -try: - import icu - ICU_VERSION = u'OK' -except ImportError: - ICU_VERSION = u'-' from openlp.core.lib import translate, SettingsManager @@ -130,8 +125,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): u'PyEnchant: %s\n' % ENCHANT_VERSION + \ u'PySQLite: %s\n' % SQLITE_VERSION + \ u'Mako: %s\n' % MAKO_VERSION + \ - u'pyUNO bridge: %s\n' % UNO_VERSION + \ - u'PyICU: %s\n' % ICU_VERSION + u'pyUNO bridge: %s\n' % UNO_VERSION if platform.system() == u'Linux': if os.environ.get(u'KDE_FULL_SESSION') == u'true': system = system + u'Desktop: KDE SC\n' diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index be84868f6..3585e5c97 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -29,6 +29,7 @@ import os import zipfile import shutil import logging +import locale import re from xml.etree.ElementTree import ElementTree, XML @@ -43,8 +44,7 @@ from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ context_menu_action, context_menu_separator from openlp.core.theme import Theme from openlp.core.ui import FileRenameForm, ThemeForm -from openlp.core.utils import AppLocation, delete_file, \ - get_filesystem_encoding, get_local_collator +from openlp.core.utils import AppLocation, delete_file, get_filesystem_encoding log = logging.getLogger(__name__) @@ -459,7 +459,7 @@ class ThemeManager(QtGui.QWidget): # Sort the themes by its name considering language specific characters. # lower() is needed for windows! files.sort(key=lambda filename: unicode(filename).lower(), - cmp=get_local_collator) + cmp=locale.strcoll) # now process the file list of png files for name in files: # check to see file is in theme root directory diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 6e2c9fa22..9fa5bcd77 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -33,7 +33,6 @@ import re import sys import time import urllib2 -import locale from datetime import datetime from subprocess import Popen, PIPE @@ -46,18 +45,6 @@ if sys.platform != u'win32' and sys.platform != u'darwin': except ImportError: XDG_BASE_AVAILABLE = False -LOCALE_COLLATOR = locale.strcoll -if sys.platform == u'win32': - try: - import icu - try: - icu_locale = icu.Locale(locale.getlocale()[0]) - LOCALE_COLLATOR = icu.Collator.createInstance(icu_locale).compare - except icu.InvalidArgsError: - pass - except ImportError: - pass - import openlp from openlp.core.lib import Receiver, translate, check_directory_exists @@ -495,16 +482,10 @@ def get_uno_instance(resolver): return resolver.resolve(u'uno:socket,host=localhost,port=2002;' \ + u'urp;StarOffice.ComponentContext') -def get_local_collator(string1, string2): - """ - Returns a collator for locale aware string sorting. - """ - return LOCALE_COLLATOR(string1, string2) - from languagemanager import LanguageManager from actions import ActionList __all__ = [u'AppLocation', u'get_application_version', u'check_latest_version', u'add_actions', u'get_filesystem_encoding', u'LanguageManager', u'ActionList', u'get_web_page', u'get_uno_command', u'get_uno_instance', - u'get_local_collator', u'delete_file', u'clean_filename'] + u'delete_file', u'clean_filename'] diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 23a380d54..ee7b5a063 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -30,6 +30,7 @@ The bible import functions for OpenLP import logging import os import os.path +import locale from PyQt4 import QtCore, QtGui @@ -37,7 +38,7 @@ from openlp.core.lib import Receiver, translate from openlp.core.lib.db import delete_database from openlp.core.lib.ui import UiStrings, critical_error_message_box from openlp.core.ui.wizard import OpenLPWizard, WizardStrings -from openlp.core.utils import AppLocation, get_local_collator +from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.manager import BibleFormat from openlp.plugins.bibles.lib.db import BiblesResourcesDB, clean_filename @@ -521,7 +522,7 @@ class BibleImportForm(OpenLPWizard): """ self.webTranslationComboBox.clear() bibles = self.web_bible_list[index].keys() - bibles.sort(cmp=get_local_collator) + bibles.sort(cmp=locale.strcoll) self.webTranslationComboBox.addItems(bibles) def onOsisBrowseButtonClicked(self): diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 88ddba893..d7b3fff01 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -26,6 +26,7 @@ ############################################################################### import logging +import locale from PyQt4 import QtCore, QtGui @@ -35,7 +36,6 @@ from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings, add_widget_completer, \ media_item_combo_box, critical_error_message_box, \ find_and_set_in_combo_box, build_icon -from openlp.core.utils import get_local_collator from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ VerseReferenceList, get_reference_match @@ -373,7 +373,7 @@ class BibleMediaItem(MediaManagerItem): self.advancedSecondComboBox.addItem(u'') # Get all bibles and sort the list. bibles = self.plugin.manager.get_bibles().keys() - bibles.sort(cmp=get_local_collator) + bibles.sort(cmp=locale.strcoll) # Load the bibles into the combo boxes. for bible in bibles: if bible: @@ -481,7 +481,7 @@ class BibleMediaItem(MediaManagerItem): book_data_temp.append(book) book_data = book_data_temp books = [book.name + u' ' for book in book_data] - books.sort(cmp=get_local_collator) + books.sort(cmp=locale.strcoll) add_widget_completer(books, self.quickSearchEdit) def onQuickVersionComboBox(self): diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index afa7c28a0..584f22e7b 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -26,6 +26,7 @@ ############################################################################### import logging +import locale from PyQt4 import QtCore, QtGui from sqlalchemy.sql import or_, func @@ -33,7 +34,6 @@ from sqlalchemy.sql import or_, func from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ check_item_selected, translate from openlp.core.lib.ui import UiStrings -from oprnlp.core.utils import get_local_collator from openlp.plugins.custom.forms import EditCustomForm from openlp.plugins.custom.lib import CustomXMLParser from openlp.plugins.custom.lib.db import CustomSlide @@ -109,7 +109,7 @@ class CustomMediaItem(MediaManagerItem): # Sort the customs by its title considering language specific # characters. lower() is needed for windows! custom_slides.sort( - cmp=get_local_collator, key=lambda custom: custom.title.lower()) + cmp=locale.strcoll, key=lambda custom: custom.title.lower()) for custom_slide in custom_slides: custom_name = QtGui.QListWidgetItem(custom_slide.title) custom_name.setData( diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 78092def2..92779b991 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -27,6 +27,7 @@ import logging import os +import locale from PyQt4 import QtCore, QtGui @@ -34,8 +35,7 @@ from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \ SettingsManager, translate, check_item_selected, check_directory_exists, \ Receiver, create_thumb, validate_thumb from openlp.core.lib.ui import UiStrings, critical_error_message_box -from openlp.core.utils import AppLocation, delete_file, get_images_filter, \ - get_local_collator +from openlp.core.utils import AppLocation, delete_file, get_images_filter log = logging.getLogger(__name__) @@ -120,7 +120,7 @@ class ImageMediaItem(MediaManagerItem): self.plugin.formparent.displayProgressBar(len(images)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! - images.sort(cmp=get_local_collator, + images.sort(cmp=locale.strcoll, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for imageFile in images: if not initialLoad: diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index d8790c8cc..111a86209 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -27,6 +27,7 @@ import logging import os +import locale from PyQt4 import QtCore, QtGui @@ -36,7 +37,6 @@ from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \ from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ media_item_combo_box from openlp.core.ui import Controller, Display -from openlp.core.utils import get_local_collator log = logging.getLogger(__name__) @@ -278,7 +278,7 @@ class MediaMediaItem(MediaManagerItem): def loadList(self, media): # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! - media.sort(cmp=get_local_collator, + media.sort(cmp=locale.strcoll, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for track in media: track_info = QtCore.QFileInfo(track) @@ -298,7 +298,7 @@ class MediaMediaItem(MediaManagerItem): def getList(self, type=MediaType.Audio): media = SettingsManager.load_list(self.settingsSection, u'media') - media.sort(cmp=get_local_collator, + media.sort(cmp=locale.strcoll, key=lambda filename: os.path.split(unicode(filename))[1].lower()) ext = [] if type == MediaType.Audio: diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index c785a4937..03fdadb1b 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -27,6 +27,7 @@ import logging import os +import locale from PyQt4 import QtCore, QtGui @@ -35,7 +36,6 @@ from openlp.core.lib import MediaManagerItem, build_icon, SettingsManager, \ validate_thumb from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ media_item_combo_box -from openlp.core.utils import get_local_collator from openlp.plugins.presentations.lib import MessageListener log = logging.getLogger(__name__) @@ -168,7 +168,7 @@ class PresentationMediaItem(MediaManagerItem): self.plugin.formparent.displayProgressBar(len(files)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! - files.sort(cmp=get_local_collator, + files.sort(cmp=locale.strcoll, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for file in files: if not initialLoad: diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 5120fe811..679330ec5 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -28,6 +28,7 @@ The :mod:`songexportform` module provides the wizard for exporting songs to the OpenLyrics format. """ +import locale import logging from PyQt4 import QtCore, QtGui @@ -35,7 +36,6 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import build_icon, Receiver, SettingsManager, translate from openlp.core.lib.ui import UiStrings, critical_error_message_box from openlp.core.ui.wizard import OpenLPWizard, WizardStrings -from openlp.core.utils import get_local_collator from openlp.plugins.songs.lib.db import Song from openlp.plugins.songs.lib.openlyricsexport import OpenLyricsExport @@ -250,7 +250,7 @@ class SongExportForm(OpenLPWizard): # Load the list of songs. Receiver.send_message(u'cursor_busy') songs = self.plugin.manager.get_all_objects(Song) - songs.sort(cmp=get_local_collator, key=lambda song: song.title.lower()) + songs.sort(cmp=locale.strcoll, key=lambda song: song.title.lower()) for song in songs: # No need to export temporary songs. if song.temporary: diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index d82b20a52..1e62dd64b 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -26,6 +26,7 @@ ############################################################################### import logging +import locale import re import os import shutil @@ -37,7 +38,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ translate, check_item_selected, PluginStatus from openlp.core.lib.ui import UiStrings, context_menu_action, \ context_menu_separator -from openlp.core.utils import AppLocation, get_local_collator +from openlp.core.utils import AppLocation from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \ SongImportForm, SongExportForm from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType, \ @@ -239,7 +240,7 @@ class SongMediaItem(MediaManagerItem): # Sort the songs by its title considering language specific characters. # lower() is needed for windows! searchresults.sort( - cmp=get_local_collator, key=lambda song: song.title.lower()) + cmp=locale.strcoll, key=lambda song: song.title.lower()) for song in searchresults: # Do not display temporary songs if song.temporary: diff --git a/scripts/check_dependencies.py b/scripts/check_dependencies.py index 044164d8c..d1ec2228b 100755 --- a/scripts/check_dependencies.py +++ b/scripts/check_dependencies.py @@ -74,7 +74,6 @@ MODULES = [ 'mako', 'migrate', 'uno', - 'icu', ] From 9ef317db2a7025d9c5f5188d7b15e5b98189fa23 Mon Sep 17 00:00:00 2001 From: M2j Date: Wed, 18 Jan 2012 18:52:48 +0100 Subject: [PATCH 058/105] - i18n for scripture references and custom configuration settings --- openlp/plugins/bibles/lib/__init__.py | 120 +++++++++----- openlp/plugins/bibles/lib/biblestab.py | 208 ++++++++++++++++++++++++- openlp/plugins/bibles/lib/mediaitem.py | 14 +- 3 files changed, 294 insertions(+), 48 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index c185b2faa..aaf8ff54c 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -31,10 +31,15 @@ plugin. import logging import re +from PyQt4 import QtCore + from openlp.core.lib import translate log = logging.getLogger(__name__) +REFERENCE_MATCHES = {} +REFERENCE_SEPARATORS = {} + class LayoutStyle(object): """ An enumeration for bible screen layout styles. @@ -54,51 +59,86 @@ class DisplayStyle(object): Square = 3 +def update_reference_separators(): + """ + Updates separators and matches for parsing and formating scripture + references. + """ + default_separators = unicode(translate('BiblesPlugin', + ':|v|V|verse;;-|to;;,|and;;end', + 'This are 4 values seperated each by two semicolons representing the ' + 'seperators for parsing references. This values are verse separators, ' + 'range separators, list separators and end mark. Alternative values ' + 'to be seperated by a vertical bar "|". In this case the first value ' + 'is the default and used for the display format.')).split(u';;') + settings = QtCore.QSettings() + settings.beginGroup(u'bibles') # FIXME: get the name from somewere else + custom_separators = [ + unicode(settings.value(u'verse separator', + QtCore.QVariant(u'')).toString()), + unicode(settings.value(u'range separator', + QtCore.QVariant(u'')).toString()), + unicode(settings.value(u'list separator', + QtCore.QVariant(u'')).toString()), + unicode(settings.value(u'end separator', + QtCore.QVariant(u'')).toString())] + settings.endGroup() + for index, role in enumerate([u'v', u'r', u'l', u'e']): + if custom_separators[index].strip(u'|') == u'': + source_string = default_separators[index].strip(u'|') + else: + source_string = custom_separators[index].strip(u'|') + while u'||' in source_string: + source_string = source_string.replace(u'||', u'|') + if role != u'e': + REFERENCE_SEPARATORS[u'sep_%s_display' % role] = \ + source_string.split(u'|')[0] + # escape reserved characters + for character in u'\\.^$*+?{}[]()': + source_string = source_string.replace(character, u'\\' + character) + # add various unicode alternatives + source_string = source_string.replace(u'-', + u'(?:[-\u00AD\u2010\u2011\u2012\u2013\u2014\u2212\uFE63\uFF0D])') + source_string = source_string.replace(u',', u'(?:[,\u201A])') + REFERENCE_SEPARATORS[u'sep_%s' % role] = u'\s*(?:%s)\s*' % source_string + REFERENCE_SEPARATORS[u'sep_%s_default' % role] = \ + default_separators[index] + # verse range match: (:)?(-((:)?|end)?)? + range_string = u'(?:(?P[0-9]+)%(sep_v)s)?' \ + u'(?P[0-9]+)(?P%(sep_r)s(?:(?:(?P' \ + u'[0-9]+)%(sep_v)s)?(?P[0-9]+)|%(sep_e)s)?)?' % \ + REFERENCE_SEPARATORS + REFERENCE_MATCHES[u'range'] = re.compile(u'^\s*%s\s*$' % range_string, + re.UNICODE) + REFERENCE_MATCHES[u'range_separator'] = re.compile( + REFERENCE_SEPARATORS[u'sep_l'], re.UNICODE) + # full reference match: ((,|(?=$)))+ + REFERENCE_MATCHES[u'full'] = re.compile(u'^\s*(?!\s)(?P[\d]*[^\d]+)' + u'(?(?:%(range)s(?:%(sep_l)s|(?=\s*$)))+)\s*$' % \ + dict(REFERENCE_SEPARATORS.items() + [(u'range', range_string)]), + re.UNICODE) + +def get_reference_separator(separator_type): + """ + Provides separators for parsing and formatting scripture references. + + ``separator_type`` + The role and format of the separator. + """ + if len(REFERENCE_SEPARATORS) == 0: + update_reference_separators() + return REFERENCE_SEPARATORS[separator_type] + def get_reference_match(match_type): """ - Provides the regexes and matches to use while parsing strings for bible - references. + Provides matches for parsing scripture references strings. ``match_type`` - The type of reference information trying to be extracted in this call. + The type of match is ``range_separator``, ``range`` or ``full``. """ - local_separator = unicode(translate('BiblesPlugin', - ':;;:|v|V;;-;;-;;,;;,;;end', - 'Seperators for parsing references. There are 7 values separated each ' - 'by two semicolons. Verse, range and list separators have each one ' - 'display symbol which appears on slides and in the GUI and a regular ' - 'expression for detecting this symbols.\n' - 'Please ask a developer to double check your translation or make ' - 'yourself familar with regular experssions on: ' - 'http://docs.python.org/library/re.html') - ).split(u';;') - separators = { - u'sep_v_display': local_separator[0], - u'sep_v': u'\s*(?:' + local_separator[1] + u')\s*', - u'sep_r_display': local_separator[2], - u'sep_r': u'\s*(?:' + local_separator[3] + u')\s*', - u'sep_l_display': local_separator[4], - u'sep_l': u'\s*(?:' + local_separator[5] + u')\s*', - u'sep_e': u'\s*(?:' + local_separator[6] + u')\s*'} - for role in [u'sep_v', u'sep_r', u'sep_l', u'sep_e']: - separators[role] = separators[role].replace(u'-', - u'(?:[-\u00AD\u2010\u2011\u2012\u2013\u2014\u2212\uFE63\uFF0D])') - separators[role] = separators[role].replace(u',', u'(?:[,\u201A])') - # verse range match: (:)?(-((:)?|end)?)? - range_string = unicode(u'(?:(?P[0-9]+)%(sep_v)s)?' - u'(?P[0-9]+)(?P%(sep_r)s(?:(?:(?P' - u'[0-9]+)%(sep_v)s)?(?P[0-9]+)|%(sep_e)s)?)?') % separators - if match_type == u'range': - return re.compile(u'^\s*' + range_string + u'\s*$', re.UNICODE) - elif match_type == u'range_separator': - return re.compile(separators[u'sep_l'], re.UNICODE) - elif match_type == u'full': - # full reference match: ((,|(?=$)))+ - return re.compile(unicode(u'^\s*(?!\s)(?P[\d]*[^\d]+)(?(?:' + range_string + u'(?:%(sep_l)s|(?=\s*$)))+)\s*$') - % separators, re.UNICODE) - else: - return separators[match_type] + if len(REFERENCE_MATCHES) == 0: + update_reference_separators() + return REFERENCE_MATCHES[match_type] def parse_reference(reference): """ diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 8402d6e11..5d96faf7a 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -30,8 +30,9 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import Receiver, SettingsTab, translate -from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle from openlp.core.lib.ui import UiStrings, find_and_set_in_combo_box +from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ + update_reference_separators, get_reference_separator log = logging.getLogger(__name__) @@ -90,6 +91,52 @@ class BiblesTab(SettingsTab): self.changeNoteLabel.setObjectName(u'changeNoteLabel') self.verseDisplayLayout.addRow(self.changeNoteLabel) self.leftLayout.addWidget(self.verseDisplayGroupBox) + self.scriptureReferenceGroupBox = QtGui.QGroupBox(self.leftColumn) + self.scriptureReferenceGroupBox.setObjectName( + u'scriptureReferenceGroupBox') + self.scriptureReferenceLayout = QtGui.QGridLayout( + self.scriptureReferenceGroupBox) + self.verseSeparatorCheckBox = QtGui.QCheckBox( + self.scriptureReferenceGroupBox) + self.verseSeparatorCheckBox.setObjectName(u'verseSeparatorCheckBox') + self.scriptureReferenceLayout.addWidget(self.verseSeparatorCheckBox, 0, + 0) + self.verseSeparatorLineEdit = QtGui.QLineEdit( + self.scriptureReferenceGroupBox) + self.verseSeparatorLineEdit.setObjectName(u'verseSeparatorLineEdit') + self.scriptureReferenceLayout.addWidget(self.verseSeparatorLineEdit, 0, + 1) + self.rangeSeparatorCheckBox = QtGui.QCheckBox( + self.scriptureReferenceGroupBox) + self.rangeSeparatorCheckBox.setObjectName(u'rangeSeparatorCheckBox') + self.scriptureReferenceLayout.addWidget(self.rangeSeparatorCheckBox, 1, + 0) + self.rangeSeparatorLineEdit = QtGui.QLineEdit( + self.scriptureReferenceGroupBox) + self.rangeSeparatorLineEdit.setObjectName(u'rangeSeparatorLineEdit') + self.scriptureReferenceLayout.addWidget(self.rangeSeparatorLineEdit, 1, + 1) + self.listSeparatorCheckBox = QtGui.QCheckBox( + self.scriptureReferenceGroupBox) + self.listSeparatorCheckBox.setObjectName(u'listSeparatorCheckBox') + self.scriptureReferenceLayout.addWidget(self.listSeparatorCheckBox, 2, + 0) + self.listSeparatorLineEdit = QtGui.QLineEdit( + self.scriptureReferenceGroupBox) + self.listSeparatorLineEdit.setObjectName(u'listSeparatorLineEdit') + self.scriptureReferenceLayout.addWidget(self.listSeparatorLineEdit, 2, + 1) + self.endSeparatorCheckBox = QtGui.QCheckBox( + self.scriptureReferenceGroupBox) + self.endSeparatorCheckBox.setObjectName(u'endSeparatorCheckBox') + self.scriptureReferenceLayout.addWidget(self.endSeparatorCheckBox, 3, + 0) + self.endSeparatorLineEdit = QtGui.QLineEdit( + self.scriptureReferenceGroupBox) + self.endSeparatorLineEdit.setObjectName(u'endSeparatorLineEdit') + self.scriptureReferenceLayout.addWidget(self.endSeparatorLineEdit, 3, + 1) + self.leftLayout.addWidget(self.scriptureReferenceGroupBox) self.leftLayout.addStretch() self.rightColumn.setSizePolicy( QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) @@ -110,6 +157,42 @@ class BiblesTab(SettingsTab): QtCore.QObject.connect( self.bibleSecondCheckBox, QtCore.SIGNAL(u'stateChanged(int)'), self.onBibleSecondCheckBox) + QtCore.QObject.connect( + self.verseSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), + self.onVerseSeparatorCheckBoxToggled) + QtCore.QObject.connect( + self.verseSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), + self.onVerseSeparatorLineEditEdited) + QtCore.QObject.connect( + self.verseSeparatorLineEdit, QtCore.SIGNAL(u'editingFinished()'), + self.onVerseSeparatorLineEditFinished) + QtCore.QObject.connect( + self.rangeSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), + self.onRangeSeparatorCheckBoxToggled) + QtCore.QObject.connect( + self.rangeSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), + self.onRangeSeparatorLineEditEdited) + QtCore.QObject.connect( + self.rangeSeparatorLineEdit, QtCore.SIGNAL(u'editingFinished()'), + self.onRangeSeparatorLineEditFinished) + QtCore.QObject.connect( + self.listSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), + self.onListSeparatorCheckBoxToggled) + QtCore.QObject.connect( + self.listSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), + self.onListSeparatorLineEditEdited) + QtCore.QObject.connect( + self.listSeparatorLineEdit, QtCore.SIGNAL(u'editingFinished()'), + self.onListSeparatorLineEditFinished) + QtCore.QObject.connect( + self.endSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), + self.onEndSeparatorCheckBoxToggled) + QtCore.QObject.connect( + self.endSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), + self.onEndSeparatorLineEditEdited) + QtCore.QObject.connect( + self.endSeparatorLineEdit, QtCore.SIGNAL(u'editingFinished()'), + self.onEndSeparatorLineEditFinished) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList) @@ -141,6 +224,36 @@ class BiblesTab(SettingsTab): 'Note:\nChanges do not affect verses already in the service.')) self.bibleSecondCheckBox.setText( translate('BiblesPlugin.BiblesTab', 'Display second Bible verses')) + self.scriptureReferenceGroupBox.setTitle( + translate('BiblesPlugin.BiblesTab', 'Custom Scripture References')) + self.verseSeparatorCheckBox.setText( + translate('BiblesPlugin.BiblesTab', 'Verse Separator:')) + self.rangeSeparatorCheckBox.setText( + translate('BiblesPlugin.BiblesTab', 'Range Separator:')) + self.listSeparatorCheckBox.setText( + translate('BiblesPlugin.BiblesTab', 'List Separator:')) + self.endSeparatorCheckBox.setText( + translate('BiblesPlugin.BiblesTab', 'End Mark:')) + self.verseSeparatorLineEdit.setToolTip( + translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' + 'separators may be defined.\nThey have to be separated ' + 'by a vertical bar "|".\nPlease clear this edit line to use ' + 'the default value.')) + self.rangeSeparatorLineEdit.setToolTip( + translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' + 'separators may be defined.\nThey have to be separated ' + 'by a vertical bar "|".\nPlease clear this edit line to use ' + 'the default value.')) + self.listSeparatorLineEdit.setToolTip( + translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' + 'separators may be defined.\nThey have to be separated ' + 'by a vertical bar "|".\nPlease clear this edit line to use ' + 'the default value.')) + self.endSeparatorLineEdit.setToolTip( + translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' + 'end marks may be defined.\nThey have to be separated by a ' + 'vertical bar "|".\nPlease clear this edit line to use the ' + 'default value.')) def onBibleThemeComboBoxChanged(self): self.bible_theme = self.bibleThemeComboBox.currentText() @@ -163,6 +276,66 @@ class BiblesTab(SettingsTab): if check_state == QtCore.Qt.Checked: self.second_bibles = True + def onVerseSeparatorCheckBoxToggled(self, checked): + if not checked: + self.verseSeparatorLineEdit.clear() + elif self.verseSeparatorCheckBox.hasFocus(): + self.verseSeparatorLineEdit.setFocus() + + def onVerseSeparatorLineEditEdited(self, text): + self.verseSeparatorCheckBox.setChecked(True) + + def onVerseSeparatorLineEditFinished(self): + if self.verseSeparatorLineEdit.text().remove(u'|').isEmpty() and \ + not self.verseSeparatorCheckBox.hasFocus(): + self.verseSeparatorCheckBox.setChecked(False) + self.verseSeparatorLineEdit.clear() + + def onRangeSeparatorCheckBoxToggled(self, checked): + if not checked: + self.rangeSeparatorLineEdit.clear() + elif self.rangeSeparatorCheckBox.hasFocus(): + self.rangeSeparatorLineEdit.setFocus() + + def onRangeSeparatorLineEditEdited(self, text): + self.rangeSeparatorCheckBox.setChecked(True) + + def onRangeSeparatorLineEditFinished(self): + if self.rangeSeparatorLineEdit.text().remove(u'|').isEmpty() and \ + not self.rangeSeparatorCheckBox.hasFocus(): + self.rangeSeparatorCheckBox.setChecked(False) + self.rangeSeparatorLineEdit.clear() + + def onListSeparatorCheckBoxToggled(self, checked): + if not checked: + self.listSeparatorLineEdit.clear() + elif self.listSeparatorCheckBox.hasFocus(): + self.listSeparatorLineEdit.setFocus() + + def onListSeparatorLineEditEdited(self, text): + self.listSeparatorCheckBox.setChecked(True) + + def onListSeparatorLineEditFinished(self): + if self.listSeparatorLineEdit.text().remove(u'|').isEmpty() and \ + not self.listSeparatorCheckBox.hasFocus(): + self.listSeparatorCheckBox.setChecked(False) + self.listSeparatorLineEdit.clear() + + def onEndSeparatorCheckBoxToggled(self, checked): + if not checked: + self.endSeparatorLineEdit.clear() + elif self.endSeparatorCheckBox.hasFocus(): + self.endSeparatorLineEdit.setFocus() + + def onEndSeparatorLineEditEdited(self, text): + self.endSeparatorCheckBox.setChecked(True) + + def onEndSeparatorLineEditFinished(self): + if self.endSeparatorLineEdit.text().remove(u'|').isEmpty() and \ + not self.endSeparatorCheckBox.hasFocus(): + self.endSeparatorCheckBox.setChecked(False) + self.endSeparatorLineEdit.clear() + def load(self): settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) @@ -180,6 +353,30 @@ class BiblesTab(SettingsTab): self.displayStyleComboBox.setCurrentIndex(self.display_style) self.layoutStyleComboBox.setCurrentIndex(self.layout_style) self.bibleSecondCheckBox.setChecked(self.second_bibles) + self.verseSeparatorLineEdit.setPlaceholderText( + get_reference_separator(u'sep_v_default')) + self.verseSeparatorLineEdit.setText(settings.value(u'verse separator', + QtCore.QVariant(u'')).toString()) + self.verseSeparatorCheckBox.setChecked( + self.verseSeparatorLineEdit.text() != u'') + self.rangeSeparatorLineEdit.setPlaceholderText( + get_reference_separator(u'sep_r_default')) + self.rangeSeparatorLineEdit.setText(settings.value(u'range separator', + QtCore.QVariant(u'')).toString()) + self.rangeSeparatorCheckBox.setChecked( + self.rangeSeparatorLineEdit.text() != u'') + self.listSeparatorLineEdit.setPlaceholderText( + get_reference_separator(u'sep_l_default')) + self.listSeparatorLineEdit.setText(settings.value(u'list separator', + QtCore.QVariant(u'')).toString()) + self.listSeparatorCheckBox.setChecked( + self.listSeparatorLineEdit.text() != u'') + self.endSeparatorLineEdit.setPlaceholderText( + get_reference_separator(u'sep_e_default')) + self.endSeparatorLineEdit.setText(settings.value(u'end separator', + QtCore.QVariant(u'')).toString()) + self.endSeparatorCheckBox.setChecked( + self.endSeparatorLineEdit.text() != u'') settings.endGroup() def save(self): @@ -193,6 +390,15 @@ class BiblesTab(SettingsTab): QtCore.QVariant(self.layout_style)) settings.setValue(u'second bibles', QtCore.QVariant(self.second_bibles)) settings.setValue(u'bible theme', QtCore.QVariant(self.bible_theme)) + settings.setValue(u'verse separator', + QtCore.QVariant(self.verseSeparatorLineEdit.text())) + settings.setValue(u'range separator', + QtCore.QVariant(self.rangeSeparatorLineEdit.text())) + settings.setValue(u'list separator', + QtCore.QVariant(self.listSeparatorLineEdit.text())) + settings.setValue(u'end separator', + QtCore.QVariant(self.endSeparatorLineEdit.text())) + update_reference_separators() settings.endGroup() def updateThemeList(self, theme_list): diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index d7b3fff01..5ec4daa50 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -38,7 +38,7 @@ from openlp.core.lib.ui import UiStrings, add_widget_completer, \ find_and_set_in_combo_box, build_icon from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ - VerseReferenceList, get_reference_match + VerseReferenceList, get_reference_separator log = logging.getLogger(__name__) @@ -634,8 +634,8 @@ class BibleMediaItem(MediaManagerItem): chapter_to = self.advancedToChapter.currentText() verse_from = self.advancedFromVerse.currentText() verse_to = self.advancedToVerse.currentText() - verse_separator = get_reference_match(u'sep_v_display') - range_separator = get_reference_match(u'sep_r_display') + verse_separator = get_reference_separator(u'sep_v_display') + range_separator = get_reference_separator(u'sep_r_display') verse_range = chapter_from + verse_separator + verse_from + \ range_separator + chapter_to + verse_separator + verse_to versetext = u'%s %s' % (book, verse_range) @@ -737,7 +737,7 @@ class BibleMediaItem(MediaManagerItem): Displays the search results in the media manager. All data needed for further action is saved for/in each row. """ - verse_separator = get_reference_match(u'sep_v_display') + verse_separator = get_reference_separator(u'sep_v_display') version = self.plugin.manager.get_meta_data(bible, u'Version').value copyright = self.plugin.manager.get_meta_data(bible, u'Copyright').value permissions = \ @@ -890,8 +890,8 @@ class BibleMediaItem(MediaManagerItem): ``old_item`` The last item of a range. """ - verse_separator = get_reference_match(u'sep_v_display') - range_separator = get_reference_match(u'sep_r_display') + verse_separator = get_reference_separator(u'sep_v_display') + range_separator = get_reference_separator(u'sep_r_display') old_chapter = self._decodeQtObject(old_bitem, 'chapter') old_verse = self._decodeQtObject(old_bitem, 'verse') start_book = self._decodeQtObject(start_bitem, 'book') @@ -971,7 +971,7 @@ class BibleMediaItem(MediaManagerItem): ``verse`` The verse number (int). """ - verse_separator = get_reference_match(u'sep_v_display') + verse_separator = get_reference_separator(u'sep_v_display') if not self.settings.show_new_chapters or old_chapter != chapter: verse_text = unicode(chapter) + verse_separator + unicode(verse) else: From 62d4db0c82335436bbe951b3d2cc9dfa6457a29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Wed, 18 Jan 2012 21:16:50 +0200 Subject: [PATCH 059/105] Added a comment for translators. --- openlp/core/ui/advancedtab.py | 9 ++++++++- openlp/core/ui/servicemanager.py | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 6a0483e93..9752a1fea 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -51,7 +51,14 @@ class AdvancedTab(SettingsTab): self.default_service_hour = 11 self.default_service_minute = 0 self.default_service_name = unicode(translate('OpenLP.AdvancedTab', - 'Service %Y-%m-%d %H-%M')) + 'Service %Y-%m-%d %H-%M', + 'This is the default default service name template, which can be ' + 'found in Advanced tab under Tools, Settings. Please do not ' + 'include any of the following characters: /\\?*|<>\[\]":+\n' + 'You can use any of the directives as shown on page ' + 'http://docs.python.org/library/datetime.html' + '#strftime-strptime-behavior , but if possible, please keep ' + 'the resulting string sortable by name.')) self.default_image = u':/graphics/openlp-splash-screen.png' self.default_color = u'#ffffff' self.icon_path = u':/system/system_settings.png' diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 44a9cb6de..af8c97235 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -631,7 +631,14 @@ class ServiceManager(QtGui.QWidget): default_pattern = unicode(QtCore.QSettings().value( u'advanced/default service name', translate('OpenLP.AdvancedTab', - 'Service %Y-%m-%d %H-%M')).toString()) + 'Service %Y-%m-%d %H-%M', + 'This is the default default service name template, which can be ' + 'found in Advanced tab under Tools, Settings. Please do not ' + 'include any of the following characters: /\\?*|<>\[\]":+\n' + 'You can use any of the directives as shown on page ' + 'http://docs.python.org/library/datetime.html' + '#strftime-strptime-behavior , but if possible, please keep ' + 'the resulting string sortable by name.')).toString()) default_filename = time.strftime(default_pattern) directory = unicode(SettingsManager.get_last_dir( self.mainwindow.servicemanagerSettingsSection)) From 62a5578528a023da49eeb20daf5ef9fbb9e5073b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Wed, 18 Jan 2012 21:18:18 +0200 Subject: [PATCH 060/105] Make % acceptable character for filenames again. --- openlp/core/ui/advancedtab.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 9752a1fea..579aee1a1 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -406,12 +406,8 @@ class AdvancedTab(SettingsTab): minute = self.service_minute) try: service_name_example = time.strftime(unicode(self.service_name)) - print service_name_example - if service_name_example.find('%') != -1: - preset_is_valid = False except ValueError: preset_is_valid = False - if not preset_is_valid: service_name_example = translate('OpenLP.AdvancedTab', 'Syntax error.') return preset_is_valid, service_name_example From cac10059f3c07b4ed4475187e189d9b23e4dd7c9 Mon Sep 17 00:00:00 2001 From: M2j Date: Wed, 18 Jan 2012 21:20:05 +0100 Subject: [PATCH 061/105] update the 'scripture reference invalid' message --- openlp/plugins/bibles/lib/manager.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 873b42cee..c231f2062 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -33,7 +33,7 @@ from PyQt4 import QtCore from openlp.core.lib import Receiver, SettingsManager, translate from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, delete_file -from openlp.plugins.bibles.lib import parse_reference +from openlp.plugins.bibles.lib import parse_reference, get_reference_separator from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta from csvbible import CSVBible from http import HTTPBible @@ -309,19 +309,29 @@ class BibleManager(object): return self.db_cache[bible].get_verses(reflist, show_error) else: if show_error: + reference_seperators = { + u'verse': get_reference_separator(u'sep_v_display'), + u'range': get_reference_separator(u'sep_r_display'), + u'list': get_reference_separator(u'sep_l_display')} Receiver.send_message(u'openlp_information_message', { u'title': translate('BiblesPlugin.BibleManager', 'Scripture Reference Error'), - u'message': translate('BiblesPlugin.BibleManager', + u'message': unicode(translate('BiblesPlugin.BibleManager', 'Your scripture reference is either not supported by ' 'OpenLP or is invalid. Please make sure your reference ' - 'conforms to one of the following patterns:\n\n' + 'conforms to one of the following patterns or consult the ' + 'manual:\n\n' 'Book Chapter\n' - 'Book Chapter-Chapter\n' - 'Book Chapter:Verse-Verse\n' - 'Book Chapter:Verse-Verse,Verse-Verse\n' - 'Book Chapter:Verse-Verse,Chapter:Verse-Verse\n' - 'Book Chapter:Verse-Chapter:Verse') + 'Book Chapter%(range)sChapter\n' + 'Book Chapter%(verse)sVerse%(range)sVerse\n' + 'Book Chapter%(verse)sVerse%(range)sVerse%(list)sVerse' + '%(range)sVerse\n' + 'Book Chapter%(verse)sVerse%(range)sVerse%(list)sChapter' + '%(verse)sVerse%(range)sVerse\n' + 'Book Chapter%(verse)sVerse%(range)sChapter%(verse)sVerse', + 'Please pay attention to the appended "s" of the wildcards ' + 'and refrain from translating the words inside the ' + 'names in the brackets.')) % reference_seperators }) return None From 88ce7a906d23389f91eb0cff579161a8958c0f56 Mon Sep 17 00:00:00 2001 From: rimach Date: Thu, 19 Jan 2012 20:13:19 +0100 Subject: [PATCH 062/105] reactivate vlc --- openlp/core/ui/maindisplay.py | 10 ++++++++- openlp/core/ui/media/mediacontroller.py | 12 +++++------ openlp/core/ui/media/phononplayer.py | 26 ++--------------------- openlp/core/ui/media/vlcplayer.py | 28 ++++--------------------- 4 files changed, 21 insertions(+), 55 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 8a43ccc36..971a9903f 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -144,7 +144,7 @@ class MainDisplay(Display): windowFlags = windowFlags | QtCore.Qt.SplashScreen self.setWindowFlags(windowFlags) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) - self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) + self.setTransparency(True) if self.isLive: QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_display_hide'), self.hideDisplay) @@ -155,6 +155,14 @@ class MainDisplay(Display): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.configChanged) + def setTransparency(self, enabled): + if enabled: + self.setAutoFillBackground(False) + else: + self.setAttribute(QtCore.Qt.WA_NoSystemBackground, False) + self.setAttribute(QtCore.Qt.WA_TranslucentBackground, enabled) + self.repaint() + def cssChanged(self): """ We may need to rebuild the CSS on the live display. diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index dadd28dc6..9c44f1693 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -278,15 +278,15 @@ class MediaController(object): def set_controls_visible(self, controller, value): # Generic controls controller.mediabar.setVisible(value) + if controller.isLive and controller.display: + if self.curDisplayMediaPlayer and value: + if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']: + controller.display.setTransparency(False) + else: + controller.display.setTransparency(True) # Special controls: Here media type specific Controls will be enabled # (e.g. for DVD control, ...) # TODO - # if controller.isLive and controller.display: - # if self.curDisplayMediaPlayer and value: - # if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']: - # controller.display.setTransparency(False) - # else: - # controller.display.setTransparency(True) def resize(self, controller, display, player): """ diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 7699a979d..457accbd9 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -30,8 +30,6 @@ import mimetypes from datetime import datetime from PyQt4.phonon import Phonon -from PyQt4 import QtCore -import sys from openlp.core.lib import Receiver from openlp.core.lib.mediaplayer import MediaPlayer @@ -65,7 +63,6 @@ class PhononPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'phonon') self.parent = parent - self.canBackground = True self.additional_extensions = ADDITIONAL_EXT mimetypes.init() for mimetype in Phonon.BackendCapabilities.availableMimeTypes(): @@ -96,23 +93,7 @@ class PhononPlayer(MediaPlayer): u' '.join(self.additional_extensions[mimetype]))) def setup(self, display): - if display.isLive: - display.phononWidget = Phonon.VideoWidget() - windowFlags = QtCore.Qt.FramelessWindowHint - if QtCore.QSettings().value(u'advanced/x11 bypass wm', - QtCore.QVariant(True)).toBool(): - windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint - # FIXME: QtCore.Qt.SplashScreen is workaround to make display screen - # stay always on top on Mac OS X. For details see bug 906926. - # It needs more investigation to fix it properly. - if sys.platform == 'darwin': - windowFlags = windowFlags | QtCore.Qt.SplashScreen - windowFlags = windowFlags | QtCore.Qt.Window - display.phononWidget.setWindowFlags(windowFlags) - display.phononWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose) - display.phononWidget.setGeometry(display.geometry())#1280,0,1280,1024) - else: - display.phononWidget = Phonon.VideoWidget(display) + display.phononWidget = Phonon.VideoWidget(display) display.phononWidget.resize(display.size()) display.mediaObject = Phonon.MediaObject(display) Phonon.createPath(display.mediaObject, display.phononWidget) @@ -172,10 +153,7 @@ class PhononPlayer(MediaPlayer): int(display.mediaObject.totalTime()/1000) controller.seekSlider.setMaximum(controller.media_info.length*1000) self.state = MediaState.Playing - if not controller.media_info.is_background: - display.phononWidget.raise_() - else: - display.raise_() + display.phononWidget.raise_() return True else: return False diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index de9e3c20d..2adf0a2d1 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -91,28 +91,11 @@ class VlcPlayer(MediaPlayer): MediaPlayer.__init__(self, parent, u'vlc') self.parent = parent self.canFolder = True - self.canBackground = True self.audio_extensions_list = AUDIO_EXT self.video_extensions_list = VIDEO_EXT def setup(self, display): - if display.isLive: - display.vlcWidget = QtGui.QFrame() - windowFlags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool - if QtCore.QSettings().value(u'advanced/x11 bypass wm', - QtCore.QVariant(True)).toBool(): - windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint - # FIXME: QtCore.Qt.SplashScreen is workaround to make display screen - # stay always on top on Mac OS X. For details see bug 906926. - # It needs more investigation to fix it properly. - if sys.platform == 'darwin': - windowFlags = windowFlags | QtCore.Qt.SplashScreen - windowFlags = windowFlags | QtCore.Qt.Window - display.vlcWidget.setWindowFlags(windowFlags) - display.vlcWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose) - display.vlcWidget.setGeometry(display.geometry()) - else: - display.vlcWidget = QtGui.QFrame(display) + display.vlcWidget = QtGui.QFrame(display) # creating a basic vlc instance command_line_options = u'--no-video-title-show' if not display.hasAudio: @@ -125,7 +108,7 @@ class VlcPlayer(MediaPlayer): display.vlcInstance.set_log_verbosity(2) # creating an empty vlc media player display.vlcMediaPlayer = display.vlcInstance.media_player_new() - #display.vlcWidget.resize(display.size()) + display.vlcWidget.resize(display.size()) display.vlcWidget.raise_() display.vlcWidget.hide() # the media player has to be 'connected' to the QFrame @@ -177,7 +160,7 @@ class VlcPlayer(MediaPlayer): def resize(self, display): display.vlcWidget.resize(display.size()) - + def play(self, display): controller = display.controller start_time = 0 @@ -191,10 +174,7 @@ class VlcPlayer(MediaPlayer): int(display.vlcMediaPlayer.get_media().get_duration() / 1000) controller.seekSlider.setMaximum(controller.media_info.length * 1000) self.state = MediaState.Playing - if not controller.media_info.is_background: - display.vlcWidget.raise_() - else: - display.raise_() + display.vlcWidget.raise_() return True else: return False From 210d88ac79602800527439bd57ea6fca522b2978 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sat, 21 Jan 2012 16:11:41 +0800 Subject: [PATCH 063/105] Documented signal in Receiver class --- openlp/core/lib/eventreceiver.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index e3914d98a..26f87d387 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -111,6 +111,9 @@ class EventReceiver(QtCore.QObject): ``slidecontroller_live_spin_delay`` Pushes out the loop delay. + + ``slidecontroller_update_slide_advance`` + Updates the slide_advance variable from the saved settings. ``slidecontroller_live_stop_loop`` Stop the loop on the main display. From d6ecab7a04a59b7280236434fcb7b00aeb6e6096 Mon Sep 17 00:00:00 2001 From: M2j Date: Sat, 21 Jan 2012 16:47:38 +0100 Subject: [PATCH 064/105] - remove FIXME: comment - change scripture reference configuration tooltip strings to allow separate translation - fix RegEx for scripture references with trailing list separator --- openlp/plugins/bibles/lib/__init__.py | 25 ++++++++++++++----------- openlp/plugins/bibles/lib/biblestab.py | 6 +++--- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index aaf8ff54c..07e50fa3f 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -65,14 +65,16 @@ def update_reference_separators(): references. """ default_separators = unicode(translate('BiblesPlugin', - ':|v|V|verse;;-|to;;,|and;;end', + ':|v|V|verse|verses;;-|to;;,|and;;end', 'This are 4 values seperated each by two semicolons representing the ' 'seperators for parsing references. This values are verse separators, ' 'range separators, list separators and end mark. Alternative values ' 'to be seperated by a vertical bar "|". In this case the first value ' - 'is the default and used for the display format.')).split(u';;') + 'is the default and used for the display format. If a semicolon should ' + 'be used you have to give an alternative separator afterwards to allow ' + 'OpenLP correct splitting of the translation.')).split(u';;') settings = QtCore.QSettings() - settings.beginGroup(u'bibles') # FIXME: get the name from somewere else + settings.beginGroup(u'bibles') custom_separators = [ unicode(settings.value(u'verse separator', QtCore.QVariant(u'')).toString()), @@ -104,18 +106,19 @@ def update_reference_separators(): REFERENCE_SEPARATORS[u'sep_%s_default' % role] = \ default_separators[index] # verse range match: (:)?(-((:)?|end)?)? - range_string = u'(?:(?P[0-9]+)%(sep_v)s)?' \ + range_regex = u'(?:(?P[0-9]+)%(sep_v)s)?' \ u'(?P[0-9]+)(?P%(sep_r)s(?:(?:(?P' \ u'[0-9]+)%(sep_v)s)?(?P[0-9]+)|%(sep_e)s)?)?' % \ REFERENCE_SEPARATORS - REFERENCE_MATCHES[u'range'] = re.compile(u'^\s*%s\s*$' % range_string, + REFERENCE_MATCHES[u'range'] = re.compile(u'^\s*%s\s*$' % range_regex, re.UNICODE) REFERENCE_MATCHES[u'range_separator'] = re.compile( REFERENCE_SEPARATORS[u'sep_l'], re.UNICODE) # full reference match: ((,|(?=$)))+ - REFERENCE_MATCHES[u'full'] = re.compile(u'^\s*(?!\s)(?P[\d]*[^\d]+)' - u'(?(?:%(range)s(?:%(sep_l)s|(?=\s*$)))+)\s*$' % \ - dict(REFERENCE_SEPARATORS.items() + [(u'range', range_string)]), + REFERENCE_MATCHES[u'full'] = re.compile( + u'^\s*(?!\s)(?P[\d]*[^\d]+)(?(?:%(range_regex)s(?:%(sep_l)s(?!\s*$)|(?=\s*$)))+)\s*$' \ + % dict(REFERENCE_SEPARATORS.items() + [(u'range_regex', range_regex)]), re.UNICODE) def get_reference_separator(separator_type): @@ -194,7 +197,7 @@ def parse_reference(reference): If there is a range separator without further verse declaration the last refered chapter is addressed until the end. - ``range_string`` is a regular expression which matches for verse range + ``range_regex`` is a regular expression which matches for verse range declarations: ``(?:(?P[0-9]+)%(sep_v)s)?`` @@ -223,9 +226,9 @@ def parse_reference(reference): are optional leading digits followed by non-digits. The group ends before the whitspace in front of the next digit. - ``(?P(?:`` + range_string + ``(?:%(sep_l)s|(?=\s*$)))+)\s*$`` + ``(?P(?:%(range_regex)s(?:%(sep_l)s(?!\s*$)|(?=\s*$)))+)\s*$`` The second group contains all ``ranges``. This can be multiple - declarations of a range_string separated by a list separator. + declarations of range_regex separated by a list separator. """ log.debug(u'parse_reference("%s")', reference) diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 5d96faf7a..026810fb2 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -236,17 +236,17 @@ class BiblesTab(SettingsTab): translate('BiblesPlugin.BiblesTab', 'End Mark:')) self.verseSeparatorLineEdit.setToolTip( translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' - 'separators may be defined.\nThey have to be separated ' + 'verse separators may be defined.\nThey have to be separated ' 'by a vertical bar "|".\nPlease clear this edit line to use ' 'the default value.')) self.rangeSeparatorLineEdit.setToolTip( translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' - 'separators may be defined.\nThey have to be separated ' + 'range separators may be defined.\nThey have to be separated ' 'by a vertical bar "|".\nPlease clear this edit line to use ' 'the default value.')) self.listSeparatorLineEdit.setToolTip( translate('BiblesPlugin.BiblesTab', 'Multiple alternative ' - 'separators may be defined.\nThey have to be separated ' + 'list separators may be defined.\nThey have to be separated ' 'by a vertical bar "|".\nPlease clear this edit line to use ' 'the default value.')) self.endSeparatorLineEdit.setToolTip( From cc04a82c080ec2a9843e77ed75ad1c68f7062f42 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sun, 22 Jan 2012 17:07:59 +0800 Subject: [PATCH 065/105] Changed up arrow to jump to last slide of previous service item (when applicable) --- openlp/core/ui/servicemanager.py | 17 ++++++++++++++--- openlp/core/ui/slidecontroller.py | 12 +++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index e23e68ef5..5028297dd 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -826,7 +826,7 @@ class ServiceManager(QtGui.QWidget): lookFor = 1 serviceIterator += 1 - def previousItem(self): + def previousItem(self, message): """ Called by the SlideController to select the previous service item. """ @@ -834,20 +834,31 @@ class ServiceManager(QtGui.QWidget): return selected = self.serviceManagerList.selectedItems()[0] prevItem = None + prevItemLastSlide = None serviceIterator = QtGui.QTreeWidgetItemIterator(self.serviceManagerList) while serviceIterator.value(): if serviceIterator.value() == selected: - if prevItem: + if message == 'last slide' and prevItemLastSlide: + pos = prevItem.data(0, QtCore.Qt.UserRole).toInt()[0] + check_expanded = self.serviceItems[pos - 1][u'expanded'] + self.serviceManagerList.setCurrentItem(prevItemLastSlide) + if not check_expanded: + self.serviceManagerList.collapseItem(prevItem) + self.makeLive() + self.serviceManagerList.setCurrentItem(prevItem) + elif prevItem: self.serviceManagerList.setCurrentItem(prevItem) self.makeLive() return if serviceIterator.value().parent() is None: prevItem = serviceIterator.value() + if serviceIterator.value().parent() is prevItem: + prevItemLastSlide = serviceIterator.value() serviceIterator += 1 def onSetItem(self, message): """ - Called by a signal to select a specific item. + Called by a signal to select a specific item.signal """ self.setItem(int(message)) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 30d09050a..41dddb1c9 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -616,8 +616,12 @@ class SlideController(Controller): if len(self.keypress_queue): while len(self.keypress_queue) and not self.keypress_loop: self.keypress_loop = True - if self.keypress_queue.popleft() == u'previous': - Receiver.send_message('servicemanager_previous_item') + keypressCommand = self.keypress_queue.popleft() + if keypressCommand == u'previous': + Receiver.send_message('servicemanager_previous_item', None) + elif keypressCommand == u'previous last slide': + # Go to the last slide of the previous item + Receiver.send_message('servicemanager_previous_item', 'last slide') else: Receiver.send_message('servicemanager_next_item') self.keypress_loop = False @@ -1221,7 +1225,9 @@ class SlideController(Controller): if self.slide_advance == SlideAdvance.Wrap: row = self.previewListWidget.rowCount() - 1 elif self.slide_advance == SlideAdvance.Next: - self.servicePrevious() + # self.servicePrevious() + self.keypress_queue.append(u'previous last slide') + self._process_queue() return else: row = 0 From 4f0cd62f63feb23b38e7ab6dfc47334be78801fc Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sun, 22 Jan 2012 17:14:50 +0800 Subject: [PATCH 066/105] Fix typo --- openlp/core/ui/servicemanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 5028297dd..c7b34958d 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -858,7 +858,7 @@ class ServiceManager(QtGui.QWidget): def onSetItem(self, message): """ - Called by a signal to select a specific item.signal + Called by a signal to select a specific item. """ self.setItem(int(message)) From 2c472ff38e0ce96d1807a0d69a8ae157c0239e49 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Mon, 23 Jan 2012 17:33:12 +0800 Subject: [PATCH 067/105] Small Fixes --- openlp/core/ui/servicemanager.py | 2 +- openlp/core/ui/slidecontroller.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index c7b34958d..f2c4a7702 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -838,7 +838,7 @@ class ServiceManager(QtGui.QWidget): serviceIterator = QtGui.QTreeWidgetItemIterator(self.serviceManagerList) while serviceIterator.value(): if serviceIterator.value() == selected: - if message == 'last slide' and prevItemLastSlide: + if message == u'last slide' and prevItemLastSlide: pos = prevItem.data(0, QtCore.Qt.UserRole).toInt()[0] check_expanded = self.serviceItems[pos - 1][u'expanded'] self.serviceManagerList.setCurrentItem(prevItemLastSlide) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 41dddb1c9..8eb425ff6 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1225,7 +1225,6 @@ class SlideController(Controller): if self.slide_advance == SlideAdvance.Wrap: row = self.previewListWidget.rowCount() - 1 elif self.slide_advance == SlideAdvance.Next: - # self.servicePrevious() self.keypress_queue.append(u'previous last slide') self._process_queue() return From 8c483a58b34051a0fa6afa5909a724bffdfaeba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Wed, 25 Jan 2012 11:32:20 +0200 Subject: [PATCH 068/105] Added checkbox for to disable default service name, just as suggested. --- openlp/core/ui/advancedtab.py | 29 +++++++++++++--- openlp/core/ui/servicemanager.py | 57 +++++++++++++++++--------------- 2 files changed, 56 insertions(+), 30 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 579aee1a1..940f7b373 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -103,7 +103,11 @@ class AdvancedTab(SettingsTab): self.defaultServiceGroupBox.setObjectName(u'defaultServiceGroupBox') self.defaultServiceLayout = QtGui.QFormLayout( self.defaultServiceGroupBox) + self.defaultServiceCheckBox = QtGui.QCheckBox( + self.defaultServiceGroupBox) + self.defaultServiceCheckBox.setObjectName(u'defaultServiceCheckBox') self.defaultServiceLayout.setObjectName(u'defaultServiceLayout') + self.defaultServiceLayout.addRow(self.defaultServiceCheckBox) self.defaultServiceTimeLabel = QtGui.QLabel(self.defaultServiceGroupBox) self.defaultServiceTimeLabel.setObjectName(u'defaultServiceTimeLabel') self.defaultServiceDay = QtGui.QComboBox( @@ -200,6 +204,8 @@ class AdvancedTab(SettingsTab): self.rightLayout.addWidget(self.x11GroupBox) self.rightLayout.addStretch() + QtCore.QObject.connect(self.defaultServiceCheckBox, + QtCore.SIGNAL(u'toggled(bool)'), self.defaultServiceCheckBoxToggled) QtCore.QObject.connect(self.defaultServiceDay, QtCore.SIGNAL(u'currentIndexChanged(int)'), self.onDefaultServiceDayChanged) @@ -243,6 +249,9 @@ class AdvancedTab(SettingsTab): 'Enable application exit confirmation')) self.defaultServiceGroupBox.setTitle( translate('OpenLP.AdvancedTab', 'Default Service Name')) + self.defaultServiceCheckBox.setText( + translate('OpenLP.AdvancedTab', + 'Save As dialog has prefilled service name')) self.defaultServiceTimeLabel.setText( translate('OpenLP.AdvancedTab', 'Date and Time:')) self.defaultServiceDay.setItemText(0, @@ -272,9 +281,8 @@ class AdvancedTab(SettingsTab): self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', 'Example:')) self.defaultServiceNote.setText( - translate('OpenLP.AdvancedTab', 'Note: Leave Name field blank to ' - 'have no prefilled name in Save As dialog. ' - 'Consult manual for special symbols usage.')) + translate('OpenLP.AdvancedTab', 'Note: ' + 'Consult OpenLP manual for special symbols usage.')) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', @@ -326,6 +334,9 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) + default_service_enabled = settings.value(u'default service enabled', + QtCore.QVariant(True)).toBool() + self.defaultServiceCheckBox.setChecked(default_service_enabled) self.service_day, ok = settings.value(u'default service day', QtCore.QVariant(self.default_service_day)).toInt() self.service_hour, ok = settings.value(u'default service hour', @@ -338,6 +349,7 @@ class AdvancedTab(SettingsTab): self.defaultServiceTime.setTime( QtCore.QTime(self.service_hour, self.service_minute)) self.defaultServiceName.setText(self.service_name) + self.defaultServiceCheckBoxToggled(default_service_enabled) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) self.default_color = settings.value(u'default color', @@ -359,6 +371,8 @@ class AdvancedTab(SettingsTab): self.defaultServiceName.setText(self.service_name) settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) + settings.setValue(u'default service enabled', + self.defaultServiceCheckBox.isChecked()) if self.service_name == self.default_service_name: settings.remove(u'default service name') else: @@ -392,6 +406,13 @@ class AdvancedTab(SettingsTab): Receiver.send_message(u'config_screen_changed') self.display_changed = False + def defaultServiceCheckBoxToggled(self, default_service_enabled): + self.defaultServiceDay.setEnabled(default_service_enabled) + time_enabled = default_service_enabled and self.service_day is not 7 + self.defaultServiceTime.setEnabled(time_enabled) + self.defaultServiceName.setEnabled(default_service_enabled) + self.defaultServiceRevertButton.setEnabled(default_service_enabled) + def generate_service_name_example(self): preset_is_valid = True if self.service_day == 7: @@ -418,7 +439,7 @@ class AdvancedTab(SettingsTab): def onDefaultServiceDayChanged(self, index): self.service_day = index - self.defaultServiceTime.setReadOnly(self.service_day == 7) + self.defaultServiceTime.setEnabled(self.service_day is not 7) self.updateServiceNameExample() def onDefaultServiceTimeChanged(self, time): diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index af8c97235..4f1ac3164 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -613,33 +613,38 @@ class ServiceManager(QtGui.QWidget): Get a file name and then call :func:`ServiceManager.saveFile` to save the file. """ - service_day, ok = QtCore.QSettings().value( - u'advanced/default service day', 7).toInt() - if service_day == 7: - time = datetime.now() + default_service_enabled = QtCore.QSettings().value( + u'advanced/default service enabled', QtCore.QVariant(True)).toBool() + if default_service_enabled: + service_day, ok = QtCore.QSettings().value( + u'advanced/default service day', 7).toInt() + if service_day == 7: + time = datetime.now() + else: + service_hour, ok = QtCore.QSettings().value( + u'advanced/default service hour', 11).toInt() + service_minute, ok = QtCore.QSettings().value( + u'advanced/default service minute', 0).toInt() + now = datetime.now() + day_delta = service_day - now.weekday() + if day_delta < 0: + day_delta += 7 + time = now + timedelta(days=day_delta) + time = time.replace(hour=service_hour, minute=service_minute) + default_pattern = unicode(QtCore.QSettings().value( + u'advanced/default service name', + translate('OpenLP.AdvancedTab', + 'Service %Y-%m-%d %H-%M', + 'This is the default default service name template, which can ' + 'be found in Advanced tab under Tools, Settings. Please do not ' + 'include any of the following characters: /\\?*|<>\[\]":+\n' + 'You can use any of the directives as shown on page ' + 'http://docs.python.org/library/datetime.html' + '#strftime-strptime-behavior , but if possible, please keep ' + 'the resulting string sortable by name.')).toString()) + default_filename = time.strftime(default_pattern) else: - service_hour, ok = QtCore.QSettings().value( - u'advanced/default service hour', 11).toInt() - service_minute, ok = QtCore.QSettings().value( - u'advanced/default service minute', 0).toInt() - now = datetime.now() - day_delta = service_day - now.weekday() - if day_delta < 0: - day_delta += 7 - time = now + timedelta(days=day_delta) - time = time.replace(hour = service_hour, minute = service_minute) - default_pattern = unicode(QtCore.QSettings().value( - u'advanced/default service name', - translate('OpenLP.AdvancedTab', - 'Service %Y-%m-%d %H-%M', - 'This is the default default service name template, which can be ' - 'found in Advanced tab under Tools, Settings. Please do not ' - 'include any of the following characters: /\\?*|<>\[\]":+\n' - 'You can use any of the directives as shown on page ' - 'http://docs.python.org/library/datetime.html' - '#strftime-strptime-behavior , but if possible, please keep ' - 'the resulting string sortable by name.')).toString()) - default_filename = time.strftime(default_pattern) + default_filename = u'' directory = unicode(SettingsManager.get_last_dir( self.mainwindow.servicemanagerSettingsSection)) path = os.path.join(directory, default_filename) From d6867990356c89ac36b689d2353e5193bd87e6cc Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Wed, 25 Jan 2012 18:03:57 +0800 Subject: [PATCH 069/105] Created Service Item Advance enumeration class --- openlp/core/lib/serviceitem.py | 9 +++++++++ openlp/core/ui/slidecontroller.py | 12 ++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 1a71779de..211461aba 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -56,6 +56,15 @@ class SlideAdvance(object): Wrap = 2 Next = 3 +class ServiceItemAdvance(object): + """ + Provides an enumeration for the service item advance by left/right + arrow keys + """ + Previous = 1 + PreviousLastSlide = 2 + Next = 3 + class ItemCapabilities(object): """ Provides an enumeration of a serviceitem's capabilities diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 8eb425ff6..ccdd72156 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import OpenLPToolbar, Receiver, ItemCapabilities, \ translate, build_icon, ServiceItem, build_html, PluginManager, ServiceItem from openlp.core.lib.ui import UiStrings, shortcut_action -from openlp.core.lib.serviceitem import SlideAdvance +from openlp.core.lib.serviceitem import SlideAdvance, ServiceItemAdvance from openlp.core.ui import HideMode, MainDisplay, Display, ScreenList from openlp.core.utils.actions import ActionList, CategoryOrder @@ -598,14 +598,14 @@ class SlideController(Controller): """ Live event to select the previous service item from the service manager. """ - self.keypress_queue.append(u'previous') + self.keypress_queue.append(ServiceItemAdvance.Previous) self._process_queue() def serviceNext(self): """ Live event to select the next service item from the service manager. """ - self.keypress_queue.append(u'next') + self.keypress_queue.append(ServiceItemAdvance.Next) self._process_queue() def _process_queue(self): @@ -617,9 +617,9 @@ class SlideController(Controller): while len(self.keypress_queue) and not self.keypress_loop: self.keypress_loop = True keypressCommand = self.keypress_queue.popleft() - if keypressCommand == u'previous': + if keypressCommand == ServiceItemAdvance.Previous: Receiver.send_message('servicemanager_previous_item', None) - elif keypressCommand == u'previous last slide': + elif keypressCommand == ServiceItemAdvance.PreviousLastSlide: # Go to the last slide of the previous item Receiver.send_message('servicemanager_previous_item', 'last slide') else: @@ -1225,7 +1225,7 @@ class SlideController(Controller): if self.slide_advance == SlideAdvance.Wrap: row = self.previewListWidget.rowCount() - 1 elif self.slide_advance == SlideAdvance.Next: - self.keypress_queue.append(u'previous last slide') + self.keypress_queue.append(ServiceItemAdvance.PreviousLastSlide) self._process_queue() return else: From 6487a3248aa9462cc441cb5e54015311a3a3e691 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Wed, 25 Jan 2012 20:34:13 +0800 Subject: [PATCH 070/105] Moved Service Item Advance enumeration to slidecontroller --- openlp/core/lib/serviceitem.py | 9 --------- openlp/core/ui/slidecontroller.py | 11 ++++++++++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 211461aba..1a71779de 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -56,15 +56,6 @@ class SlideAdvance(object): Wrap = 2 Next = 3 -class ServiceItemAdvance(object): - """ - Provides an enumeration for the service item advance by left/right - arrow keys - """ - Previous = 1 - PreviousLastSlide = 2 - Next = 3 - class ItemCapabilities(object): """ Provides an enumeration of a serviceitem's capabilities diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index ccdd72156..94306e78b 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import OpenLPToolbar, Receiver, ItemCapabilities, \ translate, build_icon, ServiceItem, build_html, PluginManager, ServiceItem from openlp.core.lib.ui import UiStrings, shortcut_action -from openlp.core.lib.serviceitem import SlideAdvance, ServiceItemAdvance +from openlp.core.lib.serviceitem import SlideAdvance from openlp.core.ui import HideMode, MainDisplay, Display, ScreenList from openlp.core.utils.actions import ActionList, CategoryOrder @@ -48,6 +48,15 @@ class SlideList(QtGui.QTableWidget): """ def __init__(self, parent=None, name=None): QtGui.QTableWidget.__init__(self, parent.controller) + +class ServiceItemAdvance(object): + """ + Provides an enumeration for the service item advance by left/right + arrow keys + """ + Previous = 1 + PreviousLastSlide = 2 + Next = 3 class Controller(QtGui.QWidget): """ From b77b0d18d7d1924fb7998b3d0a04ee04402e452c Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Wed, 25 Jan 2012 22:04:36 +0000 Subject: [PATCH 071/105] Added QR Code and link to download android app to settings tab --- openlp/plugins/remotes/lib/remotetab.py | 20 ++++++++++++++++++++ resources/images/android_app_qr.png | Bin 0 -> 558 bytes resources/images/openlp-2.qrc | 3 +++ 3 files changed, 23 insertions(+) create mode 100644 resources/images/android_app_qr.png diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index a1276800a..35fbe64cf 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -81,6 +81,20 @@ class RemoteTab(SettingsTab): self.stageUrl.setOpenExternalLinks(True) self.serverSettingsLayout.addRow(self.stageUrlLabel, self.stageUrl) self.leftLayout.addWidget(self.serverSettingsGroupBox) + self.androidAppGroupBox = QtGui.QGroupBox(self.rightColumn) + self.androidAppGroupBox.setObjectName(u'androidAppGroupBox') + self.rightLayout.addWidget(self.androidAppGroupBox) + self.qrLayout = QtGui.QVBoxLayout(self.androidAppGroupBox) + self.qrLayout.setObjectName(u'qrLayout') + self.qrCodeLabel = QtGui.QLabel(self.androidAppGroupBox) + self.qrCodeLabel.setPixmap(QtGui.QPixmap(u':/remotes/android_app_qr.png')) + self.qrCodeLabel.setAlignment(QtCore.Qt.AlignCenter) + self.qrCodeLabel.setObjectName(u'qrCodeLabel') + self.qrLayout.addWidget(self.qrCodeLabel) + self.qrDescriptionLabel = QtGui.QLabel(self.androidAppGroupBox) + self.qrDescriptionLabel.setObjectName(u'qrDescriptionLabel') + self.qrDescriptionLabel.setOpenExternalLinks(True) + self.qrLayout.addWidget(self.qrDescriptionLabel) self.leftLayout.addStretch() self.rightLayout.addStretch() QtCore.QObject.connect(self.twelveHourCheckBox, @@ -101,6 +115,12 @@ class RemoteTab(SettingsTab): self.twelveHourCheckBox.setText( translate('RemotePlugin.RemoteTab', 'Display stage time in 12h format')) + self.androidAppGroupBox.setTitle( + translate('RemotePlugin.RemoteTab', 'Android App')) + self.qrDescriptionLabel.setText(translate('RemotePlugin.RemoteTab', + 'Scan the QR code or click ' + 'download to install the Android app from the Market.')) def setUrls(self): ipAddress = u'localhost' diff --git a/resources/images/android_app_qr.png b/resources/images/android_app_qr.png new file mode 100644 index 0000000000000000000000000000000000000000..66e40df132c0700f05458e7e5ece6f92f0e25b88 GIT binary patch literal 558 zcmV+}0@3}6P)Px#22e~?MgRZ*00010!qa{L000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyS} z6#xXJ+2Ydx00FK^L_t(I%Z=2rYQr!P0MHW}w1j%~V9+nbo3+HhQs@sDx*9C-YVZ#P z@+;O7Z_Y0WJY-GrB0=y~ayleVt5n+?j`Q954&dL9quFjE&AC97E5(rIlFE^hj=a#E zr7l2o)qg!pbS@FbJnXCwN~L;9P%M*fX2AYC?K$1RLg{)ajEt}{J0|xJ^264Z%05b z{b{N->Wrzi++`p*Nytheme_new.png theme_edit.png + + android_app_qr.png + From 7b180a4c6733c69679905bf3c4df31e946791229 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Thu, 26 Jan 2012 10:46:17 +0800 Subject: [PATCH 072/105] Fixed bug #900727: Phonon backend no longer plays .mp4 video files Fixes: https://launchpad.net/bugs/900727 --- openlp/core/ui/media/phononplayer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 5203c5960..6e1dec918 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -51,6 +51,7 @@ ADDITIONAL_EXT = { u'video/x-matroska': [u'.mpv', u'.mkv'], u'video/x-wmv': [u'.wmv'], u'video/x-mpg': [u'.mpg'], + u'video/mpeg' : [u'.mp4', u'.mts'], u'video/x-ms-wmv': [u'.wmv']} @@ -89,6 +90,7 @@ class PhononPlayer(MediaPlayer): ext = u'*%s' % extension if ext not in list: list.append(ext) + print ext log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype, u' '.join(self.additional_extensions[mimetype]))) From 312a02f14b7bba824221d81d0b9430e98301c8ed Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Thu, 26 Jan 2012 10:51:25 +0800 Subject: [PATCH 073/105] Fixed typo Fixes: https://launchpad.net/bugs/900727 --- openlp/core/ui/media/phononplayer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 6e1dec918..57d1f7663 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -90,7 +90,6 @@ class PhononPlayer(MediaPlayer): ext = u'*%s' % extension if ext not in list: list.append(ext) - print ext log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype, u' '.join(self.additional_extensions[mimetype]))) From 7dc0e7d70209720727bec3e5200fab2b63cbd81b Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Thu, 26 Jan 2012 17:37:48 +0000 Subject: [PATCH 074/105] Added coppyright header back to resource file. Also, think line endings were an issue, which I hope I've sorted From 41fce8c2871c073d2a594719ab56344c0c31306b Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Thu, 26 Jan 2012 21:40:36 +0000 Subject: [PATCH 075/105] OpenLP specificbits added to resource files From 83155d45ea16e524cf792e0a785fbffab2954b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sat, 28 Jan 2012 00:10:12 +0200 Subject: [PATCH 076/105] Text changes, thanks to Raoul. --- openlp/core/ui/advancedtab.py | 7 +++---- openlp/core/ui/servicemanager.py | 5 +++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 940f7b373..492157b25 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -53,7 +53,7 @@ class AdvancedTab(SettingsTab): self.default_service_name = unicode(translate('OpenLP.AdvancedTab', 'Service %Y-%m-%d %H-%M', 'This is the default default service name template, which can be ' - 'found in Advanced tab under Tools, Settings. Please do not ' + 'found under Advanced in Settings, Configure OpenLP. Please do not ' 'include any of the following characters: /\\?*|<>\[\]":+\n' 'You can use any of the directives as shown on page ' 'http://docs.python.org/library/datetime.html' @@ -250,8 +250,7 @@ class AdvancedTab(SettingsTab): self.defaultServiceGroupBox.setTitle( translate('OpenLP.AdvancedTab', 'Default Service Name')) self.defaultServiceCheckBox.setText( - translate('OpenLP.AdvancedTab', - 'Save As dialog has prefilled service name')) + translate('OpenLP.AdvancedTab', 'Enable default service name')) self.defaultServiceTimeLabel.setText( translate('OpenLP.AdvancedTab', 'Date and Time:')) self.defaultServiceDay.setItemText(0, @@ -282,7 +281,7 @@ class AdvancedTab(SettingsTab): 'Example:')) self.defaultServiceNote.setText( translate('OpenLP.AdvancedTab', 'Note: ' - 'Consult OpenLP manual for special symbols usage.')) + 'Consult the OpenLP manual for usage.')) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 4f1ac3164..583e8c1d4 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -636,8 +636,9 @@ class ServiceManager(QtGui.QWidget): translate('OpenLP.AdvancedTab', 'Service %Y-%m-%d %H-%M', 'This is the default default service name template, which can ' - 'be found in Advanced tab under Tools, Settings. Please do not ' - 'include any of the following characters: /\\?*|<>\[\]":+\n' + 'be found under Advanced in Settings, Configure OpenLP. ' + 'Please do not include any of the following characters: ' + '/\\?*|<>\[\]":+\n' 'You can use any of the directives as shown on page ' 'http://docs.python.org/library/datetime.html' '#strftime-strptime-behavior , but if possible, please keep ' From b03295584b70e7fc297753719863138025bdf6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sat, 28 Jan 2012 01:13:35 +0200 Subject: [PATCH 077/105] Addresses Meinert's concern about a hidden exception. --- openlp/core/ui/advancedtab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 492157b25..35fdebd0a 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -335,7 +335,6 @@ class AdvancedTab(SettingsTab): settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) default_service_enabled = settings.value(u'default service enabled', QtCore.QVariant(True)).toBool() - self.defaultServiceCheckBox.setChecked(default_service_enabled) self.service_day, ok = settings.value(u'default service day', QtCore.QVariant(self.default_service_day)).toInt() self.service_hour, ok = settings.value(u'default service hour', @@ -348,6 +347,7 @@ class AdvancedTab(SettingsTab): self.defaultServiceTime.setTime( QtCore.QTime(self.service_hour, self.service_minute)) self.defaultServiceName.setText(self.service_name) + self.defaultServiceCheckBox.setChecked(default_service_enabled) self.defaultServiceCheckBoxToggled(default_service_enabled) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) From 02975a61bfbfc86fb27a79be65a25fed5102a368 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Sat, 28 Jan 2012 16:07:54 +0800 Subject: [PATCH 078/105] Renamed and moved both enumerations to lib/__init__.py --- openlp/core/lib/__init__.py | 18 ++++++++++++ openlp/core/lib/eventreceiver.py | 4 +-- openlp/core/lib/serviceitem.py | 9 ------ openlp/core/ui/generaltab.py | 26 ++++++++--------- openlp/core/ui/mainwindow.py | 6 ++-- openlp/core/ui/slidecontroller.py | 47 +++++++++++++------------------ 6 files changed, 55 insertions(+), 55 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 150ad2ea6..e5481fdb7 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -42,6 +42,24 @@ class MediaType(object): """ Audio = 1 Video = 2 + +class SlideLimits(object): + """ + Provides an enumeration for behaviour of OpenLP at the end limits of each + service item when pressing the up/down arrow keys + """ + End = 1 + Wrap = 2 + Next = 3 + +class ServiceItemAction(object): + """ + Provides an enumeration for the required action moving between service + items by left/right arrow keys + """ + Previous = 1 + PreviousLastSlide = 2 + Next = 3 def translate(context, text, comment=None, encoding=QtCore.QCoreApplication.CodecForTr, n=-1, diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index 26f87d387..35459e9dd 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -112,8 +112,8 @@ class EventReceiver(QtCore.QObject): ``slidecontroller_live_spin_delay`` Pushes out the loop delay. - ``slidecontroller_update_slide_advance`` - Updates the slide_advance variable from the saved settings. + ``slidecontroller_update_slide_limits`` + Updates the slide_limits variable from the saved settings. ``slidecontroller_live_stop_loop`` Stop the loop on the main display. diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 1a71779de..e878abe77 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -47,15 +47,6 @@ class ServiceItemType(object): Image = 2 Command = 3 -class SlideAdvance(object): - """ - Provides an enumeration for the service item slide advance by up/down - arrow keys - """ - End = 1 - Wrap = 2 - Next = 3 - class ItemCapabilities(object): """ Provides an enumeration of a serviceitem's capabilities diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 0195ac631..d1fc5a419 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -30,7 +30,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, Receiver, translate from openlp.core.lib.ui import UiStrings -from openlp.core.lib.serviceitem import SlideAdvance +from openlp.core.lib import SlideLimits from openlp.core.ui import ScreenList log = logging.getLogger(__name__) @@ -178,7 +178,7 @@ class GeneralTab(SettingsTab): self.audioLayout.addWidget(self.startPausedCheckBox) self.rightLayout.addWidget(self.audioGroupBox) self.rightLayout.addStretch() - # Service Item Slide Advance + # Service Item Slide Limits self.slideGroupBox = QtGui.QGroupBox(self.rightColumn) self.slideGroupBox.setObjectName(u'slideGroupBox') self.slideLayout = QtGui.QFormLayout(self.slideGroupBox) @@ -290,9 +290,9 @@ class GeneralTab(SettingsTab): translate('OpenLP.GeneralTab', 'Background Audio')) self.startPausedCheckBox.setText( translate('OpenLP.GeneralTab', 'Start background audio paused')) - # Slide Advance + # Slide Limits self.slideGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Service Item Slide Advance')) + translate('OpenLP.GeneralTab', 'Service Item Slide Limits')) self.endSlideRadioButton.setText( translate('OpenLP.GeneralTab', '&End Slide')) self.endSlideLabel.setText( @@ -363,12 +363,12 @@ class GeneralTab(SettingsTab): self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) self.display_changed = False settings.beginGroup(self.settingsSection) - self.slide_advance = settings.value( - u'slide advance', QtCore.QVariant(SlideAdvance.End)).toInt()[0] + self.slide_limits = settings.value( + u'slide limits', QtCore.QVariant(SlideLimits.End)).toInt()[0] settings.endGroup() - if self.slide_advance == SlideAdvance.End: + if self.slide_limits == SlideLimits.End: self.endSlideRadioButton.setChecked(True) - elif self.slide_advance == SlideAdvance.Wrap: + elif self.slide_limits == SlideLimits.Wrap: self.wrapSlideRadioButton.setChecked(True) else: self.nextSlideRadioButton.setChecked(True) @@ -417,7 +417,7 @@ class GeneralTab(SettingsTab): QtCore.QVariant(self.overrideCheckBox.isChecked())) settings.setValue(u'audio start paused', QtCore.QVariant(self.startPausedCheckBox.isChecked())) - settings.setValue(u'slide advance', QtCore.QVariant(self.slide_advance)) + settings.setValue(u'slide limits', QtCore.QVariant(self.slide_limits)) settings.endGroup() # On save update the screens as well self.postSetUp(True) @@ -446,7 +446,7 @@ class GeneralTab(SettingsTab): if self.display_changed: Receiver.send_message(u'config_screen_changed') self.display_changed = False - Receiver.send_message(u'slidecontroller_update_slide_advance') + Receiver.send_message(u'slidecontroller_update_slide_limits') def onOverrideCheckBoxToggled(self, checked): """ @@ -468,10 +468,10 @@ class GeneralTab(SettingsTab): self.display_changed = True def onEndSlideButtonPressed(self): - self.slide_advance = SlideAdvance.End + self.slide_limits = SlideLimits.End def onWrapSlideButtonPressed(self): - self.slide_advance = SlideAdvance.Wrap + self.slide_limits = SlideLimits.Wrap def onNextSlideButtonPressed(self): - self.slide_advance = SlideAdvance.Next + self.slide_limits = SlideLimits.Next diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 0868aad94..6b8421e45 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -38,7 +38,7 @@ from openlp.core.lib import Renderer, build_icon, OpenLPDockWidget, \ PluginManager, Receiver, translate, ImageManager, PluginStatus from openlp.core.lib.ui import UiStrings, base_action, checkable_action, \ icon_action, shortcut_action -from openlp.core.lib.serviceitem import SlideAdvance +from openlp.core.lib import SlideLimits from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \ ThemeManager, SlideController, PluginForm, MediaDockManager, \ ShortcutListForm, FormattingTagForm @@ -1314,10 +1314,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): if QtCore.QSettings().value(self.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool(): QtCore.QSettings().setValue(self.generalSettingsSection + - u'/slide advance', QtCore.QVariant(SlideAdvance.Wrap)) + u'/slide limits', QtCore.QVariant(SlideLimits.Wrap)) else: QtCore.QSettings().setValue(self.generalSettingsSection + - u'/slide advance', QtCore.QVariant(SlideAdvance.End)) + u'/slide limits', QtCore.QVariant(SlideLimits.End)) QtCore.QSettings().remove(self.generalSettingsSection + u'/enable slide loop') settings = QtCore.QSettings() diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 94306e78b..695c5c241 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import OpenLPToolbar, Receiver, ItemCapabilities, \ translate, build_icon, ServiceItem, build_html, PluginManager, ServiceItem from openlp.core.lib.ui import UiStrings, shortcut_action -from openlp.core.lib.serviceitem import SlideAdvance +from openlp.core.lib import SlideLimits, ServiceItemAction from openlp.core.ui import HideMode, MainDisplay, Display, ScreenList from openlp.core.utils.actions import ActionList, CategoryOrder @@ -48,15 +48,6 @@ class SlideList(QtGui.QTableWidget): """ def __init__(self, parent=None, name=None): QtGui.QTableWidget.__init__(self, parent.controller) - -class ServiceItemAdvance(object): - """ - Provides an enumeration for the service item advance by left/right - arrow keys - """ - Previous = 1 - PreviousLastSlide = 2 - Next = 3 class Controller(QtGui.QWidget): """ @@ -112,8 +103,8 @@ class SlideController(Controller): self.songEdit = False self.selectedRow = 0 self.serviceItem = None - self.slide_advance = None - self.updateSlideAdvance() + self.slide_limits = None + self.updateSlideLimits() self.panel = QtGui.QWidget(parent.controlSplitter) self.slideList = {} # Layout for holding panel @@ -463,8 +454,8 @@ class SlideController(Controller): QtCore.SIGNAL(u'slidecontroller_%s_unblank' % self.typePrefix), self.onSlideUnblank) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_update_slide_advance'), - self.updateSlideAdvance) + QtCore.SIGNAL(u'slidecontroller_update_slide_limits'), + self.updateSlideLimits) def slideShortcutActivated(self): """ @@ -607,14 +598,14 @@ class SlideController(Controller): """ Live event to select the previous service item from the service manager. """ - self.keypress_queue.append(ServiceItemAdvance.Previous) + self.keypress_queue.append(ServiceItemAction.Previous) self._process_queue() def serviceNext(self): """ Live event to select the next service item from the service manager. """ - self.keypress_queue.append(ServiceItemAdvance.Next) + self.keypress_queue.append(ServiceItemAction.Next) self._process_queue() def _process_queue(self): @@ -626,9 +617,9 @@ class SlideController(Controller): while len(self.keypress_queue) and not self.keypress_loop: self.keypress_loop = True keypressCommand = self.keypress_queue.popleft() - if keypressCommand == ServiceItemAdvance.Previous: + if keypressCommand == ServiceItemAction.Previous: Receiver.send_message('servicemanager_previous_item', None) - elif keypressCommand == ServiceItemAdvance.PreviousLastSlide: + elif keypressCommand == ServiceItemAction.PreviousLastSlide: # Go to the last slide of the previous item Receiver.send_message('servicemanager_previous_item', 'last slide') else: @@ -719,13 +710,13 @@ class SlideController(Controller): """ self.delaySpinBox.setValue(int(value)) - def updateSlideAdvance(self): + def updateSlideLimits(self): """ - Updates the Slide Advance variable from the settings. + Updates the Slide Limits variable from the settings. """ - self.slide_advance = QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide advance', - QtCore.QVariant(SlideAdvance.End)).toInt()[0] + self.slide_limits = QtCore.QSettings().value( + self.parent().generalSettingsSection + u'/slide limits', + QtCore.QVariant(SlideLimits.End)).toInt()[0] def enableToolBar(self, item): """ @@ -1204,9 +1195,9 @@ class SlideController(Controller): row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): if wrap is None: - if self.slide_advance == SlideAdvance.Wrap: + if self.slide_limits == SlideLimits.Wrap: row = 0 - elif self.slide_advance == SlideAdvance.Next: + elif self.slide_limits == SlideLimits.Next: self.serviceNext() return else: @@ -1231,10 +1222,10 @@ class SlideController(Controller): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - if self.slide_advance == SlideAdvance.Wrap: + if self.slide_limits == SlideLimits.Wrap: row = self.previewListWidget.rowCount() - 1 - elif self.slide_advance == SlideAdvance.Next: - self.keypress_queue.append(ServiceItemAdvance.PreviousLastSlide) + elif self.slide_limits == SlideLimits.Next: + self.keypress_queue.append(ServiceItemAction.PreviousLastSlide) self._process_queue() return else: From 35f649782b76599975cd18a403f8d2fe63477648 Mon Sep 17 00:00:00 2001 From: M2j Date: Sat, 28 Jan 2012 16:02:08 +0100 Subject: [PATCH 079/105] Bug #910860: Strip spaces from author name on CCLI import --- openlp/plugins/songs/lib/cclifileimport.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index f15ef1819..3bf304889 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -216,9 +216,9 @@ class CCLIFileImport(SongImport): for author in author_list: separated = author.split(u',') if len(separated) > 1: - self.addAuthor(u' '.join(reversed(separated))) - else: - self.addAuthor(author) + author = u' '.join( + [name.strip() for name in reversed(separated)]) + self.addAuthor(author.strip()) self.topics = [topic.strip() for topic in song_topics.split(u'/t')] return self.finish() From c0197d1af6a80b3fe8b9cbeb6bc574ab28c785ab Mon Sep 17 00:00:00 2001 From: M2j Date: Sat, 28 Jan 2012 17:08:01 +0100 Subject: [PATCH 080/105] Bug #910860: Strip spaces from author name on CCLI import --- openlp/plugins/songs/lib/cclifileimport.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index f15ef1819..448e4bc37 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -216,9 +216,8 @@ class CCLIFileImport(SongImport): for author in author_list: separated = author.split(u',') if len(separated) > 1: - self.addAuthor(u' '.join(reversed(separated))) - else: - self.addAuthor(author) + author = u' '.join(map(unicode.strip, reversed(separated))) + self.addAuthor(author.strip()) self.topics = [topic.strip() for topic in song_topics.split(u'/t')] return self.finish() From 1290348ee53075104272e2fa6a9b7fd0bdaac275 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 29 Jan 2012 14:38:45 +0000 Subject: [PATCH 081/105] Changed QR URI to the one suggested by Meinert --- resources/images/android_app_qr.png | Bin 558 -> 2440 bytes resources/images/openlp-2.qrc | 22 ---------------------- 2 files changed, 22 deletions(-) diff --git a/resources/images/android_app_qr.png b/resources/images/android_app_qr.png index 66e40df132c0700f05458e7e5ece6f92f0e25b88..859800bbee74ab8c788307e275ae8595a16abb48 100644 GIT binary patch literal 2440 zcmV;333v91P)Px#32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RX0UZt%4RxVsr2qg48c9S!RA}Da znrm!aM-|6^bMLix?TueaoCi@;CqZq~=7p+$i9%2*EsY={Qiv2jP>Fm21ZpTj=_dk+ zR!xPVsZx|msF8UnQ57W0!?a3iAx;EEriw$-7UVV$0&UjL1KV9ccK6=HhuJ$j_wK!G zCrurR`QV*1GxyBQnKS47&lxM>!!HgqGfCQBBuYrUFVZCS*eHSdg``e*IIQjd5x2ep zDhC8FJOF^o6$I`&Ul~#mX!DcUdAO?a?iC5wO)Zm_}>W+^!9A^a6@tRo2Fx-xPt1&0}(y=et1AaLPQ>ic3WJ>44eK0 zajDu`wW(V5Y~|MK*jw-x(W_21h~4dA|6KwwXn)eW?k4&8%1-)XYWNpZ+nl9%h_S71!_UK}g`Yrv zS!&$U;J@0;ovRZ+tFVn2$Rzix&ETN%CwlM(*kFh*cvK{>2{)0=wET(OAaS{FDv)q} zzf1s7_Hcc`arHU671$7z@smwwwN(j{a<@c@g4~$3C*4%}5yg^o)(uK!gOh%L^(D{M zHdTI9t$9c>8_rZxccyJOE1blJmtwRl{^_4Yx@~%|$YtYhMdSt3GbFMX=4l=!ku6wN1fZi4-k8f%&#~x_#g?{qAb9>hCWmq70x;WUtbpniH3*$BGKts0 zWPYS=PBT}0vMuD!+LBHx5d^7M&|`Y)I=gGT@i)*w{_3wR_y+7~imqsnl&e~?yD9q! zboT##}8oTJcP;Lg6Sj!!`G%B~cbaZhG@V46m%x_{m50^$;J993w_ftjL?TgsR$g(FWYW5s@RYk$FRGvBi0Z-bF=R84xI?!y?=Kl~P9% zgWj6RMC@OX{9S9zcV%kLP-{KYT1X1#bWGA6TYtMTd-vMfH6XIvmfbd3Z|mU>&Cp2} zPh)KT?Y6m!xV@&>_hp-yF#d!B6k{Tbi+!{jt|gmFa}1tM`(g4T4BAe{RIAG1Nf8Mo zFn`4k=bnJh)N8ySvRb=R{H7mSZ|HHa6>H-f6_Dy78%&)PO-dqM3hLphz!*sN%}2oF0`$L^9v5oG)cUDgx7jvvk4VK)2O^(_2a^G}zVYeevT$JnBow1Z z`u1M48av5(2W1nEtD;>tz5cCR>a@=@vO-ODulBmfG}sqg|c#@ZD-t za}1^)jjf`bdZM|6T0#lT5N8^RLyW(Pi?~>ClA_78dhxEMp;+9DW9_q{Z%#PlfZL+Q z^Xigtx384}F5d%J{+nAE@bpGr-wKyT0^pTmD3_W^&KgHBU*|fF4u90dD<)FB#Ym*1 z0|lK+co>Vl`n$w0%-dxe5WZ3Y+cHk!?1hOM8!0Jvq7E|^(`3K z!}%0l(~#(--MYRp@)QoqD6m5n2 zdvf%vlFf9reGE`IaStuwsH=6-EeY;7Ih~fNmthl_RWJKi(37Y(FR5hAqIZT(m8|xQ zj;Ev~z(A?g;d$D1sf_17Z?iv9DwRs5Qbk#Oe~JvDA2$+yMXOxTQV`#dx*f;6UIQuV z=`%?_TQO?B{Zp}&?LGjy8ymNeux%4VJK(pYB~W`#GVhS6&o>kgm)yt3c+-4yFkr1A ze&#vPi~wZ1r+Na^2J#6F05ly>*~Ss$aYL-UDG3~)aKbzY7^HL5%fzF{<-;roR_DfE zpYT?E1fbLhr$(ab{a)9-t;ImE1b=eOelaB~t|)>$Cn6%3lJi}sjNx$7ky$!wGZ#Oo zwQ@BuN=;9N%W?IL*@Bekrc7Lg)5}CA1WIOuAMXuoi;^#i9(jl9nQ|uy?|ZYZMYD3( z35gmK!|M75a=He^Xxnd;QcigNerRM=E#{lA>yM^CNs8MkM&ClBr4-jLsk?DW@g){( ze;POb_I~r|9~-mx0E=EkEpB&!AFt#1*TT(g_)qvW_c4F`grj!7#F}4JCi6BA)J~FJ zowksRrx*n;Tma}=#lKC@KMeHlhZP>}(0o^IW^5)6WN*sbU95aXIQ=h913w)H)J7`` z3Vxz^+fe%&)O~ANKg}n=eC-opwZ#9W1Xybz(@6ubK4ftzBd%O(%8lH(g2tSNg1G{a zwMI`y?oQ6PLU(c{D=RnE6JUghG}S)!Rez(y)c?(Ys{Ic&ohj-Kz9vrq0000C0j^0zK~y-) zjnuJf!!Qs4&=VT8gnIR0&@aTBwZy+t=nojW8Z7W?@DBv?D}UA!Z_Y0WJY-GrB0=y~ zayleVt5n+?j`Q954&dL9quFjE&AC97E5(rIlFE^hj=a#Er7l2o)qg!pbS@FbA!>lexXdUZuw7Kkgr9M#_Cfr(BMm+H|IKelKra1hsx|72skPi?AUH|N zM2}(l%P_TCGsFCLgfwSwRV{r#Z#U#o=_G*~!|;`alF=UB%ui2pm*HAzw+YLp2IMba jQE-4v+#0IA)4$(0t^`5!Hdlh=00000NkvXXu0mjf9liC$ diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index dc444d445..be72d2474 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -1,26 +1,4 @@ - - song_search_all.png - song_search_author.png - song_search_lyrics.png - song_search_title.png - topic_edit.png - author_add.png - author_delete.png - book_add.png - song_maintenance.png - topic_add.png - book_delete.png - book_edit.png - author_edit.png - topic_delete.png - book_maintenance.png - author_maintenance.png - topic_maintenance.png - song_author_edit.png - song_topic_edit.png - song_book_edit.png - bibles_search_text.png bibles_search_reference.png From 01d42e0f1148e5337a28750df7e1a597999c4304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sun, 29 Jan 2012 18:47:15 +0200 Subject: [PATCH 082/105] Use note text as tooltip. --- openlp/core/ui/advancedtab.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 35fdebd0a..01ea3eeff 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -27,12 +27,13 @@ """ The :mod:`advancedtab` provides an advanced settings facility. """ +from datetime import datetime, timedelta + from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, translate, build_icon, Receiver from openlp.core.lib.ui import UiStrings from openlp.core.utils import get_images_filter -from datetime import datetime, timedelta class AdvancedTab(SettingsTab): """ @@ -150,10 +151,6 @@ class AdvancedTab(SettingsTab): self.defaultServiceExample.setObjectName(u'defaultServiceExample') self.defaultServiceLayout.addRow(self.defaultServiceExampleLabel, self.defaultServiceExample) - self.defaultServiceNote = QtGui.QLabel(self.defaultServiceGroupBox) - self.defaultServiceNote.setWordWrap(True) - self.defaultServiceNote.setObjectName(u'defaultServiceNote') - self.defaultServiceLayout.addRow(self.defaultServiceNote) self.leftLayout.addWidget(self.defaultServiceGroupBox) self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) @@ -273,15 +270,14 @@ class AdvancedTab(SettingsTab): 'Time when usual service starts.')) self.defaultServiceLabel.setText( translate('OpenLP.AdvancedTab', 'Name:')) + self.defaultServiceName.setToolTip(translate('OpenLP.AdvancedTab', + 'Consult the OpenLP manual for usage.')) self.defaultServiceRevertButton.setToolTip(unicode( translate('OpenLP.AdvancedTab', 'Revert to the default service name "%s".')) % self.default_service_name) self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', 'Example:')) - self.defaultServiceNote.setText( - translate('OpenLP.AdvancedTab', 'Note: ' - 'Consult the OpenLP manual for usage.')) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', From 90332e60d3517d272bc2a51e4d2aff67f221967c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sun, 29 Jan 2012 23:14:27 +0200 Subject: [PATCH 083/105] Prevent several updates to service name example when launching OpenLP. --- openlp/core/ui/advancedtab.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 01ea3eeff..a3b418e8d 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -201,6 +201,7 @@ class AdvancedTab(SettingsTab): self.rightLayout.addWidget(self.x11GroupBox) self.rightLayout.addStretch() + self.updateDefaultServiceExample = False QtCore.QObject.connect(self.defaultServiceCheckBox, QtCore.SIGNAL(u'toggled(bool)'), self.defaultServiceCheckBoxToggled) QtCore.QObject.connect(self.defaultServiceDay, @@ -344,6 +345,7 @@ class AdvancedTab(SettingsTab): QtCore.QTime(self.service_hour, self.service_minute)) self.defaultServiceName.setText(self.service_name) self.defaultServiceCheckBox.setChecked(default_service_enabled) + self.updateDefaultServiceExample = True self.defaultServiceCheckBoxToggled(default_service_enabled) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) @@ -402,6 +404,8 @@ class AdvancedTab(SettingsTab): self.display_changed = False def defaultServiceCheckBoxToggled(self, default_service_enabled): + if not self.updateDefaultServiceExample: + return self.defaultServiceDay.setEnabled(default_service_enabled) time_enabled = default_service_enabled and self.service_day is not 7 self.defaultServiceTime.setEnabled(time_enabled) @@ -433,16 +437,22 @@ class AdvancedTab(SettingsTab): self.defaultServiceExample.setText(name_example) def onDefaultServiceDayChanged(self, index): + if not self.updateDefaultServiceExample: + return self.service_day = index self.defaultServiceTime.setEnabled(self.service_day is not 7) self.updateServiceNameExample() def onDefaultServiceTimeChanged(self, time): + if not self.updateDefaultServiceExample: + return self.service_hour = time.hour() self.service_minute = time.minute() self.updateServiceNameExample() def onDefaultServiceNameChanged(self, name): + if not self.updateDefaultServiceExample: + return self.service_name = name self.updateServiceNameExample() From 6a8b06695ce885cd4a5b5b8f0b56e26bb3422816 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 29 Jan 2012 21:22:20 +0000 Subject: [PATCH 084/105] Started again. Everything should be there now. --- resources/images/openlp-2.qrc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index be72d2474..dc444d445 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -1,4 +1,26 @@ + + song_search_all.png + song_search_author.png + song_search_lyrics.png + song_search_title.png + topic_edit.png + author_add.png + author_delete.png + book_add.png + song_maintenance.png + topic_add.png + book_delete.png + book_edit.png + author_edit.png + topic_delete.png + book_maintenance.png + author_maintenance.png + topic_maintenance.png + song_author_edit.png + song_topic_edit.png + song_book_edit.png + bibles_search_text.png bibles_search_reference.png From d26de263f34dc5a6689e19d3db8ea51fd3206a35 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Mon, 30 Jan 2012 06:07:06 +0800 Subject: [PATCH 085/105] Fixed missing u and tidied up blank lines between class definitions --- openlp/core/lib/__init__.py | 2 ++ openlp/core/lib/serviceitem.py | 1 + openlp/core/ui/slidecontroller.py | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index e5481fdb7..d0a75f180 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -43,6 +43,7 @@ class MediaType(object): Audio = 1 Video = 2 + class SlideLimits(object): """ Provides an enumeration for behaviour of OpenLP at the end limits of each @@ -52,6 +53,7 @@ class SlideLimits(object): Wrap = 2 Next = 3 + class ServiceItemAction(object): """ Provides an enumeration for the required action moving between service diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index e878abe77..f6ac2cdf9 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -47,6 +47,7 @@ class ServiceItemType(object): Image = 2 Command = 3 + class ItemCapabilities(object): """ Provides an enumeration of a serviceitem's capabilities diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 695c5c241..095302c8d 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -621,7 +621,7 @@ class SlideController(Controller): Receiver.send_message('servicemanager_previous_item', None) elif keypressCommand == ServiceItemAction.PreviousLastSlide: # Go to the last slide of the previous item - Receiver.send_message('servicemanager_previous_item', 'last slide') + Receiver.send_message('servicemanager_previous_item', u'last slide') else: Receiver.send_message('servicemanager_next_item') self.keypress_loop = False From 21d0e93505d2eb7de513ce41fe9c4f23c7fb6814 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Mon, 30 Jan 2012 06:13:51 +0800 Subject: [PATCH 086/105] Tidied up blank lines between class definitions (again) --- openlp/core/lib/__init__.py | 8 ++++---- openlp/core/lib/serviceitem.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index d0a75f180..4d8ba6bec 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -42,8 +42,8 @@ class MediaType(object): """ Audio = 1 Video = 2 - - + + class SlideLimits(object): """ Provides an enumeration for behaviour of OpenLP at the end limits of each @@ -52,8 +52,8 @@ class SlideLimits(object): End = 1 Wrap = 2 Next = 3 - - + + class ServiceItemAction(object): """ Provides an enumeration for the required action moving between service diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index f6ac2cdf9..9878e1f24 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -47,7 +47,7 @@ class ServiceItemType(object): Image = 2 Command = 3 - + class ItemCapabilities(object): """ Provides an enumeration of a serviceitem's capabilities From 6da181834c8e87d0836659822735a4f264e2e601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 30 Jan 2012 01:16:12 +0200 Subject: [PATCH 087/105] Meinert's suggestions taken into account about syntax and removed unnecessary variables. --- openlp/core/ui/advancedtab.py | 83 ++++++++++++++--------------------- 1 file changed, 34 insertions(+), 49 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index a3b418e8d..7db16680f 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -209,10 +209,10 @@ class AdvancedTab(SettingsTab): self.onDefaultServiceDayChanged) QtCore.QObject.connect(self.defaultServiceTime, QtCore.SIGNAL(u'timeChanged(QTime)'), - self.onDefaultServiceTimeChanged) + self.updateServiceNameExample) QtCore.QObject.connect(self.defaultServiceName, QtCore.SIGNAL(u'textChanged(QString)'), - self.onDefaultServiceNameChanged) + self.updateServiceNameExample) QtCore.QObject.connect(self.defaultServiceRevertButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultServiceRevertButtonPressed) @@ -330,22 +330,20 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) + self.defaultServiceDay.setCurrentIndex( + settings.value(u'default service day', + QtCore.QVariant(self.default_service_day)).toInt()[0]) + self.defaultServiceTime.setTime(QtCore.QTime( + settings.value(u'default service hour', + self.default_service_hour).toInt()[0], + settings.value(u'default service minute', + self.default_service_minute).toInt()[0])) + self.updateDefaultServiceExample = True + self.defaultServiceName.setText(settings.value(u'default service name', + self.default_service_name).toString()) default_service_enabled = settings.value(u'default service enabled', QtCore.QVariant(True)).toBool() - self.service_day, ok = settings.value(u'default service day', - QtCore.QVariant(self.default_service_day)).toInt() - self.service_hour, ok = settings.value(u'default service hour', - self.default_service_hour).toInt() - self.service_minute, ok = settings.value(u'default service minute', - self.default_service_minute).toInt() - self.service_name = unicode(settings.value(u'default service name', - self.default_service_name).toString()) - self.defaultServiceDay.setCurrentIndex(self.service_day) - self.defaultServiceTime.setTime( - QtCore.QTime(self.service_hour, self.service_minute)) - self.defaultServiceName.setText(self.service_name) self.defaultServiceCheckBox.setChecked(default_service_enabled) - self.updateDefaultServiceExample = True self.defaultServiceCheckBoxToggled(default_service_enabled) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) @@ -362,18 +360,19 @@ class AdvancedTab(SettingsTab): """ Save settings to disk. """ - preset_is_valid, name_example = self.generate_service_name_example() + preset_is_valid = self.generate_service_name_example()[0] + service_name = unicode(self.defaultServiceName.text()) if not preset_is_valid: - self.service_name = self.default_service_name - self.defaultServiceName.setText(self.service_name) + service_name = self.default_service_name + self.defaultServiceName.setText(service_name) settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) settings.setValue(u'default service enabled', self.defaultServiceCheckBox.isChecked()) - if self.service_name == self.default_service_name: + if service_name == self.default_service_name: settings.remove(u'default service name') else: - settings.setValue(u'default service name', self.service_name) + settings.setValue(u'default service name', service_name) settings.setValue(u'default service day', self.defaultServiceDay.currentIndex()) settings.setValue(u'default service hour', @@ -404,57 +403,43 @@ class AdvancedTab(SettingsTab): self.display_changed = False def defaultServiceCheckBoxToggled(self, default_service_enabled): - if not self.updateDefaultServiceExample: - return self.defaultServiceDay.setEnabled(default_service_enabled) - time_enabled = default_service_enabled and self.service_day is not 7 + time_enabled = default_service_enabled and \ + self.defaultServiceDay.currentIndex() is not 7 self.defaultServiceTime.setEnabled(time_enabled) self.defaultServiceName.setEnabled(default_service_enabled) self.defaultServiceRevertButton.setEnabled(default_service_enabled) def generate_service_name_example(self): preset_is_valid = True - if self.service_day == 7: + if self.defaultServiceDay.currentIndex() == 7: time = datetime.now() else: now = datetime.now() - day_delta = self.service_day - now.weekday() + day_delta = self.defaultServiceDay.currentIndex() - now.weekday() if day_delta < 0: day_delta += 7 time = now + timedelta(days=day_delta) - time = time.replace(hour = self.service_hour, - minute = self.service_minute) + time = time.replace(hour = self.defaultServiceTime.time().hour(), + minute = self.defaultServiceTime.time().minute()) try: - service_name_example = time.strftime(unicode(self.service_name)) + service_name_example = time.strftime(unicode( + self.defaultServiceName.text())) except ValueError: preset_is_valid = False service_name_example = translate('OpenLP.AdvancedTab', 'Syntax error.') return preset_is_valid, service_name_example - def updateServiceNameExample(self): - preset_is_valid, name_example = self.generate_service_name_example() + def updateServiceNameExample(self, returned_value): + if not self.updateDefaultServiceExample: + return + name_example = self.generate_service_name_example()[1] self.defaultServiceExample.setText(name_example) - def onDefaultServiceDayChanged(self, index): - if not self.updateDefaultServiceExample: - return - self.service_day = index - self.defaultServiceTime.setEnabled(self.service_day is not 7) - self.updateServiceNameExample() - - def onDefaultServiceTimeChanged(self, time): - if not self.updateDefaultServiceExample: - return - self.service_hour = time.hour() - self.service_minute = time.minute() - self.updateServiceNameExample() - - def onDefaultServiceNameChanged(self, name): - if not self.updateDefaultServiceExample: - return - self.service_name = name - self.updateServiceNameExample() + def onDefaultServiceDayChanged(self, service_day): + self.defaultServiceTime.setEnabled(service_day is not 7) + self.updateServiceNameExample(None) def onDefaultServiceRevertButtonPressed(self): self.defaultServiceName.setText(self.default_service_name) From addc049c5ba4ebdb47316698f8deff7ba0d0b79f Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Mon, 30 Jan 2012 17:44:37 +0000 Subject: [PATCH 088/105] Set word wrap on qrDescriptionLabel so that it doesn't cause the groupbox to resize. --- openlp/plugins/remotes/lib/remotetab.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 35fbe64cf..70005226c 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -94,6 +94,7 @@ class RemoteTab(SettingsTab): self.qrDescriptionLabel = QtGui.QLabel(self.androidAppGroupBox) self.qrDescriptionLabel.setObjectName(u'qrDescriptionLabel') self.qrDescriptionLabel.setOpenExternalLinks(True) + self.qrDescriptionLabel.setWordWrap(True) self.qrLayout.addWidget(self.qrDescriptionLabel) self.leftLayout.addStretch() self.rightLayout.addStretch() From 7fca26dd0ed5d6e74a0757e4559f1a32662f85cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Wed, 1 Feb 2012 01:47:33 +0200 Subject: [PATCH 089/105] Remove a leftover line which causes trouble on OSX. --- openlp/core/ui/mainwindow.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 3490dfada..88368b99d 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -1059,7 +1059,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): export_settings.endGroup() # Write all the sections and keys. for section_key in keys: - section, key = section_key.split(u'/') key_value = settings.value(section_key) export_settings.setValue(section_key, key_value) export_settings.sync() From 6f219e175fc4f50c650099d55448e421fa8b3d0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Thu, 2 Feb 2012 14:42:52 +0200 Subject: [PATCH 090/105] Name changes to camelCase where appropriate. --- openlp/core/ui/advancedtab.py | 236 +++++++++++++++---------------- openlp/core/ui/servicemanager.py | 12 +- 2 files changed, 123 insertions(+), 125 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 7db16680f..04a3ac981 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -47,11 +47,11 @@ class AdvancedTab(SettingsTab): self.display_changed = False advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') # 7 stands for now, 0 to 6 is Monday to Sunday. - self.default_service_day = 7 + self.defaultServiceDay = 7 # 11 o'clock is the most popular time for morning service. - self.default_service_hour = 11 - self.default_service_minute = 0 - self.default_service_name = unicode(translate('OpenLP.AdvancedTab', + self.defaultServiceHour = 11 + self.defaultServiceMinute = 0 + self.defaultServiceName = unicode(translate('OpenLP.AdvancedTab', 'Service %Y-%m-%d %H-%M', 'This is the default default service name template, which can be ' 'found under Advanced in Settings, Configure OpenLP. Please do not ' @@ -100,58 +100,58 @@ class AdvancedTab(SettingsTab): u'enableAutoCloseCheckBox') self.uiLayout.addRow(self.enableAutoCloseCheckBox) self.leftLayout.addWidget(self.uiGroupBox) - self.defaultServiceGroupBox = QtGui.QGroupBox(self.leftColumn) - self.defaultServiceGroupBox.setObjectName(u'defaultServiceGroupBox') - self.defaultServiceLayout = QtGui.QFormLayout( - self.defaultServiceGroupBox) - self.defaultServiceCheckBox = QtGui.QCheckBox( - self.defaultServiceGroupBox) - self.defaultServiceCheckBox.setObjectName(u'defaultServiceCheckBox') - self.defaultServiceLayout.setObjectName(u'defaultServiceLayout') - self.defaultServiceLayout.addRow(self.defaultServiceCheckBox) - self.defaultServiceTimeLabel = QtGui.QLabel(self.defaultServiceGroupBox) - self.defaultServiceTimeLabel.setObjectName(u'defaultServiceTimeLabel') - self.defaultServiceDay = QtGui.QComboBox( - self.defaultServiceGroupBox) - self.defaultServiceDay.addItems( + self.serviceNameGroupBox = QtGui.QGroupBox(self.leftColumn) + self.serviceNameGroupBox.setObjectName(u'serviceNameGroupBox') + self.serviceNameLayout = QtGui.QFormLayout( + self.serviceNameGroupBox) + self.serviceNameCheckBox = QtGui.QCheckBox( + self.serviceNameGroupBox) + self.serviceNameCheckBox.setObjectName(u'serviceNameCheckBox') + self.serviceNameLayout.setObjectName(u'serviceNameLayout') + self.serviceNameLayout.addRow(self.serviceNameCheckBox) + self.serviceNameTimeLabel = QtGui.QLabel(self.serviceNameGroupBox) + self.serviceNameTimeLabel.setObjectName(u'serviceNameTimeLabel') + self.serviceNameDay = QtGui.QComboBox( + self.serviceNameGroupBox) + self.serviceNameDay.addItems( [u'', u'', u'', u'', u'', u'', u'', u'']) - self.defaultServiceDay.setObjectName( - u'defaultServiceDay') - self.defaultServiceTime = QtGui.QTimeEdit(self.defaultServiceGroupBox) - self.defaultServiceTime.setObjectName(u'defaultServiceTime') - self.defaultServiceTimeHBox = QtGui.QHBoxLayout() - self.defaultServiceTimeHBox.setObjectName(u'defaultServiceTimeHBox') - self.defaultServiceTimeHBox.addWidget(self.defaultServiceDay) - self.defaultServiceTimeHBox.addWidget(self.defaultServiceTime) - self.defaultServiceLayout.addRow(self.defaultServiceTimeLabel, - self.defaultServiceTimeHBox) - self.defaultServiceLabel = QtGui.QLabel(self.defaultServiceGroupBox) - self.defaultServiceLabel.setObjectName(u'defaultServiceLabel') - self.defaultServiceName = QtGui.QLineEdit(self.defaultServiceGroupBox) - self.defaultServiceName.setObjectName(u'defaultServiceName') - self.defaultServiceName.setValidator(QtGui.QRegExpValidator( + self.serviceNameDay.setObjectName( + u'serviceNameDay') + self.serviceNameTime = QtGui.QTimeEdit(self.serviceNameGroupBox) + self.serviceNameTime.setObjectName(u'serviceNameTime') + self.serviceNameTimeHBox = QtGui.QHBoxLayout() + self.serviceNameTimeHBox.setObjectName(u'serviceNameTimeHBox') + self.serviceNameTimeHBox.addWidget(self.serviceNameDay) + self.serviceNameTimeHBox.addWidget(self.serviceNameTime) + self.serviceNameLayout.addRow(self.serviceNameTimeLabel, + self.serviceNameTimeHBox) + self.serviceNameLabel = QtGui.QLabel(self.serviceNameGroupBox) + self.serviceNameLabel.setObjectName(u'serviceNameLabel') + self.serviceNameEdit = QtGui.QLineEdit(self.serviceNameGroupBox) + self.serviceNameEdit.setObjectName(u'serviceNameEdit') + self.serviceNameEdit.setValidator(QtGui.QRegExpValidator( QtCore.QRegExp(r'[^/\\?*|<>\[\]":+]+'), self)) - self.defaultServiceRevertButton = QtGui.QToolButton( - self.defaultServiceGroupBox) - self.defaultServiceRevertButton.setObjectName( - u'defaultServiceRevertButton') - self.defaultServiceRevertButton.setIcon( + self.serviceNameRevertButton = QtGui.QToolButton( + self.serviceNameGroupBox) + self.serviceNameRevertButton.setObjectName( + u'serviceNameRevertButton') + self.serviceNameRevertButton.setIcon( build_icon(u':/general/general_revert.png')) - self.defaultServiceHBox = QtGui.QHBoxLayout() - self.defaultServiceHBox.setObjectName(u'defaultServiceHBox') - self.defaultServiceHBox.addWidget(self.defaultServiceName) - self.defaultServiceHBox.addWidget(self.defaultServiceRevertButton) - self.defaultServiceLayout.addRow(self.defaultServiceLabel, - self.defaultServiceHBox) - self.defaultServiceExampleLabel = QtGui.QLabel( - self.defaultServiceGroupBox) - self.defaultServiceExampleLabel.setObjectName( - u'defaultServiceExampleLabel') - self.defaultServiceExample = QtGui.QLabel(self.defaultServiceGroupBox) - self.defaultServiceExample.setObjectName(u'defaultServiceExample') - self.defaultServiceLayout.addRow(self.defaultServiceExampleLabel, - self.defaultServiceExample) - self.leftLayout.addWidget(self.defaultServiceGroupBox) + self.serviceNameHBox = QtGui.QHBoxLayout() + self.serviceNameHBox.setObjectName(u'serviceNameHBox') + self.serviceNameHBox.addWidget(self.serviceNameEdit) + self.serviceNameHBox.addWidget(self.serviceNameRevertButton) + self.serviceNameLayout.addRow(self.serviceNameLabel, + self.serviceNameHBox) + self.serviceNameExampleLabel = QtGui.QLabel( + self.serviceNameGroupBox) + self.serviceNameExampleLabel.setObjectName( + u'serviceNameExampleLabel') + self.serviceNameExample = QtGui.QLabel(self.serviceNameGroupBox) + self.serviceNameExample.setObjectName(u'serviceNameExample') + self.serviceNameLayout.addRow(self.serviceNameExampleLabel, + self.serviceNameExample) + self.leftLayout.addWidget(self.serviceNameGroupBox) self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) self.defaultImageGroupBox.setObjectName(u'defaultImageGroupBox') @@ -201,21 +201,21 @@ class AdvancedTab(SettingsTab): self.rightLayout.addWidget(self.x11GroupBox) self.rightLayout.addStretch() - self.updateDefaultServiceExample = False - QtCore.QObject.connect(self.defaultServiceCheckBox, - QtCore.SIGNAL(u'toggled(bool)'), self.defaultServiceCheckBoxToggled) - QtCore.QObject.connect(self.defaultServiceDay, + self.updateserviceNameExample = False + QtCore.QObject.connect(self.serviceNameCheckBox, + QtCore.SIGNAL(u'toggled(bool)'), self.serviceNameCheckBoxToggled) + QtCore.QObject.connect(self.serviceNameDay, QtCore.SIGNAL(u'currentIndexChanged(int)'), - self.onDefaultServiceDayChanged) - QtCore.QObject.connect(self.defaultServiceTime, + self.onserviceNameDayChanged) + QtCore.QObject.connect(self.serviceNameTime, QtCore.SIGNAL(u'timeChanged(QTime)'), self.updateServiceNameExample) - QtCore.QObject.connect(self.defaultServiceName, + QtCore.QObject.connect(self.serviceNameEdit, QtCore.SIGNAL(u'textChanged(QString)'), self.updateServiceNameExample) - QtCore.QObject.connect(self.defaultServiceRevertButton, + QtCore.QObject.connect(self.serviceNameRevertButton, QtCore.SIGNAL(u'pressed()'), - self.onDefaultServiceRevertButtonPressed) + self.onserviceNameRevertButtonPressed) QtCore.QObject.connect(self.defaultColorButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultColorButtonPressed) QtCore.QObject.connect(self.defaultBrowseButton, @@ -245,39 +245,39 @@ class AdvancedTab(SettingsTab): 'Expand new service items on creation')) self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab', 'Enable application exit confirmation')) - self.defaultServiceGroupBox.setTitle( + self.serviceNameGroupBox.setTitle( translate('OpenLP.AdvancedTab', 'Default Service Name')) - self.defaultServiceCheckBox.setText( + self.serviceNameCheckBox.setText( translate('OpenLP.AdvancedTab', 'Enable default service name')) - self.defaultServiceTimeLabel.setText( + self.serviceNameTimeLabel.setText( translate('OpenLP.AdvancedTab', 'Date and Time:')) - self.defaultServiceDay.setItemText(0, + self.serviceNameDay.setItemText(0, translate('OpenLP.AdvancedTab', 'Monday')) - self.defaultServiceDay.setItemText(1, + self.serviceNameDay.setItemText(1, translate('OpenLP.AdvancedTab', 'Tuesday')) - self.defaultServiceDay.setItemText(2, + self.serviceNameDay.setItemText(2, translate('OpenLP.AdvancedTab', 'Wednesday')) - self.defaultServiceDay.setItemText(3, + self.serviceNameDay.setItemText(3, translate('OpenLP.AdvancedTab', 'Thurdsday')) - self.defaultServiceDay.setItemText(4, + self.serviceNameDay.setItemText(4, translate('OpenLP.AdvancedTab', 'Friday')) - self.defaultServiceDay.setItemText(5, + self.serviceNameDay.setItemText(5, translate('OpenLP.AdvancedTab', 'Saturday')) - self.defaultServiceDay.setItemText(6, + self.serviceNameDay.setItemText(6, translate('OpenLP.AdvancedTab', 'Sunday')) - self.defaultServiceDay.setItemText(7, + self.serviceNameDay.setItemText(7, translate('OpenLP.AdvancedTab', 'Now')) - self.defaultServiceTime.setToolTip(translate('OpenLP.AdvancedTab', + self.serviceNameTime.setToolTip(translate('OpenLP.AdvancedTab', 'Time when usual service starts.')) - self.defaultServiceLabel.setText( + self.serviceNameLabel.setText( translate('OpenLP.AdvancedTab', 'Name:')) - self.defaultServiceName.setToolTip(translate('OpenLP.AdvancedTab', + self.serviceNameEdit.setToolTip(translate('OpenLP.AdvancedTab', 'Consult the OpenLP manual for usage.')) - self.defaultServiceRevertButton.setToolTip(unicode( + self.serviceNameRevertButton.setToolTip(unicode( translate('OpenLP.AdvancedTab', 'Revert to the default service name "%s".')) % - self.default_service_name) - self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', + self.defaultServiceName) + self.serviceNameExampleLabel.setText(translate('OpenLP.AdvancedTab', 'Example:')) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) @@ -330,21 +330,21 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) - self.defaultServiceDay.setCurrentIndex( + self.serviceNameDay.setCurrentIndex( settings.value(u'default service day', - QtCore.QVariant(self.default_service_day)).toInt()[0]) - self.defaultServiceTime.setTime(QtCore.QTime( + QtCore.QVariant(self.defaultServiceDay)).toInt()[0]) + self.serviceNameTime.setTime(QtCore.QTime( settings.value(u'default service hour', - self.default_service_hour).toInt()[0], + self.defaultServiceHour).toInt()[0], settings.value(u'default service minute', - self.default_service_minute).toInt()[0])) - self.updateDefaultServiceExample = True - self.defaultServiceName.setText(settings.value(u'default service name', - self.default_service_name).toString()) + self.defaultServiceMinute).toInt()[0])) + self.updateserviceNameExample = True + self.serviceNameEdit.setText(settings.value(u'default service name', + self.defaultServiceName).toString()) default_service_enabled = settings.value(u'default service enabled', QtCore.QVariant(True)).toBool() - self.defaultServiceCheckBox.setChecked(default_service_enabled) - self.defaultServiceCheckBoxToggled(default_service_enabled) + self.serviceNameCheckBox.setChecked(default_service_enabled) + self.serviceNameCheckBoxToggled(default_service_enabled) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) self.default_color = settings.value(u'default color', @@ -360,25 +360,23 @@ class AdvancedTab(SettingsTab): """ Save settings to disk. """ - preset_is_valid = self.generate_service_name_example()[0] - service_name = unicode(self.defaultServiceName.text()) - if not preset_is_valid: - service_name = self.default_service_name - self.defaultServiceName.setText(service_name) settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) settings.setValue(u'default service enabled', - self.defaultServiceCheckBox.isChecked()) - if service_name == self.default_service_name: + self.serviceNameCheckBox.isChecked()) + service_name = unicode(self.serviceNameEdit.text()) + preset_is_valid = self.generateServiceNameExample()[0] + if service_name == self.defaultServiceName or not preset_is_valid: settings.remove(u'default service name') + self.serviceNameEdit.setText(service_name) else: settings.setValue(u'default service name', service_name) settings.setValue(u'default service day', - self.defaultServiceDay.currentIndex()) + self.serviceNameDay.currentIndex()) settings.setValue(u'default service hour', - self.defaultServiceTime.time().hour()) + self.serviceNameTime.time().hour()) settings.setValue(u'default service minute', - self.defaultServiceTime.time().minute()) + self.serviceNameTime.time().minute()) settings.setValue(u'recent file count', QtCore.QVariant(self.recentSpinBox.value())) settings.setValue(u'save current plugin', @@ -402,29 +400,29 @@ class AdvancedTab(SettingsTab): Receiver.send_message(u'config_screen_changed') self.display_changed = False - def defaultServiceCheckBoxToggled(self, default_service_enabled): - self.defaultServiceDay.setEnabled(default_service_enabled) + def serviceNameCheckBoxToggled(self, default_service_enabled): + self.serviceNameDay.setEnabled(default_service_enabled) time_enabled = default_service_enabled and \ - self.defaultServiceDay.currentIndex() is not 7 - self.defaultServiceTime.setEnabled(time_enabled) - self.defaultServiceName.setEnabled(default_service_enabled) - self.defaultServiceRevertButton.setEnabled(default_service_enabled) + self.serviceNameDay.currentIndex() is not 7 + self.serviceNameTime.setEnabled(time_enabled) + self.serviceNameEdit.setEnabled(default_service_enabled) + self.serviceNameRevertButton.setEnabled(default_service_enabled) - def generate_service_name_example(self): + def generateServiceNameExample(self): preset_is_valid = True - if self.defaultServiceDay.currentIndex() == 7: + if self.serviceNameDay.currentIndex() == 7: time = datetime.now() else: now = datetime.now() - day_delta = self.defaultServiceDay.currentIndex() - now.weekday() + day_delta = self.serviceNameDay.currentIndex() - now.weekday() if day_delta < 0: day_delta += 7 time = now + timedelta(days=day_delta) - time = time.replace(hour = self.defaultServiceTime.time().hour(), - minute = self.defaultServiceTime.time().minute()) + time = time.replace(hour = self.serviceNameTime.time().hour(), + minute = self.serviceNameTime.time().minute()) try: service_name_example = time.strftime(unicode( - self.defaultServiceName.text())) + self.serviceNameEdit.text())) except ValueError: preset_is_valid = False service_name_example = translate('OpenLP.AdvancedTab', @@ -432,18 +430,18 @@ class AdvancedTab(SettingsTab): return preset_is_valid, service_name_example def updateServiceNameExample(self, returned_value): - if not self.updateDefaultServiceExample: + if not self.updateserviceNameExample: return - name_example = self.generate_service_name_example()[1] - self.defaultServiceExample.setText(name_example) + name_example = self.generateServiceNameExample()[1] + self.serviceNameExample.setText(name_example) - def onDefaultServiceDayChanged(self, service_day): - self.defaultServiceTime.setEnabled(service_day is not 7) + def onserviceNameDayChanged(self, service_day): + self.serviceNameTime.setEnabled(service_day is not 7) self.updateServiceNameExample(None) - def onDefaultServiceRevertButtonPressed(self): - self.defaultServiceName.setText(self.default_service_name) - self.defaultServiceName.setFocus() + def onserviceNameRevertButtonPressed(self): + self.serviceNameEdit.setText(self.defaultServiceName) + self.serviceNameEdit.setFocus() def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 583e8c1d4..d2b48fb9a 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -616,15 +616,15 @@ class ServiceManager(QtGui.QWidget): default_service_enabled = QtCore.QSettings().value( u'advanced/default service enabled', QtCore.QVariant(True)).toBool() if default_service_enabled: - service_day, ok = QtCore.QSettings().value( - u'advanced/default service day', 7).toInt() + service_day = QtCore.QSettings().value( + u'advanced/default service day', 7).toInt()[0] if service_day == 7: time = datetime.now() else: - service_hour, ok = QtCore.QSettings().value( - u'advanced/default service hour', 11).toInt() - service_minute, ok = QtCore.QSettings().value( - u'advanced/default service minute', 0).toInt() + service_hour = QtCore.QSettings().value( + u'advanced/default service hour', 11).toInt()[0] + service_minute = QtCore.QSettings().value( + u'advanced/default service minute', 0).toInt()[0] now = datetime.now() day_delta = service_day - now.weekday() if day_delta < 0: From 51ee117a48c5637c87e7a87017b9c4bf687c43be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Sat, 4 Feb 2012 09:46:10 +0200 Subject: [PATCH 091/105] More function name changes. --- openlp/core/ui/advancedtab.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 04a3ac981..3650cf905 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -201,12 +201,12 @@ class AdvancedTab(SettingsTab): self.rightLayout.addWidget(self.x11GroupBox) self.rightLayout.addStretch() - self.updateserviceNameExample = False + self.shouldUpdateServiceNameExample = False QtCore.QObject.connect(self.serviceNameCheckBox, QtCore.SIGNAL(u'toggled(bool)'), self.serviceNameCheckBoxToggled) QtCore.QObject.connect(self.serviceNameDay, QtCore.SIGNAL(u'currentIndexChanged(int)'), - self.onserviceNameDayChanged) + self.onServiceNameDayChanged) QtCore.QObject.connect(self.serviceNameTime, QtCore.SIGNAL(u'timeChanged(QTime)'), self.updateServiceNameExample) @@ -215,7 +215,7 @@ class AdvancedTab(SettingsTab): self.updateServiceNameExample) QtCore.QObject.connect(self.serviceNameRevertButton, QtCore.SIGNAL(u'pressed()'), - self.onserviceNameRevertButtonPressed) + self.onServiceNameRevertButtonPressed) QtCore.QObject.connect(self.defaultColorButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultColorButtonPressed) QtCore.QObject.connect(self.defaultBrowseButton, @@ -338,7 +338,7 @@ class AdvancedTab(SettingsTab): self.defaultServiceHour).toInt()[0], settings.value(u'default service minute', self.defaultServiceMinute).toInt()[0])) - self.updateserviceNameExample = True + self.shouldUpdateServiceNameExample = True self.serviceNameEdit.setText(settings.value(u'default service name', self.defaultServiceName).toString()) default_service_enabled = settings.value(u'default service enabled', @@ -430,16 +430,16 @@ class AdvancedTab(SettingsTab): return preset_is_valid, service_name_example def updateServiceNameExample(self, returned_value): - if not self.updateserviceNameExample: + if not self.shouldUpdateServiceNameExample: return name_example = self.generateServiceNameExample()[1] self.serviceNameExample.setText(name_example) - def onserviceNameDayChanged(self, service_day): + def onServiceNameDayChanged(self, service_day): self.serviceNameTime.setEnabled(service_day is not 7) self.updateServiceNameExample(None) - def onserviceNameRevertButtonPressed(self): + def onServiceNameRevertButtonPressed(self): self.serviceNameEdit.setText(self.defaultServiceName) self.serviceNameEdit.setFocus() From bedb2d833d3cbe6a00d0136ab6b65e777573197a Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 4 Feb 2012 18:11:35 +0100 Subject: [PATCH 092/105] fix ZeroDivisionError --- openlp/core/ui/slidecontroller.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index dcdb3fdc7..e3329558f 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -82,8 +82,11 @@ class SlideController(Controller): """ Controller.__init__(self, parent, isLive) self.screens = ScreenList.get_instance() - self.ratio = float(self.screens.current[u'size'].width()) / \ - float(self.screens.current[u'size'].height()) + try: + self.ratio = float(self.screens.current[u'size'].width()) / \ + float(self.screens.current[u'size'].height()) + except ZeroDivisionError: + self.ratio = 1 self.imageManager = self.parent().imageManager self.mediaController = self.parent().mediaController self.loopList = [ @@ -630,8 +633,11 @@ class SlideController(Controller): if self.isLive: self.__addActionsToWidget(self.display) # The SlidePreview's ratio. - self.ratio = float(self.screens.current[u'size'].width()) / \ - float(self.screens.current[u'size'].height()) + try: + self.ratio = float(self.screens.current[u'size'].width()) / \ + float(self.screens.current[u'size'].height()) + except ZeroDivisionError: + self.ratio = 1 self.mediaController.setup_display(self.display) self.previewSizeChanged() self.previewDisplay.setup() From ec4b78ccb2b8699426755ba3f650311cb34c41fa Mon Sep 17 00:00:00 2001 From: M2j Date: Sun, 5 Feb 2012 20:20:01 +0100 Subject: [PATCH 093/105] replace placeholderText as it is not included in supported platform. --- openlp/plugins/bibles/lib/__init__.py | 14 +- openlp/plugins/bibles/lib/biblestab.py | 231 +++++++++++++++++-------- 2 files changed, 168 insertions(+), 77 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 07e50fa3f..6189f108f 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -76,14 +76,10 @@ def update_reference_separators(): settings = QtCore.QSettings() settings.beginGroup(u'bibles') custom_separators = [ - unicode(settings.value(u'verse separator', - QtCore.QVariant(u'')).toString()), - unicode(settings.value(u'range separator', - QtCore.QVariant(u'')).toString()), - unicode(settings.value(u'list separator', - QtCore.QVariant(u'')).toString()), - unicode(settings.value(u'end separator', - QtCore.QVariant(u'')).toString())] + unicode(settings.value(u'verse separator').toString()), + unicode(settings.value(u'range separator').toString()), + unicode(settings.value(u'list separator').toString()), + unicode(settings.value(u'end separator').toString())] settings.endGroup() for index, role in enumerate([u'v', u'r', u'l', u'e']): if custom_separators[index].strip(u'|') == u'': @@ -114,7 +110,7 @@ def update_reference_separators(): re.UNICODE) REFERENCE_MATCHES[u'range_separator'] = re.compile( REFERENCE_SEPARATORS[u'sep_l'], re.UNICODE) - # full reference match: ((,|(?=$)))+ + # full reference match: ((,(?!$)|(?=$)))+ REFERENCE_MATCHES[u'full'] = re.compile( u'^\s*(?!\s)(?P[\d]*[^\d]+)(?(?:%(range_regex)s(?:%(sep_l)s(?!\s*$)|(?=\s*$)))+)\s*$' \ diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 026810fb2..e8e0d9e2c 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -103,6 +103,7 @@ class BiblesTab(SettingsTab): 0) self.verseSeparatorLineEdit = QtGui.QLineEdit( self.scriptureReferenceGroupBox) +# self.verseSeparatorLineEdit.setPalette self.verseSeparatorLineEdit.setObjectName(u'verseSeparatorLineEdit') self.scriptureReferenceLayout.addWidget(self.verseSeparatorLineEdit, 0, 1) @@ -134,6 +135,8 @@ class BiblesTab(SettingsTab): self.endSeparatorLineEdit = QtGui.QLineEdit( self.scriptureReferenceGroupBox) self.endSeparatorLineEdit.setObjectName(u'endSeparatorLineEdit') + self.endSeparatorLineEdit.setValidator(QtGui.QRegExpValidator( + QtCore.QRegExp(r'[^0-9]*'), self.endSeparatorLineEdit)) self.scriptureReferenceLayout.addWidget(self.endSeparatorLineEdit, 3, 1) self.leftLayout.addWidget(self.scriptureReferenceGroupBox) @@ -159,7 +162,7 @@ class BiblesTab(SettingsTab): self.onBibleSecondCheckBox) QtCore.QObject.connect( self.verseSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), - self.onVerseSeparatorCheckBoxToggled) + self.onVerseSeparatorCheckBoxClicked) QtCore.QObject.connect( self.verseSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), self.onVerseSeparatorLineEditEdited) @@ -168,7 +171,7 @@ class BiblesTab(SettingsTab): self.onVerseSeparatorLineEditFinished) QtCore.QObject.connect( self.rangeSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), - self.onRangeSeparatorCheckBoxToggled) + self.onRangeSeparatorCheckBoxClicked) QtCore.QObject.connect( self.rangeSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), self.onRangeSeparatorLineEditEdited) @@ -177,7 +180,7 @@ class BiblesTab(SettingsTab): self.onRangeSeparatorLineEditFinished) QtCore.QObject.connect( self.listSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), - self.onListSeparatorCheckBoxToggled) + self.onListSeparatorCheckBoxClicked) QtCore.QObject.connect( self.listSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), self.onListSeparatorLineEditEdited) @@ -186,7 +189,7 @@ class BiblesTab(SettingsTab): self.onListSeparatorLineEditFinished) QtCore.QObject.connect( self.endSeparatorCheckBox, QtCore.SIGNAL(u'clicked(bool)'), - self.onEndSeparatorCheckBoxToggled) + self.onEndSeparatorCheckBoxClicked) QtCore.QObject.connect( self.endSeparatorLineEdit, QtCore.SIGNAL(u'textEdited(QString)'), self.onEndSeparatorLineEditEdited) @@ -276,65 +279,105 @@ class BiblesTab(SettingsTab): if check_state == QtCore.Qt.Checked: self.second_bibles = True - def onVerseSeparatorCheckBoxToggled(self, checked): - if not checked: - self.verseSeparatorLineEdit.clear() - elif self.verseSeparatorCheckBox.hasFocus(): + def onVerseSeparatorCheckBoxClicked(self, checked): + if checked: self.verseSeparatorLineEdit.setFocus() + else: + self.verseSeparatorLineEdit.setText( + get_reference_separator(u'sep_v_default')) + self.verseSeparatorLineEdit.setPalette( + self.getGreyTextPalette(not checked)) def onVerseSeparatorLineEditEdited(self, text): self.verseSeparatorCheckBox.setChecked(True) + self.verseSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) def onVerseSeparatorLineEditFinished(self): - if self.verseSeparatorLineEdit.text().remove(u'|').isEmpty() and \ - not self.verseSeparatorCheckBox.hasFocus(): - self.verseSeparatorCheckBox.setChecked(False) - self.verseSeparatorLineEdit.clear() + if self.verseSeparatorLineEdit.isModified(): + text = self.verseSeparatorLineEdit.text() + if text == get_reference_separator(u'sep_v_default') or \ + text.remove(u'|').isEmpty(): + self.verseSeparatorCheckBox.setChecked(False) + self.verseSeparatorLineEdit.setText( + get_reference_separator(u'sep_v_default')) + self.verseSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) - def onRangeSeparatorCheckBoxToggled(self, checked): - if not checked: - self.rangeSeparatorLineEdit.clear() - elif self.rangeSeparatorCheckBox.hasFocus(): + def onRangeSeparatorCheckBoxClicked(self, checked): + if checked: self.rangeSeparatorLineEdit.setFocus() + else: + self.rangeSeparatorLineEdit.setText( + get_reference_separator(u'sep_r_default')) + self.rangeSeparatorLineEdit.setPalette( + self.getGreyTextPalette(not checked)) def onRangeSeparatorLineEditEdited(self, text): self.rangeSeparatorCheckBox.setChecked(True) + self.rangeSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) def onRangeSeparatorLineEditFinished(self): - if self.rangeSeparatorLineEdit.text().remove(u'|').isEmpty() and \ - not self.rangeSeparatorCheckBox.hasFocus(): - self.rangeSeparatorCheckBox.setChecked(False) - self.rangeSeparatorLineEdit.clear() + if self.rangeSeparatorLineEdit.isModified(): + text = self.rangeSeparatorLineEdit.text() + if text == get_reference_separator(u'sep_r_default') or \ + text.remove(u'|').isEmpty(): + self.rangeSeparatorCheckBox.setChecked(False) + self.rangeSeparatorLineEdit.setText( + get_reference_separator(u'sep_r_default')) + self.rangeSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) - def onListSeparatorCheckBoxToggled(self, checked): - if not checked: - self.listSeparatorLineEdit.clear() - elif self.listSeparatorCheckBox.hasFocus(): + def onListSeparatorCheckBoxClicked(self, checked): + if checked: self.listSeparatorLineEdit.setFocus() + else: + self.listSeparatorLineEdit.setText( + get_reference_separator(u'sep_l_default')) + self.listSeparatorLineEdit.setPalette( + self.getGreyTextPalette(not checked)) def onListSeparatorLineEditEdited(self, text): self.listSeparatorCheckBox.setChecked(True) + self.listSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) def onListSeparatorLineEditFinished(self): - if self.listSeparatorLineEdit.text().remove(u'|').isEmpty() and \ - not self.listSeparatorCheckBox.hasFocus(): - self.listSeparatorCheckBox.setChecked(False) - self.listSeparatorLineEdit.clear() + if self.listSeparatorLineEdit.isModified(): + text = self.listSeparatorLineEdit.text() + if text == get_reference_separator(u'sep_l_default') or \ + text.remove(u'|').isEmpty(): + self.listSeparatorCheckBox.setChecked(False) + self.listSeparatorLineEdit.setText( + get_reference_separator(u'sep_l_default')) + self.listSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) - def onEndSeparatorCheckBoxToggled(self, checked): - if not checked: - self.endSeparatorLineEdit.clear() - elif self.endSeparatorCheckBox.hasFocus(): + def onEndSeparatorCheckBoxClicked(self, checked): + if checked: self.endSeparatorLineEdit.setFocus() + else: + self.endSeparatorLineEdit.setText( + get_reference_separator(u'sep_e_default')) + self.endSeparatorLineEdit.setPalette( + self.getGreyTextPalette(not checked)) def onEndSeparatorLineEditEdited(self, text): self.endSeparatorCheckBox.setChecked(True) + self.endSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) def onEndSeparatorLineEditFinished(self): - if self.endSeparatorLineEdit.text().remove(u'|').isEmpty() and \ - not self.endSeparatorCheckBox.hasFocus(): - self.endSeparatorCheckBox.setChecked(False) - self.endSeparatorLineEdit.clear() + if self.endSeparatorLineEdit.isModified(): + text = self.endSeparatorLineEdit.text() + if text == get_reference_separator(u'sep_e_default') or \ + text.remove(u'|').isEmpty(): + self.endSeparatorCheckBox.setChecked(False) + self.endSeparatorLineEdit.setText( + get_reference_separator(u'sep_e_default')) + self.endSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) def load(self): settings = QtCore.QSettings() @@ -353,30 +396,58 @@ class BiblesTab(SettingsTab): self.displayStyleComboBox.setCurrentIndex(self.display_style) self.layoutStyleComboBox.setCurrentIndex(self.layout_style) self.bibleSecondCheckBox.setChecked(self.second_bibles) - self.verseSeparatorLineEdit.setPlaceholderText( - get_reference_separator(u'sep_v_default')) - self.verseSeparatorLineEdit.setText(settings.value(u'verse separator', - QtCore.QVariant(u'')).toString()) - self.verseSeparatorCheckBox.setChecked( - self.verseSeparatorLineEdit.text() != u'') - self.rangeSeparatorLineEdit.setPlaceholderText( - get_reference_separator(u'sep_r_default')) - self.rangeSeparatorLineEdit.setText(settings.value(u'range separator', - QtCore.QVariant(u'')).toString()) - self.rangeSeparatorCheckBox.setChecked( - self.rangeSeparatorLineEdit.text() != u'') - self.listSeparatorLineEdit.setPlaceholderText( - get_reference_separator(u'sep_l_default')) - self.listSeparatorLineEdit.setText(settings.value(u'list separator', - QtCore.QVariant(u'')).toString()) - self.listSeparatorCheckBox.setChecked( - self.listSeparatorLineEdit.text() != u'') - self.endSeparatorLineEdit.setPlaceholderText( - get_reference_separator(u'sep_e_default')) - self.endSeparatorLineEdit.setText(settings.value(u'end separator', - QtCore.QVariant(u'')).toString()) - self.endSeparatorCheckBox.setChecked( - self.endSeparatorLineEdit.text() != u'') + verse_separator = unicode(settings.value(u'verse separator').toString()) + if (verse_separator.strip(u'|') == u'') or \ + (verse_separator == get_reference_separator(u'sep_v_default')): + self.verseSeparatorLineEdit.setText( + get_reference_separator(u'sep_v_default')) + self.verseSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) + self.verseSeparatorCheckBox.setChecked(False) + else: + self.verseSeparatorLineEdit.setText(verse_separator) + self.verseSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) + self.verseSeparatorCheckBox.setChecked(True) + range_separator = unicode(settings.value(u'range separator').toString()) + if (range_separator.strip(u'|') == u'') or \ + (range_separator == get_reference_separator(u'sep_r_default')): + self.rangeSeparatorLineEdit.setText( + get_reference_separator(u'sep_r_default')) + self.rangeSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) + self.rangeSeparatorCheckBox.setChecked(False) + else: + self.rangeSeparatorLineEdit.setText(range_separator) + self.rangeSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) + self.rangeSeparatorCheckBox.setChecked(True) + list_separator = unicode(settings.value(u'list separator').toString()) + if (list_separator.strip(u'|') == u'') or \ + (list_separator == get_reference_separator(u'sep_l_default')): + self.listSeparatorLineEdit.setText( + get_reference_separator(u'sep_l_default')) + self.listSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) + self.listSeparatorCheckBox.setChecked(False) + else: + self.listSeparatorLineEdit.setText(list_separator) + self.listSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) + self.listSeparatorCheckBox.setChecked(True) + end_separator = unicode(settings.value(u'end separator').toString()) + if (end_separator.strip(u'|') == u'') or \ + (end_separator == get_reference_separator(u'sep_e_default')): + self.endSeparatorLineEdit.setText( + get_reference_separator(u'sep_e_default')) + self.endSeparatorLineEdit.setPalette( + self.getGreyTextPalette(True)) + self.endSeparatorCheckBox.setChecked(False) + else: + self.endSeparatorLineEdit.setText(end_separator) + self.endSeparatorLineEdit.setPalette( + self.getGreyTextPalette(False)) + self.endSeparatorCheckBox.setChecked(True) settings.endGroup() def save(self): @@ -390,14 +461,26 @@ class BiblesTab(SettingsTab): QtCore.QVariant(self.layout_style)) settings.setValue(u'second bibles', QtCore.QVariant(self.second_bibles)) settings.setValue(u'bible theme', QtCore.QVariant(self.bible_theme)) - settings.setValue(u'verse separator', - QtCore.QVariant(self.verseSeparatorLineEdit.text())) - settings.setValue(u'range separator', - QtCore.QVariant(self.rangeSeparatorLineEdit.text())) - settings.setValue(u'list separator', - QtCore.QVariant(self.listSeparatorLineEdit.text())) - settings.setValue(u'end separator', - QtCore.QVariant(self.endSeparatorLineEdit.text())) + if self.verseSeparatorCheckBox.isChecked(): + settings.setValue(u'verse separator', + self.verseSeparatorLineEdit.text()) + else: + settings.remove(u'verse separator') + if self.rangeSeparatorCheckBox.isChecked(): + settings.setValue(u'range separator', + self.rangeSeparatorLineEdit.text()) + else: + settings.remove(u'range separator') + if self.listSeparatorCheckBox.isChecked(): + settings.setValue(u'list separator', + self.listSeparatorLineEdit.text()) + else: + settings.remove(u'list separator') + if self.endSeparatorCheckBox.isChecked(): + settings.setValue(u'end separator', + self.endSeparatorLineEdit.text()) + else: + settings.remove(u'end separator') update_reference_separators() settings.endGroup() @@ -415,3 +498,15 @@ class BiblesTab(SettingsTab): for theme in theme_list: self.bibleThemeComboBox.addItem(theme) find_and_set_in_combo_box(self.bibleThemeComboBox, self.bible_theme) + + def getGreyTextPalette(self, greyed): + """ + Returns a QPalette with greyed out text as used for placeholderText. + """ + palette = QtGui.QPalette() + color = self.palette().color(QtGui.QPalette.Active, QtGui.QPalette.Text) + if greyed: + color.setAlpha(128) + palette.setColor(QtGui.QPalette.Active, QtGui.QPalette.Text, color) + return palette + From af52ee68d9e52a42e1fa50cb434ee18719f7257b Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 5 Feb 2012 22:58:17 +0200 Subject: [PATCH 094/105] Updated the translation_utils.py script to download from Transifex instead of Pootle. --- scripts/translation_utils.py | 85 ++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index 935ef97e8..707b11fa0 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -51,20 +51,26 @@ This is done easily via the ``-d``, ``-p`` and ``-u`` options:: """ import os -import urllib +import urllib2 import re from shutil import copy +from getpass import getpass +import base64 +import json +import webbrowser from optparse import OptionParser from PyQt4 import QtCore from BeautifulSoup import BeautifulSoup -SERVER_URL = u'http://pootle.projecthq.biz/export/openlp/' +SERVER_URL = u'http://www.transifex.net/api/2/project/openlp/' IGNORED_PATHS = [u'scripts'] IGNORED_FILES = [u'setup.py'] verbose_mode = False quiet_mode = False +username = '' +password = '' class Command(object): """ @@ -172,35 +178,38 @@ def run(command): print_verbose(u'Error(s):\n%s' % process.readAllStandardError()) print_verbose(u'Output:\n%s' % process.readAllStandardOutput()) -def update_export_at_pootle(source_filename): - """ - This is needed because of database and exported *.ts file can be out of sync - - ``source_filename`` - The file to sync. - - """ - language = source_filename[:-3] - REVIEW_URL = u'http://pootle.projecthq.biz/%s/openlp/review.html' % language - print_verbose(u'Accessing: %s' % (REVIEW_URL)) - page = urllib.urlopen(REVIEW_URL) - page.close() - def download_translations(): """ This method downloads the translation files from the Pootle server. """ - print_quiet(u'Download translation files from Pootle') - page = urllib.urlopen(SERVER_URL) - soup = BeautifulSoup(page) - languages = soup.findAll(text=re.compile(r'.*\.ts')) - for language_file in languages: - update_export_at_pootle(language_file) - for language_file in languages: + global username, password + if not username: + username = raw_input('Transifex username: ') + if not password: + password = getpass('Transifex password: ') + print_quiet(u'Download translation files from Transifex') + # First get the list of languages + url = SERVER_URL + 'resource/ents/' + base64string = base64.encodestring( + '%s:%s' % (username, password))[:-1] + auth_header = 'Basic %s' % base64string + request = urllib2.Request(url + '?details') + request.add_header('Authorization', auth_header) + print_verbose('Downloading list of languages from: %s' % url) + json_response = urllib2.urlopen(request) + json_dict = json.loads(json_response.read()) + languages = [lang['code'] for lang in json_dict['available_languages']] + for language in languages: + lang_url = url + 'translation/%s/?file' % language + request = urllib2.Request(lang_url) + request.add_header('Authorization', auth_header) filename = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n', - language_file) + language + '.ts') print_verbose(u'Get Translation File: %s' % filename) - urllib.urlretrieve(SERVER_URL + language_file, filename) + response = urllib2.urlopen(request) + fd = open(filename, 'w') + fd.write(response.read()) + fd.close() print_quiet(u' Done.') def prepare_project(): @@ -281,17 +290,11 @@ def create_translation(language): ``language`` The language file to create. """ - print_quiet(u'Create new Translation File') - if not language.endswith(u'.ts'): - language += u'.ts' - filename = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n', language) - urllib.urlretrieve(SERVER_URL + u'en.ts', filename) - print_quiet(u' ** Please Note **') - print_quiet(u' In order to get this file into OpenLP and onto the ' - u'Pootle translation server you will need to subscribe to the ' - u'OpenLP Translators mailing list, and request that your language ' - u'file be added to the project.') - print_quiet(u' Done.') + print_quiet(u'Please request a new language at the OpenLP project on ' + 'Transifex.') + webbrowser.open('https://www.transifex.net/projects/p/openlp/' + 'resource/ents/') + print_quiet(u'Opening browser to OpenLP project...') def process_stack(command_stack): """ @@ -321,12 +324,16 @@ def process_stack(command_stack): print_quiet(u'No commands to process.') def main(): - global verbose_mode, quiet_mode + global verbose_mode, quiet_mode, username, password # Set up command line options. usage = u'%prog [options]\nOptions are parsed in the order they are ' + \ u'listed below. If no options are given, "-dpug" will be used.\n\n' + \ u'This script is used to manage OpenLP\'s translation files.' parser = OptionParser(usage=usage) + parser.add_option('-U', '--username', dest='username', metavar='USERNAME', + help='Transifex username, used for authentication') + parser.add_option('-P', '--password', dest='password', metavar='PASSWORD', + help='Transifex password, used for authentication') parser.add_option('-d', '--download-ts', dest='download', action='store_true', help='download language files from Pootle') parser.add_option('-c', '--create', dest='create', metavar='LANG', @@ -356,6 +363,10 @@ def main(): command_stack.append(Command.Generate) verbose_mode = options.verbose quiet_mode = options.quiet + if options.username: + username = options.username + if options.password: + password = options.password if not command_stack: command_stack.append(Command.Download) command_stack.append(Command.Prepare) From c354d16263d471567b99d40129d73c09cc29a869 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 5 Feb 2012 23:18:57 +0200 Subject: [PATCH 095/105] Clean up the translation_utils.py script a bit, removing references to Pootle. --- scripts/translation_utils.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index 707b11fa0..7db7b4637 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -28,22 +28,22 @@ """ This script is used to maintain the translation files in OpenLP. It downloads -the latest translation files from the Pootle translation server, updates the -local translation files from both the source code and the files from Pootle, +the latest translation files from the Transifex translation server, updates the +local translation files from both the source code and the files from Transifex, and can also generate the compiled translation files. Create New Language ------------------- -To create a new language, simply run this script with the ``-a`` command line +To create a new language, simply run this script with the ``-c`` command line option:: - @:~$ ./translation_utils.py -a + @:~$ ./translation_utils.py -c Update Translation Files ------------------------ -The best way to update the translations is to download the files from Pootle, +The best way to update the translations is to download the files from Transifex, and then update the local files using both the downloaded files and the source. This is done easily via the ``-d``, ``-p`` and ``-u`` options:: @@ -261,7 +261,7 @@ def prepare_project(): def update_translations(): print_quiet(u'Update the translation files') if not os.path.exists(os.path.join(os.path.abspath(u'..'), u'openlp.pro')): - print u'You have no generated a project file yet, please run this ' + \ + print u'You have not generated a project file yet, please run this ' + \ u'script with the -p option.' return else: @@ -283,12 +283,10 @@ def generate_binaries(): print_quiet(u' Done.') -def create_translation(language): +def create_translation(): """ - This method creates a new translation file. - - ``language`` - The language file to create. + This method opens a browser to the OpenLP project page at Transifex so + that the user can request a new language. """ print_quiet(u'Please request a new language at the OpenLP project on ' 'Transifex.') @@ -317,8 +315,7 @@ def process_stack(command_stack): elif command == Command.Generate: generate_binaries() elif command == Command.Create: - arguments = command_stack.arguments() - create_translation(*arguments) + create_translation() print_quiet(u'Finished processing commands.') else: print_quiet(u'No commands to process.') @@ -335,9 +332,9 @@ def main(): parser.add_option('-P', '--password', dest='password', metavar='PASSWORD', help='Transifex password, used for authentication') parser.add_option('-d', '--download-ts', dest='download', - action='store_true', help='download language files from Pootle') - parser.add_option('-c', '--create', dest='create', metavar='LANG', - help='create a new translation file for language LANG, e.g. "en_GB"') + action='store_true', help='download language files from Transifex') + parser.add_option('-c', '--create', dest='create', action='store_true', + help='go to Transifex to request a new translation file') parser.add_option('-p', '--prepare', dest='prepare', action='store_true', help='generate a project file, used to update the translations') parser.add_option('-u', '--update', action='store_true', dest='update', From e6f1ed20a9150b0cb7c351f756857356478a3709 Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Mon, 6 Feb 2012 21:28:16 +0800 Subject: [PATCH 096/105] Moved Setting to Advanced Tab --- openlp/core/ui/advancedtab.py | 82 +++++++++++++++++++++++++++++-- openlp/core/ui/generaltab.py | 78 ----------------------------- openlp/core/ui/mainwindow.py | 7 +-- openlp/core/ui/slidecontroller.py | 2 +- 4 files changed, 84 insertions(+), 85 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 045d38a7e..7c522bc67 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -31,6 +31,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, translate, build_icon, Receiver from openlp.core.lib.ui import UiStrings +from openlp.core.lib import SlideLimits from openlp.core.utils import get_images_filter class AdvancedTab(SettingsTab): @@ -84,7 +85,6 @@ class AdvancedTab(SettingsTab): u'enableAutoCloseCheckBox') self.uiLayout.addRow(self.enableAutoCloseCheckBox) self.leftLayout.addWidget(self.uiGroupBox) - self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) self.defaultImageGroupBox.setObjectName(u'defaultImageGroupBox') self.defaultImageLayout = QtGui.QFormLayout(self.defaultImageGroupBox) @@ -114,7 +114,7 @@ class AdvancedTab(SettingsTab): self.defaultFileLayout.addWidget(self.defaultRevertButton) self.defaultImageLayout.addRow(self.defaultFileLabel, self.defaultFileLayout) - self.rightLayout.addWidget(self.defaultImageGroupBox) + self.leftLayout.addWidget(self.defaultImageGroupBox) self.hideMouseGroupBox = QtGui.QGroupBox(self.leftColumn) self.hideMouseGroupBox.setObjectName(u'hideMouseGroupBox') self.hideMouseLayout = QtGui.QVBoxLayout(self.hideMouseGroupBox) @@ -122,7 +122,39 @@ class AdvancedTab(SettingsTab): self.hideMouseCheckBox = QtGui.QCheckBox(self.hideMouseGroupBox) self.hideMouseCheckBox.setObjectName(u'hideMouseCheckBox') self.hideMouseLayout.addWidget(self.hideMouseCheckBox) - self.rightLayout.addWidget(self.hideMouseGroupBox) + self.leftLayout.addWidget(self.hideMouseGroupBox) + self.leftLayout.addStretch() + # Service Item Slide Limits + self.slideGroupBox = QtGui.QGroupBox(self.rightColumn) + self.slideGroupBox.setObjectName(u'slideGroupBox') + self.slideLayout = QtGui.QFormLayout(self.slideGroupBox) + self.slideLayout.setLabelAlignment( + QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) + self.slideLayout.setFormAlignment( + QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) + self.slideLayout.setObjectName(u'slideLayout') + self.endSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) + self.endSlideRadioButton.setObjectName(u'endSlideRadioButton') + self.endSlideLabel = QtGui.QLabel(self.slideGroupBox) + self.endSlideLabel.setWordWrap(True) + self.endSlideLabel.setObjectName(u'endSlideLabel') + self.slideLayout.addRow(self.endSlideRadioButton, self.endSlideLabel) + self.wrapSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) + self.wrapSlideRadioButton.setObjectName(u'wrapSlideRadioButton') + self.wrapSlideLabel = QtGui.QLabel(self.slideGroupBox) + self.wrapSlideLabel.setWordWrap(True) + self.wrapSlideLabel.setObjectName(u'wrapSlideLabel') + self.slideLayout.addRow(self.wrapSlideRadioButton, + self.wrapSlideLabel) + self.nextItemRadioButton = QtGui.QRadioButton(self.slideGroupBox) + self.nextItemRadioButton.setChecked(True) + self.nextItemRadioButton.setObjectName(u'nextItemRadioButton') + self.nextItemLabel = QtGui.QLabel(self.slideGroupBox) + self.nextItemLabel.setWordWrap(True) + self.nextItemLabel.setObjectName(u'nextItemLabel') + self.slideLayout.addRow(self.nextItemRadioButton, + self.nextItemLabel) + self.rightLayout.addWidget(self.slideGroupBox) self.x11GroupBox = QtGui.QGroupBox(self.leftColumn) self.x11GroupBox.setObjectName(u'x11GroupBox') self.x11Layout = QtGui.QVBoxLayout(self.x11GroupBox) @@ -141,6 +173,12 @@ class AdvancedTab(SettingsTab): QtCore.SIGNAL(u'pressed()'), self.onDefaultRevertButtonPressed) QtCore.QObject.connect(self.x11BypassCheckBox, QtCore.SIGNAL(u'toggled(bool)'), self.onX11BypassCheckBoxToggled) + QtCore.QObject.connect(self.endSlideRadioButton, + QtCore.SIGNAL(u'pressed()'), self.onEndSlideButtonPressed) + QtCore.QObject.connect(self.wrapSlideRadioButton, + QtCore.SIGNAL(u'pressed()'), self.onWrapSlideButtonPressed) + QtCore.QObject.connect(self.nextItemRadioButton, + QtCore.SIGNAL(u'pressed()'), self.onnextItemButtonPressed) def retranslateUi(self): """ @@ -182,6 +220,25 @@ class AdvancedTab(SettingsTab): 'X11')) self.x11BypassCheckBox.setText(translate('OpenLP.AdvancedTab', 'Bypass X11 Window Manager')) + # Slide Limits + self.slideGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Service Item Slide Limits')) + self.endSlideRadioButton.setText( + translate('OpenLP.GeneralTab', '&End Slide')) + self.endSlideLabel.setText( + translate('OpenLP.GeneralTab', 'Up and down arrow keys ' + 'stop at the top and bottom slides of each Service Item.')) + self.wrapSlideRadioButton.setText( + translate('OpenLP.GeneralTab', '&Wrap Slide')) + self.wrapSlideLabel.setText( + translate('OpenLP.GeneralTab', 'Up and down arrow keys ' + 'wrap around at the top and bottom slides of each Service Item.')) + self.nextItemRadioButton.setText( + translate('OpenLP.GeneralTab', '&Next Item')) + self.nextItemLabel.setText( + translate('OpenLP.GeneralTab', 'Up and down arrow keys ' + 'advance to the the next or previous Service Item from the ' + 'top and bottom slides of each Service Item.')) def load(self): """ @@ -220,6 +277,14 @@ class AdvancedTab(SettingsTab): self.defaultFileEdit.setText(settings.value(u'default image', QtCore.QVariant(u':/graphics/openlp-splash-screen.png'))\ .toString()) + self.slide_limits = settings.value( + u'slide limits', QtCore.QVariant(SlideLimits.End)).toInt()[0] + if self.slide_limits == SlideLimits.End: + self.endSlideRadioButton.setChecked(True) + elif self.slide_limits == SlideLimits.Wrap: + self.wrapSlideRadioButton.setChecked(True) + else: + self.nextItemRadioButton.setChecked(True) settings.endGroup() self.defaultColorButton.setStyleSheet( u'background-color: %s' % self.default_color) @@ -248,10 +313,12 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(self.x11BypassCheckBox.isChecked())) settings.setValue(u'default color', self.default_color) settings.setValue(u'default image', self.defaultFileEdit.text()) + settings.setValue(u'slide limits', QtCore.QVariant(self.slide_limits)) settings.endGroup() if self.display_changed: Receiver.send_message(u'config_screen_changed') self.display_changed = False + Receiver.send_message(u'slidecontroller_update_slide_limits') def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( @@ -283,3 +350,12 @@ class AdvancedTab(SettingsTab): The state of the check box (boolean). """ self.display_changed = True + + def onEndSlideButtonPressed(self): + self.slide_limits = SlideLimits.End + + def onWrapSlideButtonPressed(self): + self.slide_limits = SlideLimits.Wrap + + def onnextItemButtonPressed(self): + self.slide_limits = SlideLimits.Next diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index d1fc5a419..d515fc501 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -30,7 +30,6 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, Receiver, translate from openlp.core.lib.ui import UiStrings -from openlp.core.lib import SlideLimits from openlp.core.ui import ScreenList log = logging.getLogger(__name__) @@ -178,38 +177,6 @@ class GeneralTab(SettingsTab): self.audioLayout.addWidget(self.startPausedCheckBox) self.rightLayout.addWidget(self.audioGroupBox) self.rightLayout.addStretch() - # Service Item Slide Limits - self.slideGroupBox = QtGui.QGroupBox(self.rightColumn) - self.slideGroupBox.setObjectName(u'slideGroupBox') - self.slideLayout = QtGui.QFormLayout(self.slideGroupBox) - self.slideLayout.setLabelAlignment( - QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) - self.slideLayout.setFormAlignment( - QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) - self.slideLayout.setObjectName(u'slideLayout') - self.endSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) - self.endSlideRadioButton.setObjectName(u'endSlideRadioButton') - self.endSlideLabel = QtGui.QLabel(self.slideGroupBox) - self.endSlideLabel.setWordWrap(True) - self.endSlideLabel.setObjectName(u'endSlideLabel') - self.slideLayout.addRow(self.endSlideRadioButton, self.endSlideLabel) - self.wrapSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) - self.wrapSlideRadioButton.setObjectName(u'wrapSlideRadioButton') - self.wrapSlideLabel = QtGui.QLabel(self.slideGroupBox) - self.wrapSlideLabel.setWordWrap(True) - self.wrapSlideLabel.setObjectName(u'wrapSlideLabel') - self.slideLayout.addRow(self.wrapSlideRadioButton, - self.wrapSlideLabel) - self.nextSlideRadioButton = QtGui.QRadioButton(self.slideGroupBox) - self.nextSlideRadioButton.setChecked(True) - self.nextSlideRadioButton.setObjectName(u'nextSlideRadioButton') - self.nextSlideLabel = QtGui.QLabel(self.slideGroupBox) - self.nextSlideLabel.setWordWrap(True) - self.nextSlideLabel.setObjectName(u'nextSlideLabel') - self.slideLayout.addRow(self.nextSlideRadioButton, - self.nextSlideLabel) - self.rightLayout.addWidget(self.slideGroupBox) - self.rightLayout.addStretch() # Signals and slots QtCore.QObject.connect(self.overrideCheckBox, QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) @@ -226,12 +193,6 @@ class GeneralTab(SettingsTab): # Reload the tab, as the screen resolution/count may have changed. QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_screen_changed'), self.load) - QtCore.QObject.connect(self.endSlideRadioButton, - QtCore.SIGNAL(u'pressed()'), self.onEndSlideButtonPressed) - QtCore.QObject.connect(self.wrapSlideRadioButton, - QtCore.SIGNAL(u'pressed()'), self.onWrapSlideButtonPressed) - QtCore.QObject.connect(self.nextSlideRadioButton, - QtCore.SIGNAL(u'pressed()'), self.onNextSlideButtonPressed) # Remove for now self.usernameLabel.setVisible(False) self.usernameEdit.setVisible(False) @@ -290,25 +251,6 @@ class GeneralTab(SettingsTab): translate('OpenLP.GeneralTab', 'Background Audio')) self.startPausedCheckBox.setText( translate('OpenLP.GeneralTab', 'Start background audio paused')) - # Slide Limits - self.slideGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Service Item Slide Limits')) - self.endSlideRadioButton.setText( - translate('OpenLP.GeneralTab', '&End Slide')) - self.endSlideLabel.setText( - translate('OpenLP.GeneralTab', 'Up and down arrow keys ' - 'stop at the top and bottom slides of each Service Item.')) - self.wrapSlideRadioButton.setText( - translate('OpenLP.GeneralTab', '&Wrap Slide')) - self.wrapSlideLabel.setText( - translate('OpenLP.GeneralTab', 'Up and down arrow keys ' - 'wrap around at the top and bottom slides of each Service Item.')) - self.nextSlideRadioButton.setText( - translate('OpenLP.GeneralTab', '&Next Slide')) - self.nextSlideLabel.setText( - translate('OpenLP.GeneralTab', 'Up and down arrow keys ' - 'advance to the the next or previous Service Item from the ' - 'top and bottom slides of each Service Item.')) def load(self): """ @@ -363,15 +305,6 @@ class GeneralTab(SettingsTab): self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) self.display_changed = False settings.beginGroup(self.settingsSection) - self.slide_limits = settings.value( - u'slide limits', QtCore.QVariant(SlideLimits.End)).toInt()[0] - settings.endGroup() - if self.slide_limits == SlideLimits.End: - self.endSlideRadioButton.setChecked(True) - elif self.slide_limits == SlideLimits.Wrap: - self.wrapSlideRadioButton.setChecked(True) - else: - self.nextSlideRadioButton.setChecked(True) def save(self): """ @@ -417,7 +350,6 @@ class GeneralTab(SettingsTab): QtCore.QVariant(self.overrideCheckBox.isChecked())) settings.setValue(u'audio start paused', QtCore.QVariant(self.startPausedCheckBox.isChecked())) - settings.setValue(u'slide limits', QtCore.QVariant(self.slide_limits)) settings.endGroup() # On save update the screens as well self.postSetUp(True) @@ -446,7 +378,6 @@ class GeneralTab(SettingsTab): if self.display_changed: Receiver.send_message(u'config_screen_changed') self.display_changed = False - Receiver.send_message(u'slidecontroller_update_slide_limits') def onOverrideCheckBoxToggled(self, checked): """ @@ -466,12 +397,3 @@ class GeneralTab(SettingsTab): Called when the width, height, x position or y position has changed. """ self.display_changed = True - - def onEndSlideButtonPressed(self): - self.slide_limits = SlideLimits.End - - def onWrapSlideButtonPressed(self): - self.slide_limits = SlideLimits.Wrap - - def onNextSlideButtonPressed(self): - self.slide_limits = SlideLimits.Next diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 6b8421e45..7197588a4 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -1308,18 +1308,19 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): Load the main window settings. """ log.debug(u'Loading QSettings') - # Migrate Wrap Settings to Slide Advance Settings + # Migrate Wrap Settings to Slide Limits Settings if QtCore.QSettings().contains(self.generalSettingsSection + u'/enable slide loop'): if QtCore.QSettings().value(self.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool(): - QtCore.QSettings().setValue(self.generalSettingsSection + + QtCore.QSettings().setValue(self.advancedlSettingsSection + u'/slide limits', QtCore.QVariant(SlideLimits.Wrap)) else: - QtCore.QSettings().setValue(self.generalSettingsSection + + QtCore.QSettings().setValue(self.advancedlSettingsSection + u'/slide limits', QtCore.QVariant(SlideLimits.End)) QtCore.QSettings().remove(self.generalSettingsSection + u'/enable slide loop') + Receiver.send_message(u'slidecontroller_update_slide_limits') settings = QtCore.QSettings() # Remove obsolete entries. settings.remove(u'custom slide') diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 095302c8d..ac92f2da7 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -715,7 +715,7 @@ class SlideController(Controller): Updates the Slide Limits variable from the settings. """ self.slide_limits = QtCore.QSettings().value( - self.parent().generalSettingsSection + u'/slide limits', + self.parent().advancedlSettingsSection + u'/slide limits', QtCore.QVariant(SlideLimits.End)).toInt()[0] def enableToolBar(self, item): From 62e2616aceadf5c811967cb10ae3c8278729eaf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 7 Feb 2012 12:54:13 +0200 Subject: [PATCH 097/105] Code cleanup. --- openlp/core/ui/advancedtab.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 3650cf905..cbd3e6b45 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -44,8 +44,7 @@ class AdvancedTab(SettingsTab): """ Initialise the settings tab """ - self.display_changed = False - advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') + self.displayChanged = False # 7 stands for now, 0 to 6 is Monday to Sunday. self.defaultServiceDay = 7 # 11 o'clock is the most popular time for morning service. @@ -60,10 +59,11 @@ class AdvancedTab(SettingsTab): 'http://docs.python.org/library/datetime.html' '#strftime-strptime-behavior , but if possible, please keep ' 'the resulting string sortable by name.')) - self.default_image = u':/graphics/openlp-splash-screen.png' - self.default_color = u'#ffffff' + self.defaultImage = u':/graphics/openlp-splash-screen.png' + self.defaultColor = u'#ffffff' self.icon_path = u':/system/system_settings.png' - SettingsTab.__init__(self, parent, u'Advanced', advancedTranslated) + advanced_translated = translate('OpenLP.AdvancedTab', 'Advanced') + SettingsTab.__init__(self, parent, u'Advanced', advanced_translated) def setupUi(self): """ @@ -347,14 +347,14 @@ class AdvancedTab(SettingsTab): self.serviceNameCheckBoxToggled(default_service_enabled) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) - self.default_color = settings.value(u'default color', + self.defaultColor = settings.value(u'default color', QtCore.QVariant(u'#ffffff')).toString() self.defaultFileEdit.setText(settings.value(u'default image', QtCore.QVariant(u':/graphics/openlp-splash-screen.png'))\ .toString()) settings.endGroup() self.defaultColorButton.setStyleSheet( - u'background-color: %s' % self.default_color) + u'background-color: %s' % self.defaultColor) def save(self): """ @@ -393,12 +393,12 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(self.hideMouseCheckBox.isChecked())) settings.setValue(u'x11 bypass wm', QtCore.QVariant(self.x11BypassCheckBox.isChecked())) - settings.setValue(u'default color', self.default_color) + settings.setValue(u'default color', self.defaultColor) settings.setValue(u'default image', self.defaultFileEdit.text()) settings.endGroup() - if self.display_changed: + if self.displayChanged: Receiver.send_message(u'config_screen_changed') - self.display_changed = False + self.displayChanged = False def serviceNameCheckBoxToggled(self, default_service_enabled): self.serviceNameDay.setEnabled(default_service_enabled) @@ -445,11 +445,11 @@ class AdvancedTab(SettingsTab): def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( - QtGui.QColor(self.default_color), self) + QtGui.QColor(self.defaultColor), self) if new_color.isValid(): - self.default_color = new_color.name() + self.defaultColor = new_color.name() self.defaultColorButton.setStyleSheet( - u'background-color: %s' % self.default_color) + u'background-color: %s' % self.defaultColor) def onDefaultBrowseButtonPressed(self): file_filters = u'%s;;%s (*.*) (*)' % (get_images_filter(), @@ -472,4 +472,4 @@ class AdvancedTab(SettingsTab): ``checked`` The state of the check box (boolean). """ - self.display_changed = True + self.displayChanged = True From d10358f0a2c8ca1013fee99ead042eb6d5cd6a3d Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 11 Feb 2012 20:02:33 +0200 Subject: [PATCH 098/105] Updated some strings to unicode - the rest need to remain strings because web servers don't do unicode that well. --- scripts/translation_utils.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index 7db7b4637..812258fe2 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -181,12 +181,14 @@ def run(command): def download_translations(): """ This method downloads the translation files from the Pootle server. + + **Note:** URLs and headers need to remain strings, not unicode. """ global username, password if not username: - username = raw_input('Transifex username: ') + username = raw_input(u'Transifex username: ') if not password: - password = getpass('Transifex password: ') + password = getpass(u'Transifex password: ') print_quiet(u'Download translation files from Transifex') # First get the list of languages url = SERVER_URL + 'resource/ents/' @@ -195,19 +197,19 @@ def download_translations(): auth_header = 'Basic %s' % base64string request = urllib2.Request(url + '?details') request.add_header('Authorization', auth_header) - print_verbose('Downloading list of languages from: %s' % url) + print_verbose(u'Downloading list of languages from: %s' % url) json_response = urllib2.urlopen(request) json_dict = json.loads(json_response.read()) - languages = [lang['code'] for lang in json_dict['available_languages']] + languages = [lang[u'code'] for lang in json_dict[u'available_languages']] for language in languages: lang_url = url + 'translation/%s/?file' % language request = urllib2.Request(lang_url) request.add_header('Authorization', auth_header) filename = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n', - language + '.ts') + language + u'.ts') print_verbose(u'Get Translation File: %s' % filename) response = urllib2.urlopen(request) - fd = open(filename, 'w') + fd = open(filename, u'w') fd.write(response.read()) fd.close() print_quiet(u' Done.') From f8a8185eb0044b5e3f5640bde4c9e9e49ec69f71 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 12 Feb 2012 11:24:06 +0200 Subject: [PATCH 099/105] Attempt to catch the OperationalError which is thrown when MySQL closes the connection without telling us. --- openlp/core/lib/db.py | 81 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 75 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 2e7757324..69af22916 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -239,6 +239,16 @@ class Manager(object): self.session.commit() self.is_dirty = True return True + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + self.session.add(object_instance) + if commit: + self.session.commit() + self.is_dirty = True + return True except InvalidRequestError: self.session.rollback() log.exception(u'Object save failed') @@ -260,6 +270,16 @@ class Manager(object): self.session.commit() self.is_dirty = True return True + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + self.session.add_all(object_list) + if commit: + self.session.commit() + self.is_dirty = True + return True except InvalidRequestError: self.session.rollback() log.exception(u'Object list save failed') @@ -278,7 +298,14 @@ class Manager(object): if not key: return object_class() else: - return self.session.query(object_class).get(key) + try: + return self.session.query(object_class).get(key) + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + return self.session.query(object_class).get(key) def get_object_filtered(self, object_class, filter_clause): """ @@ -290,7 +317,14 @@ class Manager(object): ``filter_clause`` The criteria to select the object by """ - return self.session.query(object_class).filter(filter_clause).first() + try: + return self.session.query(object_class).filter(filter_clause).first() + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + return self.session.query(object_class).filter(filter_clause).first() def get_all_objects(self, object_class, filter_clause=None, order_by_ref=None): @@ -311,10 +345,17 @@ class Manager(object): if filter_clause is not None: query = query.filter(filter_clause) if isinstance(order_by_ref, list): - return query.order_by(*order_by_ref).all() + query = query.order_by(*order_by_ref) elif order_by_ref is not None: - return query.order_by(order_by_ref).all() - return query.all() + query = query.order_by(order_by_ref) + try: + return query.all() + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + return query.all() def get_object_count(self, object_class, filter_clause=None): """ @@ -330,7 +371,14 @@ class Manager(object): query = self.session.query(object_class) if filter_clause is not None: query = query.filter(filter_clause) - return query.count() + try: + return query.count() + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + return query.count() def delete_object(self, object_class, key): """ @@ -349,6 +397,15 @@ class Manager(object): self.session.commit() self.is_dirty = True return True + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + self.session.delete(object_instance) + self.session.commit() + self.is_dirty = True + return True except InvalidRequestError: self.session.rollback() log.exception(u'Failed to delete object') @@ -378,6 +435,18 @@ class Manager(object): self.session.commit() self.is_dirty = True return True + except OperationalError: + # This exception clause is for users running MySQL which likes + # to terminate connections on its own without telling anyone. + # See bug #927473 + self.session.rollback() + query = self.session.query(object_class) + if filter_clause is not None: + query = query.filter(filter_clause) + query.delete(synchronize_session=False) + self.session.commit() + self.is_dirty = True + return True except InvalidRequestError: self.session.rollback() log.exception(u'Failed to delete %s records', object_class.__name__) From d4efbfe122df5772b82d870989c9902400a0d28b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 13 Feb 2012 13:10:27 +0200 Subject: [PATCH 100/105] Moved two items over to right columns. --- openlp/core/ui/advancedtab.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 6e9cba72e..210dabdd2 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -101,6 +101,7 @@ class AdvancedTab(SettingsTab): u'enableAutoCloseCheckBox') self.uiLayout.addRow(self.enableAutoCloseCheckBox) self.leftLayout.addWidget(self.uiGroupBox) + # Default service name self.serviceNameGroupBox = QtGui.QGroupBox(self.leftColumn) self.serviceNameGroupBox.setObjectName(u'serviceNameGroupBox') self.serviceNameLayout = QtGui.QFormLayout( @@ -154,6 +155,7 @@ class AdvancedTab(SettingsTab): self.serviceNameExample) self.leftLayout.addWidget(self.serviceNameGroupBox) self.leftLayout.addStretch() + # Default Image self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) self.defaultImageGroupBox.setObjectName(u'defaultImageGroupBox') self.defaultImageLayout = QtGui.QFormLayout(self.defaultImageGroupBox) @@ -183,16 +185,16 @@ class AdvancedTab(SettingsTab): self.defaultFileLayout.addWidget(self.defaultRevertButton) self.defaultImageLayout.addRow(self.defaultFileLabel, self.defaultFileLayout) - self.leftLayout.addWidget(self.defaultImageGroupBox) - self.hideMouseGroupBox = QtGui.QGroupBox(self.leftColumn) + self.rightLayout.addWidget(self.defaultImageGroupBox) + # Hide mouse + self.hideMouseGroupBox = QtGui.QGroupBox(self.rightColumn) self.hideMouseGroupBox.setObjectName(u'hideMouseGroupBox') self.hideMouseLayout = QtGui.QVBoxLayout(self.hideMouseGroupBox) self.hideMouseLayout.setObjectName(u'hideMouseLayout') self.hideMouseCheckBox = QtGui.QCheckBox(self.hideMouseGroupBox) self.hideMouseCheckBox.setObjectName(u'hideMouseCheckBox') self.hideMouseLayout.addWidget(self.hideMouseCheckBox) - self.leftLayout.addWidget(self.hideMouseGroupBox) - self.leftLayout.addStretch() + self.rightLayout.addWidget(self.hideMouseGroupBox) # Service Item Slide Limits self.slideGroupBox = QtGui.QGroupBox(self.rightColumn) self.slideGroupBox.setObjectName(u'slideGroupBox') From 456e31d55a926cecd86a895c51b5b3b34aea46b0 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Wed, 15 Feb 2012 05:57:16 +0200 Subject: [PATCH 101/105] Updated the Windows build script to look for an option outside of version control and pull the Transifex username and password from it for the translation_utils.py script. --- scripts/windows-builder.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py index 43beb8988..9210bb8b2 100644 --- a/scripts/windows-builder.py +++ b/scripts/windows-builder.py @@ -107,10 +107,11 @@ Sqlalchemy Migrate import os import sys -from shutil import copy -from shutil import rmtree +from shutil import copy, rmtree from subprocess import Popen, PIPE +from ConfigParser import SafeConfigParser as ConfigParser +# Executable paths python_exe = sys.executable innosetup_exe = os.path.join(os.getenv(u'PROGRAMFILES'), 'Inno Setup 5', u'ISCC.exe') @@ -157,6 +158,10 @@ pptviewlib_path = os.path.join(source_path, u'plugins', u'presentations', u'lib', u'pptviewlib') hooks_path = os.path.join(branch_path , u'resources', u'pyinstaller') +# Transifex details -- will be read in from the file. +transifex_filename = os.path.abspath(os.path.join(branch_path, '..', + 'transifex.conf')) + def update_code(): os.chdir(branch_path) print u'Reverting any changes to the code...' @@ -264,8 +269,22 @@ def copy_windows_files(): def update_translations(): print u'Updating translations...' + if not os.path.exists(transifex_filename): + raise Exception(u'Could not find Transifex credentials file: %s' \ + % transifex_filename) + config = ConfigParser() + config.read(transifex_filename) + if not config.has_section('transifex'): + raise Exception(u'No section named "transifex" found.') + if not config.has_option('transifex', 'username'): + raise Exception(u'No option named "username" found.') + if not config.has_option('transifex', 'password'): + raise Exception(u'No option named "password" found.') + username = config.get('transifex', 'username') + password = config.get('transifex', 'password') os.chdir(script_path) - translation_utils = Popen((python_exe, i18n_utils, u'-qdpu')) + translation_utils = Popen([python_exe, i18n_utils, u'-qdpu', '-U', + username, '-P', password]) code = translation_utils.wait() if code != 0: raise Exception(u'Error running translation_utils.py') From d57905f9d8dba557bc7a3327d7ac5cda38c5064e Mon Sep 17 00:00:00 2001 From: Jonathan Stafford Date: Wed, 15 Feb 2012 18:37:42 +0800 Subject: [PATCH 102/105] Fixed Preview Crash Bug 932610 Fixes: https://launchpad.net/bugs/932610 --- openlp/core/ui/slidecontroller.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index f0fc363b7..0275f4d11 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1203,7 +1203,7 @@ class SlideController(Controller): if wrap is None: if self.slide_limits == SlideLimits.Wrap: row = 0 - elif self.slide_limits == SlideLimits.Next: + elif self.isLive and self.slide_limits == SlideLimits.Next: self.serviceNext() return else: @@ -1230,7 +1230,7 @@ class SlideController(Controller): if row == -1: if self.slide_limits == SlideLimits.Wrap: row = self.previewListWidget.rowCount() - 1 - elif self.slide_limits == SlideLimits.Next: + elif self.isLive and self.slide_limits == SlideLimits.Next: self.keypress_queue.append(ServiceItemAction.PreviousLastSlide) self._process_queue() return From bcad2c171f08b99de95c67581ab8e6710d99aff2 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 16 Feb 2012 21:05:16 +0200 Subject: [PATCH 103/105] Added exception logging in case we need to confirm that we are actually getting the exception we think we are. --- openlp/core/lib/db.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 69af22916..d7ca10f0f 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -243,6 +243,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue - "MySQL has gone away"') self.session.rollback() self.session.add(object_instance) if commit: @@ -274,6 +275,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() self.session.add_all(object_list) if commit: @@ -304,6 +306,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() return self.session.query(object_class).get(key) @@ -323,6 +326,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() return self.session.query(object_class).filter(filter_clause).first() @@ -354,6 +358,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() return query.all() @@ -377,6 +382,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() return query.count() @@ -401,6 +407,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() self.session.delete(object_instance) self.session.commit() @@ -439,6 +446,7 @@ class Manager(object): # This exception clause is for users running MySQL which likes # to terminate connections on its own without telling anyone. # See bug #927473 + log.exception(u'Probably a MySQL issue, "MySQL has gone away"') self.session.rollback() query = self.session.query(object_class) if filter_clause is not None: From ce7029776ad9fd9aa2faec739459e332791caa14 Mon Sep 17 00:00:00 2001 From: M2j Date: Thu, 16 Feb 2012 21:36:35 +0100 Subject: [PATCH 104/105] localize separated item list format --- openlp/core/lib/__init__.py | 26 ++++++++++++++++++++ openlp/plugins/bibles/lib/mediaitem.py | 4 +-- openlp/plugins/songs/forms/editsongform.py | 5 ++-- openlp/plugins/songs/forms/songexportform.py | 5 ++-- openlp/plugins/songs/lib/mediaitem.py | 7 +++--- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 150ad2ea6..d77f63105 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -298,6 +298,32 @@ def check_directory_exists(dir): except IOError: pass +def create_separated_list(stringlist): + """ + Returns a string that represents a join of a list of strings with a + localized separator. This function corresponts to + QLocale::createSeparatedList which was introduced in Qt 4.8 and implements + the algorithm from http://www.unicode.org/reports/tr35/#ListPatterns + + ``stringlist`` + List of unicode strings + """ + if not stringlist: + return u'' + elif len(stringlist) == 1: + return stringlist[0] + elif len(stringlist) == 2: + return unicode(translate('OpenLP.core.lib', '%1 and %2', + 'Locale list separator: 2 items').arg(stringlist[0], stringlist[1])) + else: + merged = unicode(translate('OpenLP.core.lib', '%1, and %2', + u'Locale list separator: end').arg(stringlist[-2], stringlist[-1])) + for index in reversed(range(1, len(stringlist) - 2)): + merged = unicode(translate('OpenLP.core.lib', '%1, %2', + u'Locale list separator: middle').arg(stringlist[index], merged)) + return unicode(translate('OpenLP.core.lib', '%1, %2', + u'Locale list separator: start').arg(stringlist[0], merged)) + from eventreceiver import Receiver from listwidgetwithdnd import ListWidgetWithDnD from formattingtags import FormattingTags diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 5ec4daa50..29172a334 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -31,7 +31,7 @@ import locale from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ - translate + translate, create_separated_list from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.ui import UiStrings, add_widget_completer, \ media_item_combo_box, critical_error_message_box, \ @@ -868,7 +868,7 @@ class BibleMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.CanLoop) service_item.add_capability(ItemCapabilities.CanWordSplit) # Service Item: Title - service_item.title = u', '.join(raw_title) + service_item.title = create_separated_list(raw_title) # Service Item: Theme if len(self.settings.bible_theme) == 0: service_item.theme = None diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index cfc1772ef..62a76851c 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -32,7 +32,8 @@ import shutil from PyQt4 import QtCore, QtGui -from openlp.core.lib import PluginStatus, Receiver, MediaType, translate +from openlp.core.lib import PluginStatus, Receiver, MediaType, translate, \ + create_separated_list from openlp.core.lib.ui import UiStrings, add_widget_completer, \ critical_error_message_box, find_and_set_in_combo_box from openlp.core.utils import AppLocation @@ -633,7 +634,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): VerseType.translated_tag(verse[0]), verse[1:])) for count, item in enumerate(order): if item not in verses: - valid = u', '.join(verse_names) + valid = create_separated_list(verse_names) critical_error_message_box( message=unicode(translate('SongsPlugin.EditSongForm', 'The verse order is invalid. There is no verse ' diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 679330ec5..2014b5d7b 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -33,7 +33,8 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import build_icon, Receiver, SettingsManager, translate +from openlp.core.lib import build_icon, Receiver, SettingsManager, translate, \ + create_separated_list from openlp.core.lib.ui import UiStrings, critical_error_message_box from openlp.core.ui.wizard import OpenLPWizard, WizardStrings from openlp.plugins.songs.lib.db import Song @@ -255,7 +256,7 @@ class SongExportForm(OpenLPWizard): # No need to export temporary songs. if song.temporary: continue - authors = u', '.join([author.display_name + authors = create_separated_list([author.display_name for author in song.authors]) title = u'%s (%s)' % (unicode(song.title), authors) item = QtGui.QListWidgetItem(title) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 1e62dd64b..ab95d794f 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui from sqlalchemy.sql import or_ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ - translate, check_item_selected, PluginStatus + translate, check_item_selected, PluginStatus, create_separated_list from openlp.core.lib.ui import UiStrings, context_menu_action, \ context_menu_separator from openlp.core.utils import AppLocation @@ -247,7 +247,8 @@ class SongMediaItem(MediaManagerItem): continue author_list = [author.display_name for author in song.authors] song_title = unicode(song.title) - song_detail = u'%s (%s)' % (song_title, u', '.join(author_list)) + song_detail = u'%s (%s)' % (song_title, + create_separated_list(author_list)) song_name = QtGui.QListWidgetItem(song_detail) song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id)) self.listView.addItem(song_name) @@ -469,7 +470,7 @@ class SongMediaItem(MediaManagerItem): service_item.title = song.title author_list = [unicode(author.display_name) for author in song.authors] service_item.raw_footer.append(song.title) - service_item.raw_footer.append(u', '.join(author_list)) + service_item.raw_footer.append(create_separated_list(author_list)) service_item.raw_footer.append(song.copyright) if QtCore.QSettings().value(u'general/ccli number', QtCore.QVariant(u'')).toString(): From 9e03cf0715396a1848bd90054252767284d040d4 Mon Sep 17 00:00:00 2001 From: M2j Date: Fri, 17 Feb 2012 19:51:01 +0100 Subject: [PATCH 105/105] use Qt method if available --- openlp/core/lib/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index d77f63105..35b1a6d78 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -32,7 +32,7 @@ import logging import os.path import types -from PyQt4 import QtCore, QtGui +from PyQt4 import QtCore, QtGui, Qt log = logging.getLogger(__name__) @@ -308,6 +308,8 @@ def create_separated_list(stringlist): ``stringlist`` List of unicode strings """ + if Qt.qVersion() >= u'4.8': + return unicode(QtCore.QLocale.createSeparatedList(stringlist)) if not stringlist: return u'' elif len(stringlist) == 1: